source: /cluster/svnroot/bccd-ng/branches/skylar-devel/bin/build_livecd.pl @ 2544

Last change on this file since 2544 was 2544, checked in by skylar, 10 years ago

only symlink for amd64 (#427)

  • Property svn:executable set to *
File size: 32.6 KB
Line 
1#!/usr/bin/perl
2
3use strict;
4use warnings;
5use Getopt::Long;
6use Pod::Usage;
7use File::Path;
8use File::Temp;
9use File::Copy;
10use WWW::Mechanize;
11use POSIX;
12use Bccd;
13use Cwd;
14use Bccd::TestDb qw/open_db insert_results/;
15use Readonly;
16
17$ENV{LANGUAGE} = "C";
18$ENV{LC_ALL} = "C";
19$ENV{LANG} = "C";
20
21my %opts;
22
23my($debmirror,$websvn,$rc,$out,$ft,$tmpdir,$cwd,$svnrev,
24   $Bccd,$allout,$rpkgs,$nouid,$nogid,$debmirror_host,
25   $debmirror_name,$debsecmirror,$dir);
26my(@lsof,@pids,@rd);
27
28GetOptions(
29    'arch=s' => \$opts{'arch'},
30    'outiso=s' => \$opts{'outiso'},
31    'suite=s' => \$opts{'suite'},
32    'nocleanup' => \$opts{'nocleanup'},
33    'updatedb=s' => \$opts{'updatedb'},
34    'svnrev=i' => \$opts{'svnrev'},
35    "debug" => \$opts{'debug'},
36    "info" => \$opts{'info'},
37    "debmirror=s" => \$opts{'debmirror'},
38    "websvn=s" => \$opts{'websvn'},
39    "dir=s" => \$opts{'dir'},
40    'help' => \$opts{'help'}
41    );
42
43if($opts{'help'}) {
44    pod2usage(1);
45}
46
47if(!$opts{'arch'} ||
48   !$opts{'outiso'} ||
49   !$opts{'suite'}
50    ) {
51    pod2usage(2);
52}
53
54Readonly my $PROJECT => 'bccd';
55$ft = new File::Temp();
56if(defined($opts{'dir'})) {
57        $dir = $opts{'dir'};
58} else {
59        $dir = File::Spec->tmpdir;
60}
61
62if(defined($opts{'nocleanup'})) {
63        $ft = File::Temp->newdir("/tmp/$PROJECT.XXXXXXX",CLEANUP => 0);
64}
65else {
66        $ft = File::Temp->newdir("/tmp/$PROJECT.XXXXXXX",DIR=>$dir,CLEANUP => 1);
67}
68$tmpdir = $ft->dirname();
69
70$Bccd = new Bccd();
71
72if(defined($opts{'debmirror'})) {
73        $debmirror_host = $opts{'debmirror'};
74} else {
75        $debmirror_host = "debmirror.cluster.earlham.edu";
76}
77$debmirror = "http://$debmirror_host";
78
79if(defined($opts{'websvn'})) {
80        $websvn = $opts{'websvn'};
81} else {
82        $websvn = "http://bccd-ng.cluster.earlham.edu/svn/bccd-ng/branches/skylar-devel/";
83}
84
85Readonly my $BUILDDIR   => $tmpdir."/build-bccd/";
86Readonly my $SOFTWARE   => "/bccd/software/";
87Readonly my $PROJDIR    => $BUILDDIR."/diskless/bccd/";
88Readonly my $BCCDCLIENT => $BUILDDIR."/diskless/clients/";
89Readonly my $NEWHOME    => "$BUILDDIR/bccd/home";
90Readonly my $CHECKIN    => "$NEWHOME/meta/nodes/";
91Readonly my $LIBFETCH   => "/root/liberate";
92$ENV{'DEBIAN_FRONTEND'} = "noninteractive";
93Readonly my $PACKAGES   => "screen openssh-client openssh-server less make gcc-4.2 g++-4.2 flex bison gdb alien lsb-rpm bzip2 sudo yum debootstrap rsync dhcp3-server tcpdump syslinux syslinux-common subversion nfs-common nfs-kernel-server ncurses-base ncurses-bin libncurses5 libncurses5-dev psmisc vim iproute pciutils host bc ntp ntpdate debconf-utils dhcpcd xbase-clients libxt-dev lesstif2 lesstif2-dev ipcalc dialog lvm2 grub parted tzdata xserver-xorg-video-fbdev xfonts-100dpi xfonts-75dpi xfonts-scalable xserver-xorg-video-all fontconfig xfonts-base gpm udev vtwm aterm rxvt xbase-clients menu bbkeys libwww-mechanize-perl postgresql-client-common postgresql-client-8.3 libdbi-perl libdbd-pg-perl strace tcsh libnet-dhcp-perl libnetaddr-ip-perl libnet-ip-perl libstdc++5 pdnsd csh libterm-readkey-perl libsvn-perl libui-dialog-perl libreadonly-perl sshfs autofs libnet-dhcp-perl dnsutils libfile-touch-perl libnet-cidr-perl arping dosfstools gawk dc glutg3-dev libxi-dev wireless-tools snmp snmpd netpbm imagemagick libyaml-perl tcl8.4 libc6-i386";
94Readonly my $EXTRA_PACKAGES => "fftw2 fftw-dev sfftw-dev sfftw2 automake1.7 console-tools libreadline5-dev hal libxmu-headers libxmu-dev gfortran ethtool libssl0.9.8 libblas-dev libblas-dev atlas3-base atlas3-base-dev atlas3-base refblas3 lapack3 atlas3-test libg2c0-dev libg2c0 apache2 iceweasel xpdf octave3.0 ruby sl robotfindskitten pvm xpvm emacs grac blender automake1.9 libtool libglu1-mesa-dev minicom lcd4linux insight joe grace libxpm-dev telnet lsof xresprobe fbset fluxbox xgalaga zenmap nedit eterm";
95Readonly my $AMD64_PACKAGES => "libc6-dev-i386 ia32-libs";
96Readonly my $BAD_PACKAGES   => ""; # Packages that throw some fatal error during install but still work
97Readonly my $PERLDIR        => "/usr/local/lib/site_perl/";
98Readonly my $TESTNAME       => "build_livecd";
99Readonly my $STAGE          => $Bccd->get_stage();
100Readonly my $KNOPDIR        => "$tmpdir/KNOPPIX";
101Readonly my $USER           => "$PROJECT";
102Readonly my $KERNREV        => "2.6.31.12_aufs";
103Readonly my @TIME           => localtime();
104Readonly my $FORMAT_DATE    => ($TIME[5]+1900)."-".($TIME[4]+1)."-".$TIME[3];
105Readonly my $SPLASH_FILE    => 'bccd_logo_new.png';
106Readonly my @MINIRT_MODS    => (
107                                "BusLogic.ko",
108                                "NCR53c406a.ko",
109                                "a100u2w.ko",
110                                "advansys.ko",
111                                "aic7xxx.ko",
112                                "cloop.ko",
113                                "dc395x.ko",
114                                "dtc.ko",
115                                "eata.ko",
116                                "ehci-hcd.ko",
117                                "fdomain.ko",
118                                "ff-memless.ko",
119                                "forcedeth.ko",
120                                "gdth.ko",
121                                "ieee1394.ko",
122                                "initio.ko",
123                                "usb-libusual.ko",
124                                "loop.ko",
125                                "mptbase.ko",
126                                "mptscsih.ko",
127                                "ohci-hcd.ko",
128                                "ohci1394.ko",
129                                "pas16.ko",
130                                "psi240i.ko",
131                                "sbp2.ko",
132                                "sym53c8xx.ko",
133                                "t128.ko",
134                                "tmscsim.ko",
135                                "u14-34f.ko",
136                                "uhci-hcd.ko",
137                                "ultrastor.ko",
138                                "usb-storage.ko",
139                                "usbcore.ko",
140                                "usbhid.ko",
141                                "wd7000.ko",
142                                );
143
144# Revision fetch
145
146if($opts{'info'}) {
147    $Bccd->set_debug('INFO');
148}
149
150if($opts{'debug'}) {
151    $Bccd->set_debug('DEBUG');
152}
153
154if($opts{'updatedb'}) {
155    $Bccd->redirect_stdio("$tmpdir");
156}
157
158if($opts{'svnrev'}) {
159    $svnrev = $opts{'svnrev'};
160} else {
161    $svnrev = $Bccd->run_test(
162        "getsvnrev",
163        "",
164        "Got subversion revision of $websvn.",
165        "$websvn",
166        );
167}
168
169$Bccd->run_test(
170    "chdir",
171    "",
172    "cd'd into $tmpdir.",
173    "$tmpdir",
174    );
175
176$Bccd->run_test(
177    "system",
178    "",
179    "Built initial install tree.",
180    "debootstrap --arch $opts{'arch'} $opts{'suite'} $BUILDDIR $debmirror",
181    );
182
183$Bccd->run_test(
184    "system",
185    "",
186    "Copied /dev to $BUILDDIR/dev.",
187    "cp -R /dev $BUILDDIR/dev",
188    );
189
190$Bccd->run_test(
191    "system",
192    "",
193    "Mounted /proc into $BUILDDIR.",
194    "mount -t proc none $BUILDDIR/proc",
195    );
196
197$Bccd->run_test(
198    "system",
199    "",
200    "Mounted /sys into $BUILDDIR.",
201    "mount -t sysfs none $BUILDDIR/sys",
202    );
203
204$Bccd->run_test(
205    "fwrite",
206    "",
207    "Disabled apt-get package authentication.",
208    "a",
209    "$BUILDDIR/etc/apt/apt.conf",
210    "APT::Get::AllowUnauthenticated 1 ;",
211    );
212
213$Bccd->run_test(
214    "system",
215    "",
216    "Installed Perl testing modules in install tree.",
217    "chroot $BUILDDIR apt-get -y install libtest-base-perl",
218    );
219
220$Bccd->run_test(
221    "system",
222    "",
223    "Installed Perl testing modules in install tree.",
224    "chroot $BUILDDIR apt-get -y install libtest-base-perl",
225    );
226
227foreach my $file ( "$BUILDDIR/etc/apt/sources.list","$BUILDDIR/etc/apt/apt.conf","$BUILDDIR/etc/network/interfaces","$BUILDDIR/etc/dhcp3/dhcpd.conf","$BUILDDIR/etc/dhcp3/dhclient.conf","$BUILDDIR/etc/ssh/ssh_config","$BUILDDIR/etc/ssh/sshd_config","$BUILDDIR/etc/profile","$BUILDDIR/etc/defaultdomain","$BUILDDIR/etc/default/nis","$BUILDDIR/etc/default/useradd","$BUILDDIR/etc/default/tftpd-hpa","$BUILDDIR/etc/rc.local" ) {
228    if( -f $file ) {
229        $Bccd->run_test(
230            "unlink",
231            "",
232            "rm'd existing cfg file $file",
233            "$file",
234            );
235    }
236}
237
238foreach my $dir ( $BCCDCLIENT, $PROJDIR, "$BUILDDIR/etc/network", "$BUILDDIR/etc/dhcp3", "$BUILDDIR/etc/ssh", "$BUILDDIR/$SOFTWARE", "$BUILDDIR/root/.ssh", "$BUILDDIR/nfs",
239                  "$BUILDDIR/$LIBFETCH", "$BUILDDIR/var/run" ) {
240    if( !(-d $dir) ) {
241        $Bccd->run_test(
242            "mkpath",
243            "",
244            "Made $dir directory.",
245            "$dir",
246            );
247    }
248}
249
250$Bccd->run_test(
251    "revfetch",
252    "",
253    "Fetched debconf preseed file.",
254    $svnrev,
255    "$websvn/packages/debconf.preseed",
256    "$BUILDDIR/root/debconf.preseed",
257    );
258
259$Bccd->run_test(
260    "system",
261    "",
262    "Set debconf selections.",
263    "/usr/sbin/chroot $BUILDDIR debconf-set-selections /root/debconf.preseed",
264    );
265
266$Bccd->run_test(
267    "revfetch",
268    "",
269    "Fetched apt source list.",
270    $svnrev,
271    "$websvn/packages/etc/apt/sources.list",
272    "$BUILDDIR/etc/apt/sources.list",
273    );
274
275$Bccd->run_test(
276    "regexsub_file",
277    "",
278    "Changed DEBMIRROR template in sources list to $debmirror_host.",
279    "$BUILDDIR/etc/apt/sources.list",
280    "!DEBMIRROR!",
281    "$debmirror_host",
282    );
283
284foreach my $file ( "interfaces", "interfaces.compute" ) {
285    $Bccd->run_test(
286        "revfetch",
287        "",
288        "Fetched network $file cfg.",
289        $svnrev,
290        "$websvn/packages/etc/network/$file",
291        "$BUILDDIR/etc/network/$file",
292        );
293}
294
295$Bccd->run_test(
296    "mkpath",
297    "",
298    "mkdir /etc/X11/xinit",
299    "$BUILDDIR/etc/X11/xinit",
300    );
301
302# Make apt work
303
304foreach my $dir ( "/var/cache/apt/archives", "/var/cache/apt/archives/partial" ) {
305    $Bccd->run_test(
306        "mkpath",
307        "",
308        "mkdir $dir",
309        "$BUILDDIR/$dir",
310        );
311}
312
313# /etc fetch
314foreach my $file ( "hosts", "hosts.compute", "hosts.allow", "hosts.deny", "profile", "modules", "modules.net",
315          "passwd.compute", "group.compute", "shadow.compute", "exports.compute",
316          "nsswitch.conf", "unionfs.conf", "X11/xinit/xinitrc", "X11/xinit/xserverrc",
317          "dpkg/dpkg.cfg", "ld.so.conf.d/software.conf", "sudoers", "init.d/bccd-networking",
318          "init.d/bccd-passwd", "init.d/bccd-dhcp", "init.d/bccd-sshd", "X11/xorg.conf",
319          "lam.conf", "init.d/bccd-nfs", "init.d/bccd-unite-sw", "init.d/bccd-nics",
320          "init.d/bccd-dhcp-conf", "init.d/bccd-route", "init.d/bccd-keyboard", "rc.local",
321          "init.d/bccd-fsrw", "auto.master", "auto.sshfs" ) {
322    $Bccd->run_test(
323        "revfetch",
324        "",
325        "Fetched /etc/$file file.",
326        $svnrev,
327        "$websvn/packages/etc/$file",
328        "$BUILDDIR/etc/$file",
329        );
330}
331
332$Bccd->run_test(
333    "chmod",
334    "",
335    "Set $BUILDDIR/etc/sudoers user/group readable only.",
336    0440,
337    "$BUILDDIR/etc/sudoers",
338    );
339
340foreach my $file ( "bccd-networking", "bccd-passwd", "bccd-dhcp", "bccd-sshd", "bccd-nfs", "bccd-unite-sw",
341          "bccd-nics", "bccd-dhcp-conf", "bccd-route", "bccd-keyboard", "bccd-fsrw" ) {
342    $Bccd->run_test(
343        "chmod",
344        "",
345        "Set $BUILDDIR/etc/init.d/$file executable.",
346        0755,
347        "$BUILDDIR/etc/init.d/$file",
348        );
349}
350
351$cwd = getcwd();
352
353$Bccd->run_test(
354    "chdir",
355    "",
356    "cd $BUILDDIR",
357    "$BUILDDIR",
358    );
359
360$Bccd->run_test(
361    "recrevfetch",
362    "",
363    "Fetched lib directory.",
364    $svnrev,
365    "$websvn/trees/lib/",
366    );
367
368$Bccd->run_test(
369    "recrevfetch",
370    "",
371    "Fetched bin directory.",
372    $svnrev,
373    "$websvn/trees/bin/",
374    );
375
376$Bccd->run_test(
377    "recrevfetch",
378    "",
379    "Fetched sbin directory.",
380    $svnrev,
381    "$websvn/trees/sbin/",
382    );
383
384$Bccd->run_test(
385    "recrevfetch",
386    "",
387    "Fetched etc tree.",
388    $svnrev,
389    "$websvn/trees/etc/",
390    );
391
392$Bccd->run_test(
393    "recrevfetch",
394    "",
395    "Fetched root home directory.",
396    $svnrev,
397    "$websvn/trees/root/",
398    );
399
400
401$Bccd->run_test(
402    "chdir",
403    "",
404    "cd $BUILDDIR/etc",
405    "$BUILDDIR/etc",
406    );
407
408$Bccd->run_test(
409    "recrevfetch",
410    "",
411    "Fetched skel profile.",
412    $svnrev,
413    "$websvn/packages/etc/skel",
414    );
415
416foreach my $file ( "$BUILDDIR/etc/skel/.firstlogin", "$BUILDDIR/etc/skel/.bash_profile", ) {
417    $Bccd->run_test(
418        "chmod",
419        "",
420        "chmod 0755 $file",
421        0755,
422        "$file",
423        );
424}
425
426if(-f "$BUILDDIR/etc/skel/.bashrc") {
427    $Bccd->run_test(
428        "unlink",
429        "",
430        "Removed default .bashrc",
431        "$BUILDDIR/etc/skel/.bashrc",
432        );
433}
434
435$Bccd->run_test(
436    "chdir",
437    "",
438    "cd'ing into $BUILDDIR/etc/skel",
439    "$BUILDDIR/etc/skel",
440    );
441
442$Bccd->run_test(
443    "chdir",
444    "",
445    "cd $cwd",
446    "$cwd",
447    );
448
449$Bccd->run_test(
450    "revfetch",
451    "",
452    "Fetched liberate script.",
453    $svnrev,
454    "$websvn/packages/liberate.pl",
455    "$BUILDDIR/root/liberate.pl",
456    );
457
458$Bccd->run_test(
459    "revfetch",
460    "",
461    "Fetched /etc/default/useradd file.",
462    $svnrev,
463    "$websvn/packages/etc/default/useradd",
464    "$BUILDDIR/etc/default/useradd",
465    );
466
467$Bccd->run_test(
468    "fwrite",
469    "",
470    "Allowing initrd kernel upgrade.",
471    "a",
472    "$BUILDDIR/etc/kernel-img.conf",
473    "do_initrd=yes",
474    );
475
476$Bccd->run_test(
477    "system",
478    "",
479    "Updated apt cache.",
480    "/usr/sbin/chroot $BUILDDIR apt-get update",
481    );
482
483$Bccd->run_test(
484    "system",
485    "",
486    "Fetched Debian keyring.",
487    "/usr/sbin/chroot $BUILDDIR apt-get -y --allow-unauthenticated  install debian-archive-keyring",
488    );
489
490if($opts{'arch'} eq 'i386') {
491        $Bccd->run_test(
492            "system",
493            "0",
494            "Fetched Debian packages.",
495            "/usr/sbin/chroot $BUILDDIR /usr/bin/aptitude --allow-untrusted -y install $PACKAGES $EXTRA_PACKAGES",
496            );
497}
498elsif($opts{'arch'} eq 'amd64') {
499        $Bccd->run_test(
500            "system",
501            "0",
502            "Fetched Debian packages.",
503            "/usr/sbin/chroot $BUILDDIR aptitude --allow-untrusted -y install $PACKAGES $EXTRA_PACKAGES $AMD64_PACKAGES",
504            );
505
506}
507
508if($opts{'arch'} eq 'amd64') {
509    $Bccd->run_test(
510        "system",
511        "",
512        "Symlinking IA32 libstdc++ compatibility library.",
513        "/usr/sbin/chroot $BUILDDIR ln -s /usr/lib32/libstdc++.so.6 /usr/lib32/libstdc++.so",
514        );
515}
516
517# Workaround for tftpd-hpa/inetd conflict
518$Bccd->run_test(
519    "system",
520    "",
521    "Removing inetutils-inetd to avoid conflict with tftpd-hpa.",
522    "/usr/sbin/chroot $BUILDDIR /usr/bin/dpkg -r inetutils-inetd",
523    );
524
525$Bccd->run_test(
526    "system",
527    100,
528    "Fetching tftpd-hpa separately.",
529    "/usr/sbin/chroot $BUILDDIR /usr/bin/apt-get --force-yes -y install tftpd-hpa",
530    );
531
532$Bccd->run_test(
533    "system",
534    "",
535    "Deleted cached deb packages.",
536    "/usr/sbin/chroot $BUILDDIR apt-get clean",
537    );
538
539$Bccd->run_test(
540    "revfetch",
541    "",
542    "Fetched tftpd-hpa configuration.",
543    $svnrev,
544    "$websvn/packages/etc/default/tftpd-hpa",
545    "$BUILDDIR/etc/default/tftpd-hpa",
546    );
547
548$Bccd->run_test(
549    "revfetch",
550    "",
551    "Fetched NIS default domain.",
552    $svnrev,
553    "$websvn/packages/etc/defaultdomain",
554    "$BUILDDIR/etc/defaultdomain",
555    );
556
557$Bccd->run_test(
558    "mkpath",
559    "",
560    "Making $KERNREV modules directory.",
561    "$BUILDDIR/lib/modules/$KERNREV",
562    );
563
564$Bccd->run_test(
565    "revfetch",
566    "",
567    "Fetched ssh_config file.",
568    $svnrev,
569    "$websvn/packages/etc/ssh/ssh_config",
570    "$BUILDDIR/etc/ssh/ssh_config",
571    );
572
573$Bccd->run_test(
574    "revfetch",
575    "",
576    "Fetched sshd_config file.",
577    $svnrev,
578    "$websvn/packages/etc/ssh/sshd_config",
579    "$BUILDDIR/etc/ssh/sshd_config",
580    );
581
582$Bccd->run_test(
583    "mkpath",
584    "",
585    "mkdir $BUILDDIR/etc/udev/rules.d",
586    "$BUILDDIR/etc/udev/rules.d",
587    );
588
589$Bccd->run_test(
590    "revfetch",
591    "",
592    "Fetched USB automounting udev rule.",
593    $svnrev,
594    "$websvn/packages/etc/udev/rules.d/99-automount_usb.rules",
595    "$BUILDDIR/etc/udev/rules.d/99-automount_usb.rules",
596    );
597
598# Revision write
599
600$Bccd->run_test(
601    "fwrite",
602    "",
603    "Opened $BUILDDIR/etc/$PROJECT-revision for writing.",
604    "w",
605    "$BUILDDIR/etc/$PROJECT-revision",
606    "$svnrev",
607    );
608
609# Install software
610
611$Bccd->run_test(
612    "mkpath",
613    "",
614    "Created node checkin directory.",
615    "$CHECKIN",
616    );
617
618
619$nouid = $Bccd->run_test(
620    "getuseruid",
621    "",
622    "Got uid for nobody user.",
623    "nobody",
624    );
625
626$nogid = $Bccd->run_test(
627    "getusergid",
628    "",
629    "Got gid for nobody user.",
630    "nobody",
631    );
632
633$Bccd->run_test(
634    "chown",
635    "",
636    "chown'd checkin directory $CHECKIN to $nouid:$nogid.",
637    "$nouid",
638    "$nogid",
639    "$CHECKIN",
640    );
641
642if( ! -f "$BUILDDIR/usr/bin/python2" ) {
643    $Bccd->run_test(
644        "symlink",
645        "",
646        "Linked python->python2 for C3 tools.",
647        "$BUILDDIR/usr/bin/python",
648        "$BUILDDIR/usr/bin/python2",
649        );
650}
651
652$Bccd->run_test(
653    "fcopy",
654    "",
655    "Copied pxelinux to tftpboot.",
656    "$BUILDDIR/usr/lib/syslinux/pxelinux.0",
657    "$BUILDDIR/var/lib/tftpboot/pxelinux.0",
658    );
659
660$Bccd->run_test(
661    "mkpath",
662    "",
663    "Made $BUILDDIR/var/lib/tftpboot/pxelinux.cfg",
664    "$BUILDDIR/var/lib/tftpboot/pxelinux.cfg",
665    );
666
667foreach my $file ( "dhcpd.conf", "dhclient.conf", "dhclient.conf-bccd", "dhclient.conf-any" ) {
668    $Bccd->run_test(
669        "revfetch",
670        "",
671        "Fetched DHCP $file configuration.",
672        $svnrev,
673        "$websvn/packages/etc/dhcp3/$file",
674        "$BUILDDIR/etc/dhcp3/$file",
675        );
676}
677
678# Needed down here to prevent hang with debconf
679foreach my $file ( "exports", "hosts.equiv", "gpm.conf", "inittab" ) {
680    $Bccd->run_test(
681        "revfetch",
682        "",
683        "Fetched /etc/$file file.",
684        $svnrev,
685        "$websvn/packages/etc/$file",
686        "$BUILDDIR/etc/$file",
687        );
688}
689
690$Bccd->run_test(
691    "system",
692    "",
693    "Setting LSB parsing of init scripts.",
694    "touch $BUILDDIR/etc/update-rc.d-lsbparse",
695    );
696
697$Bccd->run_test(
698    "system",
699    "",
700    "Disabling hardware-optimized ld.so directories.",
701    "touch $BUILDDIR/etc/ld.so.nohwcap",
702    );
703
704foreach my $script ( "nis", "ssh-host-keys", "nfs-kernel-server", "ssh",
705                     "dhcp3-server", "dbus", "hal", "apache2", ) {
706    $Bccd->run_test(
707        "system",
708        "",
709        "Disabled $script.",
710        "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d -f $script remove",
711        );
712}
713
714foreach my $script ( "nfs-common", "vboxadd-service", "mpd", "bccd-mount-devs", ) {
715    $Bccd->run_test(
716        "system",
717        "",
718        "Enabling $script at boot time.",
719        "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d $script defaults",
720        );
721}
722
723# This must run before 20 (bccd-passwd) and autofs
724foreach my $script ( "bccd-unite-sw", "perfctr", ) {
725    $Bccd->run_test(
726        "system",
727        "",
728        "Enabling $script config.",
729        "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d $script defaults 18",
730        );
731}
732
733$Bccd->run_test(
734        "system",
735        "",
736        "Enabling home directory overlay cleaning.",
737        "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d bccd-clean-home start 5 2 .",
738        );
739
740$Bccd->run_test(
741    "system",
742    "",
743    "Enabling bccd-nics config.",
744    "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d bccd-nics start 39 S .",
745    );
746
747$Bccd->run_test(
748    "system",
749    "",
750    "Enabling bccd-dhcp-conf config.",
751    "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d bccd-dhcp-conf start 38 S .",
752    );
753
754$Bccd->run_test(
755    "system",
756    "",
757    "Enabling bccd-route config.",
758    "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d bccd-route start 41 S .",
759    );
760
761$Bccd->run_test(
762    "system",
763    "",
764    "Enabling bccd-fsrw config.",
765    "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d bccd-fsrw start 11 S .",
766    );
767
768$Bccd->run_test(
769    "system",
770    "",
771    "Enabling bccd-keyboard config.",
772    "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d bccd-keyboard start 18 S .",
773    );
774
775$Bccd->run_test(
776    "system",
777    "",
778    "Enabling bccd-networking config.",
779    "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d bccd-networking start 42 2 S .",
780    );
781
782$Bccd->run_test(
783    "system",
784    "",
785    "Enabling networking config.",
786    "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d networking start 42 2 S .",
787    );
788
789$Bccd->run_test(
790    "system",
791    "",
792    "Enabling bccd-nfs config.",
793    "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d bccd-nfs start 20 2 S .",
794    );
795
796$Bccd->run_test(
797    "system",
798    "",
799    "Enabling bccd-passwd config.",
800    "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d bccd-passwd start 20 S .",
801    );
802
803$Bccd->run_test(
804    "system",
805    "",
806    "Enabling bccd-sshd config.",
807    "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d bccd-sshd start 20 2 S .",
808    );
809
810$Bccd->run_test(
811    "system",
812    "",
813    "Enabling bccd-dhcp config.",
814    "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d bccd-dhcp start 40 S .",
815    );
816
817$Bccd->run_test(
818    "system",
819    "",
820    "Added root password.",
821    "/usr/sbin/chroot $BUILDDIR /usr/sbin/usermod -p '\$1\$erNdlHdL\$EV6C0eBbe6M3bVaK9m4If0' root",
822    );
823
824# User creation
825
826# Manual writes to keep NIS from interfering with static uid/gid
827
828$Bccd->run_test(
829    "fwrite",
830    "",
831    "Wrote out sshd user.",
832    "a",
833    "$BUILDDIR/etc/passwd",
834    "sshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin",
835    );
836
837$Bccd->run_test(
838    "fwrite",
839    "",
840    "Wrote out sshd group.",
841    "a",
842    "$BUILDDIR/etc/shadow",
843    "sshd:!:13625:0:99999:7:::",
844    );
845
846$Bccd->run_test(
847    "system",
848    "",
849    "Creating non-root-group account.",
850    "/usr/sbin/chroot $BUILDDIR /usr/sbin/groupadd -g 1000 bccd",
851    );
852
853$Bccd->run_test(
854    "system",
855    "",
856    "Created non-root user account.","/usr/sbin/chroot $BUILDDIR /usr/sbin/useradd -s /bin/bash -G fuse,adm -u 1000 -g 1000 -d /home/$USER -m -p '\$1\$Agm0SXPB\$JnObEvwBQdg4WCovvMKST1' $USER",
857    );
858
859$Bccd->run_test(
860    "system",
861    "",
862    "Altered non-root account directory for KNOPPIX.",
863    "/usr/sbin/chroot $BUILDDIR /usr/sbin/usermod -d /UNIONFS/home/$USER $USER",
864    );
865
866# Bccd perl modules
867
868$Bccd->run_test(
869    "mkpath",
870    "",
871    "mkdir $BUILDDIR/$PERLDIR",
872    "$BUILDDIR/$PERLDIR",
873    );
874
875$Bccd->run_test(
876    "chdir",
877    "",
878    "cd'd to $BUILDDIR/$PERLDIR/../",
879    "$BUILDDIR/$PERLDIR/../",
880    );
881
882
883$Bccd->run_test(
884    "recrevfetch",
885    "",
886    "Checked out Bccd perl modules.",
887    $svnrev,
888    "$websvn/trees/$PERLDIR/",
889    );
890
891$Bccd->run_test(
892    "chdir",
893    "",
894    "cd'd to $tmpdir.",
895    "$tmpdir",
896    );
897
898$Bccd->run_test(
899    "recrevfetch",
900    "",
901    "Checked out hardware autodetect stuff.",
902    $svnrev,
903    "$websvn/trees/hwsetup/",
904    );
905
906$Bccd->run_test(
907    "system",
908    "",
909    "Copied hardware autodetect into $BUILDDIR.",
910    "cp -R $tmpdir/hwsetup/* $BUILDDIR/",
911    );
912
913# Starting hwsetup init scripts
914foreach my $script ( "knoppix-autoconfig", "xserver-xorg" ) {
915    $Bccd->run_test(
916        "system",
917        "",
918        "Enabled $script.",
919        "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d $script start 20 2 3 4 5 .",
920        );
921}
922
923# Software install
924
925$Bccd->run_test(
926    "chdir",
927    "",
928    "cd'd to $BUILDDIR",
929    "$BUILDDIR",
930    );
931
932$Bccd->run_test(
933    "recrevfetch",
934    "",
935    "Fetched software tree.",
936    $svnrev,
937    "$websvn/trees/software/bccd/",
938    );
939
940$Bccd->run_test(
941    "system",
942    "",
943    "Changed $SOFTWARE to bccd:bccd.",
944    "/usr/sbin/chroot $BUILDDIR /bin/chown -R bccd:bccd $SOFTWARE",
945    );
946
947foreach my $prog ( <$BUILDDIR/bccd/software/*/bin/*> ) {
948    $Bccd->run_test(
949        "chmod",
950        "",
951        "chmod 0755 $prog",
952        0755,
953        "$prog",
954        );
955}
956
957$Bccd->run_test(
958        "mkpath",
959        "",
960        "mkdir $BUILDDIR/usr/lib/iceweasel/plugins",
961        "$BUILDDIR/usr/lib/iceweasel/plugins", 
962        );
963
964$Bccd->run_test(
965        "fcopy",
966        "",
967        "cp $BUILDDIR//bccd/software/jre1.6.0_13/plugin/i386/ns7/libjavaplugin_oji.so $BUILDDIR/usr/lib/iceweasel/plugins",
968        "$BUILDDIR//bccd/software/jre1.6.0_13/plugin/i386/ns7/libjavaplugin_oji.so",
969        "$BUILDDIR/usr/lib/iceweasel/plugins",
970        );
971
972$Bccd->run_test(
973    "chdir",
974    "",
975    "cd $BUILDDIR/",
976    "$BUILDDIR/",
977    );
978
979$Bccd->run_test(
980    "recrevfetch",
981    "",
982    "Fetched test tree.",
983    $svnrev,
984    "$websvn/trees/home",
985    );
986
987$Bccd->run_test(
988    "system",
989    "",
990    "chown'd $BUILDDIR/home/bccd to bccd:bccd",
991    "/usr/sbin/chroot $BUILDDIR chown -R $USER:$USER /home/bccd",
992    );
993
994$Bccd->run_test(
995    "chmod",
996    "",
997    "chmod 0600 $BUILDDIR/home/bccd/.mpd.conf",
998    0600,
999    "$BUILDDIR/home/bccd/.mpd.conf",
1000    );
1001
1002$Bccd->run_test(
1003    "chmod",
1004    "",
1005    "chmod 0755 $BUILDDIR/root/.ssh/",
1006    0755,
1007    "$BUILDDIR/root/.ssh/",
1008    );
1009
1010$Bccd->run_test(
1011    "chmod",
1012    "",
1013    "chmod 0755 $BUILDDIR/home/$USER/.ssh",
1014    0755,
1015    "$BUILDDIR/home/$USER/.ssh",
1016    );
1017
1018$Bccd->run_test(
1019                "chmod",
1020                "",
1021                "chmod 0755 $BUILDDIR/home/$USER",
1022                0755,
1023                "$BUILDDIR/home/$USER",
1024                );
1025
1026foreach my $file ( "$BUILDDIR/root/.ssh/bccd", "$BUILDDIR/root/.ssh/config" ) {
1027    $Bccd->run_test(
1028        "chmod",
1029        "",
1030        "chmod 0600 $file",
1031        0600,
1032        "$file",
1033        );
1034}
1035
1036foreach my $key ( <$BUILDDIR/etc/ssh/ssh*key*> ) {
1037    $Bccd->run_test(
1038        "unlink",
1039        "",
1040        "Removed ssh key $key.",
1041        "$key",
1042        );
1043}
1044
1045$Bccd->run_test(
1046    "system",
1047    "",
1048    "Requiring bccd ssh start script for ssh start.",
1049    "perl -wpli -e 's/^(#\\s+Required-Start:\\s+.*\$)/\$1 bccd-sshd/' $BUILDDIR/etc/init.d/ssh",
1050    );
1051
1052$Bccd->run_test(
1053    "system",
1054    "",
1055    "Requiring bccd nic start script for networking start.",
1056    "perl -wpli -e 's/^(#\\s+Required-Start:\\s+.*\$)/\$1 bccd-nics/' $BUILDDIR/etc/init.d/networking",
1057    );
1058
1059$Bccd->run_test(
1060    "system",
1061    "",
1062    "Allowing pdnsd to listen on all interfaces.",
1063    "perl -wpli -e 's!(server_ip = )!// \$1!g' $BUILDDIR/usr/share/pdnsd/pdnsd-resolvconf.conf",
1064    );
1065
1066$Bccd->run_test(
1067    "system",
1068    "",
1069    "Fixing cstddef for openmpi.",
1070    "perl -wpli -e 's/#include_next/#include/g' $BUILDDIR/usr/include/c++/4.3/cstddef",
1071    );
1072
1073# Make us LIVE
1074
1075$Bccd->run_test(
1076    "fwrite",
1077    "",
1078    "Made us LIVE.",
1079    "w",
1080    "$BUILDDIR/etc/$PROJECT-stage",
1081    "LIVE",
1082    );
1083
1084# Setting up menus
1085
1086foreach my $file (<$BUILDDIR/usr/share/menu/*>) {
1087    $Bccd->run_test(
1088        "unlink",
1089        "",
1090        "rm'd X menu item $file",
1091        "$file",
1092        );
1093}
1094
1095$cwd = getcwd();
1096
1097$Bccd->run_test(
1098    "chdir",
1099    "",
1100    "cd $BUILDDIR/",
1101    "$BUILDDIR/",
1102    );
1103
1104$Bccd->run_test(
1105    "recrevfetch",
1106    "",
1107    "Fetched /usr items.",
1108    $svnrev,
1109    "$websvn/trees/usr/",
1110    );
1111
1112$Bccd->run_test(
1113    "recrevfetch",
1114    "",
1115    "Fetched architecure-specific items for $opts{'arch'}.",
1116    $svnrev,
1117    "$websvn/trees/arch/$opts{'arch'}",
1118    );
1119
1120$Bccd->run_test(
1121    "system",
1122    "",
1123    "Copied architecture-specific items from /$opts{'arch'} to /.",
1124        "/usr/sbin/chroot $BUILDDIR /usr/bin/rsync -av --progress /$opts{'arch'}/ /",
1125    );
1126
1127$Bccd->run_test(
1128        "fcopy",
1129        "",
1130        "Copied cloop.ko into $tmpdir.",
1131        "$BUILDDIR/KNOPPIX/KNOPPIX/modules/cloop.ko",
1132        "$tmpdir/cloop.ko",
1133        );
1134
1135$Bccd->run_test(
1136    "chdir",
1137    "",
1138    "Changed back to old directory.",
1139    "$cwd",
1140    );
1141
1142$Bccd->run_test(
1143    "system",
1144    "",
1145    "Updated desktop menus.",
1146    "/usr/sbin/chroot $BUILDDIR /usr/bin/update-menus",
1147    );
1148
1149# Software end
1150
1151# Pre-fetching liberation stuff
1152
1153$Bccd->run_test(
1154    "revfetch",
1155    "",
1156    "Fetched LVM fdisk script.",
1157    $svnrev,
1158    "$websvn/packages/fdisk_lvm.input",
1159    "$BUILDDIR/$LIBFETCH/fdisk_lvm.input",
1160    );
1161
1162$Bccd->run_test(
1163    "revfetch",
1164    "",
1165    "Fetched BCCD splash screen.",
1166    $svnrev,
1167    "$websvn/packages/$SPLASH_FILE",
1168    "$BUILDDIR/$LIBFETCH/$SPLASH_FILE",
1169    );
1170
1171$Bccd->run_test(
1172    "revfetch",
1173    "",
1174    "Fetched liberation exports file.",
1175    $svnrev,
1176    "$websvn/packages/etc/exports.liberate",
1177    "$BUILDDIR/$LIBFETCH/exports",
1178    );
1179
1180$Bccd->run_test(
1181    "chdir",
1182    "",
1183    "cd'ing to $BUILDDIR/$LIBFETCH/.",
1184    "$BUILDDIR/$LIBFETCH",
1185    );
1186
1187$Bccd->run_test(
1188    "system",
1189    "",
1190    "Tar'd up linux_aufs.",
1191    "tar -C $BUILDDIR -cjvf $BUILDDIR/$LIBFETCH/lib-linux.tar.bz2 boot lib/modules var/lib/tftpboot",
1192    );
1193
1194foreach my $file (grep(-f $_, <$BUILDDIR/var/lib/apt/lists/*>)) {
1195        $Bccd->run_test(
1196            "unlink",
1197            "",
1198            "Removed apt file lists.",
1199            "$file",
1200            );
1201}
1202
1203$Bccd->run_test(
1204    "recrevfetch",
1205    "",
1206    "Fetched $websvn/trees/diskless over svn.",
1207    $svnrev,
1208    "$websvn/trees/diskless",
1209    );
1210
1211$Bccd->run_test(
1212    "chdir",
1213    "",
1214    "Reverted to $cwd.",
1215    "$cwd",
1216    );
1217
1218$Bccd->run_test(
1219    "revfetch",
1220    "",
1221    "Fetched grub menu.",
1222    $svnrev,
1223    "$websvn/packages/boot/grub/menu.lst",
1224    "$BUILDDIR/$LIBFETCH/grub_menu.lst",
1225    );
1226
1227$Bccd->run_test(
1228    "lsofkill",
1229    "",
1230    "Killing procs in $BUILDDIR: ",
1231    "$BUILDDIR",
1232    );
1233
1234# Make here so automount doesn't destroy it
1235
1236$Bccd->run_test(
1237    "mkpath",
1238    "",
1239    "mkdir $BUILDDIR/mnt/ssh",
1240    "$BUILDDIR/mnt/ssh",
1241    );
1242
1243$Bccd->run_test(
1244    "system",
1245    "",
1246    "Unmounted $BUILDDIR/proc.",
1247    "umount -l $BUILDDIR/proc",
1248    );
1249
1250$Bccd->run_test(
1251    "system",
1252    "",
1253    "Unmounted $BUILDDIR/sys.",
1254    "umount -l $BUILDDIR/sys",
1255    );
1256
1257$Bccd->run_test(
1258    "chdir",
1259    "",
1260    "cd'd to $tmpdir for Knoppix fetch.",
1261    "$tmpdir",
1262    );
1263
1264$Bccd->run_test(
1265    "recrevfetch",
1266    "",
1267    "Fetched KNOPPIX sans root filesystem.",
1268    $svnrev,
1269    "$websvn/trees/KNOPPIX/",
1270    );
1271
1272$Bccd->run_test(
1273        "revfetch",
1274        "",
1275        "Fetched minirt device configuration.",
1276        $svnrev,
1277        "$websvn/packages/mknod.y",
1278        "$tmpdir/mknod.y",
1279        );
1280
1281$Bccd->run_test(
1282        "mknods",
1283        "",
1284        "Created minirt device nodes.",
1285        "$tmpdir/mknod.y",
1286        "$tmpdir/KNOPPIX/boot/isolinux/minirt",
1287        );
1288
1289$Bccd->run_test(
1290        "system",
1291        "",
1292        "Created minirt filesystem.",
1293        "dd if=/dev/zero of=$tmpdir/minirt bs=1k count=5400",
1294        );
1295
1296$Bccd->run_test(
1297        "system",
1298        "",
1299        "Made ext2 filesystem in minirt filesystem.",
1300        "/sbin/mke2fs -F $tmpdir/minirt",
1301        );
1302
1303$Bccd->run_test(
1304        "mkpath",
1305        "",
1306        "Made loop directory.",
1307        "$tmpdir/loop",
1308        );
1309
1310$Bccd->run_test(
1311        "system",
1312        "",
1313        "Mounted minirt on loop directory.",
1314        "/bin/mount -t ext2 -o loop $tmpdir/minirt $tmpdir/loop",
1315        );
1316
1317$Bccd->run_test(
1318        "system",
1319        "",
1320        "Copied minirt into loop filesystem.",
1321        "rsync -a $tmpdir/KNOPPIX/boot/isolinux/minirt/ $tmpdir/loop/",
1322        );
1323
1324$Bccd->run_test(
1325        "mkpath",
1326        "",
1327        "Made modules directory in loop filesystem.",
1328        "$tmpdir/loop/modules/",
1329        );
1330
1331foreach my $mod (@MINIRT_MODS) {
1332        $Bccd->run_test(
1333                "system",
1334                "",
1335                "Copied $mod into minirt loop filesystem.",
1336                "find $BUILDDIR/lib/modules/$KERNREV/ -type f -name $mod -exec /bin/cp -v {} $tmpdir/loop/modules/$mod \\;",
1337        );
1338}
1339
1340$Bccd->run_test(
1341        "fcopy",
1342        "",
1343        "Copied cloop.ko into $tmpdir.",
1344        "$tmpdir/cloop.ko",
1345        "$tmpdir/loop/modules",
1346        );
1347
1348$Bccd->run_test(
1349        "fmove",
1350        "",
1351        "Moved cloop.ko into KNOPPIX directory.",
1352        "$tmpdir/cloop.ko",
1353        "$tmpdir/KNOPPIX/KNOPPIX/modules/cloop.ko",
1354        );
1355
1356$Bccd->run_test(
1357        "system",
1358        "",
1359        "Unmounted loop filesystem.",
1360        "umount $tmpdir/loop/",
1361        );
1362
1363$Bccd->run_test(
1364        "rmtree",
1365        "",
1366        "Removed minirt tree.",
1367        "$tmpdir/KNOPPIX/boot/isolinux/minirt/",
1368        );
1369
1370$Bccd->run_test(
1371        "system",
1372        "",
1373        "Placed minirt in KNOPPIX tree.",
1374        "gzip -c $tmpdir/minirt > $tmpdir/KNOPPIX/boot/isolinux/minirt.gz",
1375        );
1376
1377$Bccd->run_test(
1378    "revfetch",
1379    "",
1380    "Fetched background image.",
1381    $svnrev,
1382    "$websvn/packages/$SPLASH_FILE",
1383    "$tmpdir/$SPLASH_FILE",
1384    );
1385
1386$Bccd->run_test(
1387    "system",
1388    "",
1389    "Creating isolinux splash image.",
1390    "pngtopnm $tmpdir/$SPLASH_FILE | ppmtolss16 > $tmpdir/KNOPPIX/boot/isolinux/logo.16",
1391    );
1392
1393$Bccd->run_test(
1394    "regexsub_file",
1395    "",
1396    "Adding revision to KNOPPIX boot file.",
1397    "$tmpdir/KNOPPIX/boot/isolinux/boot.msg",
1398    "==REVISION==",
1399    "$svnrev",
1400    );
1401
1402$Bccd->run_test(
1403    "revfetch",
1404    "",
1405    "Fetched knoppix kernel image.",
1406    $svnrev,
1407    "$websvn/trees/arch/$opts{'arch'}/boot/vmlinuz-$KERNREV",
1408        "$KNOPDIR/boot/isolinux/linux",
1409    );
1410
1411$Bccd->run_test(
1412    "regexsub_file",
1413    "",
1414    "Adding date to KNOPPIX boot file.",
1415    "$tmpdir/KNOPPIX/boot/isolinux/boot.msg",
1416    "==DATE==",
1417    "$FORMAT_DATE",
1418    );
1419
1420$Bccd->run_test(
1421        "fwrite",
1422        "",
1423        "Writing out date to /etc/$PROJECT-build-date.",
1424        "w",
1425        "$BUILDDIR/etc/$PROJECT-build-date",
1426        "$FORMAT_DATE",
1427        );
1428
1429$Bccd->run_test(
1430        "rmtree",
1431        "",
1432        "Removing linux_aufs fetch for $BUILDDIR.",
1433        "$BUILDDIR/$opts{'arch'}",
1434        );
1435
1436$Bccd->run_test(
1437    "system",
1438    "",
1439    "Created compressed root filesystem.",
1440    "bash -c 'genisoimage -R -U -V BCCD-NG -publisher ccg -hide-rr-moved -cache-inodes -no-bak -pad $BUILDDIR | create_compressed_fs  - 65536 > $tmpdir/KNOPPIX/KNOPPIX/KNOPPIX'",
1441    );
1442
1443$Bccd->run_test(
1444    "system",
1445    "",
1446    "Created bootable ISO image.",
1447    "genisoimage -pad -l -r -J -v -V BCCD-NG -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -hide-rr-moved -o $opts{'outiso'} $tmpdir/KNOPPIX",
1448    );
1449
1450print "Passed ".$Bccd->get_passed()." out of ".$Bccd->get_total()." total tests.\n";
1451
1452if($opts{'updatedb'}) {
1453    my $dbh = open_db("$opts{'updatedb'}");
1454    if( $Bccd->get_passed() < $Bccd->get_total() ) {
1455        insert_results($TESTNAME,$STAGE,$svnrev,$Bccd->snarf_file("$tmpdir/allout"),"FAILURE",$dbh);
1456    } else {
1457        insert_results($TESTNAME,$STAGE,$svnrev,$Bccd->snarf_file("$tmpdir/allout"),"SUCCESS",$dbh);
1458    }
1459    $Bccd->close_stdio();
1460    $dbh->disconnect;
1461}
1462
1463chdir $ENV{'HOME'};
1464
1465exit $Bccd->get_total()-$Bccd->get_passed();
1466
1467__END__
1468
1469build_livecd.pl - Build process based on Knoppix Live CD creation
1470
1471=head1 - SYNOPSIS
1472
1473This script is based on KNOPPIX project documentation for creating a
1474Debian-based Live CD using cloop.
1475
1476=head1 - OPTIONS
1477
1478=over 8
1479
1480=item B<--builddir> I<path-to-dir>
1481
1482Path to build directory for live CD. Will be cleaned up after the work is
1483done.
1484
1485=item B<--arch> I<arch>
1486
1487Architecture to build for.
1488
1489=item B<--outiso> I<path-to-file>
1490
1491Where to output the bccd ISO image.
1492
1493=item B<--websvn> I<websvn-url>
1494
1495Path to bccd's websvn branch, i.e. http://cluster.earlham.edu/svn/bccd-ng/trunk.
1496
1497=item B<--suite> I<release-name>
1498
1499Name of the Debian release suite to download.
1500
1501=item B<--nocleanup>
1502
1503Preserve the /tmp directory for investigation.
1504
1505=item B<--help>
1506
1507This message.
1508
1509=cut
Note: See TracBrowser for help on using the repository browser.