[Qt] Fix determination of changed files from SVN revisions
authorhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 16 Oct 2012 14:09:36 +0000 (14:09 +0000)
committerhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 16 Oct 2012 14:09:36 +0000 (14:09 +0000)
Reviewed by Csaba Osztrogonác.

isSVN() doesn't work from within the build directory, so change to the source directory before
doing any VCS operations.

* Scripts/VCSUtils.pm:
* Scripts/webkitdirs.pm:
(buildQMakeProjects):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@131450 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/Scripts/VCSUtils.pm
Tools/Scripts/webkitdirs.pm

index f3063b2..033ea3f 100644 (file)
@@ -1,5 +1,18 @@
 2012-10-16  Simon Hausmann  <simon.hausmann@digia.com>
 
+        [Qt] Fix determination of changed files from SVN revisions
+
+        Reviewed by Csaba Osztrogonác.
+
+        isSVN() doesn't work from within the build directory, so change to the source directory before
+        doing any VCS operations.
+
+        * Scripts/VCSUtils.pm:
+        * Scripts/webkitdirs.pm:
+        (buildQMakeProjects):
+
+2012-10-16  Simon Hausmann  <simon.hausmann@digia.com>
+
         Fix build-webkit bailing out of !isSVN() and !isGit()
 
         Reviewed by Tor Arne Vestbø.
index 384ed0e..b3b8ec2 100644 (file)
@@ -2107,25 +2107,37 @@ sub gitCommitForSVNRevision
 
 sub listOfChangedFilesBetweenRevisions
 {
-    my ($firstRevision, $lastRevision) = @_;
+    my ($sourceDir, $firstRevision, $lastRevision) = @_;
     my $command;
 
     if ($firstRevision eq "unknown" or $lastRevision eq "unknown") {
         return ();
     }
 
+    # Some VCS functions don't work from within the build dir, so always
+    # go to the source dir first.
+    my $cwd = Cwd::getcwd();
+    chdir $sourceDir;
+
     if (isGit()) {
         my $firstCommit = gitCommitForSVNRevision($firstRevision);
         my $lastCommit = gitCommitForSVNRevision($lastRevision);
         $command = "git diff --name-status $firstCommit..$lastCommit";
     } elsif (isSVN()) {
         $command = "svn diff --summarize -r $firstRevision:$lastRevision";
-    } else {
-        return ();
     }
-    my $diffOutput = `$command`;
-    $diffOutput =~ s/^[A-Z]\s+//gm;
-    return split(/[\r\n]+/, $diffOutput)
+
+    my @result = ();
+
+    if ($command) {
+        my $diffOutput = `$command`;
+        $diffOutput =~ s/^[A-Z]\s+//gm;
+        @result = split(/[\r\n]+/, $diffOutput);
+    }
+
+    chdir $cwd;
+
+    return @result;
 }
 
 
index 4f60e29..4dbe064 100755 (executable)
@@ -2326,7 +2326,7 @@ sub buildQMakeProjects
             ", now at revision $svnRevision. Full incremental build needed.\n";
         $needsIncrementalBuild = 1;
 
-        my @fileList = listOfChangedFilesBetweenRevisions($previousSvnRevision, $svnRevision);
+        my @fileList = listOfChangedFilesBetweenRevisions(sourceDir(), $previousSvnRevision, $svnRevision);
 
         foreach (@fileList) {
             if (m/\.pr[oif]$/ or