From c491cdc80632273e6e479a0df55ddc135b64bc6a Mon Sep 17 00:00:00 2001 From: hasufell Date: Mon, 24 Nov 2014 22:30:05 +0100 Subject: [PATCH] spidermonkey: import with icu option We need to disable it in upcoming 0ad package. --- metadata/categories.conf | 1 + .../files/spidermonkey-24-system-icu.patch | 203 ++++++++++++++++++ .../spidermonkey-24.2.0.exheres-0 | 58 +++++ .../dev-libs/spidermonkey/spidermonkey.exlib | 14 ++ 4 files changed, 276 insertions(+) create mode 100644 packages/dev-libs/spidermonkey/files/spidermonkey-24-system-icu.patch create mode 100644 packages/dev-libs/spidermonkey/spidermonkey-24.2.0.exheres-0 create mode 100644 packages/dev-libs/spidermonkey/spidermonkey.exlib diff --git a/metadata/categories.conf b/metadata/categories.conf index 3a549c7f..06b093d7 100644 --- a/metadata/categories.conf +++ b/metadata/categories.conf @@ -1,5 +1,6 @@ app-virtualization dev-lang +dev-libs dev-util sci-mathematics x11-apps diff --git a/packages/dev-libs/spidermonkey/files/spidermonkey-24-system-icu.patch b/packages/dev-libs/spidermonkey/files/spidermonkey-24-system-icu.patch new file mode 100644 index 00000000..7330a4df --- /dev/null +++ b/packages/dev-libs/spidermonkey/files/spidermonkey-24-system-icu.patch @@ -0,0 +1,203 @@ +Source: http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-lang/spidermonkey/files/spidermonkey-24-system-icu.patch?revision=1.1 +Upstream: Unknown +Reason: Use the system installed icu library instead of building and linking the bundled one + +diff --git a/js/src/Makefile.in b/js/src/Makefile.in +index 4944d31..4176e14 100644 +--- a/js/src/Makefile.in ++++ b/js/src/Makefile.in +@@ -237,12 +237,17 @@ endif + # ICU headers need to be available whether we build with the complete + # Internationalization API or not - ICU stubs rely on them. + ++ifdef MOZ_NATIVE_ICU ++LOCAL_INCLUDES += $(MOZ_ICU_CFLAGS) ++else + LOCAL_INCLUDES += \ + -I$(topsrcdir)/../../intl/icu/source/common \ + -I$(topsrcdir)/../../intl/icu/source/i18n \ + $(NULL) ++endif + + ifdef ENABLE_INTL_API ++ifndef MOZ_NATIVE_ICU + + ifeq ($(OS_ARCH),WINNT) + # Parallel gmake is buggy on Windows +@@ -271,6 +276,7 @@ distclean clean:: + $(call SUBMAKE,$@,intl/icu) + + endif ++endif + + # + # END ECMAScript Internationalization API +@@ -403,7 +409,11 @@ ifneq (,$(MOZ_ZLIB_LIBS)$(MOZ_GLUE_LDFLAGS)) + DEFINES += -DUSE_ZLIB + endif + +-SHARED_LIBRARY_LIBS += $(ICU_LIBS) ++ifdef MOZ_NATIVE_ICU ++EXTRA_DSO_LDOPTS += $(MOZ_ICU_LIBS) ++else ++SHARED_LIBRARY_LIBS += $(MOZ_ICU_LIBS) ++endif + + # Prevent floating point errors caused by VC++ optimizations + ifdef _MSC_VER +diff --git a/js/src/config/Makefile.in b/js/src/config/Makefile.in +index 5f60d15..e1fe1f8 100644 +--- a/js/src/config/Makefile.in ++++ b/js/src/config/Makefile.in +@@ -59,6 +59,7 @@ export:: \ + $(call mkdir_deps,system_wrappers_js) \ + $(NULL) + $(PYTHON) $(srcdir)/Preprocessor.py $(DEFINES) $(ACDEFINES) \ ++ -DMOZ_NATIVE_ICU=$(MOZ_NATIVE_ICU) \ + $(srcdir)/system-headers | $(PERL) $(srcdir)/make-system-wrappers.pl system_wrappers_js + $(INSTALL) system_wrappers_js $(DIST) + +diff --git a/js/src/config/system-headers b/js/src/config/system-headers +index b52aed6..1ca7420 100644 +--- a/js/src/config/system-headers ++++ b/js/src/config/system-headers +@@ -1132,3 +1132,14 @@ kvm.h + spawn.h + err.h + xlocale.h ++#if MOZ_NATIVE_ICU==1 ++unicode/locid.h ++unicode/numsys.h ++unicode/ucal.h ++unicode/ucol.h ++unicode/udat.h ++unicode/udatpg.h ++unicode/uenum.h ++unicode/unum.h ++unicode/ustring.h ++#endif +diff --git a/js/src/configure.in b/js/src/configure.in +index 4bccbe3..d535491 100644 +--- a/js/src/configure.in ++++ b/js/src/configure.in +@@ -4409,6 +4409,16 @@ fi + dnl ======================================================== + dnl ECMAScript Internationalization API Support (uses ICU) + dnl ======================================================== ++ICU_LIB_NAMES= ++MOZ_NATIVE_ICU= ++MOZ_ARG_WITH_BOOL(system-icu, ++[ --with-system-icu ++ Use system icu (located with pkgconfig)], ++ MOZ_NATIVE_ICU=1) ++ ++if test -n "$MOZ_NATIVE_ICU"; then ++ PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 50.1) ++fi + + if test -n "$JS_STANDALONE"; then + ENABLE_INTL_API=1 +@@ -4421,37 +4431,34 @@ MOZ_ARG_ENABLE_BOOL(intl-api, + dnl Settings for the implementation of the ECMAScript Internationalization API + if test -n "$ENABLE_INTL_API"; then + AC_DEFINE(ENABLE_INTL_API) +- # We build ICU as a static library. +- AC_DEFINE(U_STATIC_IMPLEMENTATION) +- +- case "$OS_TARGET" in +- WINNT) +- ICU_LIB_NAMES="icuin icuuc icudt" +- ;; +- Darwin|Linux) +- ICU_LIB_NAMES="icui18n icuuc icudata" +- ;; +- *) +- AC_MSG_ERROR([ECMAScript Internationalization API is not yet supported on this platform]) +- esac +- +- ICU_LIBS='$(call EXPAND_LIBNAME_PATH,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/lib)' +-else +- ICU_LIB_NAMES= +- ICU_LIBS= ++ if test -z "$MOZ_NATIVE_ICU"; then ++ case "$OS_TARGET" in ++ WINNT) ++ ICU_LIB_NAMES="icuin icuuc icudt" ++ ;; ++ Darwin|Linux|DragonFly|FreeBSD|NetBSD|OpenBSD) ++ ICU_LIB_NAMES="icui18n icuuc icudata" ++ ;; ++ *) ++ AC_MSG_ERROR([ECMAScript Internationalization API is not yet supported on this platform]) ++ esac ++ MOZ_ICU_LIBS='$(call EXPAND_LIBNAME_PATH,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/lib)' ++ fi + fi + + AC_SUBST(ENABLE_INTL_API) + AC_SUBST(ICU_LIB_NAMES) +-AC_SUBST(ICU_LIBS) +- +-dnl Source files that use ICU should have control over which parts of the ICU +-dnl namespace they want to use. +-AC_DEFINE(U_USING_ICU_NAMESPACE,0) +- ++AC_SUBST(MOZ_ICU_LIBS) ++AC_SUBST(MOZ_NATIVE_ICU) + + dnl Settings for ICU +-if test -n "$ENABLE_INTL_API" ; then ++if test -n "$ENABLE_INTL_API" -a -z "$MOZ_NATIVE_ICU"; then ++ dnl We build ICU as a static library. ++ AC_DEFINE(U_STATIC_IMPLEMENTATION) ++ ++ dnl Source files that use ICU should have control over which parts of the ICU ++ dnl namespace they want to use. ++ AC_DEFINE(U_USING_ICU_NAMESPACE,0) + # Set ICU compile options + ICU_CPPFLAGS="" + # don't use icu namespace automatically in client code +diff --git a/js/src/gdb/Makefile.in b/js/src/gdb/Makefile.in +index 288934a..a582dfe 100644 +--- a/js/src/gdb/Makefile.in ++++ b/js/src/gdb/Makefile.in +@@ -19,6 +19,10 @@ LIBS = $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_SUFFIX) $(NSPR_LIBS) $(MOZ_ZLIB_LIB + + LOCAL_INCLUDES += -I$(topsrcdir) -I.. + ++ifdef MOZ_NATIVE_ICU ++EXTRA_LIBS += $(MOZ_ICU_LIBS) ++endif ++ + EXTRA_LIBS += $(MOZ_FFI_LIBS) + + # Place a GDB Python auto-load file next to the gdb-tests executable, both +diff --git a/js/src/jsapi-tests/Makefile.in b/js/src/jsapi-tests/Makefile.in +index 5f7d594..10d7054 100644 +--- a/js/src/jsapi-tests/Makefile.in ++++ b/js/src/jsapi-tests/Makefile.in +@@ -20,6 +20,10 @@ LIBS = $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_SUFFIX) $(NSPR_LIBS) $(MOZ_ZLI + + LOCAL_INCLUDES += -I$(topsrcdir) -I.. + ++ifdef MOZ_NATIVE_ICU ++EXTRA_LIBS += $(MOZ_ICU_LIBS) ++endif ++ + EXTRA_LIBS += $(MOZ_FFI_LIBS) + + ifdef QEMU_EXE +diff --git a/js/src/shell/Makefile.in b/js/src/shell/Makefile.in +index 2e1df09..db66c69 100644 +--- a/js/src/shell/Makefile.in ++++ b/js/src/shell/Makefile.in +@@ -27,6 +27,9 @@ LIBS = $(NSPR_LIBS) $(EDITLINE_LIBS) $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_ + ifdef MOZ_NATIVE_FFI + EXTRA_LIBS += $(MOZ_FFI_LIBS) + endif ++ifdef MOZ_NATIVE_ICU ++EXTRA_LIBS += $(MOZ_ICU_LIBS) ++endif + + LOCAL_INCLUDES += -I$(topsrcdir) -I.. + diff --git a/packages/dev-libs/spidermonkey/spidermonkey-24.2.0.exheres-0 b/packages/dev-libs/spidermonkey/spidermonkey-24.2.0.exheres-0 new file mode 100644 index 00000000..f155c96a --- /dev/null +++ b/packages/dev-libs/spidermonkey/spidermonkey-24.2.0.exheres-0 @@ -0,0 +1,58 @@ +# Copyright 2009 Richard Brown +# Copyright 2011 Mike Kazantsev +# Copyright 2012 Wouter van Kesteren +# Copyright 2013 Saleem Abdulrasool +# Distributed under the terms of the GNU General Public License v2 + +require autotools [ supported_autoconf=[ 2.1 ] supported_automake=[ 1.13 ] ] +require spidermonkey python + +DOWNLOADS="http://ftp.mozilla.org/pub/mozilla.org/js/mozjs-${PV}.tar.bz2" + +LICENCES="|| ( MPL-1.1 MPL-2.0 GPL-2 GPL-3 LGPL-2.1 LGPL-3 )" +SLOT="24.0" +PLATFORMS="~amd64 ~x86" +MYOPTIONS="icu" + +DEPENDENCIES=" + build: + app-arch/zip + dev-lang/perl:*[>=5.6] + dev-lang/python:*[>=2.7] + virtual/pkg-config + build+run: + dev-libs/icu[>=50.1.2][multibuild_c:*(-)?] + dev-libs/libffi[>=3.0.9][multibuild_c:*(-)?] + dev-libs/nspr[>=4.9.2][multibuild_c:*(-)?] + sys-libs/readline[multibuild_c:*(-)?] +" + +WORK=${WORKBASE}/mozjs-${PV}/js/src + +DEFAULT_SRC_PREPARE_PATCHES=( -p3 "${FILES}"/${PN}-24-system-icu.patch ) +DEFAULT_SRC_CONFIGURE_PARAMS=( + --hates=docdir + --enable-jemalloc + --enable-readline + --enable-system-ffi + --enable-threadsafe + --enable-ui-locale=en_US + --disable-static + --with-system-icu + --with-system-nspr +) + +DEFAULT_SRC_CONFIGURE_OPTION_ENABLES=( + 'icu intl-api' +) + +# spidermonkey build system requires that SHELL is always set. +# It's missing sometimes in chroot environments, so force it here. +export SHELL=/bin/sh + +test_one_multibuild() { + esandbox allow_net "unix:${TEMP%/}/pymp-*/listener-*" + default + esandbox disallow_net "unix:${TEMP%/}/pymp-*/listener-*" +} + diff --git a/packages/dev-libs/spidermonkey/spidermonkey.exlib b/packages/dev-libs/spidermonkey/spidermonkey.exlib new file mode 100644 index 00000000..888a3da9 --- /dev/null +++ b/packages/dev-libs/spidermonkey/spidermonkey.exlib @@ -0,0 +1,14 @@ +# Copyright 2013 Saleem Abdulrasool +# Distributed under the terms of the GNU General Public License v2 + +require easy-multibuild + +SUMMARY="Mozilla's C implementation of JavaScript" +HOMEPAGE="http://www.mozilla.org/js/spidermonkey/" + +MYOPTIONS="multibuild_c: 32 64" + +BUGS_TO="mk.fraggod@gmail.com" + +UPSTREAM_RELEASE_NOTES="https://developer.mozilla.org/en-US/docs/SpiderMonkey/$(ever major) [[ lang = en ]]" +