mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-03 21:02:34 +00:00 
			
		
		
		
	Merge branch 'bug3963'
This commit is contained in:
		@@ -43,6 +43,7 @@ my $interactive;
 | 
			
		||||
my $onlyinitrd;
 | 
			
		||||
my $dryrun;
 | 
			
		||||
my $ignorekernelchk;
 | 
			
		||||
my $noupdate;
 | 
			
		||||
#-----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
=head3 print_usage   - usage message
 | 
			
		||||
@@ -55,8 +56,8 @@ sub print_usage
 | 
			
		||||
    print "Usage:\n";
 | 
			
		||||
    print "    genimage\n\n";
 | 
			
		||||
    print "    genimage --dryrun\n\n";
 | 
			
		||||
    print '    genimage  -o <osver> [-a <arch>] -p <profile> -i <nodebootif> -n <nodenetdrivers> [--onlyinitrd] [-r <otherifaces>] [-k <kernelver>] [-g <krpmver>] [-m statelite] [-l rootlimitsize] [-t tmplimitsize] [--permission <permission>] [--interactive] [--dryrun]'."\n\n";
 | 
			
		||||
    print '    genimage [-o <osver>] [-a <arch>] [-p <profile>] [-i <nodebootif>] [-n <nodenetdrivers>] [--onlyinitrd] [-r <otherifaces>] [-k <kernelver>] [-g <krpmver>] [-m statelite] [-l rootlimitsize] [-t tmplimitsize] [--permission <permission>] [--interactive] [--dryrun] <imagename>'."\n\n";
 | 
			
		||||
    print '    genimage  -o <osver> [-a <arch>] -p <profile> -i <nodebootif> -n <nodenetdrivers> [--onlyinitrd] [-r <otherifaces>] [-k <kernelver>] [-g <krpmver>] [-m statelite] [-l rootlimitsize] [-t tmplimitsize] [--permission <permission>] [--interactive] [--dryrun] [--noupdate]'."\n\n";
 | 
			
		||||
    print '    genimage [-o <osver>] [-a <arch>] [-p <profile>] [-i <nodebootif>] [-n <nodenetdrivers>] [--onlyinitrd] [-r <otherifaces>] [-k <kernelver>] [-g <krpmver>] [-m statelite] [-l rootlimitsize] [-t tmplimitsize] [--permission <permission>] [--interactive] [--dryrun] [--noupdate] <imagename>'."\n\n";
 | 
			
		||||
    print "      --permission is used for statelite only\n";
 | 
			
		||||
    print "      -g is used for SLES only\n\n";
 | 
			
		||||
    print "      -m is used for urbuntu, debian and fedora12 only\n\n";
 | 
			
		||||
@@ -90,6 +91,7 @@ if (!GetOptions(
 | 
			
		||||
         'onlyinitrd' => \$onlyinitrd, 
 | 
			
		||||
         'dryrun' => \$dryrun,
 | 
			
		||||
	 'ignorekernelchk' => \$ignorekernelchk,
 | 
			
		||||
	 'noupdate' => \$noupdate,
 | 
			
		||||
	 'h|help' => \$help,
 | 
			
		||||
	 'v|version' => \$version,
 | 
			
		||||
)) {
 | 
			
		||||
@@ -409,6 +411,10 @@ if ($ignorekernelchk) {
 | 
			
		||||
    push @arg, "--ignorekernelchk";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($noupdate) {
 | 
			
		||||
    push @arg, "--noupdate";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
my $cmdref;
 | 
			
		||||
push (@{$cmdref->{arg}}, @arg);
 | 
			
		||||
$cmdref->{command}->[0] = "genimage";   
 | 
			
		||||
 
 | 
			
		||||
@@ -6,9 +6,9 @@ B<genimage> - Generates a stateless image to be used for a diskless install.
 | 
			
		||||
 | 
			
		||||
B<genimage>
 | 
			
		||||
 | 
			
		||||
B<genimage> [B<-o> I<osver>] [B<-a> I<arch>] [B<-p> I<profile>] [B<-i> I<nodebootif>] [B<-n> I<nodenetdrivers>] [B<--onlyinitrd>] [B<-r> I<otherifaces>] [B<-k> I<kernelver>] [B<-g> I<krpmver>] [B<-m> I<statelite>] [B<-l> I<rootlimitsize>] [B<--permission> I<permission>] [B<--interactive>] [B<--dryrun>] [B<--ignorekernelchk>] I<imagename>
 | 
			
		||||
B<genimage> [B<-o> I<osver>] [B<-a> I<arch>] [B<-p> I<profile>] [B<-i> I<nodebootif>] [B<-n> I<nodenetdrivers>] [B<--onlyinitrd>] [B<-r> I<otherifaces>] [B<-k> I<kernelver>] [B<-g> I<krpmver>] [B<-m> I<statelite>] [B<-l> I<rootlimitsize>] [B<--permission> I<permission>] [B<--interactive>] [B<--dryrun>] [B<--ignorekernelchk>] [B<--noupdate>] I<imagename>
 | 
			
		||||
 | 
			
		||||
B<genimage>  B<-o> I<osver> [B<-a> I<arch>] B<-p> I<profile> B<-i> I<nodebootif> B<-n> I<nodenetdrivers> [B<--onlyinitrd>]  [B<-r> I<otherifaces>] [B<-k> I<kernelver>] [B<-g> I<krpmver>] [B<-m> I<statelite>] [B<-l> I<rootlimitsize>] [B<--permission> I<permission>] [B<--interactive>] [B<--dryrun>]
 | 
			
		||||
B<genimage>  B<-o> I<osver> [B<-a> I<arch>] B<-p> I<profile> B<-i> I<nodebootif> B<-n> I<nodenetdrivers> [B<--onlyinitrd>]  [B<-r> I<otherifaces>] [B<-k> I<kernelver>] [B<-g> I<krpmver>] [B<-m> I<statelite>] [B<-l> I<rootlimitsize>] [B<--permission> I<permission>] [B<--interactive>] [B<--dryrun>] [B<--noupdate>]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
B<genimage> [B<-h> | B<--help> | B<-v> | B<--version>]
 | 
			
		||||
@@ -154,6 +154,10 @@ This flag shows the underlying call to the os specific genimage function. The us
 | 
			
		||||
 | 
			
		||||
Skip the kernel version checking when injecting drivers from osimage.driverupdatesrc. That means all drivers from osimage.driverupdatesrc will be injected to initrd for the specific target kernel.
 | 
			
		||||
 | 
			
		||||
=item B<--noupdate>
 | 
			
		||||
 | 
			
		||||
This flag allows the user to bypass automatic package updating when installing other packages.
 | 
			
		||||
 | 
			
		||||
=item B<-v|--version>
 | 
			
		||||
 | 
			
		||||
Display version.
 | 
			
		||||
 
 | 
			
		||||
@@ -70,6 +70,7 @@ sub process_request {
 | 
			
		||||
   my $tempfile;
 | 
			
		||||
   my $dryrun;
 | 
			
		||||
   my $ignorekernelchk;
 | 
			
		||||
   my $noupdate;
 | 
			
		||||
 | 
			
		||||
   GetOptions(
 | 
			
		||||
       'a=s' => \$arch,
 | 
			
		||||
@@ -90,6 +91,7 @@ sub process_request {
 | 
			
		||||
       'tempfile=s' => \$tempfile,
 | 
			
		||||
       'dryrun' => \$dryrun, 
 | 
			
		||||
       'ignorekernelchk' => \$ignorekernelchk,
 | 
			
		||||
       'noupdate' => \$noupdate,
 | 
			
		||||
       );
 | 
			
		||||
 | 
			
		||||
   my $osimagetab;
 | 
			
		||||
@@ -301,6 +303,7 @@ sub process_request {
 | 
			
		||||
   }
 | 
			
		||||
   if ($driverupdatesrc) { $cmd .= " --driverupdatesrc $driverupdatesrc"; }
 | 
			
		||||
   if ($ignorekernelchk) { $cmd .= " --ignorekernelchk $ignorekernelchk"; }
 | 
			
		||||
   if ($noupdate) { $cmd .= " --noupdate $noupdate"; }
 | 
			
		||||
 | 
			
		||||
   if($osfamily eq "sles") {
 | 
			
		||||
       my @entries =  xCAT::TableUtils->get_site_attribute("timezone");
 | 
			
		||||
 
 | 
			
		||||
@@ -53,6 +53,7 @@ my $permission; # the permission works only for statelite mode currently
 | 
			
		||||
my $tempfile;
 | 
			
		||||
my $kerneldir;
 | 
			
		||||
my $prompt;
 | 
			
		||||
my $noupdate;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
sub xdie {
 | 
			
		||||
@@ -83,6 +84,7 @@ GetOptions(
 | 
			
		||||
   'rootimgdir=s' => \$destdir,   #internal flag
 | 
			
		||||
   'interactive' =>\$prompt, 
 | 
			
		||||
   'onlyinitrd' =>\$onlyinitrd, 
 | 
			
		||||
   'noupdate' =>\$noupdate,
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
if (@ARGV > 0) {
 | 
			
		||||
@@ -320,11 +322,13 @@ unless ($onlyinitrd) {
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   # run yum update to update any installed rpms
 | 
			
		||||
   # needed when running genimage again after updating software in repositories
 | 
			
		||||
   my $yumcmd_update = $yumcmd_base . " update  ";
 | 
			
		||||
   $rc = system("$yumcmd_update");
 | 
			
		||||
   # ignore any return code
 | 
			
		||||
   if (!$noupdate) {
 | 
			
		||||
       # run yum update to update any installed rpms
 | 
			
		||||
       # needed when running genimage again after updating software in repositories
 | 
			
		||||
       my $yumcmd_update = $yumcmd_base . " update  ";
 | 
			
		||||
       $rc = system("$yumcmd_update");
 | 
			
		||||
       # ignore any return code
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   postscripts(); #run 'postscripts'
 | 
			
		||||
 
 | 
			
		||||
@@ -57,6 +57,7 @@ my $permission; # the permission works only for statelite mode currently
 | 
			
		||||
my $tempfile;
 | 
			
		||||
my $kerneldir;
 | 
			
		||||
my $prompt;
 | 
			
		||||
my $noupdate;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
sub xdie {
 | 
			
		||||
@@ -87,6 +88,7 @@ GetOptions(
 | 
			
		||||
   'rootimgdir=s' => \$destdir,   #internal flag
 | 
			
		||||
   'interactive' =>\$prompt, 
 | 
			
		||||
   'onlyinitrd' =>\$onlyinitrd, 
 | 
			
		||||
   'noupdate' =>\$noupdate,
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
if (@ARGV > 0) {
 | 
			
		||||
@@ -320,11 +322,13 @@ unless ($onlyinitrd) {
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   # run yum update to update any installed rpms
 | 
			
		||||
   # needed when running genimage again after updating software in repositories
 | 
			
		||||
   my $yumcmd_update = $yumcmd_base . " update  ";
 | 
			
		||||
   $rc = system("$yumcmd_update");
 | 
			
		||||
   # ignore any return code
 | 
			
		||||
   if (!$noupdate) {
 | 
			
		||||
       # run yum update to update any installed rpms
 | 
			
		||||
       # needed when running genimage again after updating software in repositories
 | 
			
		||||
       my $yumcmd_update = $yumcmd_base . " update  ";
 | 
			
		||||
       $rc = system("$yumcmd_update");
 | 
			
		||||
       # ignore any return code
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   postscripts(); #run 'postscripts'
 | 
			
		||||
 
 | 
			
		||||
@@ -64,6 +64,7 @@ my $permission; # the permission works only for statelite mode currently
 | 
			
		||||
my $tempfile;
 | 
			
		||||
my $prompt;
 | 
			
		||||
my $ignorekernelchk;
 | 
			
		||||
my $noupdate;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
sub xdie {
 | 
			
		||||
@@ -110,6 +111,7 @@ GetOptions(
 | 
			
		||||
   'interactive' =>\$prompt, 
 | 
			
		||||
   'onlyinitrd' =>\$onlyinitrd, 
 | 
			
		||||
   'ignorekernelchk' => \$ignorekernelchk,
 | 
			
		||||
   'noupdate' => \$noupdate,
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
if (@ARGV > 0) {
 | 
			
		||||
@@ -344,7 +346,7 @@ unless ($onlyinitrd) {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
   #Now let's handle extra packages
 | 
			
		||||
    #Now let's handle extra packages
 | 
			
		||||
    unless ($imagename) {
 | 
			
		||||
        $otherpkglist = imgutils::get_profile_def_filename($osver, $profile, $arch, $customdir, "otherpkgs.pkglist");
 | 
			
		||||
        unless ($otherpkglist) { $otherpkglist=imgutils::get_profile_def_filename($osver, $profile, $arch, $pathtofiles, "otherpkgs.pkglist"); }
 | 
			
		||||
@@ -358,116 +360,115 @@ unless ($onlyinitrd) {
 | 
			
		||||
 | 
			
		||||
    my %repohash;
 | 
			
		||||
    if (keys(%extra_hash) > 0) {
 | 
			
		||||
      open($yumconfig,">>","/tmp/genimage.$$.yum.conf");
 | 
			
		||||
      my $index=1;
 | 
			
		||||
      foreach $pass (sort {$a <=> $b} (keys(%extra_hash))) {
 | 
			
		||||
        foreach (keys(%{$extra_hash{$pass}})) {
 | 
			
		||||
        open($yumconfig,">>","/tmp/genimage.$$.yum.conf");
 | 
			
		||||
        my $index=1;
 | 
			
		||||
        foreach $pass (sort {$a <=> $b} (keys(%extra_hash))) {
 | 
			
		||||
            foreach (keys(%{$extra_hash{$pass}})) {
 | 
			
		||||
 | 
			
		||||
            if($_ eq "INCLUDEBAD")  {
 | 
			
		||||
               print "Unable to open the following pkglist files:\n".join("\n",@{$extra_hash{$pass}{INCLUDEBAD}});
 | 
			
		||||
               exit 1;
 | 
			
		||||
            }
 | 
			
		||||
                if($_ eq "INCLUDEBAD")  {
 | 
			
		||||
                    print "Unable to open the following pkglist files:\n".join("\n",@{$extra_hash{$pass}{INCLUDEBAD}});
 | 
			
		||||
                    exit 1;
 | 
			
		||||
                }
 | 
			
		||||
            
 | 
			
		||||
            if (($_ eq "PRE_REMOVE") || ($_ eq "POST_REMOVE") || ($_ eq "ENVLIST")) { next;} 
 | 
			
		||||
            print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=file://$srcdir_otherpkgs/$_\ngpgpcheck=0\n\n";
 | 
			
		||||
            $repohash{$pass}{$index} = 1;
 | 
			
		||||
            $index++;
 | 
			
		||||
            my $pa=$extra_hash{$pass}{$_};
 | 
			
		||||
            $extrapkgnames{$pass} .= " " . join(' ', @$pa);
 | 
			
		||||
                if (($_ eq "PRE_REMOVE") || ($_ eq "POST_REMOVE") || ($_ eq "ENVLIST")) { next;}
 | 
			
		||||
                print $yumconfig "[otherpkgs$index]\nname=otherpkgs$index\nbaseurl=file://$srcdir_otherpkgs/$_\ngpgpcheck=0\n\n";
 | 
			
		||||
                $repohash{$pass}{$index} = 1;
 | 
			
		||||
                $index++;
 | 
			
		||||
                my $pa=$extra_hash{$pass}{$_};
 | 
			
		||||
                $extrapkgnames{$pass} .= " " . join(' ', @$pa);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      close($yumconfig);
 | 
			
		||||
      $index--;
 | 
			
		||||
      my $yumcmd_base = "yum $non_interactive -c /tmp/genimage.$$.yum.conf --installroot=$rootimg_dir/ --disablerepo=* ";
 | 
			
		||||
        close($yumconfig);
 | 
			
		||||
        $index--;
 | 
			
		||||
        my $yumcmd_base = "yum $non_interactive -c /tmp/genimage.$$.yum.conf --installroot=$rootimg_dir/ --disablerepo=* ";
 | 
			
		||||
 | 
			
		||||
      #yum/rpm/zypper has defect on calculating diskspace usage when installing rpm on a NFS mounted installroot
 | 
			
		||||
      if(isNFSdir("$rootimg_dir")){
 | 
			
		||||
         $yumcmd_base .= "--setopt=diskspacecheck=0 ";
 | 
			
		||||
       }  
 | 
			
		||||
        #yum/rpm/zypper has defect on calculating diskspace usage when installing rpm on a NFS mounted installroot
 | 
			
		||||
        if(isNFSdir("$rootimg_dir")){
 | 
			
		||||
            $yumcmd_base .= "--setopt=diskspacecheck=0 ";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
      foreach (0..$repnum) {
 | 
			
		||||
          $yumcmd_base .= "--enablerepo=$osver-$arch-$_ ";
 | 
			
		||||
       }
 | 
			
		||||
#      for (1..$index) {
 | 
			
		||||
#          $yumcmd .= "--enablerepo=otherpkgs$_ ";
 | 
			
		||||
#      } 
 | 
			
		||||
        foreach (0..$repnum) {
 | 
			
		||||
            $yumcmd_base .= "--enablerepo=$osver-$arch-$_ ";
 | 
			
		||||
        }
 | 
			
		||||
#        for (1..$index) {
 | 
			
		||||
#            $yumcmd .= "--enablerepo=otherpkgs$_ ";
 | 
			
		||||
#        }
 | 
			
		||||
 | 
			
		||||
      foreach $pass (sort {$a <=> $b} (keys(%extra_hash))) {
 | 
			
		||||
          $yumcmd = $yumcmd_base;
 | 
			
		||||
          foreach my $repo_index ( keys %{$repohash{$pass}} ) {
 | 
			
		||||
              $yumcmd .= "--enablerepo=otherpkgs$repo_index ";
 | 
			
		||||
          }
 | 
			
		||||
        foreach $pass (sort {$a <=> $b} (keys(%extra_hash))) {
 | 
			
		||||
            $yumcmd = $yumcmd_base;
 | 
			
		||||
            foreach my $repo_index ( keys %{$repohash{$pass}} ) {
 | 
			
		||||
                $yumcmd .= "--enablerepo=otherpkgs$repo_index ";
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
          system("$yumcmd clean all");
 | 
			
		||||
            system("$yumcmd clean all");
 | 
			
		||||
 | 
			
		||||
          my $envlist;
 | 
			
		||||
          if(exists($extra_hash{$pass}{ENVLIST})){
 | 
			
		||||
              $envlist = join(' ', @{$extra_hash{$pass}{ENVLIST}});
 | 
			
		||||
          }
 | 
			
		||||
          # remove the packages that are specified in the otherpkgs.list files with leading '-'
 | 
			
		||||
          my $yumcmd_remove= "$yumcmd erase ";
 | 
			
		||||
          if (exists ($extra_hash{$pass}{'PRE_REMOVE'})) {
 | 
			
		||||
              my $pa=$extra_hash{$pass}{'PRE_REMOVE'};
 | 
			
		||||
              my $rm_packges= join(' ', @$pa);
 | 
			
		||||
              if ($rm_packges) {
 | 
			
		||||
                  print "$envlist $yumcmd_remove $rm_packges\n";
 | 
			
		||||
                  $rc = system("$envlist $yumcmd_remove $rm_packges");
 | 
			
		||||
              }
 | 
			
		||||
          }
 | 
			
		||||
            my $envlist;
 | 
			
		||||
            if(exists($extra_hash{$pass}{ENVLIST})){
 | 
			
		||||
                $envlist = join(' ', @{$extra_hash{$pass}{ENVLIST}});
 | 
			
		||||
            }
 | 
			
		||||
            # remove the packages that are specified in the otherpkgs.list files with leading '-'
 | 
			
		||||
            my $yumcmd_remove= "$yumcmd erase ";
 | 
			
		||||
            if (exists ($extra_hash{$pass}{'PRE_REMOVE'})) {
 | 
			
		||||
                my $pa=$extra_hash{$pass}{'PRE_REMOVE'};
 | 
			
		||||
                my $rm_packges= join(' ', @$pa);
 | 
			
		||||
                if ($rm_packges) {
 | 
			
		||||
                    print "$envlist $yumcmd_remove $rm_packges\n";
 | 
			
		||||
                    $rc = system("$envlist $yumcmd_remove $rm_packges");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
#          # mount /proc file system since several packages need it.
 | 
			
		||||
#          print "mount /proc file system\nchroot $rootimg_dir /bin/mount -t proc proc /proc\n";
 | 
			
		||||
#          system("chroot $rootimg_dir /bin/mount -t proc proc /proc");
 | 
			
		||||
#            # mount /proc file system since several packages need it.
 | 
			
		||||
#            print "mount /proc file system\nchroot $rootimg_dir /bin/mount -t proc proc /proc\n";
 | 
			
		||||
#            system("chroot $rootimg_dir /bin/mount -t proc proc /proc");
 | 
			
		||||
 | 
			
		||||
          # install extra packages
 | 
			
		||||
          my $yumcmd_base = $yumcmd;
 | 
			
		||||
          $yumcmd .= "install ";
 | 
			
		||||
          # append extra pkg names to yum command 
 | 
			
		||||
          if ($extrapkgnames{$pass}) {
 | 
			
		||||
              $yumcmd .= " $extrapkgnames{$pass} ";
 | 
			
		||||
	      $yumcmd =~ s/ $/\n/;
 | 
			
		||||
            # install extra packages
 | 
			
		||||
            my $yumcmd_base = $yumcmd;
 | 
			
		||||
            $yumcmd .= "install ";
 | 
			
		||||
            # append extra pkg names to yum command
 | 
			
		||||
            if ($extrapkgnames{$pass}) {
 | 
			
		||||
                $yumcmd .= " $extrapkgnames{$pass} ";
 | 
			
		||||
                $yumcmd =~ s/ $/\n/;
 | 
			
		||||
    
 | 
			
		||||
	      # debug
 | 
			
		||||
	      #print "yumcmd=$yumcmd\n";
 | 
			
		||||
	      #my $repo=`cat /tmp/genimage.$$.yum.conf`;
 | 
			
		||||
	      #print "repo=$repo";
 | 
			
		||||
	      
 | 
			
		||||
	      print "$envlist $yumcmd\n"; 
 | 
			
		||||
	      my $rc = system("$envlist $yumcmd");
 | 
			
		||||
	      if ($rc) { 
 | 
			
		||||
		  print "yum invocation failed\n";
 | 
			
		||||
		  exit 1;
 | 
			
		||||
	      }
 | 
			
		||||
          } else {
 | 
			
		||||
	      print "No Packages marked for install\n";
 | 
			
		||||
          }
 | 
			
		||||
                # debug
 | 
			
		||||
                #print "yumcmd=$yumcmd\n";
 | 
			
		||||
                #my $repo=`cat /tmp/genimage.$$.yum.conf`;
 | 
			
		||||
                #print "repo=$repo";
 | 
			
		||||
 | 
			
		||||
#          # umount /proc file system that just mounted
 | 
			
		||||
#          print "umount /proc file system\nchroot $rootimg_dir /bin/umount /proc\n";
 | 
			
		||||
#          system("chroot $rootimg_dir /bin/umount /proc");
 | 
			
		||||
                print "$envlist $yumcmd\n";
 | 
			
		||||
                my $rc = system("$envlist $yumcmd");
 | 
			
		||||
                if ($rc) {
 | 
			
		||||
                    print "yum invocation failed\n";
 | 
			
		||||
                    exit 1;
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                print "No Packages marked for install\n";
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
#            # umount /proc file system that just mounted
 | 
			
		||||
#            print "umount /proc file system\nchroot $rootimg_dir /bin/umount /proc\n";
 | 
			
		||||
#            system("chroot $rootimg_dir /bin/umount /proc");
 | 
			
		||||
	
 | 
			
		||||
          # remove the packages that are specified in the otherpkgs.list files with leading '--'
 | 
			
		||||
          if (exists ($extra_hash{$pass}{'POST_REMOVE'})) {
 | 
			
		||||
              my $pa=$extra_hash{$pass}{'POST_REMOVE'};
 | 
			
		||||
              my $rm_packges= join(' ', @$pa);
 | 
			
		||||
              if ($rm_packges) {
 | 
			
		||||
                  print "$envlist $yumcmd_remove $rm_packges\n";
 | 
			
		||||
                  $rc = system("$envlist $yumcmd_remove $rm_packges");
 | 
			
		||||
              }
 | 
			
		||||
          }
 | 
			
		||||
          $yumcmd = $yumcmd_base;
 | 
			
		||||
            # remove the packages that are specified in the otherpkgs.list files with leading '--'
 | 
			
		||||
            if (exists ($extra_hash{$pass}{'POST_REMOVE'})) {
 | 
			
		||||
                my $pa=$extra_hash{$pass}{'POST_REMOVE'};
 | 
			
		||||
                my $rm_packges= join(' ', @$pa);
 | 
			
		||||
                if ($rm_packges) {
 | 
			
		||||
                    print "$envlist $yumcmd_remove $rm_packges\n";
 | 
			
		||||
                    $rc = system("$envlist $yumcmd_remove $rm_packges");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            $yumcmd = $yumcmd_base;
 | 
			
		||||
 | 
			
		||||
          # run yum update to update any installed rpms
 | 
			
		||||
          # needed when running genimage again after updating software in repositories
 | 
			
		||||
          my $yumcmd_update = $yumcmd_base . " update  ";
 | 
			
		||||
          $rc = system("$yumcmd_update");
 | 
			
		||||
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   # ignore any return code
 | 
			
		||||
 | 
			
		||||
   postscripts(); #run 'postscripts'
 | 
			
		||||
            if (!$noupdate) {
 | 
			
		||||
                # run yum update to update any installed rpms
 | 
			
		||||
                # needed when running genimage again after updating software in repositories
 | 
			
		||||
                my $yumcmd_update = $yumcmd_base . " update  ";
 | 
			
		||||
                $rc = system("$yumcmd_update");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    # ignore any return code
 | 
			
		||||
    postscripts(); #run 'postscripts'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#get the rpm version, if the rpm version is different then the db verison may change.
 | 
			
		||||
 
 | 
			
		||||
@@ -61,6 +61,7 @@ my $tempfile;
 | 
			
		||||
my $prompt;
 | 
			
		||||
my $timezone; #the TIMEZONE of the stateless and statelite node
 | 
			
		||||
my $ignorekernelchk;
 | 
			
		||||
my $noupdate;
 | 
			
		||||
 | 
			
		||||
sub xdie {
 | 
			
		||||
   system("rm -rf /tmp/xcatinitrd.$$");
 | 
			
		||||
@@ -108,6 +109,7 @@ GetOptions(
 | 
			
		||||
   'interactive' =>\$prompt, 
 | 
			
		||||
   'onlyinitrd' =>\$onlyinitrd,
 | 
			
		||||
   'ignorekernelchk' => \$ignorekernelchk,
 | 
			
		||||
   'noupdate' => \$noupdate,
 | 
			
		||||
 );
 | 
			
		||||
 | 
			
		||||
if (@ARGV > 0) {
 | 
			
		||||
@@ -559,15 +561,17 @@ unless ($onlyinitrd) {
 | 
			
		||||
           }
 | 
			
		||||
       }
 | 
			
		||||
 | 
			
		||||
       # run zypper update to update any installed rpms
 | 
			
		||||
       # needed when running genimage again after updating software in repositories
 | 
			
		||||
       my $yumcmd_update;
 | 
			
		||||
       if ($osver_host == 11) {
 | 
			
		||||
         $yumcmd_update = "zypper -R $rootimg_dir $non_interactive update ";
 | 
			
		||||
       } else {
 | 
			
		||||
         $yumcmd_update = "zypper -R $rootimg_dir $non_interactive update  ";
 | 
			
		||||
       if (!$noupdate) {
 | 
			
		||||
         # run zypper update to update any installed rpms
 | 
			
		||||
         # needed when running genimage again after updating software in repositories
 | 
			
		||||
         my $yumcmd_update;
 | 
			
		||||
         if ($osver_host == 11) {
 | 
			
		||||
           $yumcmd_update = "zypper -R $rootimg_dir $non_interactive update ";
 | 
			
		||||
         } else {
 | 
			
		||||
           $yumcmd_update = "zypper -R $rootimg_dir $non_interactive update  ";
 | 
			
		||||
         }
 | 
			
		||||
         $rc = system("$yumcmd_update");
 | 
			
		||||
       }
 | 
			
		||||
       $rc = system("$yumcmd_update");
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   #remove the old repository for extra packages
 | 
			
		||||
 
 | 
			
		||||
@@ -47,6 +47,7 @@ my $srcdir_otherpkgs;
 | 
			
		||||
my $otherpkglist;
 | 
			
		||||
my $postinstall_filename;
 | 
			
		||||
my $rootimg_dir;
 | 
			
		||||
my $noupdate;
 | 
			
		||||
 | 
			
		||||
sub xdie {
 | 
			
		||||
   system("rm -rf /tmp/xcatinitrd.$$");
 | 
			
		||||
@@ -80,6 +81,7 @@ GetOptions(
 | 
			
		||||
   't=s' => \$tmplimit,
 | 
			
		||||
   'k=s' => \$kernelver,
 | 
			
		||||
   'onlyinitrd' =>\$onlyinitrd,
 | 
			
		||||
   'noupdate' => \$noupdate,
 | 
			
		||||
);
 | 
			
		||||
if (@ARGV > 0) {
 | 
			
		||||
    $imagename=$ARGV[0];
 | 
			
		||||
@@ -364,11 +366,13 @@ unless ($onlyinitrd) {
 | 
			
		||||
	   $rc = system("$yumcmd_remove $rm_packges");
 | 
			
		||||
       }
 | 
			
		||||
 | 
			
		||||
   # run zypper update to update any installed rpms
 | 
			
		||||
   # needed when running genimage again after updating software in repositories
 | 
			
		||||
   my $yumcmd_update = "zypper -R $rootimg_dir update  ";
 | 
			
		||||
   $rc = system("$yumcmd_update");
 | 
			
		||||
   # ignore any return code
 | 
			
		||||
   if (!$noupdate) {
 | 
			
		||||
       # run zypper update to update any installed rpms
 | 
			
		||||
       # needed when running genimage again after updating software in repositories
 | 
			
		||||
       my $yumcmd_update = "zypper -R $rootimg_dir update  ";
 | 
			
		||||
       $rc = system("$yumcmd_update");
 | 
			
		||||
       # ignore any return code
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   postscripts(); #run 'postscripts'
 | 
			
		||||
 
 | 
			
		||||
@@ -63,6 +63,7 @@ my $rootimg_dir;
 | 
			
		||||
my $permission; # the permission works only for statelite mode currently
 | 
			
		||||
my $tempfile;
 | 
			
		||||
my $prompt;
 | 
			
		||||
my $noupdate;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
sub xdie {
 | 
			
		||||
@@ -93,6 +94,7 @@ GetOptions(
 | 
			
		||||
   'rootimgdir=s' => \$destdir,   #internal flag
 | 
			
		||||
   'interactive' =>\$prompt, 
 | 
			
		||||
   'onlyinitrd' =>\$onlyinitrd,
 | 
			
		||||
   'noupdate' =>\$noupdate,
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
if (@ARGV > 0) {
 | 
			
		||||
@@ -463,14 +465,16 @@ unless ($onlyinitrd) {
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   # run apt-get upgrade to update any installed debs
 | 
			
		||||
   # needed when running genimage again after updating software in repositories
 | 
			
		||||
   #my $aptgetcmd_update = $yumcmd_base . " upgrade  ";
 | 
			
		||||
   my $aptgetcmd_update = $aptgetcmd . "&&". $aptgetcmdby . " upgrade  ";
 | 
			
		||||
   $rc = system("$aptgetcmd_update");
 | 
			
		||||
   print("Umount /proc, /dev, /sys, pkgdir and otherpkgdir to the rootimg.\n");
 | 
			
		||||
   umount_chroot($rootimg_dir);
 | 
			
		||||
   # ignore any return code
 | 
			
		||||
   if (!$noupdate) {
 | 
			
		||||
       # run apt-get upgrade to update any installed debs
 | 
			
		||||
       # needed when running genimage again after updating software in repositories
 | 
			
		||||
       #my $aptgetcmd_update = $yumcmd_base . " upgrade  ";
 | 
			
		||||
       my $aptgetcmd_update = $aptgetcmd . "&&". $aptgetcmdby . " upgrade  ";
 | 
			
		||||
       $rc = system("$aptgetcmd_update");
 | 
			
		||||
       print("Umount /proc, /dev, /sys, pkgdir and otherpkgdir to the rootimg.\n");
 | 
			
		||||
       umount_chroot($rootimg_dir);
 | 
			
		||||
       # ignore any return code
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   # Add the local repo from MN
 | 
			
		||||
   my $master = xCAT::TableUtils->get_site_Master();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user