diff --git a/xCAT-server/lib/perl/xCAT/Postage.pm b/xCAT-server/lib/perl/xCAT/Postage.pm index 8c153b661..6fac85cb1 100644 --- a/xCAT-server/lib/perl/xCAT/Postage.pm +++ b/xCAT-server/lib/perl/xCAT/Postage.pm @@ -1588,6 +1588,10 @@ sub get_envlist sub get_pkglist_tex { my $allfiles_pkglist = shift; + if($allfiles_pkglist =~ "xCAT::"){ + $allfiles_pkglist = shift; + } + my $allfiles_pkgtext; foreach my $pkglist (split(/,/, $allfiles_pkglist)) { @@ -1657,7 +1661,7 @@ sub includefile $file = $idir . "/" . $file; } - open(INCLUDE, $file) || \return "#INCLUDEBAD:cannot open $file#"; + open(INCLUDE, $file) || return "#INCLUDEBAD:cannot open pkglist file $file#"; while () { diff --git a/xCAT-server/lib/perl/xCAT/Template.pm b/xCAT-server/lib/perl/xCAT/Template.pm index f3f528232..d3f1976df 100644 --- a/xCAT-server/lib/perl/xCAT/Template.pm +++ b/xCAT-server/lib/perl/xCAT/Template.pm @@ -122,6 +122,7 @@ sub subvars { $inc =~ s/#ENV:([^#]+)#/envvar($1)/eg; my $res; if ($pkglistfile) { + #substitute the tag #INCLUDE_DEFAULT_PKGLIST# with package file name (for full install of rh, centos,SL, esx fedora) $inc =~ s/#INCLUDE_DEFAULT_PKGLIST#/#INCLUDE:$pkglistfile#/g; @@ -141,44 +142,11 @@ sub subvars { # the additional lines are considered preseed directives and included as is if ($pkglistfile) { - # handle empty and non-empty $pkglistfile's - my $allpkglist; - foreach my $mypkglistfile (split(/,/, $pkglistfile)) { - my @tmp_array=(); - if (open PKGLISTFILE, "<$mypkglistfile") { - my $pkglist = ''; - # append preseed directive lines - while () { - chomp $_; - s/\s+$//; #remove trailing white spaces - next if /^\s*$/; #-- skip empty lines - next - if ( /^\s*#/ - && !/^\s*#INCLUDE:[^#^\n]+#/ - && !/^\s*#NEW_INSTALL_LIST#/ - && !/^\s*#ENV:[^#^\n]+#/); #-- skip comments - push(@tmp_array,$_); - } - - if ( @tmp_array > 0) { - $pkglist=join(' ',@tmp_array); - #handle the #INLCUDE# tag recursively - my $idir = dirname($mypkglistfile); - my $doneincludes=0; - while (not $doneincludes) { - $doneincludes=1; - if ($pkglist =~ /#INCLUDE:[^#^\n]+#/) { - $doneincludes=0; - $pkglist =~ s/#INCLUDE:([^#^\n]+)#/debian_includefile($1,$idir)/eg; - } - } - } - - $allpkglist.=" $pkglist "; - close PKGLISTFILE; - } + my $allpkglist=xCAT::Postage->get_pkglist_tex($pkglistfile); + if($allpkglist =~ /#INCLUDEBAD:(.*)#/){ + return "$1"; } - + $allpkglist =~ s/,/ /g; $inc =~ s/#INCLUDE_DEFAULT_PKGLIST_PRESEED#/$allpkglist/g; } else { @@ -1713,35 +1681,6 @@ sub getNM_GW() return (undef, undef); } -sub debian_includefile -{ - my $file = shift; - my $idir = shift; - my @text = (); - unless ($file =~ /^\//) { - $file = $idir."/".$file; - } - - open(INCLUDE,$file) || - return "#INCLUDEBAD:cannot open $file#"; - - while() { - chomp($_); - s/\s+$//; #remove trailing spaces - next if /^\s*$/; #-- skip empty lines - next - if ( /^\s*#/ - && !/^\s*#INCLUDE:[^#^\n]+#/ - && !/^\s*#NEW_INSTALL_LIST#/ - && !/^\s*#ENV:[^#^\n]+#/); #-- skip comments - push(@text, $_); - } - - close(INCLUDE); - - return join(' ', @text); -} - 1;