Fix building with -Wl,--as-needed wrt #247067 by Diego E. Pettenò and Kacper Kowalik.
authorSamuli Suominen <ssuominen@gentoo.org>
Tue, 29 Jun 2010 19:09:55 +0000 (19:09 +0000)
committerSamuli Suominen <ssuominen@gentoo.org>
Tue, 29 Jun 2010 19:09:55 +0000 (19:09 +0000)
Package-Manager: portage-2.2_rc67/cvs/Linux x86_64

dev-libs/log4cpp/ChangeLog
dev-libs/log4cpp/Manifest
dev-libs/log4cpp/files/1.0-asneeded.patch [new file with mode: 0644]
dev-libs/log4cpp/log4cpp-1.0.ebuild

index 9a86e3a7db70ab67a6d05472554492c31c39e93f..6dca4774cbfb36163564681f167e2df926a8a339 100644 (file)
@@ -1,6 +1,11 @@
 # ChangeLog for dev-libs/log4cpp
-# Copyright 2002-2008 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-libs/log4cpp/ChangeLog,v 1.17 2008/05/10 11:47:06 nixnut Exp $
+# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/log4cpp/ChangeLog,v 1.18 2010/06/29 19:09:55 ssuominen Exp $
+
+  29 Jun 2010; Samuli Suominen <ssuominen@gentoo.org>
+  +files/1.0-asneeded.patch, log4cpp-1.0.ebuild:
+  Fix building with -Wl,--as-needed wrt #247067 by Diego E. Pettenò and
+  Kacper Kowalik.
 
   10 May 2008; nixnut <nixnut@gentoo.org> log4cpp-1.0.ebuild:
   Stable on ppc wrt bug 220711
index 093f359feefc60ed590bd43e91e20dc6ec81f179..07b7ccf0d792bc1701abe31083be8e70ae485940 100644 (file)
@@ -1,6 +1,7 @@
+AUX 1.0-asneeded.patch 4256 RMD160 f1c1ac98bee4d05ca2d8c8367f4112c5fe614db1 SHA1 f7e520cc969644637d8b3ad909ad2167690a6ee2 SHA256 950ecd6719ecc01747f25f2306c4ea072b55202fa558ede29269fba8612994c5
 AUX 1.0-doc_install_path.patch 1150 RMD160 49e137bc740285f32c434866aae42ff4aac9141f SHA1 0ee7939b353566c019fbe1577fe1dda23139c763 SHA256 509681de09b218d922ecc1640f881ba5577d2d45817f40d01e644740ff84d507
 AUX 1.0-gcc43.patch 1166 RMD160 9d3584ca99aef96731ee85608cd099773e2e066b SHA1 9cf28ce49c6dfc81c47fa994bf4e3d8b5a6eee45 SHA256 f569a48f495d3a4b87f6b2174e845b3fe328dfbd759a795e7ace53beb71ff308
 DIST log4cpp-1.0.tar.gz 495726 RMD160 2ebc7c4bc0a77991023f4d85bdeee35ec6b75770 SHA1 bdb2fa7a8c8af738d79156bf9f6191875cdba5cc SHA256 b4533324b0a1f46ad74a9e92bf2caa46c246e9353059e1a835e735d41826ed19
-EBUILD log4cpp-1.0.ebuild 878 RMD160 dde7237956637b8924d8b4bd67af94f98dfc7f9d SHA1 69eb5729fb6d57f7a4637f7fa6df59335325ae01 SHA256 180f90dd607e9af2eec404e384c0a43971ab5a9f52a5c1f760bdc5cdc8d7d968
-MISC ChangeLog 2247 RMD160 b72a7236a4404d1c9e8b5ba25adb60dff9f75f1f SHA1 2e5067b932a7186add8080983f667dff74c0a6a7 SHA256 ffd368ccf479fad0f1d87a81dd9b439fb84f8e4d34cd2aaef4ae7c97e9a8b0fe
+EBUILD log4cpp-1.0.ebuild 917 RMD160 71d44ecb2439da7c844b79a13f96de195ea6b16c SHA1 84067005b5cc2136fd776eef90afb38595f958bf SHA256 57ddafd6b90bb86c80ad535b33b12c3a71358568a1b7dccff6a50523fdc86a5b
+MISC ChangeLog 2445 RMD160 fe1fe38728145429736d4f1d1a1b297e67c9d8e9 SHA1 175af90a724fad4e0f1e5121b285a061a09a1b8f SHA256 ca9faf070561c93adf485a962cf10a39efab834038d51c94f4935237b5c43110
 MISC metadata.xml 156 RMD160 537178ef5a820896e97475fb9aded47d50474bef SHA1 2a4ef4879b918a28132d21cd6d1bbaa2a30dccde SHA256 0e8490f9c62cb74e5894b52f643a02de0024d97dbfebad43082dce6bcb39555f
diff --git a/dev-libs/log4cpp/files/1.0-asneeded.patch b/dev-libs/log4cpp/files/1.0-asneeded.patch
new file mode 100644 (file)
index 0000000..e9fb05f
--- /dev/null
@@ -0,0 +1,122 @@
+http://bugs.gentoo.org/247067
+
+--- m4/ACX_PTHREAD.m4
++++ m4/ACX_PTHREAD.m4
+@@ -266,6 +266,117 @@
+         else
+           PTHREAD_CC=$CC
+       fi
++
++        # The next part tries to detect GCC inconsistency with -shared on some
++        # architectures and systems. The problem is that in certain
++        # configurations, when -shared is specified, GCC "forgets" to
++        # internally use various flags which are still necessary.
++
++        #
++        # Prepare the flags
++        #
++        save_LDFLAGS="$LDFLAGS"
++        save_CFLAGS="$CFLAGS"
++        save_LIBS="$LIBS"
++        save_CC="$CC"
++
++        # Try with the flags determined by the earlier checks.
++        #
++        # -Wl,-z,defs forces link-time symbol resolution, so that the
++        # linking checks with -shared actually have any value
++        #
++        # FIXME: -fPIC is required for -shared on many architectures,
++        # so we specify it here, but the right way would probably be to
++        # properly detect whether it is actually required.
++        CFLAGS="-shared -fPIC -Wl,-z,defs $CFLAGS $PTHREAD_CFLAGS"
++        LIBS="$PTHREAD_LIBS $LIBS"
++        CC="$PTHREAD_CC"
++
++        # In order not to create several levels of indentation, we test
++        # the value of "$done" until we find the cure or run out of ideas.
++        done="no"
++
++        # First, make sure the CFLAGS we added are actually accepted by our
++        # compiler.  If not (and OS X's ld, for instance, does not accept -z),
++        # then we can't do this test.
++        if test x"$done" = xno; then
++           AC_MSG_CHECKING([whether to check for GCC pthread/shared inconsistencies])
++           AC_TRY_LINK(,, , [done=yes])
++
++           if test "x$done" = xyes ; then
++              AC_MSG_RESULT([no])
++           else
++              AC_MSG_RESULT([yes])
++           fi
++        fi
++
++        if test x"$done" = xyes; then
++           done="no"
++           AC_MSG_CHECKING([whether -pthread is sufficient with -shared])
++           AC_TRY_LINK([#include <pthread.h>],
++              [pthread_t th; pthread_join(th, 0);
++              pthread_attr_init(0); pthread_cleanup_push(0, 0);
++              pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
++              [done=yes])
++
++           if test "x$done" = xyes; then
++              AC_MSG_RESULT([yes])
++           else
++              AC_MSG_RESULT([no])
++           fi
++        fi
++
++        #
++        # Linux gcc on some architectures such as mips/mipsel forgets
++        # about -lpthread
++        #
++        if test x"$done" = xno; then
++           AC_MSG_CHECKING([whether -lpthread fixes that])
++           LIBS="-lpthread $PTHREAD_LIBS $save_LIBS"
++           AC_TRY_LINK([#include <pthread.h>],
++              [pthread_t th; pthread_join(th, 0);
++              pthread_attr_init(0); pthread_cleanup_push(0, 0);
++              pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
++              [done=yes])
++
++           if test "x$done" = xyes; then
++              AC_MSG_RESULT([yes])
++              PTHREAD_LIBS="-lpthread $PTHREAD_LIBS"
++           else
++              AC_MSG_RESULT([no])
++           fi
++        fi
++        #
++        # FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc
++        #
++        if test x"$done" = xno; then
++           AC_MSG_CHECKING([whether -lc_r fixes that])
++           LIBS="-lc_r $PTHREAD_LIBS $save_LIBS"
++           AC_TRY_LINK([#include <pthread.h>],
++               [pthread_t th; pthread_join(th, 0);
++                pthread_attr_init(0); pthread_cleanup_push(0, 0);
++                pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
++               [done=yes])
++
++           if test "x$done" = xyes; then
++              AC_MSG_RESULT([yes])
++              PTHREAD_LIBS="-lc_r $PTHREAD_LIBS"
++           else
++              AC_MSG_RESULT([no])
++           fi
++        fi
++        if test x"$done" = xno; then
++           # OK, we have run out of ideas
++           AC_MSG_WARN([Impossible to determine how to use pthreads with shared libraries])
++
++           # so it's not safe to assume that we may use pthreads
++           acx_pthread_ok=no
++        fi
++
++        CFLAGS="$save_CFLAGS"
++        LIBS="$save_LIBS"
++        CC="$save_CC"
++
+ else
+         PTHREAD_CC="$CC"
+ fi
index 89f37205cc25085bba0977f249a24a4dfce9d88a..6f851c4512adb8412eedf76e909f488df643a5d8 100644 (file)
@@ -1,6 +1,6 @@
 # Copyright 1999-2010 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-libs/log4cpp/log4cpp-1.0.ebuild,v 1.6 2010/06/29 18:42:06 ssuominen Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/log4cpp/log4cpp-1.0.ebuild,v 1.7 2010/06/29 19:09:55 ssuominen Exp $
 
 EAPI=2
 inherit autotools eutils
@@ -19,7 +19,8 @@ RDEPEND=""
 
 src_prepare() {
        epatch "${FILESDIR}"/${PV}-doc_install_path.patch \
-               "${FILESDIR}"/${PV}-gcc43.patch
+               "${FILESDIR}"/${PV}-gcc43.patch \
+               "${FILESDIR}"/${PV}-asneeded.patch
 
        AT_M4DIR="m4" eautoreconf
 }