From f0bb8e49ed600232c74916f7c4ee56e25c285694 Mon Sep 17 00:00:00 2001 From: Koop Mast Date: Sun, 20 May 2018 21:30:35 +0000 Subject: [PATCH] Add spidermonkey52 52.8.0. Spidermonkey is Mozilla's JS engine. This version is based on Firefox ESR 52. There is no standalone release for so build it out of the ESR distfile. Obtained from: gnome devel repo --- lang/Makefile | 1 + lang/spidermonkey52/Makefile | 91 ++++++++++ lang/spidermonkey52/distinfo | 3 + lang/spidermonkey52/files/patch-1426865 | 23 +++ .../files/patch-disable-mozglue | 62 +++++++ lang/spidermonkey52/pkg-descr | 3 + lang/spidermonkey52/pkg-plist | 161 ++++++++++++++++++ 7 files changed, 344 insertions(+) create mode 100644 lang/spidermonkey52/Makefile create mode 100644 lang/spidermonkey52/distinfo create mode 100644 lang/spidermonkey52/files/patch-1426865 create mode 100644 lang/spidermonkey52/files/patch-disable-mozglue create mode 100644 lang/spidermonkey52/pkg-descr create mode 100644 lang/spidermonkey52/pkg-plist diff --git a/lang/Makefile b/lang/Makefile index 2a8eca36cb31..81144022febf 100644 --- a/lang/Makefile +++ b/lang/Makefile @@ -344,6 +344,7 @@ SUBDIR += spidermonkey185 SUBDIR += spidermonkey24 SUBDIR += spidermonkey38 + SUBDIR += spidermonkey52 SUBDIR += spl SUBDIR += squeak SUBDIR += squirrel diff --git a/lang/spidermonkey52/Makefile b/lang/spidermonkey52/Makefile new file mode 100644 index 000000000000..3c54d780e2ce --- /dev/null +++ b/lang/spidermonkey52/Makefile @@ -0,0 +1,91 @@ +# Created by: Kubilay Kocak +# $FreeBSD$ + +PORTNAME= spidermonkey +PORTVERSION= 52.8.0 +PORTREVISION= 0 +CATEGORIES= lang +MASTER_SITES= MOZILLA/firefox/releases/${PORTVERSION}esr/source +DISTNAME= firefox-${PORTVERSION}esr.source +PKGNAMESUFFIX= ${SP_VER} + +MAINTAINER= kwm@FreeBSD.org +COMMENT= Standalone JavaScript based from Mozilla 52-esr + +BUILD_DEPENDS= autoconf-2.13:devel/autoconf213 +LIB_DEPENDS= libnspr4.so:devel/nspr \ + libffi.so:devel/libffi \ + libicudata.so:devel/icu + +HAS_CONFIGURE= yes +USES= compiler:c++14-lang gmake localbase pathfix pkgconfig \ + python:2.7,build tar:xz +# python:2.7,build readline tar:xz +USE_LDCONFIG= yes +SP_VER= 52 + +WRKSRC= ${WRKDIR}/firefox-${PORTVERSION}esr/js/src +PATCH_WRKSRC= ${WRKDIR}/firefox-${PORTVERSION}esr/ + +CONFIGURE_ARGS= --with-pthreads \ + --target=${CONFIGURE_TARGET} \ + --with-intl-api \ + --with-system-zlib \ + --disable-gold \ + --with-system-icu \ + --with-system-nspr + +OPTIONS_DEFINE= DEBUG GCZEAL JEMALLOC OPTIMIZE READLINE UTF8 DTRACE +OPTIONS_DEFAULT=METHODJIT OPTIMIZE READLINE +OPTIONS_SUB= yes + +DEBUG_CONFIGURE_ENABLE= debug debug-symbols +DEBUG_CONFIGURE_DISABLE=debug + +DTRACE_CONFIGURE_ENABLE=dtrace profiling +DTRACE_LIBS= -lelf + +GCZEAL_DESC= Enable Zealous garbage collecting +GCZEAL_CONFIGURE_ENABLE=gczeal + +JEMALLOC_DESC= Use jemalloc as memory allocator +JEMALLOC_CONFIGURE_ENABLE= jemalloc + +OPTIMIZE_DESC= Enable compiler optimizations +OPTIMIZE_CONFIGURE_ENABLE= optimize + +READLINE_DESC= Link js shell to the readline library +READLINE_USES= readline +READLINE_CONFIGURE_ENABLE= readline + +UTF8_DESC= Treat strings as UTF8 instead of ISO-8859-1 +UTF8_CFLAGS= -DJS_C_STRINGS_ARE_UTF8 + +.include + +.if ${ARCH} == amd64 +CONFIGURE_TARGET=x86_64-portbld-freebsd${OSREL} +.endif + +post-patch: +# Skip some tests because bundled icu differs from system + @${RM} ${WRKSRC}/tests/test262/intl402/ch10/10.2/10.2.3_b.js \ + ${WRKSRC}/tests/Intl/DateTimeFormat/format.js \ + ${WRKSRC}/tests/ecma_6/String/normalize-generateddata-part1-not-listed.js +pre-configure: + cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf-2.13 + +regression-test: build + @${ECHO_MSG} -n "===> Running jstests.py: " + @cd ${WRKSRC} && ${SETENV} TZ=PST8PDT ${PYTHON_CMD} tests/jstests.py \ + -d -s --no-progress ./js/src/shell/js + +post-install: + ${RM} ${STAGEDIR}${PREFIX}/lib/libjs_static.ajs + ${LN} -fs libmozjs-${SP_VER}.so ${STAGEDIR}${PREFIX}/lib/libmozjs-${SP_VER}.so.1 +.if ! ${PORT_OPTIONS:MDTRACE} + @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/js${SP_VER} + @${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libmozjs-${SP_VER}.* +.endif + +.include diff --git a/lang/spidermonkey52/distinfo b/lang/spidermonkey52/distinfo new file mode 100644 index 000000000000..f142a960ed93 --- /dev/null +++ b/lang/spidermonkey52/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1525963979 +SHA256 (firefox-52.8.0esr.source.tar.xz) = babed4fe0ae95783e39358aedf7111b20fd9442f73b3b41b025fa4951fe76287 +SIZE (firefox-52.8.0esr.source.tar.xz) = 214054520 diff --git a/lang/spidermonkey52/files/patch-1426865 b/lang/spidermonkey52/files/patch-1426865 new file mode 100644 index 000000000000..7b922ff70fca --- /dev/null +++ b/lang/spidermonkey52/files/patch-1426865 @@ -0,0 +1,23 @@ +Proposed workaround/fix for: +https://bugzilla.mozilla.org/show_bug.cgi?id=1426865 + +diff --git a/js/public/TypeDecls.h b/js/public/TypeDecls.h +index acb93f9..cbd4b04 100644 +--- js/public/TypeDecls.h ++++ js/public/TypeDecls.h +@@ -22,6 +22,8 @@ + + #include "js-config.h" + ++#pragma GCC visibility push(default) ++ + struct JSContext; + class JSFunction; + class JSObject; +@@ -76,4 +78,6 @@ typedef PersistentRooted PersistentRootedValue; + + } // namespace JS + ++#pragma GCC visibility pop ++ + #endif /* js_TypeDecls_h */ diff --git a/lang/spidermonkey52/files/patch-disable-mozglue b/lang/spidermonkey52/files/patch-disable-mozglue new file mode 100644 index 000000000000..66a1d3fd8df6 --- /dev/null +++ b/lang/spidermonkey52/files/patch-disable-mozglue @@ -0,0 +1,62 @@ +From 1dd00ba521afd812ba42d94be8772603d3590b43 Mon Sep 17 00:00:00 2001 +From: Till Schneidereit +Date: Thu, 1 Oct 2015 12:59:09 +0200 +Subject: [PATCH] Disable MOZ_GLUE_IN_PROGRAM in stand-alone builds on all + platforms + +Otherwise, build fails not being able to find HashBytes. + +Patch ported forward to mozjs52 by Philip Chimento +. + +https://bugzilla.mozilla.org/show_bug.cgi?id=1176787 +--- + +diff --git a/js/src/old-configure.in b/js/src/old-configure.in +index 1c5c9e214..ff0617e31 100644 +--- js/src/old-configure.in ++++ js/src/old-configure.in +@@ -1623,16 +1623,21 @@ dnl ======================================================== + dnl = Enable jemalloc + dnl ======================================================== + +-case "${OS_TARGET}" in +-Android|WINNT|Darwin) ++dnl In stand-alone builds we always only want to link executables against mozglue. ++if test "$JS_STANDALONE"; then + MOZ_GLUE_IN_PROGRAM= +- ;; +-*) +- dnl On !Android !Windows !OSX, we only want to link executables against mozglue +- MOZ_GLUE_IN_PROGRAM=1 +- AC_DEFINE(MOZ_GLUE_IN_PROGRAM) +- ;; +-esac ++else ++ case "${OS_TARGET}" in ++ Android|WINNT|Darwin) ++ MOZ_GLUE_IN_PROGRAM= ++ ;; ++ *) ++ dnl On !Android !Windows !OSX, we only want to link executables against mozglue ++ MOZ_GLUE_IN_PROGRAM=1 ++ AC_DEFINE(MOZ_GLUE_IN_PROGRAM) ++ ;; ++ esac ++fi + + if test "$MOZ_MEMORY"; then + if test "x$MOZ_DEBUG" = "x1"; then +diff --git a/mozglue/build/moz.build b/mozglue/build/moz.build +index d28974778..e3be5a2b9 100644 +--- mozglue/build/moz.build ++++ mozglue/build/moz.build +@@ -6,7 +6,7 @@ + + # Build mozglue as a shared lib on Windows, OSX and Android. + # If this is ever changed, update MOZ_SHARED_MOZGLUE in browser/installer/Makefile.in +-if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android'): ++if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android') and not CONFIG['JS_STANDALONE']: + SharedLibrary('mozglue') + else: + Library('mozglue') diff --git a/lang/spidermonkey52/pkg-descr b/lang/spidermonkey52/pkg-descr new file mode 100644 index 000000000000..2db0b2ca559f --- /dev/null +++ b/lang/spidermonkey52/pkg-descr @@ -0,0 +1,3 @@ +Spidermonkey is the JavaScript interpreter from the Mozilla project. + +WWW: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey diff --git a/lang/spidermonkey52/pkg-plist b/lang/spidermonkey52/pkg-plist new file mode 100644 index 000000000000..322a6215686f --- /dev/null +++ b/lang/spidermonkey52/pkg-plist @@ -0,0 +1,161 @@ +bin/js52 +bin/js52-config +include/mozjs-52/fdlibm.h +%%JEMALLOC%%include/mozjs-52/jemalloc_types.h +include/mozjs-52/js-config.h +include/mozjs-52/js.msg +include/mozjs-52/js/CallArgs.h +include/mozjs-52/js/CallNonGenericMethod.h +include/mozjs-52/js/CharacterEncoding.h +include/mozjs-52/js/Class.h +include/mozjs-52/js/Conversions.h +include/mozjs-52/js/Date.h +include/mozjs-52/js/Debug.h +include/mozjs-52/js/GCAPI.h +include/mozjs-52/js/GCAnnotations.h +include/mozjs-52/js/GCHashTable.h +include/mozjs-52/js/GCPolicyAPI.h +include/mozjs-52/js/GCVariant.h +include/mozjs-52/js/GCVector.h +include/mozjs-52/js/HashTable.h +include/mozjs-52/js/HeapAPI.h +include/mozjs-52/js/Id.h +include/mozjs-52/js/Initialization.h +include/mozjs-52/js/LegacyIntTypes.h +include/mozjs-52/js/MemoryMetrics.h +include/mozjs-52/js/Principals.h +include/mozjs-52/js/ProfilingFrameIterator.h +include/mozjs-52/js/ProfilingStack.h +include/mozjs-52/js/Proxy.h +include/mozjs-52/js/Realm.h +include/mozjs-52/js/RequiredDefines.h +include/mozjs-52/js/RootingAPI.h +include/mozjs-52/js/SliceBudget.h +include/mozjs-52/js/StructuredClone.h +include/mozjs-52/js/SweepingAPI.h +include/mozjs-52/js/TraceKind.h +include/mozjs-52/js/TracingAPI.h +include/mozjs-52/js/TrackedOptimizationInfo.h +include/mozjs-52/js/TypeDecls.h +include/mozjs-52/js/UbiNode.h +include/mozjs-52/js/UbiNodeBreadthFirst.h +include/mozjs-52/js/UbiNodeCensus.h +include/mozjs-52/js/UbiNodeDominatorTree.h +include/mozjs-52/js/UbiNodePostOrder.h +include/mozjs-52/js/UbiNodeShortestPaths.h +include/mozjs-52/js/UniquePtr.h +include/mozjs-52/js/Utility.h +include/mozjs-52/js/Value.h +include/mozjs-52/js/Vector.h +include/mozjs-52/js/WeakMapPtr.h +include/mozjs-52/jsalloc.h +include/mozjs-52/jsapi.h +include/mozjs-52/jsbytecode.h +include/mozjs-52/jsclist.h +include/mozjs-52/jscpucfg.h +include/mozjs-52/jsfriendapi.h +include/mozjs-52/jsperf.h +include/mozjs-52/jsprf.h +include/mozjs-52/jsprototypes.h +include/mozjs-52/jspubtd.h +include/mozjs-52/jstypes.h +include/mozjs-52/jsversion.h +include/mozjs-52/jswrapper.h +include/mozjs-52/mozilla/Alignment.h +include/mozjs-52/mozilla/AllocPolicy.h +include/mozjs-52/mozilla/AlreadyAddRefed.h +include/mozjs-52/mozilla/Array.h +include/mozjs-52/mozilla/ArrayUtils.h +include/mozjs-52/mozilla/Assertions.h +include/mozjs-52/mozilla/Atomics.h +include/mozjs-52/mozilla/Attributes.h +include/mozjs-52/mozilla/BinarySearch.h +include/mozjs-52/mozilla/BloomFilter.h +include/mozjs-52/mozilla/BufferList.h +include/mozjs-52/mozilla/Casting.h +include/mozjs-52/mozilla/ChaosMode.h +include/mozjs-52/mozilla/Char16.h +include/mozjs-52/mozilla/CheckedInt.h +include/mozjs-52/mozilla/Compiler.h +include/mozjs-52/mozilla/Compression.h +include/mozjs-52/mozilla/DebugOnly.h +include/mozjs-52/mozilla/Decimal.h +include/mozjs-52/mozilla/EndianUtils.h +include/mozjs-52/mozilla/EnumSet.h +include/mozjs-52/mozilla/EnumTypeTraits.h +include/mozjs-52/mozilla/EnumeratedArray.h +include/mozjs-52/mozilla/EnumeratedRange.h +include/mozjs-52/mozilla/FastBernoulliTrial.h +include/mozjs-52/mozilla/FloatingPoint.h +include/mozjs-52/mozilla/Function.h +include/mozjs-52/mozilla/GuardObjects.h +include/mozjs-52/mozilla/HashFunctions.h +include/mozjs-52/mozilla/IndexSequence.h +include/mozjs-52/mozilla/IntegerPrintfMacros.h +include/mozjs-52/mozilla/IntegerRange.h +include/mozjs-52/mozilla/IntegerTypeTraits.h +include/mozjs-52/mozilla/JSONWriter.h +include/mozjs-52/mozilla/Likely.h +include/mozjs-52/mozilla/LinkedList.h +include/mozjs-52/mozilla/MacroArgs.h +include/mozjs-52/mozilla/MacroForEach.h +include/mozjs-52/mozilla/MathAlgorithms.h +include/mozjs-52/mozilla/Maybe.h +include/mozjs-52/mozilla/MaybeOneOf.h +include/mozjs-52/mozilla/MemoryChecking.h +include/mozjs-52/mozilla/MemoryReporting.h +include/mozjs-52/mozilla/Move.h +include/mozjs-52/mozilla/NotNull.h +include/mozjs-52/mozilla/NullPtr.h +include/mozjs-52/mozilla/Opaque.h +include/mozjs-52/mozilla/OperatorNewExtensions.h +include/mozjs-52/mozilla/Pair.h +include/mozjs-52/mozilla/PodOperations.h +include/mozjs-52/mozilla/Poison.h +include/mozjs-52/mozilla/Range.h +include/mozjs-52/mozilla/RangedArray.h +include/mozjs-52/mozilla/RangedPtr.h +include/mozjs-52/mozilla/ReentrancyGuard.h +include/mozjs-52/mozilla/RefCountType.h +include/mozjs-52/mozilla/RefCounted.h +include/mozjs-52/mozilla/RefPtr.h +include/mozjs-52/mozilla/ReverseIterator.h +include/mozjs-52/mozilla/RollingMean.h +include/mozjs-52/mozilla/SHA1.h +include/mozjs-52/mozilla/Saturate.h +include/mozjs-52/mozilla/ScopeExit.h +include/mozjs-52/mozilla/Scoped.h +include/mozjs-52/mozilla/SegmentedVector.h +include/mozjs-52/mozilla/SizePrintfMacros.h +include/mozjs-52/mozilla/SplayTree.h +include/mozjs-52/mozilla/Sprintf.h +include/mozjs-52/mozilla/StackWalk.h +include/mozjs-52/mozilla/StaticAnalysisFunctions.h +include/mozjs-52/mozilla/TaggedAnonymousMemory.h +include/mozjs-52/mozilla/TemplateLib.h +include/mozjs-52/mozilla/TextUtils.h +include/mozjs-52/mozilla/ThreadLocal.h +include/mozjs-52/mozilla/TimeStamp.h +include/mozjs-52/mozilla/ToString.h +include/mozjs-52/mozilla/Tuple.h +include/mozjs-52/mozilla/TypeTraits.h +include/mozjs-52/mozilla/TypedEnumBits.h +include/mozjs-52/mozilla/Types.h +include/mozjs-52/mozilla/UniquePtr.h +include/mozjs-52/mozilla/UniquePtrExtensions.h +include/mozjs-52/mozilla/Unused.h +include/mozjs-52/mozilla/Variant.h +include/mozjs-52/mozilla/Vector.h +include/mozjs-52/mozilla/WeakPtr.h +include/mozjs-52/mozilla/XorShift128PlusRNG.h +include/mozjs-52/mozilla/double-conversion.h +include/mozjs-52/mozilla/fallible.h +include/mozjs-52/mozilla/mozalloc.h +include/mozjs-52/mozilla/mozalloc_abort.h +include/mozjs-52/mozilla/mozalloc_oom.h +include/mozjs-52/mozilla/utils.h +%%JEMALLOC%%include/mozjs-52/mozmemory.h +%%JEMALLOC%%include/mozjs-52/mozmemory_wrap.h +lib/libmozjs-52.so +lib/libmozjs-52.so.1 +libdata/pkgconfig/mozjs-52.pc