File: README

package info (click to toggle)
module-assistant 0.10.8
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 508 kB
  • ctags: 85
  • sloc: perl: 1,305; sh: 216; makefile: 179
file content (161 lines) | stat: -rw-r--r-- 5,393 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161

General documentation for module-assistant's functionality

Contents:
========

 - How does it work
 - Interface of control scripts
 - scripts/include directory structure
 - mini-HOWTO
 - Conventions
 - Glossary


How does the whole thing work?
------------------------------

Every package that should be controlled with modass provides a control script
(see below) that accepts a set of defined commands

Control scripts interface:
--------------------------

 update
        updates the intenal data when needed, eg. version number.
        Scripts can do whatever they want, any may use the
        /var/lib/modass/cache directory as playground for caching the
        data. Before update is executed, every packakage gets its dpkg
        info delivered into /var/cache/modass/PACKAGE.dkpgstatus
        
 cur_version
        outputs the currently installed version of the package; 
        syntax == dpkg-style
 
 avail_version
        prints the latest available version of the package
        
 lastpkg
        outputs the filename (full path) of the last built package for the 
        specified (or current) kernel. Empty if the build was not successful.
 
 download
        installs the latest source package or fetches the source with
        apt-get/apt-src/whatever
 
 unpack
        unpacks the downloaded package source in $MODULE_LOC
 
 clean  
        cleanup in the build-directory, eg. wiping it. User can restore
        the cleaned files with the "unpack" rule.

 purge
        removes the cached data and localy built binary packages. USE
        WITH CARE!
 
 installed
        output: "installed" or "not installed"

 update
        updated cached data
 
 prefix
        print symbolic name of the package (eg. ftpfs for ftpfs-2.4.20)

 build  well, selfexpaining. Usualy started in the build directory.
 

Ressource directory (planned location: /usr/share/modass)
---------------------------------------------------------

modass
|-- include     (files to be sourced by package maintaining scripts and
                 makefile includes)
|-- overrides   (package maintscripts taking precedence over the default ones)
`-- packages    (some default scripts, provided by the modass package itself)

Package maintainence scripts are either shipped with module-assistant or
installed by other binary package that have something to do with the
modules. For example, cloop-utils installs one into modass/overrides/.
Installing it is a matter of taste - if you wish your package to be listed in
m-a frontend's list of "known" packages, add a control script.
m-a can also work if there is no control script by guessing the package names.
However, this requires additional processing on the client side and is
error-prone, so having a such script installed in the overrides directory does
not hurt.

You can ship the control script inside of the -source package or some other
-utils package that is always installed (to make the source package visible for
the users).

HOW TO PREPARE YOUR PACKAGES:
-----------------------------

See HOWTO-DEVEL file for more detailed explanation.

There are generic rules to be included in the debian/rules files, this
way:

-----------------------
PACKAGE=cloop
-include $(MA_DIR)/include/generic.make

# other stuff, including build-mod install-mod and build-deb rules
# specific for the module building

kdist_targets: clean build-mod install-mod build-deb

kdist_image: kdist_targets clean

# create the package and the changes file, maybe sign it
kdist: kdist_targets genchanges clean
------------------------

CONVENTIONS:
------------

- If $SIGNCHANGES is set, the generated .changes file will be signed
  with debsign, gpg or pgp.

generic.make calculates following variables that can be used in your rules:

 - DEB_DESTDIR : destination directory
 - CHFILE : changes file (full path)
 - DEB_NAME : maintainer's name (may be unset!)
 - DEB_MAIL : maintainer's email address (may be unset!)
 - MAINT : definitive maintainers ID, either from DEB_NAME/DEB_MAIL or
   from local username and hostname
 - CC : compiler used for the found kernel headers. If
   $IGNORE_CC_MISMATCH is set and CC was not found, CC will be set to gcc

generic.make provides following targets:

 - genchanges : generates the changes files and signs it when
   $SIGNCHANGES is set
 
 - echo-vars : prints relevant variables
 - echo-changes : prints the name of the changes file
 - echo-debfile : prints the name of binary Debian package
 - echo-deb : prints the module package name
 - configure-checks: complain loudly about wrong gcc version and suggest
   to install the right package if the compiler was not found
 - prep-deb-files : first, copies the files matching debian/*_KVERS_* to
   filenames with real $KVERS. Then read files matching
   debian/*.modules.in, substitue _KVERS_ inside with the real $KVERS
   and store the file under the similar name without .modules.in.

GLOSSARY:
---------

KVERS:

If you are using a packaged debian kernel with a name like
linux-image-2.6.16-2-k7-smp then KVERS is the whole last part of the name:
2.6.16-2-k7-smp.

If you have built a package using make-kpkg then the kernel version is the
concatenation of the main upstream version and the --append-to-version
argument, but not the --revision argument.  If you look at the name of the
resulting deb, you can apply the same rule as in the previous paragraph.