From 618641268d4137bd66db26ab47f6ffa79e709979 Mon Sep 17 00:00:00 2001 From: Ian Stakenvicius Date: Tue, 28 Feb 2017 12:37:44 -0500 Subject: dev-lang/spidermonkey:{38,45} ebuild improvements and bugfixes Upstream stripped out most slotting and also was installing headers as symlinks. This has been addressed in :38 through patches from GNOME. Redundant and unused eclasses were removed, which should help address bug 611232. spidermonkey-45 still installs headers as symlinks, and I have ben unable to figure out where in the python buildsystem code this is being triggered to reverse it back to a copy; the ebuild is now p.masked because of that. Package-Manager: portage-2.3.3 --- .../spidermonkey/files/mozjs38-copy-headers.patch | 20 ++++++++++++++++ .../files/mozjs38-pkg-config-version.patch | 22 +++++++++++++++++ .../spidermonkey/spidermonkey-38.2.1_rc0.ebuild | 26 ++++++++++---------- dev-lang/spidermonkey/spidermonkey-45.0.2.ebuild | 28 +++++++++++----------- profiles/package.mask | 5 ++++ 5 files changed, 74 insertions(+), 27 deletions(-) create mode 100644 dev-lang/spidermonkey/files/mozjs38-copy-headers.patch create mode 100644 dev-lang/spidermonkey/files/mozjs38-pkg-config-version.patch diff --git a/dev-lang/spidermonkey/files/mozjs38-copy-headers.patch b/dev-lang/spidermonkey/files/mozjs38-copy-headers.patch new file mode 100644 index 000000000000..7f352a795c8d --- /dev/null +++ b/dev-lang/spidermonkey/files/mozjs38-copy-headers.patch @@ -0,0 +1,20 @@ +Description: Copy headers on install instead of symlinking +Author: Rico Tzschichholz +Forwarded: no +Last-Update: 2014-10-29 + +--- + +Index: b/python/mozbuild/mozbuild/backend/recursivemake.py +=================================================================== +--- a/python/mozbuild/mozbuild/backend/recursivemake.py ++++ b/python/mozbuild/mozbuild/backend/recursivemake.py +@@ -796,7 +796,7 @@ + return + + for source, dest, _ in self._walk_hierarchy(obj, exports): +- self._install_manifests['dist_include'].add_symlink(source, dest) ++ self._install_manifests['dist_include'].add_copy(source, dest) + + if not os.path.exists(source): + raise Exception('File listed in EXPORTS does not exist: %s' % source) diff --git a/dev-lang/spidermonkey/files/mozjs38-pkg-config-version.patch b/dev-lang/spidermonkey/files/mozjs38-pkg-config-version.patch new file mode 100644 index 000000000000..34a43d1f6df8 --- /dev/null +++ b/dev-lang/spidermonkey/files/mozjs38-pkg-config-version.patch @@ -0,0 +1,22 @@ +Add major version to pkg-config filename. +Author: Rico Tzschichholz +Forwarded: no +Last-Update: 2015-05-04 + +Index: b/js/src/Makefile.in +=================================================================== +--- a/js/src/Makefile.in ++++ b/js/src/Makefile.in +@@ -214,10 +214,10 @@ + $(JS_CONFIG_NAME): js-config + cp $^ $@ + +-$(LIBRARY_NAME).pc: js.pc ++$(JS_LIBRARY_NAME).pc: js.pc + cp $^ $@ + +-install:: $(LIBRARY_NAME).pc ++install:: $(JS_LIBRARY_NAME).pc + $(SYSINSTALL) $^ $(DESTDIR)$(libdir)/pkgconfig + + install:: js-config.h diff --git a/dev-lang/spidermonkey/spidermonkey-38.2.1_rc0.ebuild b/dev-lang/spidermonkey/spidermonkey-38.2.1_rc0.ebuild index 5da1b11af428..ad154d68f81a 100644 --- a/dev-lang/spidermonkey/spidermonkey-38.2.1_rc0.ebuild +++ b/dev-lang/spidermonkey/spidermonkey-38.2.1_rc0.ebuild @@ -4,9 +4,7 @@ EAPI=6 WANT_AUTOCONF="2.1" -PYTHON_COMPAT=( python2_7 ) -PYTHON_REQ_USE="threads" -inherit autotools toolchain-funcs multilib python-any-r1 versionator pax-utils mozcoreconf-v4 +inherit autotools toolchain-funcs pax-utils mozcoreconf-v4 MY_PN="mozjs" MY_P="${MY_PN}-${PV/_/.}" @@ -22,7 +20,7 @@ IUSE="debug +jit minimal static-libs +system-icu test" RESTRICT="ia64? ( test )" #S="${WORKDIR}/${MY_P%.rc*}" -S="${WORKDIR}/mozjs-38.0.0" +S="${WORKDIR}/${MY_PN}-${SLOT}.0.0" BUILDDIR="${S}/js/src" RDEPEND=">=dev-libs/nspr-4.10.10 @@ -30,10 +28,7 @@ RDEPEND=">=dev-libs/nspr-4.10.10 sys-libs/readline:0= >=sys-libs/zlib-1.2.3 system-icu? ( >=dev-libs/icu-51.1:= )" -DEPEND="${RDEPEND} - ${PYTHON_DEPS} - app-arch/zip - virtual/pkgconfig" +DEPEND="${RDEPEND}" pkg_setup(){ if [[ ${MERGE_TYPE} != "binary" ]]; then @@ -44,7 +39,9 @@ pkg_setup(){ src_prepare() { eapply "${FILESDIR}"/${PN}-38-jsapi-tests.patch \ "${FILESDIR}"/mozjs38-1269317.patch \ - "${FILESDIR}"/mozjs38-fix-tracelogger.patch + "${FILESDIR}"/mozjs38-fix-tracelogger.patch \ + "${FILESDIR}"/mozjs38-copy-headers.patch \ + "${FILESDIR}"/mozjs38-pkg-config-version.patch eapply_user @@ -58,7 +55,8 @@ src_prepare() { } src_configure() { - export SHELL=/bin/sh + export SHELL="${SHELL:-${EPREFIX%/}/bin/bash}" + cd "${BUILDDIR}" || die econf \ @@ -113,7 +111,7 @@ src_compile() { host_jsoplengen.o || die fi - MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX%/}/bin/bash}" \ + MOZ_MAKE_FLAGS="${MAKEOPTS}" emake \ MOZ_OPTIMIZE_FLAGS="" MOZ_DEBUG_FLAGS="" \ HOST_OPTIMIZE_FLAGS="" MODULE_OPTIMIZE_FLAGS="" \ @@ -129,12 +127,14 @@ src_install() { cd "${BUILDDIR}" || die emake DESTDIR="${D}" install + mv "${ED}"usr/bin/js-config{,${SLOT}} || die + mv "${ED}"usr/bin/js{,${SLOT}} || die if ! use minimal; then if use jit; then - pax-mark m "${ED}/usr/bin/js${SLOT}" + pax-mark m "${ED}"usr/bin/js${SLOT} fi else - rm -f "${ED}/usr/bin/js${SLOT}" + rm -f "${ED}"/usr/bin/js${SLOT} fi if ! use static-libs; then diff --git a/dev-lang/spidermonkey/spidermonkey-45.0.2.ebuild b/dev-lang/spidermonkey/spidermonkey-45.0.2.ebuild index faaa6575705a..5eb8463c609c 100644 --- a/dev-lang/spidermonkey/spidermonkey-45.0.2.ebuild +++ b/dev-lang/spidermonkey/spidermonkey-45.0.2.ebuild @@ -4,9 +4,7 @@ EAPI=6 WANT_AUTOCONF="2.1" -PYTHON_COMPAT=( python2_7 ) -PYTHON_REQ_USE="threads" -inherit autotools toolchain-funcs multilib python-any-r1 versionator pax-utils mozcoreconf-v4 +inherit autotools toolchain-funcs pax-utils mozcoreconf-v4 MY_PN="mozjs" MY_P="${MY_PN}-${PV/_/.}" @@ -22,7 +20,6 @@ IUSE="debug +jit minimal static-libs +system-icu test" RESTRICT="ia64? ( test )" S="${WORKDIR}/${MY_P%.rc*}" -#S="${WORKDIR}/mozjs-38.0.0" BUILDDIR="${S}/js/src" RDEPEND=">=dev-libs/nspr-4.10.10 @@ -30,10 +27,7 @@ RDEPEND=">=dev-libs/nspr-4.10.10 sys-libs/readline:0= >=sys-libs/zlib-1.2.3 system-icu? ( >=dev-libs/icu-51.1:= )" -DEPEND="${RDEPEND} - ${PYTHON_DEPS} - app-arch/zip - virtual/pkgconfig" +DEPEND="${RDEPEND}" pkg_setup(){ if [[ ${MERGE_TYPE} != "binary" ]]; then @@ -42,8 +36,11 @@ pkg_setup(){ } src_prepare() { - eapply "${FILESDIR}"/${PN}-38-jsapi-tests.patch - eapply "${FILESDIR}"/mozjs45-1266366.patch + eapply "${FILESDIR}"/${PN}-38-jsapi-tests.patch \ + "${FILESDIR}"/mozjs45-1266366.patch \ + "${FILESDIR}"/mozjs38-pkg-config-version.patch + + # apply relevant (modified) patches from gentoo's firefox-45 patchset eapply "${FILESDIR}"/ff45 eapply_user @@ -58,7 +55,7 @@ src_prepare() { } src_configure() { - export SHELL=/bin/sh + export SHELL="${SHELL:-${EPREFIX%/}/bin/bash}" cd "${BUILDDIR}" || die econf \ @@ -113,7 +110,7 @@ src_compile() { host_jsoplengen.o || die fi - MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX%/}/bin/bash}" \ + MOZ_MAKE_FLAGS="${MAKEOPTS}" \ emake \ MOZ_OPTIMIZE_FLAGS="" MOZ_DEBUG_FLAGS="" \ HOST_OPTIMIZE_FLAGS="" MODULE_OPTIMIZE_FLAGS="" \ @@ -129,12 +126,15 @@ src_install() { cd "${BUILDDIR}" || die emake DESTDIR="${D}" install + # re-slot due to upstream stripping out most of the slotting + mv "${ED}"usr/bin/js-config{,${SLOT}} || die + mv "${ED}"usr/bin/js{,${SLOT}} || die if ! use minimal; then if use jit; then - pax-mark m "${ED}/usr/bin/js${SLOT}" + pax-mark m "${ED}"usr/bin/js${SLOT} fi else - rm -f "${ED}/usr/bin/js${SLOT}" + rm -f "${ED}"usr/bin/js${SLOT} fi if ! use static-libs; then diff --git a/profiles/package.mask b/profiles/package.mask index de5db9debb5a..7189e77509f8 100644 --- a/profiles/package.mask +++ b/profiles/package.mask @@ -30,6 +30,11 @@ #--- END OF EXAMPLES --- +# Ian Stakenvicius (28 Feb 2017) +# Installs symlinks to ${S} instead of copies of files, +# will unmask once fixed +dev-lang/spidermonkey:45 + # Matt Turner (26 Feb 2017) # Integrated into xorg-server since 1.17. Removal in 30 days. # Bug #611058 -- cgit v1.2.3-65-gdbad