Skip to content

Commit

Permalink
dev-libs/libxslt: Fix glibc-2.26 compatibility. Patch by Quentin Mins…
Browse files Browse the repository at this point in the history
…ter.

This patch is much less intrusive than the upstream solution, so using
it for now. Revision bump since the current version unconditionally includes
in public headers xlocale.h ...

Closes: https://bugs.gentoo.org/632214
Package-Manager: Portage-2.3.13, Repoman-2.3.4
  • Loading branch information
akhuettel committed Oct 28, 2017
1 parent 4bbf56d commit 22feb6c
Show file tree
Hide file tree
Showing 2 changed files with 168 additions and 0 deletions.
32 changes: 32 additions & 0 deletions dev-libs/libxslt/files/libxslt-1.1.30-glibc226.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
diff --git a/configure.in b/configure.in
index d6aa366..20aafb8 100644
--- a/configure.in
+++ b/configure.in
@@ -165,11 +165,11 @@ XSLT_LOCALE_XLOCALE=0
XSLT_LOCALE_WINAPI=0

AC_CHECK_HEADERS([locale.h xlocale.h])
-if test $ac_cv_header_xlocale_h = yes; then
+if test $ac_cv_header_locale_h = yes; then
dnl
dnl Check for generic locale_t declaration
dnl
-AC_MSG_CHECKING([if xlocale program link])
+AC_MSG_CHECKING([if locale program link])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#ifdef HAVE_LOCALE_H
#include <locale.h>
diff --git a/libxslt/xsltlocale.h b/libxslt/xsltlocale.h
index 8a9ca15..2f64424 100644
--- a/libxslt/xsltlocale.h
+++ b/libxslt/xsltlocale.h
@@ -17,7 +17,9 @@
#ifdef XSLT_LOCALE_XLOCALE

#include <locale.h>
+#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ < 26
#include <xlocale.h>
+#endif

#ifdef __GLIBC__
/*locale_t is defined only if _GNU_SOURCE is defined*/
136 changes: 136 additions & 0 deletions dev-libs/libxslt/libxslt-1.1.30-r2.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6
PYTHON_COMPAT=( python2_7 )
PYTHON_REQ_USE="xml"

inherit autotools ltprune python-r1 toolchain-funcs multilib-minimal

DESCRIPTION="XSLT libraries and tools"
HOMEPAGE="http://www.xmlsoft.org/"
SRC_URI="ftp://xmlsoft.org/${PN}/${P}.tar.gz"

LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"

IUSE="crypt debug examples python static-libs"
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"

RDEPEND="
>=dev-libs/libxml2-2.9.1-r5:2[${MULTILIB_USEDEP}]
crypt? ( >=dev-libs/libgcrypt-1.5.3:0=[${MULTILIB_USEDEP}] )
python? (
${PYTHON_DEPS}
dev-libs/libxml2:2[python,${PYTHON_USEDEP}] )
"
DEPEND="${RDEPEND}"

MULTILIB_CHOST_TOOLS=(
/usr/bin/xslt-config
)

MULTILIB_WRAPPED_HEADERS=(
/usr/include/libxslt/xsltconfig.h
)

src_prepare() {
default

DOCS=( AUTHORS ChangeLog FEATURES NEWS README TODO )

# https://bugzilla.gnome.org/show_bug.cgi?id=684621
eapply "${FILESDIR}"/${PN}.m4-${PN}-1.1.26.patch

# Simplify python setup
# https://bugzilla.gnome.org/show_bug.cgi?id=758095
eapply "${FILESDIR}"/${PN}-1.1.30-simplify-python.patch
eapply "${FILESDIR}"/${PN}-1.1.28-disable-static-modules.patch

# Fix xslt-config
# https://bugs.gentoo.org/630784
eapply "${FILESDIR}"/1.1.30-unbreak-xslt-config.patch

# Fix build and headers with glibc-2.26, bug 632214
eapply "${FILESDIR}"/${PN}-1.1.30-glibc226.patch

mv configure.{in,ac} || die

eautoreconf
# If eautoreconf'd with new autoconf, then epunt_cxx is not necessary
# and it is propably otherwise too if upstream generated with new
# autoconf
# epunt_cxx
# But Prefix always needs elibtoolize if not eautoreconf'd.
# elibtoolize
}

multilib_src_configure() {
libxslt_configure() {
ECONF_SOURCE="${S}" econf \
--with-html-dir="${EPREFIX}"/usr/share/doc/${PF} \
--with-html-subdir=html \
$(use_with crypt crypto) \
$(use_with debug) \
$(use_with debug mem-debug) \
$(use_enable static-libs static) \
"$@"
}

libxslt_py_configure() {
mkdir -p "${BUILD_DIR}" || die # ensure python build dirs exist
run_in_build_dir libxslt_configure --with-python
}

libxslt_configure --without-python # build python bindings separately

if multilib_is_native_abi && use python; then
python_foreach_impl libxslt_py_configure
fi
}

multilib_src_compile() {
default
multilib_is_native_abi && use python && libxslt_foreach_py_emake all
}

multilib_src_test() {
default
multilib_is_native_abi && use python && libxslt_foreach_py_emake test
}

multilib_src_install() {
# "default" does not work here - docs are installed by multilib_src_install_all
emake DESTDIR="${D}" install

if multilib_is_native_abi && use python; then
libxslt_foreach_py_emake \
DESTDIR="${D}" \
docsdir="${EPREFIX}"/usr/share/doc/${PF}/python \
EXAMPLE_DIR="${EPREFIX}"/usr/share/doc/${PF}/python/examples \
install
python_foreach_impl python_optimize
fi
}

multilib_src_install_all() {
einstalldocs

if ! use examples; then
rm -rf "${ED}"/usr/share/doc/${PF}/examples
rm -rf "${ED}"/usr/share/doc/${PF}/python/examples
fi

prune_libtool_files --modules
}

libxslt_foreach_py_emake() {
libxslt_py_emake() {
pushd "${BUILD_DIR}/python" > /dev/null || die
emake "$@"
popd > /dev/null
}
local native_builddir=${BUILD_DIR}
python_foreach_impl libxslt_py_emake top_builddir="${native_builddir}" "$@"
}

0 comments on commit 22feb6c

Please sign in to comment.