qt5/qt5jsbackend: new package
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sun, 7 Apr 2013 09:57:22 +0000 (09:57 +0000)
committerPeter Korsgaard <jacmet@sunsite.dk>
Thu, 11 Apr 2013 15:02:58 +0000 (17:02 +0200)
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
package/qt5/Config.in
package/qt5/qt5jsbackend/Config.in [new file with mode: 0644]
package/qt5/qt5jsbackend/qt5jsbackend-dont-import-bz2-python-module.patch [new file with mode: 0644]
package/qt5/qt5jsbackend/qt5jsbackend-fix-uclibc.patch [new file with mode: 0644]
package/qt5/qt5jsbackend/qt5jsbackend.mk [new file with mode: 0644]

index 84efa89cadecd4a7827c04b2fa7195670f958e90..e149706c8aec1a5b7d3e5bb7bfae4dc3dcf9c08c 100644 (file)
@@ -17,6 +17,7 @@ menuconfig BR2_PACKAGE_QT5
 if BR2_PACKAGE_QT5
 source "package/qt5/qt5base/Config.in"
 source "package/qt5/qt5imageformats/Config.in"
+source "package/qt5/qt5jsbackend/Config.in"
 source "package/qt5/qt5script/Config.in"
 source "package/qt5/qt5svg/Config.in"
 source "package/qt5/qt5xmlpatterns/Config.in"
diff --git a/package/qt5/qt5jsbackend/Config.in b/package/qt5/qt5jsbackend/Config.in
new file mode 100644 (file)
index 0000000..89d5067
--- /dev/null
@@ -0,0 +1,10 @@
+config BR2_PACKAGE_QT5JSBACKEND
+       bool "qt5jsbackend"
+       select BR2_PACKAGE_QT5BASE
+       help
+         Qt is a cross-platform application and UI framework for
+         developers using C++.
+
+         This package corresponds to the qt5jsbackend module.
+
+         http://qt-project.org
diff --git a/package/qt5/qt5jsbackend/qt5jsbackend-dont-import-bz2-python-module.patch b/package/qt5/qt5jsbackend/qt5jsbackend-dont-import-bz2-python-module.patch
new file mode 100644 (file)
index 0000000..08f343e
--- /dev/null
@@ -0,0 +1,29 @@
+Only import bz2 python module when needed
+
+The js2c.py script imports the bz2 module unconditionnally, which
+would require us to build the bzip2 support in host-python. Since in
+fact bzip2 support is not technically used when building this package,
+we ensure that the bz2 module is only imported when needed.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+Index: b/src/3rdparty/v8/tools/js2c.py
+===================================================================
+--- a/src/3rdparty/v8/tools/js2c.py
++++ b/src/3rdparty/v8/tools/js2c.py
+@@ -33,7 +33,6 @@
+ import os, re, sys, string
+ import jsmin
+-import bz2
+ def ToCAsciiArray(lines):
+@@ -344,6 +343,7 @@
+   else:
+     raw_sources_declaration = RAW_SOURCES_COMPRESSION_DECLARATION
+     if env['COMPRESSION'] == 'bz2':
++      import bz2
+       all_sources = bz2.compress("".join(all_sources))
+     total_length = len(all_sources)
+     sources_data = ToCArray(all_sources)
diff --git a/package/qt5/qt5jsbackend/qt5jsbackend-fix-uclibc.patch b/package/qt5/qt5jsbackend/qt5jsbackend-fix-uclibc.patch
new file mode 100644 (file)
index 0000000..50a6dbc
--- /dev/null
@@ -0,0 +1,33 @@
+Fix build on uClibc
+
+Patch taken from https://code.google.com/p/v8/source/detail?r=12094.
+
+Review URL: https://chromiumcodereview.appspot.com/10784012
+Patch from Remi Duraffort <remi.duraffort@st.com>.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+Index: qt5jsbackend-5.0.0/src/3rdparty/v8/src/platform-linux.cc
+===================================================================
+--- qt5jsbackend-5.0.0.orig/src/3rdparty/v8/src/platform-linux.cc      2012-12-18 20:04:01.000000000 +0100
++++ qt5jsbackend-5.0.0/src/3rdparty/v8/src/platform-linux.cc   2013-03-03 20:31:46.000000000 +0100
+@@ -1030,7 +1030,8 @@
+   sample->fp = reinterpret_cast<Address>(mcontext.gregs[REG_RBP]);
+ #elif V8_HOST_ARCH_ARM
+ // An undefined macro evaluates to 0, so this applies to Android's Bionic also.
+-#if (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 3))
++#if (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 3) && \
++     !defined(__UCLIBC__))
+   sample->pc = reinterpret_cast<Address>(mcontext.gregs[R15]);
+   sample->sp = reinterpret_cast<Address>(mcontext.gregs[R13]);
+   sample->fp = reinterpret_cast<Address>(mcontext.gregs[R11]);
+@@ -1038,7 +1039,8 @@
+   sample->pc = reinterpret_cast<Address>(mcontext.arm_pc);
+   sample->sp = reinterpret_cast<Address>(mcontext.arm_sp);
+   sample->fp = reinterpret_cast<Address>(mcontext.arm_fp);
+-#endif  // (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 3))
++#endif  // (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 3) &&
++        // !defined(__UCLIBC__))
+ #elif V8_HOST_ARCH_MIPS
+   sample->pc = reinterpret_cast<Address>(mcontext.pc);
+   sample->sp = reinterpret_cast<Address>(mcontext.gregs[29]);
diff --git a/package/qt5/qt5jsbackend/qt5jsbackend.mk b/package/qt5/qt5jsbackend/qt5jsbackend.mk
new file mode 100644 (file)
index 0000000..bc6a53a
--- /dev/null
@@ -0,0 +1,43 @@
+#############################################################
+#
+# qt5jsbackend
+#
+#############################################################
+
+QT5JSBACKEND_VERSION = $(QT5_VERSION)
+QT5JSBACKEND_SITE = http://releases.qt-project.org/qt5/$(QT5JSBACKEND_VERSION)/submodules_tar/
+QT5JSBACKEND_SOURCE = qtjsbackend-opensource-src-$(QT5JSBACKEND_VERSION).tar.xz
+QT5JSBACKEND_DEPENDENCIES = qt5base
+QT5JSBACKEND_INSTALL_STAGING = YES
+
+ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
+QT5JSBACKEND_CONFIGURE_OPTS += -opensource -confirm-license
+QT5JSBACKEND_LICENSE = LGPLv2.1 or GPLv3.0
+# Here we would like to get license files from qt5base, but qt5base
+# may not be extracted at the time we get the legal-info for
+# qt5script.
+else
+QT5JSBACKEND_LICENSE = Commercial license
+QT5JSBACKEND_REDISTRIBUTE = NO
+endif
+
+define QT5JSBACKEND_CONFIGURE_CMDS
+       (cd $(@D); $(HOST_DIR)/usr/bin/qmake)
+endef
+
+define QT5JSBACKEND_BUILD_CMDS
+       $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
+endef
+
+define QT5JSBACKEND_INSTALL_STAGING_CMDS
+       $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
+       $(QT5_LA_PRL_FILES_FIXUP)
+endef
+
+ifeq ($(BR2_PREFER_STATIC_LIB),)
+define QT5JSBACKEND_INSTALL_TARGET_CMDS
+       cp -dpf $(STAGING_DIR)/usr/lib/libQt5V8*.so.* $(TARGET_DIR)/usr/lib
+endef
+endif
+
+$(eval $(generic-package))