source: trunk/debathena/NOTES @ 22729

Revision 22729, 5.1 KB checked in by ghudson, 16 years ago (diff)
* debathena/NOTES: Document build server setup.
Line 
1This hierarchy contains Debian/Ubuntu-specific materials, also known
2as "Debathena".  The contents are:
3
4* debathena - Debathena-specific software packages such as PAM and NSS
5  modules.
6
7* config - Packages for configuring native system software in a manner
8  appropriate for Athena.
9
10* meta - Packages which contain nothing but dependencies on other
11  packages and serve as an installation convenience.
12
13* scripts - Build scripts and supporting materials.
14
15Debathena is a SIPB project, and its infrastructure and procedures
16will need to be adapted for Athena 10.  For the moment this file will
17document the Debathena procedures as they are, not as they will be.
18The current procedures do not even use this svn repository yet.
19
20Debian software used by Debathena:
21
22  * schroot - Used to manage build chroot environments for each
23    Debian/Ubuntu version.  We use the lvm-snapshot schroot type,
24    which allows rapid construction of ephemeral copies of template
25    "source" chroots, so that every binary package build is done in a
26    clean environment.
27
28  * debuild - Used to create Debian source packages from package
29    source directories.
30
31  * sbuild - Used to build binary packages from source packages inside
32    schroot environments.
33
34  * equivs - Used to create packages which only contain dependency
35    information.  Somewhat of a dirty hack, since it doesn't keep
36    proper changelogs, but it reduces overhead.
37
38  * CDBS (Common Debian Build System) - Referenced by debian/rules
39    files in packages.  Contains standard build rules to cut down on
40    per-package boilerplate.
41
42  * reprepro - Used to upload packages into the apt repositories.
43
44  * approx - Used to create a local cache of Debian packages on the
45    build server.  This cache is referenced by the build chroots for
46    improved performance.
47
48Procedures used by Debathena for handling day-to-day package changes
49for regular packages:
50
51  * To prepare a change to a regular package, the contents are edited
52    directly in the /mit/debathena/packages subdir.
53
54  * To record the prepared change in the changelog:
55    (From inside the package source directory)
56    dadch
57
58  * To build and deploy the changed package for all environments:
59    (From inside the package source directory, on debuild.mit.edu)
60    debuild -S
61    cd ..
62    da sbuildhack <filename>.dsc
63
64  * Generally the package is tested by manually installing it on test
65    machines with dpkg -i.
66
67  * To deploy the package to the repository:
68    (From the package source parent directory, on debuild.mit.edu as
69    the debuild user)
70    daupload-release <filename>_source.changes
71
72  * If the package is architecture-independent, the -A option is
73    passed to da and daupload-release.
74
75For an equivs-built package, the process is simpler since there is no
76source package and only one binary package:
77
78  * To prepare a change to the control file, the contents are edited
79    directly in the /mit/debathena/packages subdir.
80
81  * To build the binary package:
82    (From the package directory, on debuild.mit.edu)
83    equivs-build --full <filename>.equivs
84
85  * To deploy the package to the repository:
86    daequivsupload <filename>.changes
87
88Adding a new distribution:
89
90  <not yet written>
91
92Setting up a build server:
93(Adapted for Athena 10)
94
95  1. The build server must be installed with free space in an LVM
96     volume group.  The build chroots consume 2GB each.
97
98  1. Install debathena-standard as per the the instructions in
99     http://debathena.mit.edu/install.
100
101  2. Install the packages listed in
102     scripts/build-server/packages (using "aptitude install")
103
104  3. Install debathena-login, debathena-ssh-server, and
105     debathena-build-depends (using "aptitude install").
106
107     (Depending on how recently debathena-build-depends was rebuilt,
108     additional packages might need to be installed to satisfy the
109     build-depends of newer packages.  This can be taken care of later
110     when an error occurs building a source package.)
111
112  4. Edit /etc/security/access.conf and add a first line:
113     -:ALL EXCEPT root <developer usernames>:ALL
114
115  5. Edit /etc/group and add the developers to the sbuild group.
116
117  6. Create /etc/passwd entries for each developer with "hesinfo
118     username passwd >> /etc/passwd" and then run pwconv.
119
120     (This is not necessary for the login system on the main root
121     environment, but is for the chroot environments.)
122
123  7. Append to /etc/approx.conf the contents of
124     scripts/build-server/approx.conf.tail
125
126  8. For each supported dist and arch (see scripts/all-schroots) run:
127
128       VG=/dev/blah scripts/build-server/make-chroot dist arch
129
130     substituting the name of the volume group for blah.
131
132     Example: VG=/dev/dink scripts/build-server/make-chroot gutsy i386
133
134Removing a build chroot on the build server:
135
136  1. Run VG=/dev/blah scripts/clean-schroots to make sure that the
137     build chroot is not mounted, substituting the name of the volume
138     group for blah.
139
140  2. Edit /etc/schroot/schroot.conf and delete the section
141     corresponding to the chroot.
142
143  3. Run lvchange -an blah/chrootname
144     substituting the name of the volume group for blah and the chroot
145     name for chroot.  Example: lvchange -an dink/gutsy-i386-sbuild
146
147  4. Run lvremove -an blah/chrootname
Note: See TracBrowser for help on using the repository browser.