From 36efc5d93fd648318d7e4fcdb37e6bf6f3e79d27 Mon Sep 17 00:00:00 2001 From: wanghuaz Date: Mon, 29 Oct 2012 12:39:54 +0000 Subject: [PATCH] handling multiple exlist in packimage and liteimg git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@14147 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- xCAT-server/lib/xcat/plugins/packimage.pm | 65 ++++++++++++----------- xCAT-server/lib/xcat/plugins/statelite.pm | 61 +++++++++++---------- 2 files changed, 66 insertions(+), 60 deletions(-) diff --git a/xCAT-server/lib/xcat/plugins/packimage.pm b/xCAT-server/lib/xcat/plugins/packimage.pm index 57885701d..4ece2bd0e 100644 --- a/xCAT-server/lib/xcat/plugins/packimage.pm +++ b/xCAT-server/lib/xcat/plugins/packimage.pm @@ -241,41 +241,44 @@ sub process_request { my $excludestr = "find . -xdev "; my $includestr; if ($exlistloc) { - my $exlist; - my $excludetext; - open($exlist,"<",$exlistloc); - system("echo -n > $xcat_packimg_tmpfile"); - while (<$exlist>) { - $excludetext .= $_; - } - close($exlist); + my @excludeslist = split ',', $exlistloc; + foreach my $exlistlocname ( @excludeslist ) { + my $exlist; + my $excludetext; + open($exlist,"<",$exlistlocname); + system("echo -n > $xcat_packimg_tmpfile"); + while (<$exlist>) { + $excludetext .= $_; + } + close($exlist); - #handle the #INLCUDE# tag recursively - my $idir = dirname($exlistloc); - my $doneincludes=0; - while (not $doneincludes) { - $doneincludes=1; - if ($excludetext =~ /#INCLUDE:[^#^\n]+#/) { - $doneincludes=0; - $excludetext =~ s/#INCLUDE:([^#^\n]+)#/include_file($1,$idir)/eg; - } + #handle the #INLCUDE# tag recursively + my $idir = dirname($exlistlocname); + my $doneincludes=0; + while (not $doneincludes) { + $doneincludes=1; + if ($excludetext =~ /#INCLUDE:[^#^\n]+#/) { + $doneincludes=0; + $excludetext =~ s/#INCLUDE:([^#^\n]+)#/include_file($1,$idir)/eg; + } - } + } - my @tmp=split("\n", $excludetext); - foreach (@tmp) { - chomp $_; - s/\s*#.*//; #-- remove comments - next if /^\s*$/; #-- skip empty lines - if (/^\+/) { - s/^\+//; #remove '+' - $includestr .= "-path '". $_ ."' -o "; - } else { - s/^\-//; #remove '-' if any - $excludestr .= "'!' -path '".$_."' -a "; - } + my @tmp=split("\n", $excludetext); + foreach (@tmp) { + chomp $_; + s/\s*#.*//; #-- remove comments + next if /^\s*$/; #-- skip empty lines + if (/^\+/) { + s/^\+//; #remove '+' + $includestr .= "-path '". $_ ."' -o "; + } else { + s/^\-//; #remove '-' if any + $excludestr .= "'!' -path '".$_."' -a "; + } + } } - } + } # the files specified for statelite should be excluded my @excludeStatelite = ("./etc/init.d/statelite", "./etc/rc.sysinit.backup", "./.statelite*", "./.default*", "./.statebackup*"); diff --git a/xCAT-server/lib/xcat/plugins/statelite.pm b/xCAT-server/lib/xcat/plugins/statelite.pm index 2a32109ea..f95ffbdff 100644 --- a/xCAT-server/lib/xcat/plugins/statelite.pm +++ b/xCAT-server/lib/xcat/plugins/statelite.pm @@ -450,37 +450,40 @@ sub process_request { my $excludestr = "find . "; my $includestr; if ($exlistloc) { - my $exlist; - my $excludetext; - open($exlist,"<",$exlistloc); - system("echo -n > $xcat_packimg_tmpfile"); - while (<$exlist>) { - $excludetext .= $_; - } - close($exlist); - - #handle the #INLCUDE# tag recursively - my $idir = dirname($exlistloc); - my $doneincludes=0; - while (not $doneincludes) { - $doneincludes=1; - if ($excludetext =~ /#INCLUDE:[^#^\n]+#/) { - $doneincludes=0; - $excludetext =~ s/#INCLUDE:([^#^\n]+)#/include_file($1,$idir)/eg; + my @excludeslist = split ',', $exlistloc; + foreach my $exlistlocname ( @excludeslist ) { + my $exlist; + my $excludetext; + open($exlist,"<",$exlistlocname); + system("echo -n > $xcat_packimg_tmpfile"); + while (<$exlist>) { + $excludetext .= $_; + } + close($exlist); + + #handle the #INLCUDE# tag recursively + my $idir = dirname($exlistlocname); + my $doneincludes=0; + while (not $doneincludes) { + $doneincludes=1; + if ($excludetext =~ /#INCLUDE:[^#^\n]+#/) { + $doneincludes=0; + $excludetext =~ s/#INCLUDE:([^#^\n]+)#/include_file($1,$idir)/eg; + } } - } - my @tmp=split("\n", $excludetext); - foreach (@tmp) { - chomp $_; - s/\s*#.*//; #-- remove comments - next if /^\s*$/; #-- skip empty lines - if (/^\+/) { - s/^\+//; #remove '+' - $includestr .= "-path '". $_ ."' -o "; - } else { - s/^\-//; #remove '-' if any - $excludestr .= "'!' -path '".$_."' -a "; + my @tmp=split("\n", $excludetext); + foreach (@tmp) { + chomp $_; + s/\s*#.*//; #-- remove comments + next if /^\s*$/; #-- skip empty lines + if (/^\+/) { + s/^\+//; #remove '+' + $includestr .= "-path '". $_ ."' -o "; + } else { + s/^\-//; #remove '-' if any + $excludestr .= "'!' -path '".$_."' -a "; + } } } }