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