commit:     32c2bba917aa517e021ba38c8fab2d9cf52d9ec8
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 15 03:27:29 2016 +0000
Commit:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Fri Jan 15 03:43:13 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=32c2bba9

net-libs/serf: fix various cross-compile issues

- Use SYSROOT to locate helper config scripts to compile against.
- Drop OPENSSL var as it's useless.
- Respect AR/RANLIB settings.
- Make static libs optional.
- Pass settings to install phase too to avoid rebuilding things.

 net-libs/serf/files/serf-1.3.8-openssl.patch    | 28 ++++++++++
 net-libs/serf/files/serf-1.3.8-static-lib.patch | 49 ++++++++++++++++++
 net-libs/serf/serf-1.3.8-r1.ebuild              | 68 +++++++++++++++++++++++++
 3 files changed, 145 insertions(+)

diff --git a/net-libs/serf/files/serf-1.3.8-openssl.patch 
b/net-libs/serf/files/serf-1.3.8-openssl.patch
new file mode 100644
index 0000000..4cc3719
--- /dev/null
+++ b/net-libs/serf/files/serf-1.3.8-openssl.patch
@@ -0,0 +1,28 @@
+the build doesn't actually use the openssl var for anything useful.
+it blindly adds it to the -I/-L paths which causes problems when you
+cross-compile and when you link (it also adds it to -rpath).  punt
+the setting and forget about it.
+
+--- a/SConstruct
++++ b/SConstruct
+@@ -354,8 +354,6 @@ else:
+     apr_libs = ''
+     apu_libs = ''
+ 
+-  env.Append(CPPPATH=['$OPENSSL/include'])
+-  env.Append(LIBPATH=['$OPENSSL/lib'])
+ 
+ 
+ # If build with gssapi, get its information and define SERF_HAVE_GSSAPI
+@@ -369,8 +369,9 @@ if sys.platform == 'win32':
+ # On some systems, the -R values that APR describes never make it into actual
+ # RPATH flags. We'll manually map all directories in LIBPATH into new
+ # flags to set RPATH values.
+-for d in env['LIBPATH']:
+-  env.Append(RPATH=':'+d)
++if env.get('LIBPATH', None):
++  for d in env['LIBPATH']:
++    env.Append(RPATH=':'+d)
+ 
+ # Set up the construction of serf-*.pc
+ pkgconfig = env.Textfile('serf-%d.pc' % (MAJOR,),

diff --git a/net-libs/serf/files/serf-1.3.8-static-lib.patch 
b/net-libs/serf/files/serf-1.3.8-static-lib.patch
new file mode 100644
index 0000000..1538328
--- /dev/null
+++ b/net-libs/serf/files/serf-1.3.8-static-lib.patch
@@ -0,0 +1,49 @@
+respect the active archiver tool instead of using `ar` all the time.
+same for `ranlib`.
+
+also add support for BUILD_STATIC bool for controlling the libserf.a.
+
+--- a/SConstruct
++++ b/SConstruct
+@@ -103,6 +103,9 @@
+   BoolVariable('APR_STATIC',
+                "Enable using a static compiled APR",
+                False),
++  RawListVariable('AR', "Command name or path of the archiver", None),
++  RawListVariable('RANLIB', "Command name or path of the archiver indexer", 
None),
++  BoolVariable('BUILD_STATIC', 'Build libserf static library', True),
+   RawListVariable('CC', "Command name or path of the C compiler", None),
+   RawListVariable('CFLAGS', "Extra flags for the C compiler 
(space-separated)",
+                   None),
+@@ -193,6 +196,7 @@ if gssapi and os.path.isdir(gssapi):
+ 
+ debug = env.get('DEBUG', None)
+ aprstatic = env.get('APR_STATIC', None)
++build_static = env.get('BUILD_STATIC', True)
+ 
+ Help(opts.GenerateHelpText(env))
+ opts.Save(SAVED_CONFIG, env)
+@@ -384,7 +388,9 @@ pkgconfig = env.Textfile('serf-%d.pc' % (MAJOR,),
+                                                        env.get('GSSAPI_LIBS', 
'')),
+                            })
+ 
+-env.Default(lib_static, lib_shared, pkgconfig)
++env.Default(lib_shared, pkgconfig)
++if build_static:
++  env.Default(lib_static)
+ 
+ if CALLOUT_OKAY:
+   conf = Configure(env)
+@@ -420,8 +420,10 @@ if sys.platform == 'darwin':
+                                      % (target_install_shared_path,
+                                         install_shared_path)))
+ 
+-env.Alias('install-lib', [install_static, install_shared,
+-                          ])
++install_libs = [install_shared]
++if build_static:
++  install_libs.append(install_static)
++env.Alias('install-lib', install_libs)
+ env.Alias('install-inc', env.Install(incdir, HEADER_FILES))
+ env.Alias('install-pc', env.Install(os.path.join(libdir, 'pkgconfig'),
+                                     pkgconfig))

diff --git a/net-libs/serf/serf-1.3.8-r1.ebuild 
b/net-libs/serf/serf-1.3.8-r1.ebuild
new file mode 100644
index 0000000..c31fb28
--- /dev/null
+++ b/net-libs/serf/serf-1.3.8-r1.ebuild
@@ -0,0 +1,68 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit eutils scons-utils toolchain-funcs
+
+DESCRIPTION="HTTP client library"
+HOMEPAGE="https://code.google.com/p/serf/";
+SRC_URI="https://serf.googlecode.com/svn/src_releases/${P}.tar.bz2";
+
+LICENSE="Apache-2.0"
+SLOT="1"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 
~sh ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux 
~ppc-macos ~x64-macos ~x86-macos"
+IUSE="kerberos static-libs"
+
+RDEPEND="dev-libs/apr:1=
+       dev-libs/apr-util:1=
+       dev-libs/openssl:0=
+       sys-libs/zlib:0=
+       kerberos? ( virtual/krb5 )"
+DEPEND="${RDEPEND}
+       >=dev-util/scons-2.3.0"
+
+src_prepare() {
+       epatch 
"${FILESDIR}/${PN}-1.3.2-disable_linking_against_unneeded_libraries.patch"
+       epatch "${FILESDIR}/${PN}-1.3.8-scons_variables.patch"
+       epatch "${FILESDIR}/${PN}-1.3.8-tests.patch"
+       epatch "${FILESDIR}/${PN}-1.3.8-static-lib.patch"
+       epatch "${FILESDIR}/${PN}-1.3.8-openssl.patch"
+
+       # https://code.google.com/p/serf/issues/detail?id=133
+       sed -e "/env.Append(CCFLAGS=\['-O2'\])/d" -i SConstruct
+}
+
+src_compile() {
+       myesconsargs=(
+               PREFIX="${EPREFIX}/usr"
+               LIBDIR="${EPREFIX}/usr/$(get_libdir)"
+               # These config scripts are sent through a shell with an empty 
env
+               # which breaks the SYSROOT usage in them.  Set the vars inline 
to
+               # avoid that.
+               APR="SYSROOT='${SYSROOT}' 
${SYSROOT}${EPREFIX}/usr/bin/apr-1-config"
+               APU="SYSROOT='${SYSROOT}' 
${SYSROOT}${EPREFIX}/usr/bin/apu-1-config"
+               BUILD_STATIC=$(usex static-libs)
+               AR="$(tc-getAR)"
+               RANLIB="$(tc-getRANLIB)"
+               CC="$(tc-getCC)"
+               CPPFLAGS="${CPPFLAGS}"
+               CFLAGS="${CFLAGS}"
+               LINKFLAGS="${LDFLAGS}"
+       )
+
+       if use kerberos; then
+               myesconsargs+=( 
GSSAPI="${SYSROOT}${EPREFIX}/usr/bin/krb5-config" )
+       fi
+
+       escons
+}
+
+src_test() {
+       escons check
+}
+
+src_install() {
+       escons install --install-sandbox="${D}"
+}

Reply via email to