[JHBuild] Do not try to update the dependencies if jhbuild configuration hasn't changed
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 30 Oct 2015 08:48:08 +0000 (08:48 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 30 Oct 2015 08:48:08 +0000 (08:48 +0000)
https://bugs.webkit.org/show_bug.cgi?id=150665

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2015-10-30
Reviewed by Csaba Osztrogon√°c.

We check it only to wipe the directory or not, but we are still
tryihng to update every module even when the configuration hasn't
changed. This is problematic because it makes the whole build fail
when any repository fails to checkout an already checked out
revision, because the server is down for example. This is even
more problematic for the bots that skip perfectly valid revisions.
It's still possible to force an update passing --force command
line argument.

* Scripts/update-webkit-libs-jhbuild:
(deleteJhbuildMd5): Delete the md5sum files if exist.
(runJhbuild): Return early if the md5sum files haven't
changed. Only write them after a successful build and delete them
if the build fails to ensure we don't skip next run.

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

Tools/ChangeLog
Tools/Scripts/update-webkit-libs-jhbuild

index 97652ef..2bc7acf 100644 (file)
@@ -1,3 +1,25 @@
+2015-10-30  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [JHBuild] Do not try to update the dependencies if jhbuild configuration hasn't changed
+        https://bugs.webkit.org/show_bug.cgi?id=150665
+
+        Reviewed by Csaba Osztrogon√°c.
+
+        We check it only to wipe the directory or not, but we are still
+        tryihng to update every module even when the configuration hasn't
+        changed. This is problematic because it makes the whole build fail
+        when any repository fails to checkout an already checked out
+        revision, because the server is down for example. This is even
+        more problematic for the bots that skip perfectly valid revisions.
+        It's still possible to force an update passing --force command
+        line argument.
+
+        * Scripts/update-webkit-libs-jhbuild:
+        (deleteJhbuildMd5): Delete the md5sum files if exist.
+        (runJhbuild): Return early if the md5sum files haven't
+        changed. Only write them after a successful build and delete them
+        if the build fails to ensure we don't skip next run.
+
 2015-10-30  Philippe Normand  <pnormand@igalia.com>
 
         [GTK] Fix MacCLang build errors in Tools
index 361b8ea..7b58bb6 100755 (executable)
@@ -25,13 +25,18 @@ use Getopt::Long qw(:config pass_through);
 my $platform = "";
 $platform = "efl" if isEfl();
 $platform = "gtk" if isGtk();
-my $wipeOnChange = $ENV{JHBUILD_WIPE_ON_CHANGE} // 1;
 
 if (!$platform) {
     die "No platform specified for " . basename($0) .". Use --gtk or --efl.\n";
 }
 
-GetOptions('wipe-on-change!' => \$wipeOnChange,);
+my $wipeOnChange = $ENV{JHBUILD_WIPE_ON_CHANGE} // 1;
+my $force = 0;
+
+GetOptions(
+    'wipe-on-change!' => \$wipeOnChange,
+    'force' => \$force
+);
 
 sub getMD5HashForFile($)
 {
@@ -85,12 +90,23 @@ sub saveJhbuildMd5() {
     }
 }
 
+sub deleteJhbuildMd5() {
+    my $jhbuildPath = getJhbuildPath();
+    if (!-d $jhbuildPath) {
+        return;
+    }
+    foreach my $file (qw(jhbuildrc jhbuild.modules)) {
+        my $md5File = join('/', $jhbuildPath, $file) . ".md5sum";
+        unlink($md5File) if -e $md5File;
+    }
+}
+
 sub runJhbuild
 {
     my $command = shift;
     my @jhbuildArgs = ("./jhbuild-wrapper", "--".$platform, $command);
     push(@jhbuildArgs, @ARGV[0..$#ARGV]);
-    system(@jhbuildArgs) == 0 or die "Running jhbuild-wrapper " . $command . " failed.\n";
+    return system(@jhbuildArgs);
 }
 
 sub cleanJhbuild()
@@ -114,11 +130,19 @@ chdir(relativeScriptsDir() . "/../jhbuild") or die $!;
 
 my %prettyPlatform = ( "efl" => "EFL", "gtk" => "GTK+" );
 
-if ($wipeOnChange && -e getJhbuildPath() && jhbuildConfigurationChanged()) {
-    cleanJhbuild();
+if (!$force && !jhbuildConfigurationChanged()) {
+    print $prettyPlatform{$platform} . " port dependencies are already up to date\n";
+    exit 0;
 }
 
-saveJhbuildMd5();
+if ($wipeOnChange && -e getJhbuildPath()) {
+    cleanJhbuild();
+}
 
 print "Updating " . $prettyPlatform{$platform} . " port dependencies using jhbuild...\n";
-runJhbuild("build");
+if (runJhbuild("build") == 0) {
+    saveJhbuildMd5();
+} else {
+    deleteJhbuildMd5();
+    die "Failed to build " . $prettyPlatform{$platform} . " port dependencies with jhbuild\n";
+}