commit:     3a69a64a2fa74c06c692cd6b3122903c42b9bcbf
Author:     Felix Janda <felix.janda <AT> posteo <DOT> de>
AuthorDate: Sun Aug  3 07:23:32 2014 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Fri Oct 10 18:20:21 2014 +0000
URL:        
http://sources.gentoo.org/gitweb/?p=proj/hardened-dev.git;a=commit;h=3a69a64a

dev-libs/nspr: musl does not have getprotobyname_r()

---
 .../files/nspr-4.10.6-no-getprotobyname_r.patch    |  11 ++
 dev-libs/nspr/files/nspr-4.10.6-solaris.patch      |  32 ++++++
 dev-libs/nspr/files/nspr-4.7.0-prtime.patch        |  26 +++++
 dev-libs/nspr/files/nspr-4.7.1-solaris.patch       |  14 +++
 .../files/nspr-4.8.4-darwin-install_name.patch     |  25 +++++
 dev-libs/nspr/files/nspr-4.8.9-link-flags.patch    |  28 ++++++
 dev-libs/nspr/files/nspr-4.9.5_nspr_config.patch   |  12 +++
 dev-libs/nspr/metadata.xml                         |   5 +
 dev-libs/nspr/nspr-4.10.6-r99.ebuild               | 112 +++++++++++++++++++++
 9 files changed, 265 insertions(+)

diff --git a/dev-libs/nspr/files/nspr-4.10.6-no-getprotobyname_r.patch 
b/dev-libs/nspr/files/nspr-4.10.6-no-getprotobyname_r.patch
new file mode 100644
index 0000000..40f38a5
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.10.6-no-getprotobyname_r.patch
@@ -0,0 +1,11 @@
+--- a/nspr-4.10.6/nspr/pr/src/misc/prnetdb.c   2014-06-05 23:42:08.000000000 
-0200
++++ b/nspr-4.10.6/nspr/pr/src/misc/prnetdb.c   2014-07-29 19:02:42.037638550 
-0200
+@@ -65,8 +65,6 @@
+       || (defined(LINUX) && defined(_REENTRANT) \
+         && !(defined(__GLIBC__) && __GLIBC__ >= 2) \
+         && !defined(ANDROID))
+-#define _PR_HAVE_GETPROTO_R
+-#define _PR_HAVE_GETPROTO_R_POINTER
+ #endif
+ 
+ #if defined(OSF1) \

diff --git a/dev-libs/nspr/files/nspr-4.10.6-solaris.patch 
b/dev-libs/nspr/files/nspr-4.10.6-solaris.patch
new file mode 100644
index 0000000..3ae8052
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.10.6-solaris.patch
@@ -0,0 +1,32 @@
+* drop Solaris linker stuff
+
+--- nspr-4.7.4/mozilla/nsprpub/configure.in
++++ nspr-4.7.4/mozilla/nsprpub/configure.in
+@@ -1988,26 +1988,14 @@
+     CPU_ARCH=`uname -p`
+     MDCPUCFG_H=_solaris.cfg
+     PR_MD_CSRCS=solaris.c
+-    LD=/usr/ccs/bin/ld
+     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
+     RESOLVE_LINK_SYMBOLS=1
+-    case "${OS_RELEASE}" in
+-    5.8|5.9)
+-        ;;
+-    *)
+-        # It is safe to use the -Bdirect linker flag on Solaris 10 or later.
+-        USE_B_DIRECT=1
+-        ;;
+-    esac
+     if test -n "$GNU_CC"; then
+         DSO_CFLAGS=-fPIC
+         if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
+             GCC_USE_GNU_LD=1
+         fi
+-        DSO_LDOPTS='-shared -Wl,-h,$(notdir 
$@),-z,combreloc,-z,defs,-z,ignore' 
+-        if test -n "$USE_B_DIRECT"; then
+-            DSO_LDOPTS="$DSO_LDOPTS,-Bdirect"
+-        fi
++              DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
+     else
+         DSO_CFLAGS=-KPIC
+         DSO_LDOPTS='-G -h $(notdir $@) -z combreloc -z defs -z ignore'

diff --git a/dev-libs/nspr/files/nspr-4.7.0-prtime.patch 
b/dev-libs/nspr/files/nspr-4.7.0-prtime.patch
new file mode 100644
index 0000000..ac509ef
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.7.0-prtime.patch
@@ -0,0 +1,26 @@
+--- mozilla/nsprpub/pr/src/misc/prtime.c.orig  2007-09-14 19:41:08.000000000 
+0200
++++ mozilla/nsprpub/pr/src/misc/prtime.c       2007-09-14 19:42:17.000000000 
+0200
+@@ -1536,7 +1536,7 @@
+                 case TT_EET: zone_offset =  2 * 60; break;
+                 case TT_JST: zone_offset =  9 * 60; break;
+                 default:
+-                  PR_ASSERT (0);
++                  return PR_FAILURE;
+                   break;
+                 }
+         }
+@@ -1578,11 +1578,12 @@
+           struct tm localTime;
+           time_t secs;
+ 
+-          PR_ASSERT(result->tm_month > -1 &&
++          if (!(result->tm_month > -1 &&
+                     result->tm_mday > 0 &&
+                     result->tm_hour > -1 &&
+                     result->tm_min > -1 &&
+-                    result->tm_sec > -1);
++                    result->tm_sec > -1))
++                  return PR_FAILURE;
+ 
+             /*
+              * To obtain time_t from a tm structure representing the local

diff --git a/dev-libs/nspr/files/nspr-4.7.1-solaris.patch 
b/dev-libs/nspr/files/nspr-4.7.1-solaris.patch
new file mode 100644
index 0000000..5d9e810
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.7.1-solaris.patch
@@ -0,0 +1,14 @@
+Same magic as haubi did for glib compilation, which works again here
+resolving a linker problem on Solaris with GNU ld.  Bug #222625
+
+--- mozilla/nsprpub/pr/src/Makefile.in.orig    2008-06-22 22:24:56.671065000 
+0200
++++ mozilla/nsprpub/pr/src/Makefile.in 2008-06-23 14:38:52.320417000 +0200
+@@ -95,7 +95,7 @@
+ endif
+ 
+ ifdef USE_PTHREADS
+-OS_LIBS                       = -lpthread ${LIBRT} -lsocket -lnsl -ldl -lc
++OS_LIBS                       = -pthread ${LIBRT} -lsocket -lnsl -ldl -lc
+ else
+ ifdef LOCAL_THREADS_ONLY
+ OS_LIBS                       = -lsocket -lnsl -ldl -lc

diff --git a/dev-libs/nspr/files/nspr-4.8.4-darwin-install_name.patch 
b/dev-libs/nspr/files/nspr-4.8.4-darwin-install_name.patch
new file mode 100644
index 0000000..1258b60
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.8.4-darwin-install_name.patch
@@ -0,0 +1,25 @@
+Don't use @executable_path, it messed up linking against nspr from e.g.
+nss.
+
+--- mozilla/nsprpub/configure.in
++++ mozilla/nsprpub/configure.in
+@@ -1007,7 +1007,7 @@
+             ;;
+     esac
+     DSO_CFLAGS=-fPIC
+-    DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 
-all_load -install_name @executable_path/$@ -headerpad_max_install_names'
++    DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 
-all_load -install_name $(libdir)/$@ -headerpad_max_install_names'
+     _OPTIMIZE_FLAGS=-O2
+     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
+     STRIP="$STRIP -x -S"
+--- mozilla/nsprpub/configure
++++ mozilla/nsprpub/configure
+@@ -1007,7 +1007,7 @@
+             ;;
+     esac
+     DSO_CFLAGS=-fPIC
+-    DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 
-all_load -install_name @executable_path/$@ -headerpad_max_install_names'
++    DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 
-all_load -install_name $(libdir)/$@ -headerpad_max_install_names'
+     _OPTIMIZE_FLAGS=-O2
+     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
+     STRIP="$STRIP -x -S"

diff --git a/dev-libs/nspr/files/nspr-4.8.9-link-flags.patch 
b/dev-libs/nspr/files/nspr-4.8.9-link-flags.patch
new file mode 100644
index 0000000..dd3b132
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.8.9-link-flags.patch
@@ -0,0 +1,28 @@
+Use CFLAGS when linking.  Some flags can add functionality to generated
+code that requires extra libs to be linked in (eg. libgomp when using
+autoparallelization).  Other flags are required when building and linking
+(eg. -flto).
+
+https://bugs.gentoo.org/365975
+
+--- a/mozilla/nsprpub/config/autoconf.mk.in
++++ b/mozilla/nsprpub/config/autoconf.mk.in
+@@ -81,6 +81,7 @@ OS_DLLFLAGS  = @OS_DLLFLAGS@
+ DLLFLAGS      = @DLLFLAGS@
+ EXEFLAGS  = @EXEFLAGS@
+ OPTIMIZER     = @OPTIMIZER@
++LD_CFLAGS   = @CFLAGS@
+ 
+ PROFILE_GEN_CFLAGS  = @PROFILE_GEN_CFLAGS@
+ PROFILE_GEN_LDFLAGS = @PROFILE_GEN_LDFLAGS@
+--- a/mozilla/nsprpub/config/config.mk
++++ b/mozilla/nsprpub/config/config.mk
+@@ -72,7 +72,7 @@ NOMD_CFLAGS  = $(CC_ONLY_FLAGS) $(OPTIMIZER) 
$(NOMD_OS_CFLAGS)\
+ NOMD_CCFLAGS  = $(CCC_ONLY_FLAGS) $(OPTIMIZER) $(NOMD_OS_CFLAGS)\
+                 $(XP_DEFINE) $(DEFINES) $(INCLUDES) $(XCFLAGS)
+ 
+-LDFLAGS               = $(OS_LDFLAGS)
++LDFLAGS               = $(LD_CFLAGS) $(OS_LDFLAGS)
+ 
+ # Enable profile-guided optimization
+ ifdef MOZ_PROFILE_GENERATE

diff --git a/dev-libs/nspr/files/nspr-4.9.5_nspr_config.patch 
b/dev-libs/nspr/files/nspr-4.9.5_nspr_config.patch
new file mode 100644
index 0000000..d4f9a7e
--- /dev/null
+++ b/dev-libs/nspr/files/nspr-4.9.5_nspr_config.patch
@@ -0,0 +1,12 @@
+diff -urN a/mozilla/nsprpub/config/nspr-config.in 
b/mozilla/nsprpub/config/nspr-config.in
+--- a/mozilla/nsprpub/config/nspr-config.in    2012-03-06 07:13:39.000000000 
-0600
++++ b/mozilla/nsprpub/config/nspr-config.in    2013-02-16 20:53:53.893489345 
-0600
+@@ -126,7 +126,7 @@
+ fi
+ 
+ if test "$echo_libs" = "yes"; then
+-      libdirs=-L$libdir
++      libdirs=""
+       if test -n "$lib_plds"; then
+       libdirs="$libdirs -lplds${major_version}"
+       fi

diff --git a/dev-libs/nspr/metadata.xml b/dev-libs/nspr/metadata.xml
new file mode 100644
index 0000000..74d9257
--- /dev/null
+++ b/dev-libs/nspr/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+<herd>mozilla</herd>
+</pkgmetadata>

diff --git a/dev-libs/nspr/nspr-4.10.6-r99.ebuild 
b/dev-libs/nspr/nspr-4.10.6-r99.ebuild
new file mode 100644
index 0000000..dd0fc83
--- /dev/null
+++ b/dev-libs/nspr/nspr-4.10.6-r99.ebuild
@@ -0,0 +1,112 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/nspr/nspr-4.10.6-r1.ebuild,v 1.4 
2014/06/19 03:15:41 tetromino Exp $
+
+EAPI=5
+WANT_AUTOCONF="2.5"
+
+inherit autotools eutils multilib toolchain-funcs versionator multilib-minimal
+
+MIN_PV="$(get_version_component_range 2)"
+
+DESCRIPTION="Netscape Portable Runtime"
+HOMEPAGE="http://www.mozilla.org/projects/nspr/";
+SRC_URI="ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v${PV}/src/${P}.tar.gz";
+
+LICENSE="|| ( MPL-2.0 GPL-2 LGPL-2.1 )"
+SLOT="0"
+KEYWORDS="amd64 arm ~mips ~x86"
+IUSE="debug"
+
+RDEPEND="
+       abi_x86_32? (
+               !<=app-emulation/emul-linux-x86-baselibs-20140508-r12
+               !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
+       )"
+
+MULTILIB_CHOST_TOOLS=(
+       /usr/bin/nspr-config
+)
+
+src_prepare() {
+       cd "${S}"/nspr || die
+       epatch "${FILESDIR}"/${PN}-4.7.0-prtime.patch
+       epatch "${FILESDIR}"/${PN}-4.7.1-solaris.patch
+       epatch "${FILESDIR}"/${PN}-4.10.6-solaris.patch
+       epatch "${FILESDIR}"/${PN}-4.8.4-darwin-install_name.patch
+       epatch "${FILESDIR}"/${PN}-4.8.9-link-flags.patch
+       # We do not need to pass -L$libdir via nspr-config --libs
+       epatch "${FILESDIR}"/${PN}-4.9.5_nspr_config.patch
+
+       epatch "${FILESDIR}"/${PN}-4.10.6-no-getprotobyname_r.patch
+
+       # We must run eautoconf to regenerate configure
+       eautoconf
+
+       # make sure it won't find Perl out of Prefix
+       sed -i -e "s/perl5//g" "${S}"/nspr/configure || die
+
+       # Respect LDFLAGS
+       sed -i -e 's/\$(MKSHLIB) \$(OBJS)/\$(MKSHLIB) \$(LDFLAGS) \$(OBJS)/g' \
+               "${S}"/nspr/config/rules.mk || die
+}
+
+multilib_src_configure() {
+       # We use the standard BUILD_xxx but nspr uses HOST_xxx
+       tc-export_build_env BUILD_CC
+       export HOST_CC=${BUILD_CC} HOST_CFLAGS=${BUILD_CFLAGS} 
HOST_LDFLAGS=${BUILD_LDFLAGS}
+       tc-export AR CC CXX RANLIB
+       [[ ${CBUILD} != ${CHOST} ]] \
+               && export CROSS_COMPILE=1 \
+               || unset CROSS_COMPILE
+
+       local myconf=()
+
+       # The configure has some fancy --enable-{{n,x}32,64bit} switches
+       # that trigger some code conditional to platform & arch. This really
+       # matters for the few common arches (x86, ppc) but we pass a little
+       # more of them to be future-proof.
+
+       # use ABI first, this will work for most cases
+       case "${ABI}" in
+               alpha|arm|hppa|m68k|o32|ppc|s390|sh|sparc|x86) ;;
+               n32) myconf+=( --enable-n32 );;
+               x32) myconf+=( --enable-x32 );;
+               s390x|*64) myconf+=( --enable-64bit );;
+               default) # no abi actually set, fall back to old check
+                       einfo "Running a short build test to determine 
64bit'ness"
+                       echo > "${T}"/test.c || die
+                       ${CC} ${CFLAGS} ${CPPFLAGS} -c "${T}"/test.c -o 
"${T}"/test.o || die
+                       case $(file "${T}"/test.o) in
+                               *32-bit*x86-64*) myconf+=( --enable-x32 );;
+                               *64-bit*|*ppc64*|*x86_64*) myconf+=( 
--enable-64bit );;
+                               *32-bit*|*ppc*|*i386*) ;;
+                               *) die "Failed to detect whether your arch is 
64bits or 32bits, disable distcc if you're using it, please";;
+                       esac ;;
+               *) ;;
+       esac
+
+       # Ancient autoconf needs help finding the right tools.
+       LC_ALL="C" ECONF_SOURCE="${S}/nspr" \
+       ac_cv_path_AR="${AR}" \
+       econf \
+               --libdir="${EPREFIX}/usr/$(get_libdir)" \
+               $(use_enable debug) \
+               $(use_enable !debug optimize) \
+               "${myconf[@]}"
+}
+
+multilib_src_install() {
+       # Their build system is royally confusing, as usual
+       MINOR_VERSION=${MIN_PV} # Used for .so version
+       emake DESTDIR="${D}" install
+
+       einfo "removing static libraries as upstream has requested!"
+       rm -f "${ED}"/usr/$(get_libdir)/*.a || die "failed to remove static 
libraries."
+
+       # install nspr-config
+       dobin config/nspr-config
+
+       # Remove stupid files in /usr/bin
+       rm "${ED}"/usr/bin/prerr.properties || die "failed to cleanup unneeded 
files"
+}

Reply via email to