commit:     8fb65064d8753d73a0d03fb1ab53ff38bf86349b
Author:     Ian Stakenvicius <axs <AT> gentoo <DOT> org>
AuthorDate: Tue Feb 28 19:48:25 2017 +0000
Commit:     Ian Stakenvicius <axs <AT> gentoo <DOT> org>
CommitDate: Tue Feb 28 20:41:58 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8fb65064

dev-lang/spidermonkey:45 - fix symlink installs via patch instead of sed

Found a patch to the build system which forces copies rather than symlinks
to all non-objfiles (meaning headers), to address the symlink installation
issue.  Also applied the sed patch for icu.m4 for esr45

Package-Manager: portage-2.3.3

 .../files/mozilla_configure_regexp_esr.patch       | 32 ++++++++++++++++++++++
 ...spidermonkey-45-dont-symlink-non-objfiles.patch | 21 ++++++++++++++
 dev-lang/spidermonkey/spidermonkey-45.0.2.ebuild   | 10 ++-----
 3 files changed, 56 insertions(+), 7 deletions(-)

diff --git a/dev-lang/spidermonkey/files/mozilla_configure_regexp_esr.patch 
b/dev-lang/spidermonkey/files/mozilla_configure_regexp_esr.patch
new file mode 100644
index 00000000000..9e165ff9e88
--- /dev/null
+++ b/dev-lang/spidermonkey/files/mozilla_configure_regexp_esr.patch
@@ -0,0 +1,32 @@
+From: Jory A. Pratt <anar...@gentoo.org>
+
+Note: the first occurrence of :space: is [:space:] (with a single pair
+of []), where it should be [[:space:]] (with two pairs of []).
+
+This causes the sed command to fail (with the error message quoted in
+my original report), driving to failure the whole configure step.
+
+https://bugzilla.mozilla.org/show_bug.cgi?id=1329252
+
+diff --git a/build/autoconf/icu.m4 b/build/autoconf/icu.m4
+--- a/build/autoconf/icu.m4
++++ b/build/autoconf/icu.m4
+@@ -68,17 +68,17 @@ if test -n "$USE_ICU"; then
+     icudir="$_topsrcdir/intl/icu/source"
+     if test ! -d "$icudir"; then
+         icudir="$_topsrcdir/../../intl/icu/source"
+         if test ! -d "$icudir"; then
+             AC_MSG_ERROR([Cannot find the ICU directory])
+         fi
+     fi
+ 
+-    version=`sed -n 
's/^[[:space:]]*#[[:space:]]*define[[:space:]][[:space:]]*U_ICU_VERSION_MAJOR_NUM[[:space:]][[:space:]]*\([0-9][0-9]*\)[[:space:]]*$/\1/p'
 "$icudir/common/unicode/uvernum.h"`
++    version=`sed -n 
's/^[[[:space:]]]*#[[:space:]]*define[[:space:]][[:space:]]*U_ICU_VERSION_MAJOR_NUM[[:space:]][[:space:]]*\([0-9][0-9]*\)[[:space:]]*$/\1/p'
 "$icudir/common/unicode/uvernum.h"`
+     if test x"$version" = x; then
+        AC_MSG_ERROR([cannot determine icu version number from uvernum.h 
header file $lineno])
+     fi
+     MOZ_ICU_VERSION="$version"
+ 
+     if test "$OS_TARGET" = WINNT; then
+         MOZ_SHARED_ICU=1
+     fi

diff --git 
a/dev-lang/spidermonkey/files/spidermonkey-45-dont-symlink-non-objfiles.patch 
b/dev-lang/spidermonkey/files/spidermonkey-45-dont-symlink-non-objfiles.patch
new file mode 100644
index 00000000000..061e8a572db
--- /dev/null
+++ 
b/dev-lang/spidermonkey/files/spidermonkey-45-dont-symlink-non-objfiles.patch
@@ -0,0 +1,21 @@
+--- a/python/mozbuild/mozbuild/backend/recursivemake.py        2016-04-14 
13:55:21.000000000 -0400
++++ b/python/mozbuild/mozbuild/backend/recursivemake.py        2017-02-28 
14:43:09.431448016 -0500
+@@ -1301,17 +1301,17 @@
+ 
+         for path, files in files.walk():
+             target_var = (mozpath.join(target, path)
+                           if path else target).replace('/', '_')
+             have_objdir_files = False
+             for f in files:
+                 if not isinstance(f, ObjDirPath):
+                     dest = mozpath.join(reltarget, path, mozpath.basename(f))
+-                    install_manifest.add_symlink(f.full_path, dest)
++                    install_manifest.add_copy(f.full_path, dest)
+                 else:
+                     backend_file.write('%s_FILES += %s\n' % (
+                         target_var, self._pretty_path(f, backend_file)))
+                     have_objdir_files = True
+             if have_objdir_files:
+                 backend_file.write('%s_DEST := $(DEPTH)/%s\n'
+                                    % (target_var,
+                                       mozpath.join(target, path)))

diff --git a/dev-lang/spidermonkey/spidermonkey-45.0.2.ebuild 
b/dev-lang/spidermonkey/spidermonkey-45.0.2.ebuild
index b697709ce00..addd5d92d01 100644
--- a/dev-lang/spidermonkey/spidermonkey-45.0.2.ebuild
+++ b/dev-lang/spidermonkey/spidermonkey-45.0.2.ebuild
@@ -37,7 +37,9 @@ pkg_setup(){
 src_prepare() {
        eapply "${FILESDIR}"/${PN}-38-jsapi-tests.patch \
                "${FILESDIR}"/mozjs45-1266366.patch \
-               "${FILESDIR}"/mozjs38-pkg-config-version.patch
+               "${FILESDIR}"/mozjs38-pkg-config-version.patch \
+               "${FILESDIR}"/mozilla_configure_regexp_esr.patch \
+               "${FILESDIR}"/${PN}-${SLOT}-dont-symlink-non-objfiles.patch
 
        # apply relevant (modified) patches from gentoo's firefox-45 patchset
        eapply "${FILESDIR}"/ff45
@@ -71,12 +73,6 @@ src_configure() {
                $(use_enable jit ion) \
                $(use_enable static-libs static) \
                $(use_enable test tests)
-
-       # An unfortunate hack to undo header install symlinking, but
-       # necessary until the function that generates this file can be
-       # determined and fixed
-       sed -i -e 's/^1/2/' \
-               "${BUILDDIR}"/_build_manifests/install/dist_include || die
 }
 
 cross_make() {

Reply via email to