: eval 'exec perl -wS $0 ${1+"$@"}' if 0; #************************************************************** # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the 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 }