[GTK] Create a wrapper script that knows how to install jhbuild and run commands...
authormrobinson@webkit.org <mrobinson@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 2 Dec 2011 17:44:05 +0000 (17:44 +0000)
committermrobinson@webkit.org <mrobinson@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 2 Dec 2011 17:44:05 +0000 (17:44 +0000)
https://bugs.webkit.org/show_bug.cgi?id=73669

Reviewed by Gustavo Noronha Silva.

Add a wrapper script that knows how to install jhbuild and also to wrap commands
in the jhbuild shell.

* Scripts/webkitdirs.pm:
(runAutogenForAutotoolsProject): Use the new wrapper script.
(mustReRunAutogen): Ditto.
(buildAutotoolsProject): Ditto.
* Scripts/webkitpy/layout_tests/port/gtk.py:
(GtkDriver.cmd_line): Ditto.
* gtk/run-with-jhbuild: Added.

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

Tools/ChangeLog
Tools/Scripts/webkitdirs.pm
Tools/Scripts/webkitpy/layout_tests/port/gtk.py
Tools/gtk/run-with-jhbuild [new file with mode: 0755]

index da664b6..4fdd860 100644 (file)
@@ -1,3 +1,21 @@
+2011-12-02  Martin Robinson  <mrobinson@igalia.com>
+
+        [GTK] Create a wrapper script that knows how to install jhbuild and run commands with it
+        https://bugs.webkit.org/show_bug.cgi?id=73669
+
+        Reviewed by Gustavo Noronha Silva.
+
+        Add a wrapper script that knows how to install jhbuild and also to wrap commands
+        in the jhbuild shell.
+
+        * Scripts/webkitdirs.pm:
+        (runAutogenForAutotoolsProject): Use the new wrapper script.
+        (mustReRunAutogen): Ditto.
+        (buildAutotoolsProject): Ditto.
+        * Scripts/webkitpy/layout_tests/port/gtk.py:
+        (GtkDriver.cmd_line): Ditto.
+        * gtk/run-with-jhbuild: Added.
+
 2011-12-01  Adam Roben  <aroben@apple.com>
 
         Teach check-webkit-style how to check the syntax of JSON files
index 1482f52..7e7c7b2 100755 (executable)
@@ -84,7 +84,6 @@ my $generateDsym;
 my $isQt;
 my $qmakebin = "qmake"; # Allow override of the qmake binary from $PATH
 my $isGtk;
-my @jhbuildArgs;
 my $isWinCE;
 my $isWinCairo;
 my $isWx;
@@ -1610,8 +1609,7 @@ sub runAutogenForAutotoolsProject($@)
 
     # Prefix the command with jhbuild run.
     unshift(@buildArgs, "$relSourceDir/autogen.sh");
-    unshift(@buildArgs, @jhbuildArgs);
-
+    unshift(@buildArgs, "$sourceDir/Tools/gtk/run-with-jhbuild");
     if (system(@buildArgs) ne 0) {
         die "Calling autogen.sh failed!\n";
     }
@@ -1621,8 +1619,6 @@ sub mustReRunAutogen($@)
 {
     my ($sourceDir, $filename, @currentArguments) = @_;
 
-    @jhbuildArgs = ("jhbuild", "-f", "$sourceDir/Tools/gtk/jhbuildrc", "run");
-
     if (! -e $filename) {
         return 1;
     }
@@ -1738,8 +1734,9 @@ sub buildAutotoolsProject($@)
         runAutogenForAutotoolsProject($dir, $prefix, $sourceDir, $buildingWebKit, $autogenArgumentsFile, @buildArgs);
     }
 
-    my $jhbuild = join(' ', @jhbuildArgs);
-    if (system("$jhbuild $make $makeArgs") ne 0) {
+    my $gtkScriptsPath = "$sourceDir/Tools/gtk";
+    my $runWithJhbuild = "$gtkScriptsPath/run-with-jhbuild";
+    if (system("$runWithJhbuild $make $makeArgs") ne 0) {
         die "\nFailed to build WebKit using '$make'!\n";
     }
 
@@ -1747,7 +1744,7 @@ sub buildAutotoolsProject($@)
 
     if ($buildingWebKit) {
         my $relativeScriptsPath = relativeScriptsDir();
-        if (system("$jhbuild $relativeScriptsPath/../gtk/generate-gtkdoc --skip-html")) {
+        if (system("$runWithJhbuild $gtkScriptsPath/generate-gtkdoc --skip-html")) {
             die "\n gtkdoc did not build without warnings\n";
         }
     }
index 3b72a2f..a3c5556 100644 (file)
@@ -69,8 +69,8 @@ class GtkDriver(WebKitDriver):
             self._xvfb_process = None
 
     def cmd_line(self):
-        config_path = self._port.path_from_webkit_base("Tools", "gtk", "jhbuildrc")
-        return ["jhbuild", "-f", config_path, "run"] + WebKitDriver.cmd_line(self)
+        wrapper_path = self._port.path_from_webkit_base("Tools", "gtk", "run-with-jhbuild")
+        return [wrapper_path] + WebKitDriver.cmd_line(self)
 
 
 class GtkPort(WebKitPort):
diff --git a/Tools/gtk/run-with-jhbuild b/Tools/gtk/run-with-jhbuild
new file mode 100755 (executable)
index 0000000..bf0fb80
--- /dev/null
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+# Copyright (C) 2011 Igalia S.L.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library 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 for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+import common
+import os
+import subprocess
+import sys
+
+def install_and_run_jhbuild():
+    installation_prefix = os.path.abspath(common.top_level_path('WebKitBuild', 'Dependencies', 'Root'))
+    source_path = os.path.abspath(common.top_level_path('WebKitBuild', 'Dependencies', 'Source'))
+    jhbuild_source_path = os.path.join(source_path, 'jhbuild')
+
+    if not os.path.exists(source_path):
+        os.makedirs(source_path)
+    if not os.path.exists(installation_prefix):
+        os.makedirs(installation_prefix)
+
+    if not os.path.exists(jhbuild_source_path):
+        process = subprocess.Popen(['git', 'clone', 'git://git.gnome.org/jhbuild'], cwd=source_path)
+        process.wait()
+        if process.returncode != 0:
+            raise Exception('jhbuild git clone failed with return code: %i' % process.returncode)
+
+    process = subprocess.Popen(['./autogen.sh', '--prefix=%s' % installation_prefix], cwd=jhbuild_source_path)
+    process.wait()
+    if process.returncode != 0:
+        raise Exception('jhbuild configure failed with return code: %i' % process.returncode)
+
+    process = subprocess.Popen(['make', 'install'], cwd=jhbuild_source_path)
+    process.wait()
+    if process.returncode != 0:
+        raise Exception('jhbuild configure failed with return code: %i' % process.returncode)
+
+    process = subprocess.Popen(common.top_level_path('Tools', 'Scripts', 'update-webkitgtk-libs'))
+    process.wait()
+    if process.returncode != 0:
+        raise Exception('jhbuild configure failed with return code: %i' % process.returncode)
+
+jhbuild_path = common.top_level_path('WebKitBuild', 'Dependencies', 'Root', 'bin', 'jhbuild')
+if not os.path.exists(jhbuild_path):
+    install_and_run_jhbuild()
+
+process = subprocess.Popen([jhbuild_path, '-f', common.top_level_path('Tools', 'gtk', 'jhbuildrc'), 'run'] + sys.argv[1:])
+process.wait()
+sys.exit(process.returncode)
+
+
+