summaryrefslogtreecommitdiff
path: root/solenv/bin/cwstouched.pl
diff options
context:
space:
mode:
Diffstat (limited to 'solenv/bin/cwstouched.pl')
-rwxr-xr-xsolenv/bin/cwstouched.pl151
1 files changed, 151 insertions, 0 deletions
diff --git a/solenv/bin/cwstouched.pl b/solenv/bin/cwstouched.pl
new file mode 100755
index 000000000000..eb306277580c
--- /dev/null
+++ b/solenv/bin/cwstouched.pl
@@ -0,0 +1,151 @@
+:
+eval 'exec perl -wS $0 ${1+"$@"}'
+ if 0;
+
+#*************************************************************************
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#***********************************************************************/
+
+use strict;
+use Cwd;
+
+#### module lookup
+my @lib_dirs;
+BEGIN {
+ if ( !defined($ENV{SOLARENV}) ) {
+ die "No environment found (environment variable SOLARENV is undefined)";
+ }
+ push(@lib_dirs, "$ENV{SOLARENV}/bin/modules");
+}
+use lib (@lib_dirs);
+
+use Cws;
+
+# Prototypes
+sub getMinor($);
+sub getCwsWorkStamp();
+
+my $workstamp = $ENV{'WORK_STAMP'};
+my $solenv= $ENV{'SOLARENV'};
+my $cwsWorkStamp = getCwsWorkStamp();
+my $minor = getMinor($cwsWorkStamp);
+
+my $oldWorkStamp = $workstamp."_".$minor;
+my $svndiff="svn diff --summarize --old=svn://svn.services.openoffice.org/ooo/tags/".$oldWorkStamp." --new=svn://svn.services.openoffice.org/ooo/cws/".$cwsWorkStamp;
+
+my @diff = `$svndiff`;
+
+my @modules;
+foreach(@diff)
+{
+ if (/.*svn:\/\/svn.services.openoffice.org.*/)
+ {
+ $_ =~ /.*$oldWorkStamp\/(\w*)/;
+ my $newModule=$1;
+ if (defined($newModule))
+ {
+ if ( ! grep(/$newModule/,@modules))
+ {
+ push(@modules, $newModule);
+ }
+
+ }
+ }
+}
+
+foreach(@modules)
+{
+ print "$_\n";
+}
+
+exit(0);
+
+sub getMinor($)
+{
+ my $workst = shift;
+ my $min="";
+
+ if ( ! defined($ENV{'UPDMINOR'}))
+ {
+ my $cws = Cws->new();
+ $cws->child($workst);
+ $cws->master($ENV{'WORK_STAMP'});
+ my $masterws = $cws->master();
+ my $childws = $cws->child();
+
+ # check if we got a valid child workspace
+ my $id = $cws->eis_id();
+ if ( !$id )
+ {
+ print("Child workspace '$childws' for master workspace '$masterws' not found in EIS database.\n");
+ exit(1);
+ }
+
+ my @milestones = $cws->milestone();
+ foreach (@milestones) {
+ if ( defined($_) )
+ {
+ $min=$_;
+ }
+ }
+ }
+ else
+ {
+ $min = $ENV{'UPDMINOR'};
+ }
+
+ chomp($min);
+ return $min;
+}
+
+sub getCwsWorkStamp()
+{
+ my $cwsWorkSt="";
+
+ if ( ! defined($ENV{'CWS_WORK_STAMP'}))
+ {
+ my $currPath= cwd;
+
+ chdir($ENV{'SOLARENV'});
+
+ my @info = `svn info`;
+
+ foreach(@info)
+ {
+ if ( /URL:.*/ )
+ {
+ # URL: svn+ssh://svn@svn.services.openoffice.org/ooo/cws/qadev37/solenv
+ $_ = ~ /.*svn.services.openoffice.org(.*\/(.*))\/\w*/;
+ $cwsWorkSt=$2; #qadev37
+ }
+ }
+
+ }
+ else
+ {
+ $cwsWorkSt = $ENV{'CWS_WORK_STAMP'};
+ }
+ return $cwsWorkSt
+}