public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/hardened-dev:musl commit in: dev-libs/nspr/, dev-libs/nspr/files/
@ 2014-10-10 18:20 Anthony G. Basile
  0 siblings, 0 replies; only message in thread
From: Anthony G. Basile @ 2014-10-10 18:20 UTC (permalink / raw
  To: gentoo-commits

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"
+}


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2014-10-10 18:20 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-10 18:20 [gentoo-commits] proj/hardened-dev:musl commit in: dev-libs/nspr/, dev-libs/nspr/files/ Anthony G. Basile

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox