Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 679046
Collapse All | Expand All

(-)a/dev-libs/libxml2/files/libxml2-2.9.9-define-when-threads-enabled.patch (+35 lines)
Line 0 Link Here
1
https://mail.gnome.org/archives/xml/2019-February/msg00002.html
2
3
From cf68fe3d505dd3f7525ccc28c90f87432a747aa4 Mon Sep 17 00:00:00 2001
4
From: Michael Haubenwallner <michael.haubenwallner@ssi-schaefer.com>
5
Date: Wed, 27 Feb 2019 15:00:14 +0100
6
Subject: [PATCH] Always define LIBXML_THREAD_ENABLED when enabled
7
8
When libxml2 is compiled with threads enabled, have the header file
9
define LIBXML_THREAD_ENABLED even if the subsequent application by
10
itself does not enable threads.  Otherwise, the application would see
11
the unthreaded API functions, but these are not exported (where it does
12
make a difference, like on Win32 based platforms).
13
---
14
 include/libxml/xmlversion.h.in | 3 ---
15
 1 file changed, 3 deletions(-)
16
17
diff --git a/include/libxml/xmlversion.h.in b/include/libxml/xmlversion.h.in
18
index d10f9754..5ba64f23 100644
19
--- a/include/libxml/xmlversion.h.in
20
+++ b/include/libxml/xmlversion.h.in
21
@@ -91,11 +91,8 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
22
  * Whether the thread support is configured in
23
  */
24
 #if @WITH_THREADS@
25
-#if defined(_REENTRANT) || defined(__MT__) || \
26
-    (defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE - 0 >= 199506L))
27
 #define LIBXML_THREAD_ENABLED
28
 #endif
29
-#endif
30
 
31
 /**
32
  * LIBXML_THREAD_ALLOC_ENABLED:
33
-- 
34
2.18.1
35
(-)a/dev-libs/libxml2/libxml2-2.9.9-r1.ebuild (-1 / +216 lines)
Line 0 Link Here
0
- 
1
# Copyright 1999-2019 Gentoo Authors
2
# Distributed under the terms of the GNU General Public License v2
3
4
EAPI=6
5
PYTHON_COMPAT=( python2_7 python3_{4,5,6,7} )
6
PYTHON_REQ_USE="xml"
7
8
inherit libtool flag-o-matic ltprune python-r1 autotools prefix multilib-minimal
9
10
DESCRIPTION="XML C parser and toolkit"
11
HOMEPAGE="http://www.xmlsoft.org/"
12
13
LICENSE="MIT"
14
SLOT="2"
15
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
16
IUSE="debug examples icu ipv6 lzma python readline static-libs test"
17
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
18
19
XSTS_HOME="http://www.w3.org/XML/2004/xml-schema-test-suite"
20
XSTS_NAME_1="xmlschema2002-01-16"
21
XSTS_NAME_2="xmlschema2004-01-14"
22
XSTS_TARBALL_1="xsts-2002-01-16.tar.gz"
23
XSTS_TARBALL_2="xsts-2004-01-14.tar.gz"
24
XMLCONF_TARBALL="xmlts20080827.tar.gz"
25
26
SRC_URI="ftp://xmlsoft.org/${PN}/${PN}-${PV/_rc/-rc}.tar.gz
27
	test? (
28
		${XSTS_HOME}/${XSTS_NAME_1}/${XSTS_TARBALL_1}
29
		${XSTS_HOME}/${XSTS_NAME_2}/${XSTS_TARBALL_2}
30
		http://www.w3.org/XML/Test/${XMLCONF_TARBALL} )"
31
32
RDEPEND="
33
	>=sys-libs/zlib-1.2.8-r1:=[${MULTILIB_USEDEP}]
34
	icu? ( >=dev-libs/icu-51.2-r1:=[${MULTILIB_USEDEP}] )
35
	lzma? ( >=app-arch/xz-utils-5.0.5-r1:=[${MULTILIB_USEDEP}] )
36
	python? ( ${PYTHON_DEPS} )
37
	readline? ( sys-libs/readline:= )
38
"
39
DEPEND="${RDEPEND}
40
	dev-util/gtk-doc-am
41
	virtual/pkgconfig
42
	hppa? ( >=sys-devel/binutils-2.15.92.0.2 )
43
"
44
45
S="${WORKDIR}/${PN}-${PV%_rc*}"
46
47
MULTILIB_CHOST_TOOLS=(
48
	/usr/bin/xml2-config
49
)
50
51
src_unpack() {
52
	# ${A} isn't used to avoid unpacking of test tarballs into $WORKDIR,
53
	# as they are needed as tarballs in ${S}/xstc instead and not unpacked
54
	unpack ${P/_rc/-rc}.tar.gz
55
	cd "${S}" || die
56
57
	if use test; then
58
		cp "${DISTDIR}/${XSTS_TARBALL_1}" \
59
			"${DISTDIR}/${XSTS_TARBALL_2}" \
60
			"${S}"/xstc/ \
61
			|| die "Failed to install test tarballs"
62
		unpack ${XMLCONF_TARBALL}
63
	fi
64
}
65
66
src_prepare() {
67
	default
68
69
	DOCS=( AUTHORS ChangeLog NEWS README* TODO* )
70
71
	# Patches needed for prefix support
72
	eapply "${FILESDIR}"/${PN}-2.7.1-catalog_path.patch
73
74
	eprefixify catalog.c xmlcatalog.c runtest.c xmllint.c
75
76
	# Fix build for Windows platform
77
	# https://bugzilla.gnome.org/show_bug.cgi?id=760456
78
	# eapply "${FILESDIR}"/${PN}-2.8.0_rc1-winnt.patch
79
80
	# Fix python detection, bug #567066
81
	# https://bugzilla.gnome.org/show_bug.cgi?id=760458
82
	eapply "${FILESDIR}"/${PN}-2.9.2-python-ABIFLAG.patch
83
84
	# Fix python tests when building out of tree #565576
85
	eapply "${FILESDIR}"/${PN}-2.9.8-out-of-tree-test.patch
86
87
	# always define LIBXML_THREAD_ENABLED when enabled
88
	eapply "${FILESDIR}"/${P}-define-when-threads-enabled.patch
89
90
	if [[ ${CHOST} == *-darwin* ]] ; then
91
		# Avoid final linking arguments for python modules
92
		sed -i -e '/PYTHON_LIBS/s/ldflags/libs/' configure.ac || die
93
		# gcc-apple doesn't grok -Wno-array-bounds
94
		sed -i -e 's/-Wno-array-bounds//' configure.ac || die
95
	fi
96
97
	# Please do not remove, as else we get references to PORTAGE_TMPDIR
98
	# in /usr/lib/python?.?/site-packages/libxml2mod.la among things.
99
	# We now need to run eautoreconf at the end to prevent maintainer mode.
100
#	elibtoolize
101
#	epunt_cxx # if we don't eautoreconf
102
103
	eautoreconf
104
}
105
106
multilib_src_configure() {
107
	# filter seemingly problematic CFLAGS (#26320)
108
	filter-flags -fprefetch-loop-arrays -funroll-loops
109
110
	# USE zlib support breaks gnome2
111
	# (libgnomeprint for instance fails to compile with
112
	# fresh install, and existing) - <azarah@gentoo.org> (22 Dec 2002).
113
114
	# The meaning of the 'debug' USE flag does not apply to the --with-debug
115
	# switch (enabling the libxml2 debug module). See bug #100898.
116
117
	# --with-mem-debug causes unusual segmentation faults (bug #105120).
118
119
	libxml2_configure() {
120
		ECONF_SOURCE="${S}" econf \
121
			--with-html-subdir=${PF}/html \
122
			$(use_with debug run-debug) \
123
			$(use_with icu) \
124
			$(use_with lzma) \
125
			$(use_enable ipv6) \
126
			$(use_enable static-libs static) \
127
			$(multilib_native_use_with readline) \
128
			$(multilib_native_use_with readline history) \
129
			"$@"
130
	}
131
132
	libxml2_py_configure() {
133
		mkdir -p "${BUILD_DIR}" || die # ensure python build dirs exist
134
		run_in_build_dir libxml2_configure "--with-python=${ROOT%/}${PYTHON}" # odd build system, also see bug #582130
135
	}
136
137
	libxml2_configure --without-python # build python bindings separately
138
139
	if multilib_is_native_abi && use python; then
140
		python_foreach_impl libxml2_py_configure
141
	fi
142
}
143
144
multilib_src_compile() {
145
	default
146
	if multilib_is_native_abi && use python; then
147
		local native_builddir=${BUILD_DIR}
148
		python_foreach_impl libxml2_py_emake top_builddir="${native_builddir}" all
149
	fi
150
}
151
152
multilib_src_test() {
153
	emake check
154
	multilib_is_native_abi && use python && python_foreach_impl libxml2_py_emake test
155
}
156
157
multilib_src_install() {
158
	emake DESTDIR="${D}" \
159
		EXAMPLES_DIR="${EPREFIX}"/usr/share/doc/${PF}/examples install
160
161
	if multilib_is_native_abi && use python; then
162
		python_foreach_impl libxml2_py_emake \
163
			DESTDIR="${D}" \
164
			docsdir="${EPREFIX}"/usr/share/doc/${PF}/python \
165
			exampledir="${EPREFIX}"/usr/share/doc/${PF}/python/examples \
166
			install
167
		python_foreach_impl python_optimize
168
	fi
169
}
170
171
multilib_src_install_all() {
172
	# on windows, xmllint is installed by interix libxml2 in parent prefix.
173
	# this is the version to use. the native winnt version does not support
174
	# symlinks, which makes repoman fail if the portage tree is linked in
175
	# from another location (which is my default). -- mduft
176
	if [[ ${CHOST} == *-winnt* ]]; then
177
		rm -rf "${ED}"/usr/bin/xmllint
178
		rm -rf "${ED}"/usr/bin/xmlcatalog
179
	fi
180
181
	rm -rf "${ED}"/usr/share/doc/${P}
182
	einstalldocs
183
184
	if ! use examples; then
185
		rm -rf "${ED}"/usr/share/doc/${PF}/examples
186
		rm -rf "${ED}"/usr/share/doc/${PF}/python/examples
187
	fi
188
189
	prune_libtool_files --modules
190
}
191
192
pkg_postinst() {
193
	# We don't want to do the xmlcatalog during stage1, as xmlcatalog will not
194
	# be in / and stage1 builds to ROOT=/tmp/stage1root. This fixes bug #208887.
195
	if [[ "${ROOT}" != "/" ]]; then
196
		elog "Skipping XML catalog creation for stage building (bug #208887)."
197
	else
198
		# need an XML catalog, so no-one writes to a non-existent one
199
		CATALOG="${EROOT}etc/xml/catalog"
200
201
		# we dont want to clobber an existing catalog though,
202
		# only ensure that one is there
203
		# <obz@gentoo.org>
204
		if [[ ! -e ${CATALOG} ]]; then
205
			[[ -d "${EROOT}etc/xml" ]] || mkdir -p "${EROOT}etc/xml"
206
			"${EPREFIX}"/usr/bin/xmlcatalog --create > "${CATALOG}"
207
			einfo "Created XML catalog in ${CATALOG}"
208
		fi
209
	fi
210
}
211
212
libxml2_py_emake() {
213
	pushd "${BUILD_DIR}/python" > /dev/null || die
214
	emake "$@"
215
	popd > /dev/null
216
}

Return to bug 679046