[EFL] Add and use run-with-jhbuild and update-webkitefl-libs scripts for EFL
authorkubo@profusion.mobi <kubo@profusion.mobi@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 17 Mar 2012 07:30:12 +0000 (07:30 +0000)
committerkubo@profusion.mobi <kubo@profusion.mobi@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 17 Mar 2012 07:30:12 +0000 (07:30 +0000)
https://bugs.webkit.org/show_bug.cgi?id=79904

build-webkit --efl will use jhbuild for fetching and building dependencies.

Patch by Dominik Röttsches <dominik.rottsches@linux.intel.com> on 2012-03-17
Reviewed by Gustavo Noronha Silva.

* Scripts/update-webkitefl-libs: Added.
* Scripts/webkitdirs.pm:
(jhbuildWrapperPrefixIfNeeded):
(generateBuildSystemFromCMakeProject):
(buildCMakeGeneratedProject):
* efl/common.py: Added.
(script_path):
(top_level_path):
(number_of_cpus):
* efl/jhbuild.modules: Added.
* efl/jhbuildrc: Added.
* efl/run-with-jhbuild: Added.

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

Tools/ChangeLog
Tools/Scripts/update-webkitefl-libs [new file with mode: 0755]
Tools/Scripts/webkitdirs.pm
Tools/efl/common.py [new file with mode: 0644]
Tools/efl/jhbuild.modules [new file with mode: 0644]
Tools/efl/jhbuildrc [new file with mode: 0644]
Tools/efl/run-with-jhbuild [new file with mode: 0755]

index ce6de2ae88bf376c538406960e25c1fa18508318..36cfc5744e1a7937e785c26488ac196a6411c5d2 100644 (file)
@@ -1,3 +1,25 @@
+2012-03-17  Dominik Röttsches  <dominik.rottsches@linux.intel.com>
+
+        [EFL] Add and use run-with-jhbuild and update-webkitefl-libs scripts for EFL
+        https://bugs.webkit.org/show_bug.cgi?id=79904
+
+        build-webkit --efl will use jhbuild for fetching and building dependencies.
+
+        Reviewed by Gustavo Noronha Silva.
+
+        * Scripts/update-webkitefl-libs: Added.
+        * Scripts/webkitdirs.pm:
+        (jhbuildWrapperPrefixIfNeeded):
+        (generateBuildSystemFromCMakeProject):
+        (buildCMakeGeneratedProject):
+        * efl/common.py: Added.
+        (script_path):
+        (top_level_path):
+        (number_of_cpus):
+        * efl/jhbuild.modules: Added.
+        * efl/jhbuildrc: Added.
+        * efl/run-with-jhbuild: Added.
+
 2012-03-16  Stephanie Lewis  <slewis@apple.com>
 
         https://bugs.webkit.org/show_bug.cgi?id=81065
diff --git a/Tools/Scripts/update-webkitefl-libs b/Tools/Scripts/update-webkitefl-libs
new file mode 100755 (executable)
index 0000000..cbdb55c
--- /dev/null
@@ -0,0 +1,23 @@
+#!/usr/bin/perl -w
+# Copyright (C) 2012 Intel Corporation
+#
+# 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
+
+use FindBin;
+use lib $FindBin::Bin;
+use webkitdirs;
+
+my $scriptsDir = relativeScriptsDir();
+system("perl", "$scriptsDir/update-webkit-libs-jhbuild", "--efl", sys.argv) == 0 or die $!;
index 7a158e3f272dd213e759ecb48cf299c4a25e468c..e6968ab00dc391ced409f602814401f134ee61f8 100755 (executable)
@@ -1964,6 +1964,14 @@ sub buildAutotoolsProject($@)
     return 0;
 }
 
+sub jhbuildWrapperPrefixIfNeeded()
+{
+    if (isEfl()) {
+        return File::Spec->catfile(sourceDir(), "Tools", "efl", "run-with-jhbuild");
+    }
+    return "";
+}
+
 sub generateBuildSystemFromCMakeProject
 {
     my ($port, $prefixPath, @cmakeArgs, $additionalCMakeArgs) = @_;
@@ -1989,7 +1997,8 @@ sub generateBuildSystemFromCMakeProject
 
     # We call system("cmake @args") instead of system("cmake", @args) so that @args is
     # parsed for shell metacharacters.
-    my $returnCode = system("cmake @args");
+    my $wrapper = jhbuildWrapperPrefixIfNeeded() . " ";
+    my $returnCode = system($wrapper . "cmake @args");
 
     chdir($originalWorkingDirectory);
     return $returnCode;
@@ -2008,7 +2017,8 @@ sub buildCMakeGeneratedProject($)
 
     # We call system("cmake @args") instead of system("cmake", @args) so that @args is
     # parsed for shell metacharacters. In particular, $makeArgs may contain such metacharacters.
-    return system("cmake @args");
+    my $wrapper = jhbuildWrapperPrefixIfNeeded() . " ";
+    return system($wrapper . "cmake @args");
 }
 
 sub cleanCMakeGeneratedProject()
diff --git a/Tools/efl/common.py b/Tools/efl/common.py
new file mode 100644 (file)
index 0000000..4e23db3
--- /dev/null
@@ -0,0 +1,39 @@
+#!/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 os
+import subprocess
+import sys
+
+script_dir = None
+
+
+def script_path(*args):
+    global script_dir
+    if not script_dir:
+        script_dir = os.path.join(os.path.dirname(__file__), '..', 'Scripts')
+    return os.path.join(*(script_dir,) + args)
+
+
+def top_level_path(*args):
+    return os.path.join(*((script_path('..', '..'),) + args))
+
+
+def number_of_cpus():
+    process = subprocess.Popen([script_path('num-cpus')], stdout=subprocess.PIPE)
+    stdout = process.communicate()[0]
+    return int(stdout)
diff --git a/Tools/efl/jhbuild.modules b/Tools/efl/jhbuild.modules
new file mode 100644 (file)
index 0000000..c0a4eec
--- /dev/null
@@ -0,0 +1,208 @@
+<?xml version="1.0"?>
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+
+  <metamodule id="webkitefl-testing-dependencies">
+    <dependencies>
+      <dep package="cairo"/>
+      <dep package="fonts"/>
+      <dep package="fontconfig"/>
+      <dep package="freetype6"/>
+      <dep package="glib"/>
+      <dep package="glib-networking"/>
+      <dep package="libsoup"/>
+      <dep package="edje"/>
+    </dependencies>
+  </metamodule>
+
+  <repository type="tarball" name="github.com"
+      href="https://github.com"/>
+  <repository type="tarball" name="sourceware.org"
+      href="ftp://sourceware.org"/>
+  <repository type="tarball" name="gnupg.org"
+      href="ftp://ftp.gnupg.org"/>
+  <repository type="tarball" name="p11-glue.freedesktop.org"
+      href="http://p11-glue.freedesktop.org"/>
+  <repository type="tarball" name="ftp.gnome.org"
+      href="http://ftp.gnome.org"/>
+  <repository type="git" name="git.gnome.org"
+      href="git://git.gnome.org/"/>
+  <repository type="tarball" name="gnu.org"
+      href="http://ftp.gnu.org/"/>
+  <repository type="tarball" name="cairographics.org"
+      href="http://cairographics.org"/>
+  <repository type="tarball" name="freedesktop.org"
+      href="http://www.freedesktop.org"/>
+  <repository type="svn" name="enlightenment.org"
+      href="http://svn.enlightenment.org/svn/e/trunk/"
+      trunk-template="%(module)s/"/>
+
+  <autotools id="cairo" autogen-sh="configure">
+    <dependencies>
+      <dep package="pixman"/>
+    </dependencies>
+    <branch module="releases/cairo-1.10.2.tar.gz" version="1.10.2"
+            repo="cairographics.org"
+            hash="sha256:32018c7998358eebc2ad578ff8d8559d34fc80252095f110a572ed23d989fc41"
+            md5sum="f101a9e88b783337b20b2e26dfd26d5f">
+    </branch>
+  </autotools>
+
+  <autotools id="pixman" autogen-sh="configure">
+    <branch module="releases/pixman-0.24.0.tar.gz" version="0.24.0"
+            repo="cairographics.org"
+            hash="sha256:a5647c7158f103eedff5fba799018f4169f6b26b573ab7685812ebc9a1c5d2e4"
+            md5sum="a2d0b120509bdccb10aa7f4bec3730e4">
+    </branch>
+  </autotools>
+
+
+  <autotools id="fonts"
+             skip-autogen="true">
+    <branch module="downloads/mrobinson/webkitgtk-test-fonts/webkitgtk-test-fonts-0.0.1.tar.gz" version="0.0.1"
+            repo="github.com"
+            hash="sha256:df40960ec98bd23de2f6ea8f5135ffc9485929aeddb4f08be5144881a1fd3887"
+            md5sum="2c752a694f41f3ff7aed6e3015250f69" size="6635293">
+    </branch>
+  </autotools>
+
+  <autotools id="libffi" autogen-sh="configure">
+    <branch module="/pub/libffi/libffi-3.0.10.tar.gz" version="3.0.10"
+             repo="sourceware.org"
+             hash="sha256:f01eb9027e9eb56aeaeef636649877756d475d714ef8b47f627f65bc5f3b492f"
+             md5sum="79390673f5d07a8fb342bc09b5055b6f"/>
+  </autotools>
+
+  <tarball id="freetype6">
+    <source href="download.savannah.gnu.org/releases/freetype/freetype-2.4.2.tar.bz2" version="2.4.2"
+            hash="sha256:9a987aef8c50d9bcfdfdc9f012f8bd0de6095cc1a5524e62c1a037deb8dacbfe"
+            md5sum="647ee8ed266f9a4117c8d0a4855b3d3e"/>
+  </tarball>
+
+  <autotools id="p11-kit">
+    <branch module="/releases/p11-kit-0.12.tar.gz" version="0.12"
+             repo="p11-glue.freedesktop.org"
+             hash="sha256:4db792def545a3c8ae12e7e4ef166d7620cb445c00a5a984ab7c4a3b35f0be00"
+             md5sum="029aa2a3a103e7eb81b4aa731b93539e"/>
+  </autotools>
+
+  <autotools id="libgpg-error" autogen-sh="configure">
+    <branch module="/gcrypt/libgpg-error/libgpg-error-1.10.tar.bz2" version="1.10"
+             repo="gnupg.org"
+             hash="sha256:520629b4568b5c29b1991c8ffc267c8bdee5f223c7333c42a651b56f9b1c5431"
+             md5sum="736a03daa9dc5873047d4eb4a9c22a16"/>
+  </autotools>
+
+  <autotools id="libgcrypt" autogen-sh="./autogen.sh; configure">
+    <dependencies>
+      <dep package="libgpg-error"/>
+    </dependencies>
+    <branch module="/gcrypt/libgcrypt/libgcrypt-1.5.0.tar.bz2" version="1.5.0"
+             repo="gnupg.org"
+             hash="sha256:4b62fc516004940a0571025401a0581d49199f1a76dfb5ce6fd63f50db8173fa"
+             md5sum="693f9c64d50c908bc4d6e01da3ff76d8"/>
+  </autotools>
+
+  <autotools id="glib">
+    <dependencies>
+      <dep package="libffi"/>
+    </dependencies>
+    <branch module="/pub/GNOME/sources/glib/2.31/glib-2.31.2.tar.xz" version="2.31.2"
+            repo="ftp.gnome.org"
+            hash="sha256:19d7921671a487c3c5759a57df7b8508afdbadd7764d62a47a82fff7b399032b"
+            md5sum="1cbdf314d7c87916a0c3dce83ac0285f"/>
+  </autotools>
+
+  <autotools id="glib-networking">
+    <dependencies>
+      <dep package="gnutls"/>
+    </dependencies>
+    <branch module="/pub/GNOME/sources/glib-networking/2.31/glib-networking-2.31.2.tar.xz" version="2.31.2"
+            repo="ftp.gnome.org"
+            hash="sha256:03e3a2881d2626d1206e72972531661037fe0d32e745bf9b2f63c0d6f5e32a9c"
+            md5sum="b649b457bd9fd5e0e9b9c4dcb1a74a37"/>
+  </autotools>
+
+  <autotools id="gnutls"
+             autogenargs="--enable-ld-version-script --enable-cxx --without-lzo --with-libgcrypt">
+    <dependencies>
+      <dep package="libgcrypt"/>
+      <dep package="p11-kit"/>
+    </dependencies>
+    <branch module="/gnu/gnutls/gnutls-2.12.14.tar.bz2" version="2.12.14"
+            repo="gnu.org"
+            hash="sha256:5ee72ba6de7a23cf315792561954451e022dac8730149ca95f93c61e95be2ce3"
+            md5sum="555687a7ffefba0bd9de1e71cb61402c"/>
+  </autotools>
+
+  <autotools id="libsoup" autogenargs="--without-gnome">
+    <dependencies>
+      <dep package="glib-networking"/>
+    </dependencies>
+    <branch module="libsoup" version="2.37.2.1+git"
+            repo="git.gnome.org"
+            tag="5cbfc48caf76ced2e28ee06c9e40523273601dc6"/>
+  </autotools>
+
+  <autotools id="fontconfig" autogen-sh="configure">
+    <branch module="software/fontconfig/release/fontconfig-2.8.0.tar.gz" version="2.8.0"
+            repo="freedesktop.org"
+            hash="sha256:fa2a1c6eea654d9fce7a4b1220f10c99cdec848dccaf1625c01f076b31382335"
+            md5sum="77e15a92006ddc2adbb06f840d591c0e">
+    </branch>
+  </autotools>
+
+  <autotools id="eina" >
+    <branch module="eina"
+            repo="enlightenment.org"
+            revision="68629"/>
+  </autotools>
+
+  <autotools id="embryo">
+    <branch module="embryo"
+            repo="enlightenment.org"
+            revision="68629"/>
+    <dependencies>
+      <dep package="eina"/>
+    </dependencies>
+  </autotools>
+
+  <autotools id="evas">
+    <branch module="evas"
+            repo="enlightenment.org"
+            revision="68629"/>
+  </autotools>
+
+  <autotools id="ecore">
+    <branch module="ecore"
+            repo="enlightenment.org"
+            revision="68629"/>
+    <dependencies>
+      <dep package="eina"/>
+      <dep package="evas"/>
+    </dependencies>
+  </autotools>
+
+  <autotools id="eet">
+    <branch module="eet"
+            repo="enlightenment.org"
+            revision="68629"/>
+    <dependencies>
+      <dep package="eina"/>
+    </dependencies>
+  </autotools>
+
+  <autotools id="edje">
+    <branch module="edje"
+            repo="enlightenment.org"
+            revision="68629"/>
+    <dependencies>
+      <dep package="eet"/>
+      <dep package="ecore"/>
+      <dep package="evas"/>
+      <dep package="embryo"/>
+    </dependencies>
+  </autotools>
+
+</moduleset>
diff --git a/Tools/efl/jhbuildrc b/Tools/efl/jhbuildrc
new file mode 100644 (file)
index 0000000..d691f8c
--- /dev/null
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+# Copyright (C) 2011 Igalia S.L.
+# Copyright (C) 2012 Intel Corporation
+#
+# 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 sys
+
+__efl_tools_directory = os.path.abspath(os.path.dirname(__file__))
+sys.path.append(__efl_tools_directory)
+import common
+
+build_policy = 'updated'
+
+# FIXME: move shared parts into ../jhbuild folder.
+
+__moduleset_file_uri = 'file://' + os.path.join(__efl_tools_directory, 'jhbuild.modules')
+__extra_modulesets = os.environ.get("WEBKIT_EXTRA_MODULESETS", "").split(",")
+moduleset = [ __moduleset_file_uri, ]
+if __extra_modulesets != ['']:
+    moduleset.extend(__extra_modulesets)
+
+__extra_modules = os.environ.get("WEBKIT_EXTRA_MODULES", "").split(",")
+modules = [ 'webkitefl-testing-dependencies', ]
+if __extra_modules != ['']:
+    modules.extend(__extra_modules)
+
+checkoutroot = os.path.abspath(common.top_level_path('WebKitBuild','Dependencies', 'Source'))
+prefix = os.path.abspath(common.top_level_path('WebKitBuild','Dependencies', 'Root'))
+
+nonotify = True
+notrayicon = True
+if ('MAKEFLAGS' not in os.environ):
+    os.environ['MAKEFLAGS'] = '-j' + str(common.number_of_cpus())
+
+# Use system libraries while building.
+if use_lib64:
+    _libdir = 'lib64'
+else:
+    _libdir = 'lib'
+addpath('PKG_CONFIG_PATH', os.path.join(os.sep, 'usr', _libdir, 'pkgconfig'))
+addpath('PKG_CONFIG_PATH', os.path.join(os.sep, 'usr', 'share', 'pkgconfig'))
+
+partial_build = False
diff --git a/Tools/efl/run-with-jhbuild b/Tools/efl/run-with-jhbuild
new file mode 100755 (executable)
index 0000000..624191a
--- /dev/null
@@ -0,0 +1,26 @@
+#!/usr/bin/env python
+# Copyright (C) 2011 Igalia S.L.
+# Copyright (C) 2012 Intel Corporation
+#
+# 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 subprocess
+import sys
+
+jhbuild_wrapper = common.top_level_path('Tools', 'jhbuild', 'jhbuild-wrapper')
+process = subprocess.Popen([jhbuild_wrapper, '--efl'] + sys.argv[1:])
+process.wait()
+sys.exit(process.returncode)