# HG changeset patch # User Dario Sestito # Date 1277817636 -3600 # Node ID 822b287b58995d1d83daa6673f556a3a6e85fa68 # Parent 7f69aca41ac42f6d70a9e8ed26925fc4e42687ab Truclean to take account of new /sf/ directory level in the releaseables diff -r 7f69aca41ac4 -r 822b287b5899 uh_parser/truclean.pl --- a/uh_parser/truclean.pl Tue Jun 29 12:05:37 2010 +0100 +++ b/uh_parser/truclean.pl Tue Jun 29 14:20:36 2010 +0100 @@ -20,92 +20,85 @@ my $releaseablesdir = ""; my $packageexpr = ''; +my $dryrun = 0; my $help = 0; GetOptions(( 'packageexpr:s' => \$packageexpr, 'releaseablesdir:s' => \$releaseablesdir, + 'dryrun!' => \$dryrun, 'help!' => \$help )); -$packageexpr =~ m,([^/^\\]+)[/\\]([^/^\\]+),; -my $layer_expr = $1; -my $package_expr = $2; -$help = 1 if (!$layer_expr or !$package_expr); +$help = 1 if (!$packageexpr); if ($help) { - print "Extracts text which doesn't belong to recipes from a raptor log file\n"; - print "Usage: perl truclean.pl --packageexpr=LAYER_EXPR/PACKAGE_EXPR [OPTIONS]\n"; - print "where:\n"; - print "\tLAYER_EXPR can be * or the name of a layer\n"; - print "\tPACKAGE_EXPR can be * or the name of a package\n"; - print "and OPTIONS are:\n"; - print "\t--releaseablesdir=DIR Use DIR as the root of the releaseables dir (default: $RELEASEABLES_DIR_DEFAULT\n"; + print <<_EOH; +truclean +Performs a 'clean' build step, based on the releaseables information, i.e. the +list of artifacts produced during a PDK build. +This cleaning step ensures all the build artifacts produced by the build are +actually removed even if the source code has changed since the PDK build. + +Usage: truclean.pl -p PACKAGE_EXPR [-r RELEASABLES_DIR] [-d] + +Options: + -h, --help Show this help message and exit + -p PACKAGE_EXPR Clean (remove) build artifacts belonging to the package + or packages indicated by PACKAGE_EXPR. + PACKAGE_EXPR is the path (wildcards allowed) of the + package, e.g. 'sf/app/camera' or 'sf/mw/*' or '*/*/*'. + If the first directory level is not specified then 'sf' + is assumed. + -r RELEASABLES_DIR Use RELEASEABLES_DIR as root of the releaseable files + (default is $RELEASEABLES_DIR_DEFAULT). + -d Dry run (Do not remove files for real) +_EOH exit(0); } $releaseablesdir = $RELEASEABLES_DIR_DEFAULT if (!$releaseablesdir); -my @layers = (); -if ($layer_expr eq '*') +$packageexpr =~ s,\\,/,g; +$packageexpr =~ s,//,/,g; +$packageexpr =~ s,^/,,; +if (-d "$releaseablesdir/sf") { - opendir(DIR, $releaseablesdir); - @layers = readdir(DIR); - closedir(DIR); - @layers = grep(!/^\.\.?$/, @layers); -} -else -{ - push(@layers, $layer_expr); + $packageexpr = "sf/$packageexpr" if ($packageexpr =~ m,^(adaptation|app|mw|os|tools),); } -#for (@layers) {print "$_\n"}; -for my $layer (@layers) +my @targetfiles = grep {-f$_} glob("$releaseablesdir/$packageexpr/info.tsv"); +print join("\n", @targetfiles); + +for my $targetfile (@targetfiles) { - my @packages = (); - if ($package_expr eq '*') - { - opendir(DIR, "$releaseablesdir/$layer"); - @packages = readdir(DIR); - closedir(DIR); - @packages = grep(!/^\.\.?$/, @packages); - } - else + print "Processing $targetfile...\n"; + + open(FILE, $targetfile); + while () { - push(@packages, $package_expr); - } - #for (@pacakges) {print "$_\n"}; - - for my $package (@packages) - { - print "Processing package $layer/$package...\n"; - - open(FILE, "$releaseablesdir/$layer/$package/info.tsv"); - while () + my $line = $_; + + if ($line =~ m,([^\t]*)\t([^\t]*)\t([^\t]*),) { - my $line = $_; + my $file = $1; + my $type = $2; + my $config = $3; - if ($line =~ m,([^\t]*)\t([^\t]*)\t([^\t]*),) + if (-f $file) { - my $file = $1; - my $type = $2; - my $config = $3; - - if (-f $file) - { - print "removing file: '$file'\n"; - unlink($file); - } - else - { - print "WARNING: file '$file' doesn't exist.\n"; - } + print "removing file: '$file'\n"; + unlink($file) if (!$dryrun); } else { - print "WARNING: line '$line' doesn't match the expected tab-separated pattern\n"; + print "WARNING: file '$file' doesn't exist.\n"; } } - close(FILE); + else + { + print "WARNING: line '$line' doesn't match the expected tab-separated pattern\n"; + } } -} \ No newline at end of file + close(FILE); +}