1 | #!/usr/bin/env perl |
---|
2 | |
---|
3 | # $Id: build_livecd.pl 4817 2014-07-21 00:02:45Z skylar $ |
---|
4 | |
---|
5 | # This file is part of BCCD, an open-source live CD for computational science |
---|
6 | # education. |
---|
7 | # |
---|
8 | # Copyright (C) 2011 Andrew Fitz Gibbon, Paul Gray, Kevin Hunter, Dave Joiner, |
---|
9 | # Sam Leeman-Munk, Tom Murphy, Charlie Peck, Skylar Thompson, & Aaron Weeden |
---|
10 | |
---|
11 | # |
---|
12 | # This program is free software: you can redistribute it and/or modify |
---|
13 | # it under the terms of the GNU General Public License as published by |
---|
14 | # the Free Software Foundation, either version 3 of the License, or |
---|
15 | # (at your option) any later version. |
---|
16 | # |
---|
17 | # This program is distributed in the hope that it will be useful, |
---|
18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
20 | # GNU General Public License for more details. |
---|
21 | # |
---|
22 | # You should have received a copy of the GNU General Public License |
---|
23 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
---|
24 | |
---|
25 | #BCCD ISO build script |
---|
26 | |
---|
27 | use strict; |
---|
28 | use warnings; |
---|
29 | use lib "../trees/usr/local/lib/site_perl"; |
---|
30 | use Getopt::Long; |
---|
31 | use Pod::Usage; |
---|
32 | use File::Path; |
---|
33 | use File::Temp; |
---|
34 | use File::Copy; |
---|
35 | use File::Basename; |
---|
36 | use WWW::Mechanize; |
---|
37 | use POSIX; |
---|
38 | use Bccd; |
---|
39 | use Cwd; |
---|
40 | use Bccd::TestDb qw/open_db insert_results/; |
---|
41 | use Readonly; |
---|
42 | use IO::Handle; |
---|
43 | |
---|
44 | # Autoflush both stdout and stderr |
---|
45 | STDERR->autoflush(1); |
---|
46 | STDOUT->autoflush(1); |
---|
47 | |
---|
48 | $ENV{LANGUAGE} = "C"; |
---|
49 | $ENV{LC_ALL} = "C"; |
---|
50 | $ENV{LANG} = "C"; |
---|
51 | |
---|
52 | Readonly my $CONF_FILE => "bin/build_livecd.conf"; |
---|
53 | |
---|
54 | my %opts; |
---|
55 | |
---|
56 | my($debmirror,$workspace,$rc,$out,$ft,$tmpdir,$cwd,$svnrev, |
---|
57 | $Bccd,$allout,$rpkgs,$nouid,$nogid,$debmirror_host, |
---|
58 | $debmirror_name,$debsecmirror,$dir,$release,$kern_deb); |
---|
59 | my(@lsof,@pids,@rd); |
---|
60 | |
---|
61 | $Bccd = new Bccd(); |
---|
62 | |
---|
63 | $Bccd->log_and_cont('DEBUG','main',"Jenkins workspace is $ENV{WORKSPACE}"); |
---|
64 | Readonly my $WORKSPACE => $ENV{WORKSPACE}; |
---|
65 | |
---|
66 | # Load configuration file first |
---|
67 | if(-f $CONF_FILE) { |
---|
68 | %opts = %{$Bccd->run_test( |
---|
69 | "read_yaml", |
---|
70 | "", |
---|
71 | "Read $CONF_FILE", |
---|
72 | "$CONF_FILE" |
---|
73 | )}; |
---|
74 | } |
---|
75 | |
---|
76 | # Then override with command-line options |
---|
77 | GetOptions( |
---|
78 | 'arch=s' => \$opts{'ARCH'}, |
---|
79 | 'outdir=s' => \$opts{'OUTDIR'}, |
---|
80 | 'suite=s' => \$opts{'SUITE'}, |
---|
81 | 'nocleanup' => \$opts{'NOCLEANUP'}, |
---|
82 | 'updatedb=s' => \$opts{'UPDATEDB'}, |
---|
83 | 'loglevel=s' => \$opts{'LOGLEVEL'}, |
---|
84 | 'debmirror=s' => \$opts{'DEBMIRROR'}, |
---|
85 | 'dir=s' => \$opts{'DIR'}, |
---|
86 | 'release=s' => \$opts{'RELEASE'}, |
---|
87 | 'help' => \$opts{'help'} |
---|
88 | ); |
---|
89 | |
---|
90 | if($opts{'help'}) { |
---|
91 | pod2usage(-verbose => 2); |
---|
92 | } |
---|
93 | |
---|
94 | if(!$opts{'ARCH'} || |
---|
95 | !$opts{'OUTDIR'} || |
---|
96 | !$opts{'SUITE'} |
---|
97 | ) { |
---|
98 | pod2usage(-verbose => 2); |
---|
99 | } |
---|
100 | |
---|
101 | Readonly my $PROJECT => 'bccd'; |
---|
102 | $ft = new File::Temp(); |
---|
103 | if(defined($opts{'DIR'})) { |
---|
104 | $dir = $opts{'DIR'}; |
---|
105 | } else { |
---|
106 | $dir = File::Spec->tmpdir; |
---|
107 | } |
---|
108 | |
---|
109 | if(defined($opts{'NOCLEANUP'})) { |
---|
110 | print "Disabled automatic cleanup\n"; |
---|
111 | $ft = File::Temp->newdir("/tmp/$PROJECT.XXXXXXX",CLEANUP => 0); |
---|
112 | } |
---|
113 | else { |
---|
114 | print "Enabled automatic cleanup\n"; |
---|
115 | $ft = File::Temp->newdir("/tmp/$PROJECT.XXXXXXX",DIR=>$dir,CLEANUP => 1); |
---|
116 | } |
---|
117 | $tmpdir = $ft->dirname(); |
---|
118 | |
---|
119 | if(defined($opts{'DEBMIRROR'})) { |
---|
120 | $debmirror_host = $opts{'DEBMIRROR'}; |
---|
121 | } else { |
---|
122 | $debmirror_host = "debmirror.cluster.earlham.edu"; |
---|
123 | } |
---|
124 | $debmirror = "http://$debmirror_host"; |
---|
125 | |
---|
126 | Readonly my $BUILDDIR => $tmpdir."/build-bccd/"; |
---|
127 | Readonly my $SOFTWARE => "/bccd/software/"; |
---|
128 | Readonly my $PROJDIR => $BUILDDIR."/diskless/bccd/"; |
---|
129 | Readonly my $BCCDCLIENT => $BUILDDIR."/diskless/clients/"; |
---|
130 | Readonly my $NEWHOME => "$BUILDDIR/UNIONFS/home"; |
---|
131 | Readonly my $CHECKIN => "$NEWHOME/meta/nodes/"; |
---|
132 | Readonly my $LIBFETCH => "/root/liberate"; |
---|
133 | Readonly my $KERNREV => '3.14.0bccd-02979-gbb71e91-dirty'; |
---|
134 | $ENV{DEBIAN_FRONTEND} = "noninteractive"; |
---|
135 | Readonly my $PERLDIR => "/usr/local/lib/site_perl/"; |
---|
136 | Readonly my $TESTNAME => "build_livecd"; |
---|
137 | Readonly my $STAGE => $Bccd->get_stage(); |
---|
138 | Readonly my $KNOPDIR => "$tmpdir/KNOPPIX"; |
---|
139 | Readonly my $USER => "$PROJECT"; |
---|
140 | Readonly my @TIME => localtime(); |
---|
141 | Readonly my $FORMAT_DATE => ($TIME[5]+1900)."-".($TIME[4]+1)."-".$TIME[3]; |
---|
142 | Readonly my $SPLASH_FILE => 'bccd_logo_new.png'; |
---|
143 | Readonly my $HEAD_NODE => 'node000'; |
---|
144 | Readonly my @MINIRT_MODS => ( |
---|
145 | "BusLogic.ko", |
---|
146 | "NCR53c406a.ko", |
---|
147 | "a100u2w.ko", |
---|
148 | "advansys.ko", |
---|
149 | "aic7xxx.ko", |
---|
150 | "dc395x.ko", |
---|
151 | "dtc.ko", |
---|
152 | "eata.ko", |
---|
153 | "ehci-hcd.ko", |
---|
154 | "fdomain.ko", |
---|
155 | "ff-memless.ko", |
---|
156 | "forcedeth.ko", |
---|
157 | "gdth.ko", |
---|
158 | "ieee1394.ko", |
---|
159 | "initio.ko", |
---|
160 | "usb-libusual.ko", |
---|
161 | "loop.ko", |
---|
162 | "mptbase.ko", |
---|
163 | "mptscsih.ko", |
---|
164 | "ohci-hcd.ko", |
---|
165 | "ohci1394.ko", |
---|
166 | "pas16.ko", |
---|
167 | "psi240i.ko", |
---|
168 | "sbp2.ko", |
---|
169 | "sym53c8xx.ko", |
---|
170 | "t128.ko", |
---|
171 | "tmscsim.ko", |
---|
172 | "u14-34f.ko", |
---|
173 | "uhci-hcd.ko", |
---|
174 | "ultrastor.ko", |
---|
175 | "usb-storage.ko", |
---|
176 | "usbcore.ko", |
---|
177 | "usbhid.ko", |
---|
178 | "wd7000.ko", |
---|
179 | 'xhci-hcd.ko', |
---|
180 | ); |
---|
181 | |
---|
182 | # Revision fetch |
---|
183 | |
---|
184 | if(defined($opts{'LOGLEVEL'})) { |
---|
185 | if($opts{'LOGLEVEL'} =~ m{INFO|DEBUG}) { |
---|
186 | $Bccd->set_debug($opts{'LOGLEVEL'}); |
---|
187 | } |
---|
188 | else { |
---|
189 | $Bccd->log_and_die('ERROR','main',"Invalid loglevel $opts{'LOGLEVEL'}"); |
---|
190 | } |
---|
191 | } |
---|
192 | |
---|
193 | if($opts{'UPDATEDB'}) { |
---|
194 | $Bccd->redirect_stdio("$tmpdir"); |
---|
195 | } |
---|
196 | |
---|
197 | # Jenkins will set this, else can be set by user |
---|
198 | if(defined($ENV{SVN_REVISION})) { |
---|
199 | $svnrev = $ENV{SVN_REVISION}; |
---|
200 | } |
---|
201 | else { |
---|
202 | $svnrev = 'HEAD'; |
---|
203 | } |
---|
204 | |
---|
205 | if (defined($opts{'RELEASE'})) { |
---|
206 | $release = $opts{'RELEASE'}; |
---|
207 | |
---|
208 | if ($release =~ /\d+\.\d+\.\d+/) { |
---|
209 | $release .= ".$svnrev"; |
---|
210 | } else { |
---|
211 | print "not ok - Malformed release number; Bailing out\n"; |
---|
212 | exit; |
---|
213 | } |
---|
214 | } else { |
---|
215 | $release = $svnrev; |
---|
216 | } |
---|
217 | |
---|
218 | Readonly my $OUTISO => "$opts{'OUTDIR'}/bccd-$release.$opts{'ARCH'}.iso"; |
---|
219 | |
---|
220 | my $PACKAGES = $Bccd->run_test( |
---|
221 | "read_yaml", |
---|
222 | "", |
---|
223 | "Read package manifest.", |
---|
224 | "$WORKSPACE/packages/packages.conf", |
---|
225 | ); |
---|
226 | |
---|
227 | # Make sure linux-image in packages.conf has the proper kernel revision |
---|
228 | for(my $i=0;$i<$#{$PACKAGES->{BASE}};$i++) { |
---|
229 | if($PACKAGES->{BASE}->[$i] eq 'linux-image') { |
---|
230 | $PACKAGES->{BASE}->[$i] .= "-$KERNREV"; |
---|
231 | } |
---|
232 | } |
---|
233 | |
---|
234 | $Bccd->run_test( |
---|
235 | "chdir", |
---|
236 | "", |
---|
237 | "cd'd into $tmpdir.", |
---|
238 | "$tmpdir", |
---|
239 | ); |
---|
240 | |
---|
241 | $Bccd->run_test( |
---|
242 | "system", |
---|
243 | "", |
---|
244 | "Built initial install tree.", |
---|
245 | [ |
---|
246 | '/usr/sbin/debootstrap', |
---|
247 | '--exclude=linux-image-2.6.32-5,linux-image-2.6.32-5-amd64,linux-image-2.6.32-5-i686', |
---|
248 | '--arch', |
---|
249 | $opts{'ARCH'}, |
---|
250 | $opts{'SUITE'}, |
---|
251 | $BUILDDIR, |
---|
252 | $debmirror, |
---|
253 | ], |
---|
254 | ); |
---|
255 | |
---|
256 | $Bccd->run_test( |
---|
257 | "system", |
---|
258 | "", |
---|
259 | "Copied /dev to $BUILDDIR/dev.", |
---|
260 | [ |
---|
261 | '/bin/cp', |
---|
262 | '-R', |
---|
263 | '/dev', |
---|
264 | "$BUILDDIR/dev", |
---|
265 | ], |
---|
266 | ); |
---|
267 | |
---|
268 | $Bccd->run_test( |
---|
269 | "system", |
---|
270 | "", |
---|
271 | "Mounted /proc into $BUILDDIR.", |
---|
272 | [ |
---|
273 | '/bin/mount', |
---|
274 | '-t', |
---|
275 | 'proc', |
---|
276 | 'none', |
---|
277 | "$BUILDDIR/proc", |
---|
278 | ], |
---|
279 | ); |
---|
280 | |
---|
281 | $Bccd->run_test( |
---|
282 | "system", |
---|
283 | "", |
---|
284 | "Mounted /sys into $BUILDDIR.", |
---|
285 | [ |
---|
286 | '/bin/mount', |
---|
287 | '-t', |
---|
288 | 'sysfs', |
---|
289 | 'none', |
---|
290 | "$BUILDDIR/sys", |
---|
291 | ], |
---|
292 | ); |
---|
293 | |
---|
294 | $Bccd->run_test( |
---|
295 | "fwrite", |
---|
296 | "", |
---|
297 | "Disabled apt-get package authentication.", |
---|
298 | "a", |
---|
299 | "$BUILDDIR/etc/apt/apt.conf", |
---|
300 | "APT::Get::AllowUnauthenticated 1 ;", |
---|
301 | ); |
---|
302 | |
---|
303 | $Bccd->run_test( |
---|
304 | "system", |
---|
305 | "", |
---|
306 | "Installed Perl testing modules in install tree.", |
---|
307 | [ |
---|
308 | '/usr/sbin/chroot', |
---|
309 | $BUILDDIR, |
---|
310 | '/usr/bin/apt-get', |
---|
311 | '-y', |
---|
312 | 'install', |
---|
313 | 'libtest-base-perl', |
---|
314 | ], |
---|
315 | ); |
---|
316 | |
---|
317 | $Bccd->run_test( |
---|
318 | "system", |
---|
319 | "", |
---|
320 | "Installed Perl testing modules in install tree.", |
---|
321 | [ |
---|
322 | '/usr/sbin/chroot', |
---|
323 | $BUILDDIR, |
---|
324 | '/usr/bin/apt-get', |
---|
325 | '-y', |
---|
326 | 'install', |
---|
327 | 'libtest-base-perl', |
---|
328 | ], |
---|
329 | ); |
---|
330 | |
---|
331 | foreach my $file ( "$BUILDDIR/etc/apt/sources.list","$BUILDDIR/etc/apt/apt.conf","$BUILDDIR/etc/dhcp/dhcpd.conf","$BUILDDIR/etc/dhcp/dhclient.conf","$BUILDDIR/etc/ssh/ssh_config","$BUILDDIR/etc/ssh/sshd_config","$BUILDDIR/etc/profile","$BUILDDIR/etc/default/useradd","$BUILDDIR/etc/default/tftpd-hpa","$BUILDDIR/etc/rc.local", ) { |
---|
332 | if( -f $file ) { |
---|
333 | $Bccd->run_test( |
---|
334 | "unlink", |
---|
335 | "", |
---|
336 | "rm'd existing cfg file $file", |
---|
337 | "$file", |
---|
338 | ); |
---|
339 | } |
---|
340 | } |
---|
341 | |
---|
342 | foreach my $dir ( $BCCDCLIENT, $PROJDIR, "$BUILDDIR/etc/network", |
---|
343 | "$BUILDDIR/etc/dhcp", "$BUILDDIR/etc/ssh", "$BUILDDIR/$SOFTWARE", |
---|
344 | "$BUILDDIR/root/.ssh", "$BUILDDIR/nfs", "$BUILDDIR/$LIBFETCH", |
---|
345 | "$BUILDDIR/var/log/apache2","$BUILDDIR/run/network", |
---|
346 | "$BUILDDIR/etc/apt/preferences.d/", |
---|
347 | "$BUILDDIR/var/lib/initramfs-tools", ) { |
---|
348 | if( !(-d $dir) ) { |
---|
349 | $Bccd->run_test( |
---|
350 | "mkpath", |
---|
351 | "", |
---|
352 | "Made $dir directory.", |
---|
353 | "$dir", |
---|
354 | ); |
---|
355 | } |
---|
356 | } |
---|
357 | |
---|
358 | $Bccd->run_test( |
---|
359 | 'fcopy', |
---|
360 | '', |
---|
361 | "Copied debconf preseed into $BUILDDIR/tmp", |
---|
362 | "$WORKSPACE/packages/debconf.preseed", |
---|
363 | "$BUILDDIR/tmp/debconf.preseed", |
---|
364 | ); |
---|
365 | |
---|
366 | $Bccd->run_test( |
---|
367 | "system", |
---|
368 | "", |
---|
369 | "Set debconf selections.", |
---|
370 | [ |
---|
371 | '/usr/sbin/chroot', |
---|
372 | $BUILDDIR, |
---|
373 | '/usr/bin/debconf-set-selections', |
---|
374 | "/tmp/debconf.preseed", |
---|
375 | ], |
---|
376 | ); |
---|
377 | |
---|
378 | $Bccd->run_test( |
---|
379 | 'unlink', |
---|
380 | '', |
---|
381 | "Removing $BUILDDIR/tmp/debconf.preseed", |
---|
382 | "$BUILDDIR/tmp/debconf.preseed", |
---|
383 | ); |
---|
384 | |
---|
385 | $Bccd->run_test( |
---|
386 | "fcopy", |
---|
387 | "", |
---|
388 | "Copied apt source list.", |
---|
389 | "$WORKSPACE/packages/etc/apt/sources.list", |
---|
390 | "$BUILDDIR/etc/apt/sources.list", |
---|
391 | ); |
---|
392 | |
---|
393 | $Bccd->run_test( |
---|
394 | "regexsub_file", |
---|
395 | "", |
---|
396 | "Changed DEBMIRROR template in sources list to $debmirror_host.", |
---|
397 | "$BUILDDIR/etc/apt/sources.list", |
---|
398 | "!DEBMIRROR!", |
---|
399 | "$debmirror_host", |
---|
400 | ); |
---|
401 | |
---|
402 | $Bccd->run_test( |
---|
403 | "fcopy", |
---|
404 | "", |
---|
405 | "Fetched network interfaces.compute cfg.", |
---|
406 | "$WORKSPACE/packages/etc/network/interfaces.compute", |
---|
407 | "$BUILDDIR/etc/network/interfaces.compute", |
---|
408 | ); |
---|
409 | |
---|
410 | $Bccd->run_test( |
---|
411 | "mkpath", |
---|
412 | "", |
---|
413 | "mkdir /etc/X11/xinit", |
---|
414 | "$BUILDDIR/etc/X11/xinit", |
---|
415 | ); |
---|
416 | |
---|
417 | # Make apt work |
---|
418 | |
---|
419 | foreach my $dir ( "/var/cache/apt/archives", "/var/cache/apt/archives/partial" ) { |
---|
420 | $Bccd->run_test( |
---|
421 | "mkpath", |
---|
422 | "", |
---|
423 | "mkdir $dir", |
---|
424 | "$BUILDDIR/$dir", |
---|
425 | ); |
---|
426 | } |
---|
427 | |
---|
428 | # /etc fetch |
---|
429 | foreach my $file ( "hosts", "hosts.compute", "hosts.allow", "hosts.deny", |
---|
430 | "profile", "modules", "modules.net", |
---|
431 | "passwd.compute", "group.compute", "shadow.compute", "exports.compute", |
---|
432 | "nsswitch.conf", "unionfs.conf", "X11/xinit/xinitrc", "X11/xinit/xserverrc", |
---|
433 | "dpkg/dpkg.cfg", "ld.so.conf.d/software.conf", "sudoers", |
---|
434 | "init.d/bccd-networking","init.d/bccd-bootflags", |
---|
435 | "init.d/bccd-automated", "init.d/bccd-passwd","init.d/bccd-dhcp", |
---|
436 | "init.d/bccd-sshd", "X11/xorg.conf","lam.conf", "init.d/bccd-nfs", |
---|
437 | "init.d/bccd-unite-sw", "init.d/bccd-dhcp-conf", |
---|
438 | "init.d/bccd-route", "init.d/bccd-keyboard", "rc.local", |
---|
439 | "init.d/bccd-fsrw", "init.d/bccd-mail", "ld.so.conf.d/CUDA.conf", |
---|
440 | "init.d/networking","init.d/nfs-common","init.d/bccd-liberate") { |
---|
441 | $Bccd->run_test( |
---|
442 | "fcopy", |
---|
443 | "", |
---|
444 | "Copied /etc/$file file.", |
---|
445 | "$WORKSPACE/packages/etc/$file", |
---|
446 | "$BUILDDIR/etc/$file", |
---|
447 | ); |
---|
448 | } |
---|
449 | |
---|
450 | $Bccd->run_test( |
---|
451 | "chmod", |
---|
452 | "", |
---|
453 | "Set $BUILDDIR/etc/sudoers user/group readable only.", |
---|
454 | 0440, |
---|
455 | "$BUILDDIR/etc/sudoers", |
---|
456 | ); |
---|
457 | |
---|
458 | foreach my $file ( "bccd-networking", "bccd-passwd", "bccd-dhcp", "bccd-sshd", |
---|
459 | "bccd-nfs", "bccd-unite-sw", "networking","bccd-dhcp-conf", |
---|
460 | "bccd-route", "bccd-keyboard", "bccd-fsrw", "bccd-mail", "bccd-bootflags", |
---|
461 | "bccd-automated", "nfs-common", "bccd-liberate", ) { |
---|
462 | $Bccd->run_test( |
---|
463 | "chmod", |
---|
464 | "", |
---|
465 | "Set $BUILDDIR/etc/init.d/$file executable.", |
---|
466 | 0755, |
---|
467 | "$BUILDDIR/etc/init.d/$file", |
---|
468 | ); |
---|
469 | } |
---|
470 | |
---|
471 | $Bccd->run_test( |
---|
472 | "chmod", |
---|
473 | "", |
---|
474 | "Set $BUILDDIR/etc/rc.local executable.", |
---|
475 | 0755, |
---|
476 | "$BUILDDIR/etc/rc.local", |
---|
477 | ); |
---|
478 | |
---|
479 | $cwd = getcwd(); |
---|
480 | |
---|
481 | $Bccd->run_test( |
---|
482 | "chdir", |
---|
483 | "", |
---|
484 | "cd $BUILDDIR", |
---|
485 | "$BUILDDIR", |
---|
486 | ); |
---|
487 | |
---|
488 | foreach my $dir ("lib","opt","bin","sbin","etc","root",) { |
---|
489 | $Bccd->run_test( |
---|
490 | "rsync", |
---|
491 | "", |
---|
492 | "Copied in $dir.", |
---|
493 | "$WORKSPACE/trees/$dir/", |
---|
494 | "$BUILDDIR/$dir/", |
---|
495 | "$WORKSPACE/bin/rsync_svn.exclude", |
---|
496 | ); |
---|
497 | } |
---|
498 | |
---|
499 | $Bccd->run_test( |
---|
500 | "chmod", |
---|
501 | "", |
---|
502 | "chmod 0755 $BUILDDIR/etc/skel/.bash_profile", |
---|
503 | 0755, |
---|
504 | "$BUILDDIR/etc/skel/.bash_profile", |
---|
505 | ); |
---|
506 | |
---|
507 | if(-f "$BUILDDIR/etc/skel/.bashrc") { |
---|
508 | $Bccd->run_test( |
---|
509 | "unlink", |
---|
510 | "", |
---|
511 | "Removed default .bashrc", |
---|
512 | "$BUILDDIR/etc/skel/.bashrc", |
---|
513 | ); |
---|
514 | } |
---|
515 | |
---|
516 | $Bccd->run_test( |
---|
517 | "fcopy", |
---|
518 | "", |
---|
519 | "Copied liberate script.", |
---|
520 | "$WORKSPACE/packages/liberate.pl", |
---|
521 | "$BUILDDIR/root/liberate.pl", |
---|
522 | ); |
---|
523 | |
---|
524 | $Bccd->run_test( |
---|
525 | "fcopy", |
---|
526 | "", |
---|
527 | "Copied liberate rsync exclude file.", |
---|
528 | "$WORKSPACE/packages/rsync_liberate.exclude", |
---|
529 | "$BUILDDIR/root/rsync_liberate.exclude", |
---|
530 | ); |
---|
531 | |
---|
532 | $Bccd->run_test( |
---|
533 | "fcopy", |
---|
534 | "", |
---|
535 | "Copied build USB script.", |
---|
536 | "$WORKSPACE/bin/build_bootable_USB.sh", |
---|
537 | "$BUILDDIR/root/build_bootable_USB.sh", |
---|
538 | ); |
---|
539 | |
---|
540 | $Bccd->run_test( |
---|
541 | "chmod", |
---|
542 | "", |
---|
543 | "Set $BUILDDIR/root/build_bootable_USB.sh executable.", |
---|
544 | 0755, |
---|
545 | "$BUILDDIR/root/build_bootable_USB.sh", |
---|
546 | ); |
---|
547 | |
---|
548 | $Bccd->run_test( |
---|
549 | "fcopy", |
---|
550 | "", |
---|
551 | "Copied /etc/default/useradd file.", |
---|
552 | "$WORKSPACE/packages/etc/default/useradd", |
---|
553 | "$BUILDDIR/etc/default/useradd", |
---|
554 | ); |
---|
555 | |
---|
556 | $Bccd->run_test( |
---|
557 | "fwrite", |
---|
558 | "", |
---|
559 | "Allowing initrd kernel upgrade.", |
---|
560 | "a", |
---|
561 | "$BUILDDIR/etc/kernel-img.conf", |
---|
562 | "do_initrd=yes", |
---|
563 | ); |
---|
564 | |
---|
565 | $Bccd->run_test( |
---|
566 | "system", |
---|
567 | "", |
---|
568 | "Disabled bccd-sshd.", |
---|
569 | [ |
---|
570 | '/usr/sbin/chroot', |
---|
571 | $BUILDDIR, |
---|
572 | '/usr/sbin/update-rc.d', |
---|
573 | '-f', |
---|
574 | 'bccd-sshd', |
---|
575 | 'remove', |
---|
576 | ], |
---|
577 | ); |
---|
578 | |
---|
579 | $Bccd->run_test( |
---|
580 | "system", |
---|
581 | "", |
---|
582 | "Enabled bccd-sshd.", |
---|
583 | [ |
---|
584 | '/usr/sbin/chroot', |
---|
585 | $BUILDDIR, |
---|
586 | '/usr/sbin/update-rc.d', |
---|
587 | 'bccd-sshd', |
---|
588 | 'defaults', |
---|
589 | ], |
---|
590 | ); |
---|
591 | |
---|
592 | $Bccd->run_test( |
---|
593 | "unlink", |
---|
594 | 0, |
---|
595 | "Removing apt lists.", |
---|
596 | "</var/lib/apt/lists/*>", |
---|
597 | ); |
---|
598 | |
---|
599 | $Bccd->run_test( |
---|
600 | "unlink", |
---|
601 | 0, |
---|
602 | "Removing partial apt lists.", |
---|
603 | "</var/lib/apt/lists/partial/*>", |
---|
604 | ); |
---|
605 | |
---|
606 | $Bccd->run_test( |
---|
607 | "system", |
---|
608 | "", |
---|
609 | "Cleaned apt cache.", |
---|
610 | [ |
---|
611 | '/usr/sbin/chroot', |
---|
612 | $BUILDDIR, |
---|
613 | '/usr/bin/apt-get', |
---|
614 | 'clean', |
---|
615 | ], |
---|
616 | ); |
---|
617 | |
---|
618 | $Bccd->run_test( |
---|
619 | "system", |
---|
620 | "", |
---|
621 | "Installed Oracle VBox apt key.", |
---|
622 | [ |
---|
623 | '/usr/sbin/chroot', |
---|
624 | $BUILDDIR, |
---|
625 | '/bin/bash', |
---|
626 | '-c', |
---|
627 | q{/usr/bin/wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | /usr/bin/apt-key add -}, |
---|
628 | ], |
---|
629 | ); |
---|
630 | |
---|
631 | $Bccd->run_test( |
---|
632 | "system", |
---|
633 | "", |
---|
634 | "Updated apt cache.", |
---|
635 | [ |
---|
636 | '/usr/sbin/chroot', |
---|
637 | $BUILDDIR, |
---|
638 | '/usr/bin/apt-get', |
---|
639 | 'update', |
---|
640 | ], |
---|
641 | ); |
---|
642 | |
---|
643 | $Bccd->run_test( |
---|
644 | "system", |
---|
645 | "", |
---|
646 | "Fetched pre-install dependencies.", |
---|
647 | [ |
---|
648 | '/usr/sbin/chroot', |
---|
649 | $BUILDDIR, |
---|
650 | '/usr/bin/apt-get', |
---|
651 | '-y', |
---|
652 | '--allow-unauthenticated', |
---|
653 | 'install', |
---|
654 | 'debian-archive-keyring', |
---|
655 | 'initramfs-tools', |
---|
656 | ], |
---|
657 | ); |
---|
658 | |
---|
659 | if($opts{'ARCH'} eq 'i386') { |
---|
660 | $Bccd->run_test( |
---|
661 | "system", |
---|
662 | "0", |
---|
663 | "Fetched Debian packages.", |
---|
664 | [ |
---|
665 | '/usr/sbin/chroot', |
---|
666 | $BUILDDIR, |
---|
667 | '/usr/bin/aptitude', |
---|
668 | '--allow-untrusted', |
---|
669 | '-y', |
---|
670 | 'install', |
---|
671 | @{$PACKAGES->{BASE}}, |
---|
672 | @{$PACKAGES->{EXTRA}}, |
---|
673 | ], |
---|
674 | ); |
---|
675 | } |
---|
676 | elsif($opts{'ARCH'} eq 'amd64') { |
---|
677 | $Bccd->run_test( |
---|
678 | "system", |
---|
679 | "0", |
---|
680 | "Fetched Debian packages.", |
---|
681 | [ |
---|
682 | '/usr/sbin/chroot', |
---|
683 | $BUILDDIR, |
---|
684 | '/usr/bin/aptitude', |
---|
685 | '--allow-untrusted', |
---|
686 | '-y', |
---|
687 | 'install', |
---|
688 | @{$PACKAGES->{BASE}}, |
---|
689 | @{$PACKAGES->{EXTRA}}, |
---|
690 | @{$PACKAGES->{AMD64}}, |
---|
691 | ], |
---|
692 | ); |
---|
693 | } |
---|
694 | |
---|
695 | $Bccd->run_test( |
---|
696 | "system", |
---|
697 | 0, |
---|
698 | "Fetching tftpd-hpa separately.", |
---|
699 | [ |
---|
700 | '/usr/sbin/chroot', |
---|
701 | $BUILDDIR, |
---|
702 | '/usr/bin/apt-get', |
---|
703 | '--force-yes', |
---|
704 | '-y', |
---|
705 | 'install', |
---|
706 | 'tftpd-hpa', |
---|
707 | ], |
---|
708 | ); |
---|
709 | |
---|
710 | $Bccd->run_test( |
---|
711 | "system", |
---|
712 | 0, |
---|
713 | "Removed unneeded packages.", |
---|
714 | [ |
---|
715 | '/usr/sbin/chroot', |
---|
716 | $BUILDDIR, |
---|
717 | '/usr/bin/apt-get', |
---|
718 | '-y', |
---|
719 | 'remove', |
---|
720 | @{$PACKAGES->{REMOVE}}, |
---|
721 | ], |
---|
722 | ); |
---|
723 | |
---|
724 | $Bccd->run_test( |
---|
725 | "system", |
---|
726 | "", |
---|
727 | "Deleted cached deb packages.", |
---|
728 | [ |
---|
729 | '/usr/sbin/chroot', |
---|
730 | $BUILDDIR, |
---|
731 | '/usr/bin/apt-get', |
---|
732 | 'clean', |
---|
733 | ], |
---|
734 | ); |
---|
735 | |
---|
736 | $Bccd->run_test( |
---|
737 | "system", |
---|
738 | "", |
---|
739 | "Deleted unneeded packages.", |
---|
740 | [ |
---|
741 | '/usr/sbin/chroot', |
---|
742 | $BUILDDIR, |
---|
743 | '/usr/bin/apt-get', |
---|
744 | '-y', |
---|
745 | 'autoremove', |
---|
746 | @{$PACKAGES->{REMOVE}}, |
---|
747 | ], |
---|
748 | ); |
---|
749 | |
---|
750 | $Bccd->run_test( |
---|
751 | "fcopy", |
---|
752 | "", |
---|
753 | "Copied tftpd-hpa configuration.", |
---|
754 | "$WORKSPACE/trees/etc/default/tftpd-hpa", |
---|
755 | "$BUILDDIR/etc/default/tftpd-hpa", |
---|
756 | ); |
---|
757 | |
---|
758 | $Bccd->run_test( |
---|
759 | "mkpath", |
---|
760 | "", |
---|
761 | "Making $KERNREV modules directory.", |
---|
762 | "$BUILDDIR/lib/modules/$KERNREV", |
---|
763 | ); |
---|
764 | |
---|
765 | $Bccd->run_test( |
---|
766 | "fcopy", |
---|
767 | "", |
---|
768 | "Copied ssh_config file.", |
---|
769 | "$WORKSPACE/packages/etc/ssh/ssh_config", |
---|
770 | "$BUILDDIR/etc/ssh/ssh_config", |
---|
771 | ); |
---|
772 | |
---|
773 | $Bccd->run_test( |
---|
774 | "fcopy", |
---|
775 | "", |
---|
776 | "Copied sshd_config file.", |
---|
777 | "$WORKSPACE/packages/etc/ssh/sshd_config", |
---|
778 | "$BUILDDIR/etc/ssh/sshd_config", |
---|
779 | ); |
---|
780 | |
---|
781 | $Bccd->run_test( |
---|
782 | "mkpath", |
---|
783 | "", |
---|
784 | "mkdir $BUILDDIR/etc/udev/rules.d", |
---|
785 | "$BUILDDIR/etc/udev/rules.d", |
---|
786 | ); |
---|
787 | |
---|
788 | $Bccd->run_test( |
---|
789 | "fcopy", |
---|
790 | "", |
---|
791 | "Copied USB automounting udev rule.", |
---|
792 | "$WORKSPACE/packages/etc/udev/rules.d/99-automount_usb.rules", |
---|
793 | "$BUILDDIR/etc/udev/rules.d/99-automount_usb.rules", |
---|
794 | ); |
---|
795 | |
---|
796 | # Revision write |
---|
797 | |
---|
798 | $Bccd->run_test( |
---|
799 | "fwrite", |
---|
800 | "", |
---|
801 | "Opened $BUILDDIR/etc/$PROJECT-revision for writing.", |
---|
802 | "w", |
---|
803 | "$BUILDDIR/etc/$PROJECT-revision", |
---|
804 | "$release", |
---|
805 | ); |
---|
806 | |
---|
807 | # Install software |
---|
808 | |
---|
809 | $Bccd->run_test( |
---|
810 | "mkpath", |
---|
811 | "", |
---|
812 | "Created node checkin directory.", |
---|
813 | "$CHECKIN", |
---|
814 | ); |
---|
815 | |
---|
816 | $nouid = $Bccd->run_test( |
---|
817 | "getuseruid", |
---|
818 | "", |
---|
819 | "Got uid for nobody user.", |
---|
820 | "nobody", |
---|
821 | ); |
---|
822 | |
---|
823 | $nogid = $Bccd->run_test( |
---|
824 | "getusergid", |
---|
825 | "", |
---|
826 | "Got gid for nobody user.", |
---|
827 | "nobody", |
---|
828 | ); |
---|
829 | |
---|
830 | $Bccd->run_test( |
---|
831 | "chown", |
---|
832 | "", |
---|
833 | "chown'd checkin directory $CHECKIN to $nouid:$nogid.", |
---|
834 | "$nouid", |
---|
835 | "$nogid", |
---|
836 | "$CHECKIN", |
---|
837 | ); |
---|
838 | # |
---|
839 | # Mobeen: This section was added to solve the problem of missing std C++ library softlink. |
---|
840 | # "Linked libstdc++.so.6.0.13 to libstdc++.so", |
---|
841 | # "Linked /usr/lib32/libstdc++.so to /usr/lib32/libstdc++.so.6", |
---|
842 | if($opts{'ARCH'} eq 'amd64') { |
---|
843 | $Bccd->run_test( |
---|
844 | "system", |
---|
845 | "", |
---|
846 | "Linked /usr/lib32/libstdc++.so.6.0.13 to /usr/lib32/libstdc++.so", |
---|
847 | [ |
---|
848 | '/usr/sbin/chroot', |
---|
849 | $BUILDDIR, |
---|
850 | '/bin/ln', |
---|
851 | '-s', |
---|
852 | '/usr/lib32/libstdc++.so.6', |
---|
853 | '/usr/lib32/libstdc++.so', |
---|
854 | ], |
---|
855 | ); |
---|
856 | } |
---|
857 | elsif($opts{'ARCH'} eq 'i386') { |
---|
858 | $Bccd->run_test( |
---|
859 | "system", |
---|
860 | "", |
---|
861 | "Linked /usr/lib/libstdc++.so.6.0.13 to /usr/lib/libstdc++.so", |
---|
862 | [ |
---|
863 | '/usr/sbin/chroot', |
---|
864 | $BUILDDIR, |
---|
865 | '/bin/ln', |
---|
866 | '-s', |
---|
867 | '/usr/lib/libstdc++.so.6', |
---|
868 | '/usr/lib/libstdc++.so', |
---|
869 | ], |
---|
870 | ); |
---|
871 | } |
---|
872 | |
---|
873 | $Bccd->run_test( |
---|
874 | "system", |
---|
875 | "", |
---|
876 | "Linked VBoxService into /usr/sbin.", |
---|
877 | [ |
---|
878 | '/usr/sbin/chroot', |
---|
879 | $BUILDDIR, |
---|
880 | '/bin/ln', |
---|
881 | '-s', |
---|
882 | '/opt/VBoxGuestAdditions-3.2.8/sbin/VBoxService', |
---|
883 | '/usr/sbin/VBoxService', |
---|
884 | ], |
---|
885 | ); |
---|
886 | |
---|
887 | foreach my $vb ("VBoxClient","VBoxControl") { |
---|
888 | $Bccd->run_test( |
---|
889 | "system", |
---|
890 | "", |
---|
891 | "Linked $vb into /usr/bin.", |
---|
892 | [ |
---|
893 | '/usr/sbin/chroot', |
---|
894 | $BUILDDIR, |
---|
895 | '/bin/ln', |
---|
896 | '-s', |
---|
897 | "/opt/VBoxGuestAdditions-3.2.8/bin/$vb", |
---|
898 | "/usr/bin/$vb", |
---|
899 | ], |
---|
900 | ); |
---|
901 | } |
---|
902 | |
---|
903 | $Bccd->run_test( |
---|
904 | "mkpath", |
---|
905 | "", |
---|
906 | "Made $BUILDDIR/srv/tftp/pxelinux.cfg", |
---|
907 | "$BUILDDIR/srv/tftp/pxelinux.cfg", |
---|
908 | ); |
---|
909 | |
---|
910 | $Bccd->run_test( |
---|
911 | "fcopy", |
---|
912 | "", |
---|
913 | "Copied pxelinux to tftpboot.", |
---|
914 | "$BUILDDIR/usr/lib/syslinux/pxelinux.0", |
---|
915 | "$BUILDDIR/srv/tftp/pxelinux.0", |
---|
916 | ); |
---|
917 | |
---|
918 | foreach my $file ( "dhcpd.conf", "dhclient.conf", "dhclient.conf-bccd", |
---|
919 | "dhclient.conf-any" ) { |
---|
920 | $Bccd->run_test( |
---|
921 | "fcopy", |
---|
922 | "", |
---|
923 | "Copied DHCP $file configuration.", |
---|
924 | "$WORKSPACE/packages/etc/dhcp/$file", |
---|
925 | "$BUILDDIR/etc/dhcp/$file", |
---|
926 | ); |
---|
927 | } |
---|
928 | |
---|
929 | # Needed down here to prevent hang with debconf |
---|
930 | foreach my $file ( "exports", "hosts.equiv", "gpm.conf", "inittab", |
---|
931 | "pdnsd.conf", "default/pdnsd", ) { |
---|
932 | $Bccd->run_test( |
---|
933 | "fcopy", |
---|
934 | "", |
---|
935 | "Copied /etc/$file file.", |
---|
936 | "$WORKSPACE/packages/etc/$file", |
---|
937 | "$BUILDDIR/etc/$file", |
---|
938 | ); |
---|
939 | } |
---|
940 | |
---|
941 | $Bccd->run_test( |
---|
942 | "system", |
---|
943 | "", |
---|
944 | "Setting LSB parsing of init scripts.", |
---|
945 | [ |
---|
946 | '/usr/bin/touch', |
---|
947 | "$BUILDDIR/etc/update-rc.d-lsbparse", |
---|
948 | ], |
---|
949 | ); |
---|
950 | |
---|
951 | $Bccd->run_test( |
---|
952 | "system", |
---|
953 | "", |
---|
954 | "Disabling hardware-optimized ld.so directories.", |
---|
955 | [ |
---|
956 | '/usr/bin/touch', |
---|
957 | "$BUILDDIR/etc/ld.so.nohwcap", |
---|
958 | ], |
---|
959 | ); |
---|
960 | |
---|
961 | foreach my $script ("nis", "ssh-host-keys", "nfs-kernel-server", "ssh", |
---|
962 | "isc-dhcp-server", "dbus", "hal", "apache2","mpd", |
---|
963 | "networking","bccd-usage", |
---|
964 | "bccd-mount-virtfs",) { |
---|
965 | $Bccd->run_test( |
---|
966 | "system", |
---|
967 | "", |
---|
968 | "Disabled $script.", |
---|
969 | [ |
---|
970 | '/usr/sbin/chroot', |
---|
971 | $BUILDDIR, |
---|
972 | '/usr/sbin/update-rc.d', |
---|
973 | '-f', |
---|
974 | $script, |
---|
975 | 'remove', |
---|
976 | ], |
---|
977 | ); |
---|
978 | } |
---|
979 | |
---|
980 | foreach my $script ("nfs-common", "vboxadd", "vboxadd-service", |
---|
981 | "bccd-nvidia", "bccd-mail","networking", |
---|
982 | "bccd-unite-sw","bccd-networking","mpd","torque-mom", |
---|
983 | "torque-server","torque-scheduler","bccd-mount-virtfs", |
---|
984 | "bccd-liberate","ssh",) { |
---|
985 | $Bccd->run_test( |
---|
986 | "system", |
---|
987 | "", |
---|
988 | "Enabled $script at boot time.", |
---|
989 | [ |
---|
990 | '/usr/sbin/chroot', |
---|
991 | $BUILDDIR, |
---|
992 | '/usr/sbin/update-rc.d', |
---|
993 | $script, |
---|
994 | 'defaults', |
---|
995 | ], |
---|
996 | ); |
---|
997 | } |
---|
998 | |
---|
999 | # This must run before 20 (bccd-passwd) |
---|
1000 | foreach my $script ("bccd-unite-sw", "perfctr","bccd-automated") { |
---|
1001 | $Bccd->run_test( |
---|
1002 | "system", |
---|
1003 | "", |
---|
1004 | "Enabling $script config.", |
---|
1005 | [ |
---|
1006 | '/usr/sbin/chroot', |
---|
1007 | $BUILDDIR, |
---|
1008 | '/usr/sbin/update-rc.d', |
---|
1009 | $script, |
---|
1010 | 'defaults', |
---|
1011 | '18', |
---|
1012 | ], |
---|
1013 | ); |
---|
1014 | } |
---|
1015 | |
---|
1016 | # Based on virtualbox install script |
---|
1017 | foreach my $script ("vboxadd","vboxadd-x11",) { |
---|
1018 | $Bccd->run_test( |
---|
1019 | "system", |
---|
1020 | "", |
---|
1021 | "Enabling $script config.", |
---|
1022 | [ |
---|
1023 | '/usr/sbin/chroot', |
---|
1024 | $BUILDDIR, |
---|
1025 | '/usr/sbin/update-rc.d', |
---|
1026 | $script, |
---|
1027 | 'defaults', |
---|
1028 | '30', |
---|
1029 | ], |
---|
1030 | ); |
---|
1031 | } |
---|
1032 | |
---|
1033 | $Bccd->run_test( |
---|
1034 | "system", |
---|
1035 | "", |
---|
1036 | "Enabling vboxadd-service config.", |
---|
1037 | [ |
---|
1038 | '/usr/sbin/chroot', |
---|
1039 | $BUILDDIR, |
---|
1040 | '/usr/sbin/update-rc.d', |
---|
1041 | 'vboxadd-service', |
---|
1042 | 'defaults', |
---|
1043 | '35', |
---|
1044 | ], |
---|
1045 | ); |
---|
1046 | |
---|
1047 | $Bccd->run_test( |
---|
1048 | "system", |
---|
1049 | "", |
---|
1050 | "Enabled script to write /etc/issue.", |
---|
1051 | [ |
---|
1052 | '/usr/sbin/chroot', |
---|
1053 | $BUILDDIR, |
---|
1054 | '/usr/sbin/update-rc.d', |
---|
1055 | 'bccd-usage', |
---|
1056 | 'start', |
---|
1057 | '99', |
---|
1058 | '2', |
---|
1059 | '.', |
---|
1060 | ], |
---|
1061 | ); |
---|
1062 | |
---|
1063 | $Bccd->run_test( |
---|
1064 | "system", |
---|
1065 | "", |
---|
1066 | "Enabled script to write /etc/issue.", |
---|
1067 | [ |
---|
1068 | '/usr/sbin/chroot', |
---|
1069 | $BUILDDIR, |
---|
1070 | '/usr/sbin/update-rc.d', |
---|
1071 | 'bccd-issue', |
---|
1072 | 'defaults', |
---|
1073 | ], |
---|
1074 | ); |
---|
1075 | |
---|
1076 | $Bccd->run_test( |
---|
1077 | "system", |
---|
1078 | "", |
---|
1079 | "Enabling home directory overlay cleaning.", |
---|
1080 | [ |
---|
1081 | '/usr/sbin/chroot', |
---|
1082 | $BUILDDIR, |
---|
1083 | '/usr/sbin/update-rc.d', |
---|
1084 | 'bccd-clean-home', |
---|
1085 | 'start', |
---|
1086 | '11', |
---|
1087 | 'S', |
---|
1088 | '.', |
---|
1089 | ], |
---|
1090 | ); |
---|
1091 | |
---|
1092 | $Bccd->run_test( |
---|
1093 | "system", |
---|
1094 | "", |
---|
1095 | "Enabling bccd-dhcp-conf config.", |
---|
1096 | [ |
---|
1097 | '/usr/sbin/chroot', |
---|
1098 | $BUILDDIR, |
---|
1099 | '/usr/sbin/update-rc.d', |
---|
1100 | 'bccd-dhcp-conf', |
---|
1101 | 'start', |
---|
1102 | '38', |
---|
1103 | 'S', |
---|
1104 | '.', |
---|
1105 | ], |
---|
1106 | ); |
---|
1107 | |
---|
1108 | $Bccd->run_test( |
---|
1109 | "system", |
---|
1110 | "", |
---|
1111 | "Enabling bccd-route config.", |
---|
1112 | [ |
---|
1113 | '/usr/sbin/chroot', |
---|
1114 | $BUILDDIR, |
---|
1115 | '/usr/sbin/update-rc.d', |
---|
1116 | 'bccd-route', |
---|
1117 | 'start', |
---|
1118 | '41', |
---|
1119 | 'S', |
---|
1120 | '.', |
---|
1121 | ], |
---|
1122 | ); |
---|
1123 | |
---|
1124 | $Bccd->run_test( |
---|
1125 | "system", |
---|
1126 | "", |
---|
1127 | "Enabling bccd-fsrw config.", |
---|
1128 | [ |
---|
1129 | '/usr/sbin/chroot', |
---|
1130 | $BUILDDIR, |
---|
1131 | '/usr/sbin/update-rc.d', |
---|
1132 | 'bccd-fsrw', |
---|
1133 | 'start', |
---|
1134 | '11', |
---|
1135 | 'S', |
---|
1136 | '.', |
---|
1137 | ], |
---|
1138 | ); |
---|
1139 | |
---|
1140 | $Bccd->run_test( |
---|
1141 | "system", |
---|
1142 | "", |
---|
1143 | "Enabling bccd-keyboard config.", |
---|
1144 | [ |
---|
1145 | '/usr/sbin/chroot', |
---|
1146 | $BUILDDIR, |
---|
1147 | '/usr/sbin/update-rc.d', |
---|
1148 | 'bccd-keyboard', |
---|
1149 | 'start', |
---|
1150 | '18', |
---|
1151 | 'S', |
---|
1152 | '.', |
---|
1153 | ], |
---|
1154 | ); |
---|
1155 | |
---|
1156 | $Bccd->run_test( |
---|
1157 | "system", |
---|
1158 | "", |
---|
1159 | "Enabling bccd-nfs config.", |
---|
1160 | [ |
---|
1161 | '/usr/sbin/chroot', |
---|
1162 | $BUILDDIR, |
---|
1163 | '/usr/sbin/update-rc.d', |
---|
1164 | 'bccd-nfs', |
---|
1165 | 'start', |
---|
1166 | '20', |
---|
1167 | '2', |
---|
1168 | 'S', |
---|
1169 | '.', |
---|
1170 | ], |
---|
1171 | ); |
---|
1172 | |
---|
1173 | $Bccd->run_test( |
---|
1174 | "system", |
---|
1175 | "", |
---|
1176 | "Enabling bccd-passwd config.", |
---|
1177 | [ |
---|
1178 | '/usr/sbin/chroot', |
---|
1179 | $BUILDDIR, |
---|
1180 | '/usr/sbin/update-rc.d', |
---|
1181 | 'bccd-passwd', |
---|
1182 | 'start', |
---|
1183 | '20', |
---|
1184 | 'S', |
---|
1185 | '.', |
---|
1186 | ], |
---|
1187 | ); |
---|
1188 | |
---|
1189 | $Bccd->run_test( |
---|
1190 | "system", |
---|
1191 | "", |
---|
1192 | "Enabling bccd-sshd config.", |
---|
1193 | [ |
---|
1194 | '/usr/sbin/chroot', |
---|
1195 | $BUILDDIR, |
---|
1196 | '/usr/sbin/update-rc.d', |
---|
1197 | 'bccd-sshd', |
---|
1198 | 'start', |
---|
1199 | '20', |
---|
1200 | '2', |
---|
1201 | 'S', |
---|
1202 | '.', |
---|
1203 | ], |
---|
1204 | ); |
---|
1205 | |
---|
1206 | $Bccd->run_test( |
---|
1207 | "system", |
---|
1208 | "", |
---|
1209 | "Enabling bccd-dhcp config.", |
---|
1210 | [ |
---|
1211 | '/usr/sbin/chroot', |
---|
1212 | $BUILDDIR, |
---|
1213 | '/usr/sbin/update-rc.d', |
---|
1214 | 'bccd-dhcp', |
---|
1215 | 'start', |
---|
1216 | '40', |
---|
1217 | 'S', |
---|
1218 | '.', |
---|
1219 | ], |
---|
1220 | ); |
---|
1221 | |
---|
1222 | $Bccd->run_test( |
---|
1223 | "system", |
---|
1224 | "", |
---|
1225 | "Building /bccd_boot_flags.", |
---|
1226 | [ |
---|
1227 | '/usr/sbin/chroot', |
---|
1228 | $BUILDDIR, |
---|
1229 | '/usr/sbin/update-rc.d', |
---|
1230 | 'bccd-bootflags', |
---|
1231 | 'start', |
---|
1232 | '01', |
---|
1233 | 'S', |
---|
1234 | '.', |
---|
1235 | ], |
---|
1236 | ); |
---|
1237 | |
---|
1238 | $Bccd->run_test( |
---|
1239 | "system", |
---|
1240 | "", |
---|
1241 | "Added root password.", |
---|
1242 | [ |
---|
1243 | '/usr/sbin/chroot', |
---|
1244 | $BUILDDIR, |
---|
1245 | '/usr/sbin/usermod', |
---|
1246 | '-p', |
---|
1247 | '\$1\$erNdlHdL\$EV6C0eBbe6M3bVaK9m4If0', |
---|
1248 | 'root', |
---|
1249 | ], |
---|
1250 | ); |
---|
1251 | |
---|
1252 | # User creation |
---|
1253 | |
---|
1254 | # Manual writes to keep NIS from interfering with static uid/gid |
---|
1255 | |
---|
1256 | $Bccd->run_test( |
---|
1257 | "fwrite", |
---|
1258 | "", |
---|
1259 | "Wrote out sshd user.", |
---|
1260 | "a", |
---|
1261 | "$BUILDDIR/etc/passwd", |
---|
1262 | "sshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin", |
---|
1263 | ); |
---|
1264 | |
---|
1265 | $Bccd->run_test( |
---|
1266 | "fwrite", |
---|
1267 | "", |
---|
1268 | "Wrote out sshd group.", |
---|
1269 | "a", |
---|
1270 | "$BUILDDIR/etc/shadow", |
---|
1271 | "sshd:!:13625:0:99999:7:::", |
---|
1272 | ); |
---|
1273 | |
---|
1274 | $Bccd->run_test( |
---|
1275 | "system", |
---|
1276 | "", |
---|
1277 | "Creating non-root-group account.", |
---|
1278 | [ |
---|
1279 | '/usr/sbin/chroot', |
---|
1280 | $BUILDDIR, |
---|
1281 | '/usr/sbin/groupadd', |
---|
1282 | '-g', |
---|
1283 | '1000', |
---|
1284 | 'bccd', |
---|
1285 | ], |
---|
1286 | ); |
---|
1287 | |
---|
1288 | $Bccd->run_test( |
---|
1289 | "system", |
---|
1290 | "", |
---|
1291 | "Created non-root user account.", |
---|
1292 | [ |
---|
1293 | '/usr/sbin/chroot', |
---|
1294 | $BUILDDIR, |
---|
1295 | '/usr/sbin/useradd', |
---|
1296 | '-s', |
---|
1297 | '/bin/bash', |
---|
1298 | '-G', |
---|
1299 | 'video,fuse,adm', |
---|
1300 | '-u', |
---|
1301 | '1000', |
---|
1302 | '-g', |
---|
1303 | '1000', |
---|
1304 | '-d', |
---|
1305 | "/home/$USER", |
---|
1306 | '-m', |
---|
1307 | '-p', |
---|
1308 | '\$1\$Agm0SXPB\$JnObEvwBQdg4WCovvMKST1', |
---|
1309 | $USER, |
---|
1310 | ], |
---|
1311 | ); |
---|
1312 | |
---|
1313 | $Bccd->run_test( |
---|
1314 | "system", |
---|
1315 | "", |
---|
1316 | "Created vbox user account.", |
---|
1317 | [ |
---|
1318 | '/usr/sbin/chroot', |
---|
1319 | $BUILDDIR, |
---|
1320 | '/usr/sbin/useradd', |
---|
1321 | '-s', |
---|
1322 | '/bin/sh', |
---|
1323 | '-G', |
---|
1324 | 'daemon', |
---|
1325 | '-d', |
---|
1326 | '/var/run/vboxadd', |
---|
1327 | 'vboxadd', |
---|
1328 | ], |
---|
1329 | ); |
---|
1330 | |
---|
1331 | $Bccd->run_test( |
---|
1332 | "system", |
---|
1333 | "", |
---|
1334 | "Altered non-root account directory for KNOPPIX.", |
---|
1335 | [ |
---|
1336 | '/usr/sbin/chroot', |
---|
1337 | $BUILDDIR, |
---|
1338 | '/usr/sbin/usermod', |
---|
1339 | '-d', |
---|
1340 | "/UNIONFS/home/$USER", |
---|
1341 | $USER, |
---|
1342 | ], |
---|
1343 | ); |
---|
1344 | |
---|
1345 | # Bccd perl modules |
---|
1346 | |
---|
1347 | $Bccd->run_test( |
---|
1348 | "mkpath", |
---|
1349 | "", |
---|
1350 | "mkdir $BUILDDIR/$PERLDIR", |
---|
1351 | "$BUILDDIR/$PERLDIR", |
---|
1352 | ); |
---|
1353 | |
---|
1354 | $Bccd->run_test( |
---|
1355 | "chdir", |
---|
1356 | "", |
---|
1357 | "cd'd to $BUILDDIR/$PERLDIR/../", |
---|
1358 | "$BUILDDIR/$PERLDIR/../", |
---|
1359 | ); |
---|
1360 | |
---|
1361 | |
---|
1362 | $Bccd->run_test( |
---|
1363 | "rsync", |
---|
1364 | "", |
---|
1365 | "Checked out Bccd perl modules.", |
---|
1366 | "$WORKSPACE/trees/$PERLDIR/", |
---|
1367 | "$BUILDDIR/$PERLDIR/", |
---|
1368 | "$WORKSPACE/bin/rsync_svn.exclude", |
---|
1369 | ); |
---|
1370 | |
---|
1371 | $Bccd->run_test( |
---|
1372 | "chdir", |
---|
1373 | "", |
---|
1374 | "cd'd to $tmpdir.", |
---|
1375 | "$tmpdir", |
---|
1376 | ); |
---|
1377 | |
---|
1378 | # Torque setup |
---|
1379 | |
---|
1380 | foreach my $file ( '/etc/torque/server_name', |
---|
1381 | '/var/spool/torque/mom_priv/config' ) { |
---|
1382 | my $path = "$BUILDDIR/$file"; |
---|
1383 | $Bccd->run_test( |
---|
1384 | "fwrite", |
---|
1385 | "", |
---|
1386 | "Writing out $HEAD_NODE to $path", |
---|
1387 | 'w', |
---|
1388 | $path, |
---|
1389 | $HEAD_NODE, |
---|
1390 | ); |
---|
1391 | } |
---|
1392 | |
---|
1393 | # Starting hwsetup init scripts |
---|
1394 | foreach my $script ( "knoppix-autoconfig", "xserver-xorg" ) { |
---|
1395 | $Bccd->run_test( |
---|
1396 | "system", |
---|
1397 | "", |
---|
1398 | "Enabled $script.", |
---|
1399 | [ |
---|
1400 | '/usr/sbin/chroot', |
---|
1401 | $BUILDDIR, |
---|
1402 | '/usr/sbin/update-rc.d', |
---|
1403 | $script, |
---|
1404 | 'start', |
---|
1405 | '20', |
---|
1406 | '2', |
---|
1407 | '3', |
---|
1408 | '4', |
---|
1409 | '5', |
---|
1410 | '.', |
---|
1411 | ], |
---|
1412 | ); |
---|
1413 | } |
---|
1414 | |
---|
1415 | # Software install |
---|
1416 | |
---|
1417 | $Bccd->run_test( |
---|
1418 | "chdir", |
---|
1419 | "", |
---|
1420 | "cd'd to $BUILDDIR", |
---|
1421 | "$BUILDDIR", |
---|
1422 | ); |
---|
1423 | |
---|
1424 | $Bccd->run_test( |
---|
1425 | "system", |
---|
1426 | "", |
---|
1427 | "Changed $SOFTWARE to bccd:bccd.", |
---|
1428 | [ |
---|
1429 | '/usr/sbin/chroot', |
---|
1430 | $BUILDDIR, |
---|
1431 | '/bin/chown', |
---|
1432 | '-R', |
---|
1433 | 'bccd:bccd', |
---|
1434 | $SOFTWARE, |
---|
1435 | ], |
---|
1436 | ); |
---|
1437 | |
---|
1438 | foreach my $prog ( <$BUILDDIR/bccd/software/*/bin/*> ) { |
---|
1439 | $Bccd->run_test( |
---|
1440 | "chmod", |
---|
1441 | "", |
---|
1442 | "chmod 0755 $prog", |
---|
1443 | 0755, |
---|
1444 | "$prog", |
---|
1445 | ); |
---|
1446 | } |
---|
1447 | |
---|
1448 | $Bccd->run_test( |
---|
1449 | "chdir", |
---|
1450 | "", |
---|
1451 | "cd $BUILDDIR/", |
---|
1452 | "$BUILDDIR/", |
---|
1453 | ); |
---|
1454 | |
---|
1455 | $Bccd->run_test( |
---|
1456 | "rsync", |
---|
1457 | "", |
---|
1458 | "Copied test tree.", |
---|
1459 | "$WORKSPACE/trees/home/", |
---|
1460 | "$BUILDDIR/home/", |
---|
1461 | "$WORKSPACE/bin/rsync_svn.exclude", |
---|
1462 | ); |
---|
1463 | |
---|
1464 | $Bccd->run_test( |
---|
1465 | "system", |
---|
1466 | "", |
---|
1467 | "chown'd $BUILDDIR/home/bccd to bccd:bccd", |
---|
1468 | [ |
---|
1469 | '/usr/sbin/chroot', |
---|
1470 | $BUILDDIR, |
---|
1471 | 'chown', |
---|
1472 | '-R', |
---|
1473 | "$USER:$USER", |
---|
1474 | '/home/bccd', |
---|
1475 | ], |
---|
1476 | ); |
---|
1477 | |
---|
1478 | $Bccd->run_test( |
---|
1479 | "chmod", |
---|
1480 | "", |
---|
1481 | "chmod 0600 $BUILDDIR/home/bccd/.mpd.conf", |
---|
1482 | 0600, |
---|
1483 | "$BUILDDIR/home/bccd/.mpd.conf", |
---|
1484 | ); |
---|
1485 | |
---|
1486 | $Bccd->run_test( |
---|
1487 | "chmod", |
---|
1488 | "", |
---|
1489 | "chmod 0755 $BUILDDIR/root/.ssh/", |
---|
1490 | 0755, |
---|
1491 | "$BUILDDIR/root/.ssh/", |
---|
1492 | ); |
---|
1493 | |
---|
1494 | $Bccd->run_test( |
---|
1495 | "chmod", |
---|
1496 | "", |
---|
1497 | "chmod 0755 $BUILDDIR/home/$USER/.ssh", |
---|
1498 | 0755, |
---|
1499 | "$BUILDDIR/home/$USER/.ssh", |
---|
1500 | ); |
---|
1501 | |
---|
1502 | $Bccd->run_test( |
---|
1503 | "chmod", |
---|
1504 | "", |
---|
1505 | "chmod 0755 $BUILDDIR/home/$USER", |
---|
1506 | 0755, |
---|
1507 | "$BUILDDIR/home/$USER", |
---|
1508 | ); |
---|
1509 | |
---|
1510 | foreach my $file ( "$BUILDDIR/root/.ssh/bccd", "$BUILDDIR/root/.ssh/config" ) { |
---|
1511 | $Bccd->run_test( |
---|
1512 | "chmod", |
---|
1513 | "", |
---|
1514 | "chmod 0600 $file", |
---|
1515 | 0600, |
---|
1516 | "$file", |
---|
1517 | ); |
---|
1518 | } |
---|
1519 | |
---|
1520 | foreach my $key ( <$BUILDDIR/etc/ssh/ssh*key*> ) { |
---|
1521 | $Bccd->run_test( |
---|
1522 | "unlink", |
---|
1523 | "", |
---|
1524 | "Removed ssh key $key.", |
---|
1525 | "$key", |
---|
1526 | ); |
---|
1527 | } |
---|
1528 | |
---|
1529 | $Bccd->run_test( |
---|
1530 | "system", |
---|
1531 | "", |
---|
1532 | "Fixing cstddef for openmpi.", |
---|
1533 | [ |
---|
1534 | '/usr/bin/perl', |
---|
1535 | '-wpli', |
---|
1536 | '-e', |
---|
1537 | 's/#include_next/#include/g', |
---|
1538 | "$BUILDDIR/usr/include/c++/4.3/cstddef", |
---|
1539 | ], |
---|
1540 | ); |
---|
1541 | |
---|
1542 | # Make us LIVE |
---|
1543 | |
---|
1544 | $Bccd->run_test( |
---|
1545 | "fwrite", |
---|
1546 | "", |
---|
1547 | "Made us LIVE.", |
---|
1548 | "w", |
---|
1549 | "$BUILDDIR/etc/$PROJECT-stage", |
---|
1550 | "LIVE", |
---|
1551 | ); |
---|
1552 | |
---|
1553 | # Setting up menus |
---|
1554 | |
---|
1555 | foreach my $file (<$BUILDDIR/usr/share/menu/*>) { |
---|
1556 | $Bccd->run_test( |
---|
1557 | "unlink", |
---|
1558 | "", |
---|
1559 | "rm'd X menu item $file", |
---|
1560 | "$file", |
---|
1561 | ); |
---|
1562 | } |
---|
1563 | |
---|
1564 | $cwd = getcwd(); |
---|
1565 | |
---|
1566 | $Bccd->run_test( |
---|
1567 | "chdir", |
---|
1568 | "", |
---|
1569 | "cd $BUILDDIR/", |
---|
1570 | "$BUILDDIR/", |
---|
1571 | ); |
---|
1572 | |
---|
1573 | $Bccd->run_test( |
---|
1574 | "rsync", |
---|
1575 | "", |
---|
1576 | "Copied /usr items.", |
---|
1577 | "$WORKSPACE/trees/usr/", |
---|
1578 | "$BUILDDIR/usr/", |
---|
1579 | "$WORKSPACE/bin/rsync_svn.exclude", |
---|
1580 | ); |
---|
1581 | |
---|
1582 | $Bccd->run_test( |
---|
1583 | "rsync", |
---|
1584 | "", |
---|
1585 | "Copied architecure-specific items for $opts{'ARCH'}.", |
---|
1586 | "$WORKSPACE/trees/arch/$opts{'ARCH'}/", |
---|
1587 | "$BUILDDIR/", |
---|
1588 | "$WORKSPACE/bin/rsync_svn.exclude", |
---|
1589 | ); |
---|
1590 | |
---|
1591 | $Bccd->run_test( |
---|
1592 | "chdir", |
---|
1593 | "", |
---|
1594 | "Changed back to old directory.", |
---|
1595 | "$cwd", |
---|
1596 | ); |
---|
1597 | |
---|
1598 | $Bccd->run_test( |
---|
1599 | "system", |
---|
1600 | "", |
---|
1601 | "Updated desktop menus.", |
---|
1602 | [ |
---|
1603 | '/usr/sbin/chroot', |
---|
1604 | $BUILDDIR, |
---|
1605 | '/usr/bin/update-menus', |
---|
1606 | ], |
---|
1607 | ); |
---|
1608 | |
---|
1609 | # Software end |
---|
1610 | |
---|
1611 | # Pre-fetching liberation stuff |
---|
1612 | |
---|
1613 | $Bccd->run_test( |
---|
1614 | "fcopy", |
---|
1615 | "", |
---|
1616 | "Copied BCCD splash screen.", |
---|
1617 | "$WORKSPACE/packages/$SPLASH_FILE", |
---|
1618 | "$BUILDDIR/$LIBFETCH/$SPLASH_FILE", |
---|
1619 | ); |
---|
1620 | |
---|
1621 | $Bccd->run_test( |
---|
1622 | "fcopy", |
---|
1623 | "", |
---|
1624 | "Fetched liberation exports file.", |
---|
1625 | "$WORKSPACE/packages/etc/exports.liberate", |
---|
1626 | "$BUILDDIR/$LIBFETCH/exports", |
---|
1627 | ); |
---|
1628 | |
---|
1629 | $Bccd->run_test( |
---|
1630 | "chdir", |
---|
1631 | "", |
---|
1632 | "cd'ing to $BUILDDIR/$LIBFETCH/.", |
---|
1633 | "$BUILDDIR/$LIBFETCH", |
---|
1634 | ); |
---|
1635 | |
---|
1636 | $Bccd->run_test( |
---|
1637 | "system", |
---|
1638 | "", |
---|
1639 | "Tar'd up linux_aufs.", |
---|
1640 | [ |
---|
1641 | '/bin/tar', |
---|
1642 | '-C', |
---|
1643 | $BUILDDIR, |
---|
1644 | '-cjvf', |
---|
1645 | "$BUILDDIR/$LIBFETCH/lib-linux.tar.bz2", |
---|
1646 | 'boot', |
---|
1647 | 'lib/modules', |
---|
1648 | 'var/lib/tftpboot', |
---|
1649 | ], |
---|
1650 | ); |
---|
1651 | |
---|
1652 | foreach my $file (grep(-f $_, |
---|
1653 | (<$BUILDDIR/var/lib/apt/lists/*>, <$BUILDDIR/var/log/*>))) { |
---|
1654 | $Bccd->run_test( |
---|
1655 | "unlink", |
---|
1656 | "", |
---|
1657 | "Removed $file from file lists.", |
---|
1658 | "$file", |
---|
1659 | ); |
---|
1660 | } |
---|
1661 | |
---|
1662 | $Bccd->run_test( |
---|
1663 | "mkpath", |
---|
1664 | "", |
---|
1665 | "Adding empty /var/log", |
---|
1666 | "$BUILDDIR/var/log", |
---|
1667 | ); |
---|
1668 | |
---|
1669 | $Bccd->run_test( |
---|
1670 | "mkpath", |
---|
1671 | "", |
---|
1672 | "Adding empty /var/log", |
---|
1673 | "$BUILDDIR/var/log", |
---|
1674 | ); |
---|
1675 | |
---|
1676 | $Bccd->run_test( |
---|
1677 | "rmtree", |
---|
1678 | "", |
---|
1679 | "Removing docs to save space.", |
---|
1680 | "$BUILDDIR/usr/share/doc", |
---|
1681 | ); |
---|
1682 | |
---|
1683 | $Bccd->run_test( |
---|
1684 | "system", |
---|
1685 | "0", |
---|
1686 | "Removed all fonts possible.", |
---|
1687 | [ |
---|
1688 | '/usr/sbin/chroot', |
---|
1689 | $BUILDDIR, |
---|
1690 | '/sbin/bccd-rm-fonts', |
---|
1691 | ], |
---|
1692 | ); |
---|
1693 | |
---|
1694 | $Bccd->run_test( |
---|
1695 | "rsync", |
---|
1696 | "", |
---|
1697 | "Copied diskless directory.", |
---|
1698 | "$WORKSPACE/trees/diskless/", |
---|
1699 | "$BUILDDIR/diskless/", |
---|
1700 | "$WORKSPACE/bin/rsync_svn.exclude", |
---|
1701 | ); |
---|
1702 | |
---|
1703 | $Bccd->run_test( |
---|
1704 | "chdir", |
---|
1705 | "", |
---|
1706 | "Reverted to $cwd.", |
---|
1707 | "$cwd", |
---|
1708 | ); |
---|
1709 | |
---|
1710 | $Bccd->run_test( |
---|
1711 | "fcopy", |
---|
1712 | "", |
---|
1713 | "Copied grub configs.", |
---|
1714 | "$WORKSPACE/packages/boot/grub/grub.cfg", |
---|
1715 | "$BUILDDIR/$LIBFETCH/grub.cfg", |
---|
1716 | ); |
---|
1717 | |
---|
1718 | $Bccd->run_test( |
---|
1719 | "fcopy", |
---|
1720 | "", |
---|
1721 | "Copied grub menu.", |
---|
1722 | "$WORKSPACE/packages/boot/grub/menu.lst", |
---|
1723 | "$BUILDDIR/$LIBFETCH/grub_menu.lst", |
---|
1724 | ); |
---|
1725 | |
---|
1726 | $Bccd->run_test( |
---|
1727 | "lsofkill", |
---|
1728 | "", |
---|
1729 | "Killing procs in $BUILDDIR: ", |
---|
1730 | "$BUILDDIR", |
---|
1731 | ); |
---|
1732 | |
---|
1733 | # Make here so automount doesn't destroy it |
---|
1734 | |
---|
1735 | $Bccd->run_test( |
---|
1736 | "chdir", |
---|
1737 | "", |
---|
1738 | "cd'd to $tmpdir for Knoppix fetch.", |
---|
1739 | "$tmpdir", |
---|
1740 | ); |
---|
1741 | |
---|
1742 | $Bccd->run_test( |
---|
1743 | "rsync", |
---|
1744 | "", |
---|
1745 | "Copied KNOPPIX sans root filesystem.", |
---|
1746 | "$WORKSPACE/trees/KNOPPIX/", |
---|
1747 | "$tmpdir/KNOPPIX/", |
---|
1748 | "$WORKSPACE/bin/rsync_svn.exclude", |
---|
1749 | ); |
---|
1750 | |
---|
1751 | $Bccd->run_test( |
---|
1752 | "fcopy", |
---|
1753 | "", |
---|
1754 | "Copying Linux kernel into KNOPPIX image.", |
---|
1755 | "$BUILDDIR/boot/vmlinuz-$KERNREV", |
---|
1756 | "$tmpdir/KNOPPIX/boot/isolinux/linux", |
---|
1757 | ); |
---|
1758 | |
---|
1759 | $Bccd->run_test( |
---|
1760 | "system", |
---|
1761 | "", |
---|
1762 | "Making network initramfs.", |
---|
1763 | [ |
---|
1764 | '/usr/sbin/chroot', |
---|
1765 | $BUILDDIR, |
---|
1766 | '/usr/sbin/mkinitramfs', |
---|
1767 | '-d', |
---|
1768 | '/etc/initramfs-tools.diskless', |
---|
1769 | '-o', |
---|
1770 | "/srv/tftp/initramfs-$KERNREV", |
---|
1771 | $KERNREV, |
---|
1772 | ], |
---|
1773 | ); |
---|
1774 | |
---|
1775 | $Bccd->run_test( |
---|
1776 | "fmove", |
---|
1777 | "", |
---|
1778 | "Renaming $BUILDDIR/srv/tftp/initramfs-$KERNREV to initramfs-$KERNREV.gz", |
---|
1779 | "$BUILDDIR/srv/tftp/initramfs-$KERNREV", |
---|
1780 | "$BUILDDIR/srv/tftp/initramfs-$KERNREV.gz", |
---|
1781 | ); |
---|
1782 | |
---|
1783 | $Bccd->run_test( |
---|
1784 | "system", |
---|
1785 | "", |
---|
1786 | "Uncompressing initramfs modules for KNOPPIX minirt.", |
---|
1787 | [ |
---|
1788 | '/bin/gzip', |
---|
1789 | '-d', |
---|
1790 | "$BUILDDIR/srv/tftp/initramfs-$KERNREV.gz", |
---|
1791 | ], |
---|
1792 | ); |
---|
1793 | |
---|
1794 | $Bccd->run_test( |
---|
1795 | "extract_cpio", |
---|
1796 | "", |
---|
1797 | "Unpacked initramfs modules for KNOPPIX minirt.", |
---|
1798 | "lib/modules/$KERNREV/*", |
---|
1799 | "$BUILDDIR/srv/tftp/initramfs-$KERNREV", |
---|
1800 | ); |
---|
1801 | |
---|
1802 | $Bccd->run_test( |
---|
1803 | "rename", |
---|
1804 | "", |
---|
1805 | "Moved initramfs modules into KNOPPIX minirt.", |
---|
1806 | "$tmpdir/lib/modules/", |
---|
1807 | "$tmpdir/KNOPPIX/boot/isolinux/minirt/modules", |
---|
1808 | ); |
---|
1809 | |
---|
1810 | $Bccd->run_test( |
---|
1811 | "unlink", |
---|
1812 | "", |
---|
1813 | "Removing temporary net initramfs.", |
---|
1814 | "$BUILDDIR/srv/tftp/initramfs-$KERNREV", |
---|
1815 | ); |
---|
1816 | |
---|
1817 | $Bccd->run_test( |
---|
1818 | "system", |
---|
1819 | "", |
---|
1820 | "Unmounted $BUILDDIR/proc.", |
---|
1821 | [ |
---|
1822 | '/bin/umount', |
---|
1823 | '-l', |
---|
1824 | "$BUILDDIR/proc", |
---|
1825 | ], |
---|
1826 | ); |
---|
1827 | |
---|
1828 | $Bccd->run_test( |
---|
1829 | "system", |
---|
1830 | "", |
---|
1831 | "Unmounted $BUILDDIR/sys.", |
---|
1832 | [ |
---|
1833 | '/bin/umount', |
---|
1834 | '-l', |
---|
1835 | "$BUILDDIR/sys", |
---|
1836 | ], |
---|
1837 | ); |
---|
1838 | |
---|
1839 | $Bccd->run_test( |
---|
1840 | "fcopy", |
---|
1841 | "", |
---|
1842 | "Copied minirt device configuration.", |
---|
1843 | "$WORKSPACE/packages/mknod.y", |
---|
1844 | "$tmpdir/mknod.y", |
---|
1845 | ); |
---|
1846 | |
---|
1847 | $Bccd->run_test( |
---|
1848 | "mknods", |
---|
1849 | "", |
---|
1850 | "Created minirt device nodes.", |
---|
1851 | "$tmpdir/mknod.y", |
---|
1852 | "$tmpdir/KNOPPIX/boot/isolinux/minirt", |
---|
1853 | ); |
---|
1854 | |
---|
1855 | $Bccd->run_test( |
---|
1856 | "system", |
---|
1857 | "", |
---|
1858 | "Created minirt filesystem.", |
---|
1859 | [ |
---|
1860 | '/bin/dd', |
---|
1861 | 'if=/dev/zero', |
---|
1862 | "of=$tmpdir/minirt", |
---|
1863 | 'bs=1k', |
---|
1864 | 'count=20000', |
---|
1865 | ], |
---|
1866 | ); |
---|
1867 | |
---|
1868 | $Bccd->run_test( |
---|
1869 | "system", |
---|
1870 | "", |
---|
1871 | "Made ext2 filesystem in minirt filesystem.", |
---|
1872 | [ |
---|
1873 | '/sbin/mke2fs', |
---|
1874 | '-F', |
---|
1875 | "$tmpdir/minirt", |
---|
1876 | ], |
---|
1877 | ); |
---|
1878 | |
---|
1879 | $Bccd->run_test( |
---|
1880 | "mkpath", |
---|
1881 | "", |
---|
1882 | "Made loop directory.", |
---|
1883 | "$tmpdir/loop", |
---|
1884 | ); |
---|
1885 | |
---|
1886 | $Bccd->run_test( |
---|
1887 | "system", |
---|
1888 | "", |
---|
1889 | "Mounted minirt on loop directory.", |
---|
1890 | [ |
---|
1891 | '/bin/mount', |
---|
1892 | '-t', |
---|
1893 | 'ext2', |
---|
1894 | '-o', |
---|
1895 | 'loop', |
---|
1896 | "$tmpdir/minirt", |
---|
1897 | "$tmpdir/loop", |
---|
1898 | ], |
---|
1899 | ); |
---|
1900 | |
---|
1901 | $Bccd->run_test( |
---|
1902 | "system", |
---|
1903 | "", |
---|
1904 | "Copied minirt into loop filesystem.", |
---|
1905 | [ |
---|
1906 | '/usr/bin/rsync', |
---|
1907 | '-a', |
---|
1908 | '--delete', |
---|
1909 | "--exclude-from=$WORKSPACE/bin/rsync_svn.exclude", |
---|
1910 | "$tmpdir/KNOPPIX/boot/isolinux/minirt/", |
---|
1911 | "$tmpdir/loop/", |
---|
1912 | ], |
---|
1913 | ); |
---|
1914 | |
---|
1915 | $Bccd->run_test( |
---|
1916 | "mkpath", |
---|
1917 | "", |
---|
1918 | "Made modules directory in loop filesystem.", |
---|
1919 | "$tmpdir/loop/modules/", |
---|
1920 | ); |
---|
1921 | |
---|
1922 | |
---|
1923 | $Bccd->run_test( |
---|
1924 | "system", |
---|
1925 | "", |
---|
1926 | "Unmounted loop filesystem.", |
---|
1927 | [ |
---|
1928 | '/bin/umount', |
---|
1929 | "$tmpdir/loop/", |
---|
1930 | ], |
---|
1931 | ); |
---|
1932 | |
---|
1933 | $Bccd->run_test( |
---|
1934 | "rmtree", |
---|
1935 | "", |
---|
1936 | "Removed minirt tree.", |
---|
1937 | "$tmpdir/KNOPPIX/boot/isolinux/minirt/", |
---|
1938 | ); |
---|
1939 | |
---|
1940 | $Bccd->run_test( |
---|
1941 | "fcopy", |
---|
1942 | "", |
---|
1943 | "Copied minirt into $tmpdir/KNOPPIX/boot/isolinux", |
---|
1944 | "$tmpdir/minirt", |
---|
1945 | "$tmpdir/KNOPPIX/boot/isolinux/minirt", |
---|
1946 | ); |
---|
1947 | |
---|
1948 | $Bccd->run_test( |
---|
1949 | "system", |
---|
1950 | "", |
---|
1951 | "Compressed $tmpdir/KNOPPIX/boot/isolinux/minirt", |
---|
1952 | [ |
---|
1953 | '/bin/gzip', |
---|
1954 | "$tmpdir/KNOPPIX/boot/isolinux/minirt", |
---|
1955 | ], |
---|
1956 | ); |
---|
1957 | |
---|
1958 | $Bccd->run_test( |
---|
1959 | "fcopy", |
---|
1960 | "", |
---|
1961 | "Copied background image.", |
---|
1962 | "$WORKSPACE/packages/$SPLASH_FILE", |
---|
1963 | "$tmpdir/$SPLASH_FILE", |
---|
1964 | ); |
---|
1965 | |
---|
1966 | $Bccd->run_test( |
---|
1967 | "system", |
---|
1968 | "", |
---|
1969 | "Creating isolinux splash image.", |
---|
1970 | [ |
---|
1971 | "$WORKSPACE/bin/pngtolss16", |
---|
1972 | '-i', |
---|
1973 | "$tmpdir/$SPLASH_FILE", |
---|
1974 | '-o', |
---|
1975 | "$tmpdir/KNOPPIX/boot/isolinux/logo.16", |
---|
1976 | ], |
---|
1977 | ); |
---|
1978 | |
---|
1979 | $Bccd->run_test( |
---|
1980 | "regexsub_file", |
---|
1981 | "", |
---|
1982 | "Adding version to KNOPPIX boot file.", |
---|
1983 | "$tmpdir/KNOPPIX/boot/isolinux/boot.msg", |
---|
1984 | "==REVISION==", |
---|
1985 | "$release", |
---|
1986 | ); |
---|
1987 | |
---|
1988 | $Bccd->run_test( |
---|
1989 | "regexsub_file", |
---|
1990 | "", |
---|
1991 | "Adding date to KNOPPIX boot file.", |
---|
1992 | "$tmpdir/KNOPPIX/boot/isolinux/boot.msg", |
---|
1993 | "==DATE==", |
---|
1994 | "$FORMAT_DATE", |
---|
1995 | ); |
---|
1996 | |
---|
1997 | $Bccd->run_test( |
---|
1998 | "fwrite", |
---|
1999 | "", |
---|
2000 | "Writing out date to /etc/$PROJECT-build-date.", |
---|
2001 | "w", |
---|
2002 | "$BUILDDIR/etc/$PROJECT-build-date", |
---|
2003 | "$FORMAT_DATE", |
---|
2004 | ); |
---|
2005 | |
---|
2006 | # Default host name will be node000 |
---|
2007 | foreach my $file ( "mailname", "hostname", ) { |
---|
2008 | $Bccd->run_test( |
---|
2009 | "fwrite", |
---|
2010 | "", |
---|
2011 | "Writing out default hostname to $BUILDDIR/etc/$file", |
---|
2012 | "w", |
---|
2013 | "$BUILDDIR/etc/$file", |
---|
2014 | "node000", |
---|
2015 | ); |
---|
2016 | } |
---|
2017 | |
---|
2018 | $Bccd->run_test( |
---|
2019 | "rmtree", |
---|
2020 | 0, |
---|
2021 | "Removing linux_aufs fetch for $BUILDDIR.", |
---|
2022 | "$BUILDDIR/$opts{'ARCH'}", |
---|
2023 | ); |
---|
2024 | |
---|
2025 | $Bccd->run_test( |
---|
2026 | "chdir", |
---|
2027 | "", |
---|
2028 | "cd $tmpdir", |
---|
2029 | $tmpdir, |
---|
2030 | ); |
---|
2031 | |
---|
2032 | $Bccd->run_test( |
---|
2033 | "system", |
---|
2034 | "", |
---|
2035 | "Created compressed root filesystem.", |
---|
2036 | [ |
---|
2037 | '/usr/local/bin/mksquashfs', |
---|
2038 | 'build-bccd', |
---|
2039 | "$tmpdir/KNOPPIX/KNOPPIX/KNOPPIX", |
---|
2040 | '-comp', |
---|
2041 | 'xz', |
---|
2042 | ], |
---|
2043 | ); |
---|
2044 | |
---|
2045 | $Bccd->run_test( |
---|
2046 | "system", |
---|
2047 | "", |
---|
2048 | "Created bootable ISO image at $OUTISO.", |
---|
2049 | [ |
---|
2050 | '/usr/bin/genisoimage', |
---|
2051 | '-pad', |
---|
2052 | '-l', |
---|
2053 | '-r', |
---|
2054 | '-J', |
---|
2055 | '-v', |
---|
2056 | '-V', |
---|
2057 | "BCCDv3-$svnrev", |
---|
2058 | '-no-emul-boot', |
---|
2059 | '-boot-load-size', |
---|
2060 | '4', |
---|
2061 | '-boot-info-table', |
---|
2062 | '-b', |
---|
2063 | 'boot/isolinux/isolinux.bin', |
---|
2064 | '-c', |
---|
2065 | 'boot/isolinux/boot.cat', |
---|
2066 | '-hide-rr-moved', |
---|
2067 | '-o', |
---|
2068 | $OUTISO, |
---|
2069 | "$tmpdir/KNOPPIX", |
---|
2070 | ], |
---|
2071 | ); |
---|
2072 | |
---|
2073 | $Bccd->run_test( |
---|
2074 | 'md5file', |
---|
2075 | '', |
---|
2076 | "Generated MD5 sum for $OUTISO at $OUTISO.md5", |
---|
2077 | "$OUTISO", |
---|
2078 | "$OUTISO.md5", |
---|
2079 | ); |
---|
2080 | |
---|
2081 | print "Passed ".$Bccd->get_passed()." out of ".$Bccd->get_total()." total tests.\n"; |
---|
2082 | |
---|
2083 | if($opts{'UPDATEDB'}) { |
---|
2084 | my $dbh = open_db("$opts{'UPDATEDB'}"); |
---|
2085 | if( $Bccd->get_passed() < $Bccd->get_total() ) { |
---|
2086 | insert_results($TESTNAME,$STAGE,$svnrev,$Bccd->snarf_file("$tmpdir/allout"),"FAILURE",$dbh); |
---|
2087 | } else { |
---|
2088 | insert_results($TESTNAME,$STAGE,$svnrev,$Bccd->snarf_file("$tmpdir/allout"),"SUCCESS",$dbh); |
---|
2089 | } |
---|
2090 | $Bccd->close_stdio(); |
---|
2091 | $dbh->disconnect; |
---|
2092 | } |
---|
2093 | |
---|
2094 | chdir $ENV{HOME}; |
---|
2095 | |
---|
2096 | exit $Bccd->get_total()-$Bccd->get_passed(); |
---|
2097 | |
---|
2098 | __END__ |
---|
2099 | |
---|
2100 | build_livecd.pl - Build process based on Knoppix Live CD creation |
---|
2101 | |
---|
2102 | =head1 - SYNOPSIS |
---|
2103 | |
---|
2104 | This script is based on KNOPPIX project documentation for creating a |
---|
2105 | #Test for running system commands |
---|
2106 | Debian-based Live CD using cloop. |
---|
2107 | |
---|
2108 | Set SVN_REVISION in the calling shell environment to the revision you |
---|
2109 | wish to build to. |
---|
2110 | |
---|
2111 | =head1 - OPTIONS |
---|
2112 | |
---|
2113 | =over 8 |
---|
2114 | |
---|
2115 | =item B<--builddir> I<path-to-dir> |
---|
2116 | |
---|
2117 | Path to build directory for live CD. Will be cleaned up after the work is |
---|
2118 | done. |
---|
2119 | |
---|
2120 | =item B<--arch> I<arch> |
---|
2121 | |
---|
2122 | Architecture to build for. |
---|
2123 | |
---|
2124 | =item B<--outdor> I<path-to-dir> |
---|
2125 | |
---|
2126 | Where to output the bccd ISO image. |
---|
2127 | |
---|
2128 | =item B<--websvn> I<websvn-url> |
---|
2129 | |
---|
2130 | Path to bccd's websvn branch, i.e. http://cluster.earlham.edu/svn/bccd-ng/trunk. |
---|
2131 | |
---|
2132 | =item B<--suite> I<release-name> |
---|
2133 | |
---|
2134 | Name of the Debian release suite to download. |
---|
2135 | |
---|
2136 | =item B<--nocleanup> |
---|
2137 | |
---|
2138 | Preserve the /tmp directory for investigation. |
---|
2139 | |
---|
2140 | =item B<--help> |
---|
2141 | |
---|
2142 | This message. |
---|
2143 | |
---|
2144 | =cut |
---|