File Coverage

blib/lib/KIF/Build/ix86.pm
Criterion Covered Total %
statement 21 53 39.6
branch 0 18 0.0
condition 0 3 0.0
subroutine 7 10 70.0
pod 0 3 0.0
total 28 87 32.1


line stmt bran cond sub pod time code
1             #!/usr/bin/perl
2             #
3             # Revision History:
4             #
5             # 26-Nov-2002 Dick Munroe (munroe@csworks.com)
6             # Initial Version Created.
7             #
8             # 27-Nov-2002 Dick Munroe (munroe@csworks.com)
9             # Support LILO as a bootloader.
10             #
11             # 03-Dec-2002 Dick Munroe (munroe@csworks.com)
12             # Fix search for alternate boot loader configuration files.
13             #
14             # 18-May-2003 Dick Munroe (munroe@csworks.com)
15             # Make sure package variables can't leak.
16             #
17             # 19-May-2003 Dick Munroe (munroe@csworks.com)
18             # Use Carp.
19             # Isolate kif related classes in a KIF namespace.
20             #
21              
22             package KIF::Build::ix86 ;
23              
24 1     1   518 use vars qw($VERSION @ISA) ;
  1         2  
  1         59  
25              
26             our $VERSION = "1.02" ;
27              
28 1     1   5 use strict ;
  1         2  
  1         27  
29              
30 1     1   4 use Carp ;
  1         1  
  1         44  
31 1     1   4 use File::Copy ;
  1         2  
  1         41  
32 1     1   6 use KIF::Build ;
  1         2  
  1         20  
33 1     1   6 use KIF::Bootloader::grub ;
  1         2  
  1         26  
34 1     1   4 use KIF::Bootloader::lilo ;
  1         2  
  1         562  
35              
36             our @ISA = qw(KIF::Build) ;
37              
38             sub new
39             {
40 0     0 0   my $thePackage = shift ;
41              
42 0           my $theObject = $thePackage->SUPER::new(@_) ;
43              
44             #
45             # Figure out what bootloader is in use by this system and
46             # allocate an object to be used when (or if) the boot loader
47             # configuration files are modified.
48             #
49              
50 0           my @theBootloaderConfigurationFiles = ("/boot/grub/grub.conf", "/etc/lilo.conf") ;
51 0           my $theBootloaderIndex ;
52             my $theIndex ;
53 0           my $theNumberOfBootloaders ;
54            
55 0           for ($theIndex = 0; $theIndex < scalar(@theBootloaderConfigurationFiles); $theIndex++)
56             {
57 0 0         if (-e $theBootloaderConfigurationFiles[$theIndex])
58             {
59 0           $theNumberOfBootloaders++ ;
60 0           $theBootloaderIndex = $theIndex ;
61             } ;
62             } ;
63              
64             #
65             # It is possible to use BOTH LILO and Grub on the same system
66             # Check to see if LILO was used to boot this system and choose
67             # LILO if necessary.
68             #
69              
70 0 0         if ($theNumberOfBootloaders > 1)
71             {
72 0 0         my $theFileHandle = new FileHandle "< /proc/cmdline" or croak "Can't open /proc/cmdline" ;
73              
74 0           $theBootloaderIndex = 0 ;
75              
76 0           while ($_ = $theFileHandle->getline)
77             {
78 0 0         if (m/BOOT_IMAGE/)
79             {
80 0           $theBootloaderIndex = 1 ;
81 0           last ;
82             } ;
83             } ;
84              
85 0           undef $theFileHandle ;
86             } ;
87              
88             #
89             # Now allocate an object used to manipulate that particular file.
90             #
91              
92 0           my $theBootloader ;
93              
94 0 0         $theBootloader = new KIF::Bootloader::grub if ($theBootloaderIndex == 0) ;
95 0 0         $theBootloader = new KIF::Bootloader::lilo if ($theBootloaderIndex == 1) ;
96              
97 0 0         croak "No bootloader object allocated" if (!defined($theBootloader)) ;
98              
99 0           $theObject->bootloader($theBootloader) ;
100              
101 0           return $theObject ;
102             } ;
103              
104             sub doKernel
105             {
106 0     0 0   my $theObject = shift ;
107              
108 0           $theObject->run('make bzImage') ;
109             } ;
110              
111             sub doMovefiles
112             {
113 0     0 0   my $theObject = shift ;
114              
115 0           $theObject->SUPER::doMovefiles() ;
116              
117 0           my $theBuildDirectory = $theObject->buildDirectory() ;
118 0           my $theReleaseTag = $theObject->releaseTag() ;
119              
120 0 0         if (-e "$theBuildDirectory/arch/i386/boot/bzImage")
121             {
122 0 0 0       copy("$theBuildDirectory/arch/i386/boot/bzImage", "/boot/vmlinuz-$theReleaseTag") or croak "Copy failed: $!"
123             if (!$theObject->testFlag()) ;
124 0           $theObject->_print("Copied $theBuildDirectory/arch/i386/boot/bzImage => /boot/vmlinuz-$theReleaseTag\n", 1) ;
125             } ;
126             } ;
127              
128             1;