--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/deprecated/buildtools/buildsystemtools/removebuild.pl Wed Oct 27 16:03:51 2010 +0800
@@ -0,0 +1,175 @@
+#!/usr/bin/perl
+
+# Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# removebuild.pl - prepares a drive for a clean licensee build by removing
+# all buildable files from the drive.
+#
+#
+
+my ($file) = readOpts(@ARGV);
+
+exit remove($file);
+
+sub readOpts(@)
+ {
+ my (@args) = @_;
+
+ my $path = undef;
+
+ foreach my $arg (@args)
+ {
+ if ($arg =~ /^-/)
+ {
+ if ((lc($arg) eq "--help")
+ ||(lc($arg) eq "-h")
+ )
+ {
+ showHelp();
+ exit 0;
+ }
+ else
+ {
+ print STDERR "Option '$arg' not recognised.\n\n";
+ print STDERR "Try 'removebuild --help' for help.\n";
+ exit 1;
+ }
+ }
+ else
+ {
+ if (defined($path))
+ {
+ print STDERR "Removebuild accepts only one argument.\n\n";
+ print STDERR "Try 'removebuild --help' for help.\n";
+ exit 1;
+ }
+ else
+ {
+ $path = $arg;
+ }
+ }
+ }
+
+ if (!defined($path))
+ {
+ print STDERR "Removebuild must be given a list of files to remove.\n\n";
+ print STDERR "Try 'removebuild --help' for help.\n";
+ exit 1;
+ }
+
+ return ($path);
+ }
+
+sub remove($)
+ {
+ my ($file) = @_;
+
+ open(FILE, $file);
+
+ my $dir = undef;
+ my $failed = 0;
+ my $worked = 0;
+ my $hasentries = 0;
+
+ foreach my $line (<FILE>)
+ {
+ chomp($line);
+ $hasentries = 1;
+
+ if ($line =~ /^\*/)
+ {
+ if ($line =~ /^\*DIR:/)
+ {
+ $dir = $line;
+ $dir =~ s/^\*DIR:\s*//;
+
+ $dir =~ s/[\/\\]*$//; # Remove trailing \/
+ }
+ else
+ {
+ close(FILE);
+ die "'$file' is not a valid input.\n('$line' not recognised)\n";
+ }
+ }
+ else
+ {
+ if (defined($dir))
+ {
+ $line =~ s/^[\/\\]*//; # Remove preceding \/
+
+ # Attempt to delete '$dir\$line'
+
+ $line = $dir."\\".$line;
+
+ if (-e $line)
+ {
+ if (-d $line)
+ {
+ $failed = 1;
+ print STDERR "ERROR: Could not remove file '$line' because $line is a directory\n";
+ }
+ else
+ {
+ if (!unlink($line))
+ {
+ $failed = 1;
+ print STDERR "ERROR: Could not remove file '$line'. Make sure it is not write protected.\n";
+ }
+ else
+ {
+ $worked = 1;
+
+ # Remove parent dirs if now empty
+ my $empty = 1;
+ while (($line =~ /[\/\\]/) && $empty)
+ {
+ $line =~ s/[\/\\][^\/\\]*$//; # Go to parent dir
+ if (!rmdir($line))
+ {
+ # If it fails, the dir can't be empty
+ $empty = 0;
+ }
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ close(FILE);
+ die "'$file' is not a valid input.\n(DIR must be set before '$line')\n";
+ }
+ }
+ }
+
+ close(FILE);
+
+ if ($hasentries && (!$worked))
+ {
+ print STDERR "WARNING: No files listed in '$file' were found. Is the current directory correct?\n";
+ }
+
+ return $failed;
+ }
+
+sub showHelp()
+ {
+ print "removebuild [options] Filename\n";
+ print " - prepares a drive for a 'build from clean' by removing\n";
+ print " all buildable files.\n\n";
+ print " Filename - The file listing the buildable files to be removed\n\n";
+ print "Options:\n";
+ print " --help or -h - Display this message\n\n";
+ }
+