xref: /OK3568_Linux_fs/yocto/poky/meta/recipes-core/libxml/libxml2_2.9.14.bb (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1SUMMARY = "XML C Parser Library and Toolkit"
2DESCRIPTION = "The XML Parser Library allows for manipulation of XML files.  Libxml2 exports Push and Pull type parser interfaces for both XML and HTML.  It can do DTD validation at parse time, on a parsed document instance or with an arbitrary DTD.  Libxml2 includes complete XPath, XPointer and Xinclude implementations.  It also has a SAX like interface, which is designed to be compatible with Expat."
3HOMEPAGE = "https://gitlab.gnome.org/GNOME/libxml2"
4BUGTRACKER = "http://bugzilla.gnome.org/buglist.cgi?product=libxml2"
5SECTION = "libs"
6LICENSE = "MIT"
7LIC_FILES_CHKSUM = "file://Copyright;md5=2044417e2e5006b65a8b9067b683fcf1 \
8                    file://hash.c;beginline=6;endline=15;md5=e77f77b12cb69e203d8b4090a0eee879 \
9                    file://list.c;beginline=4;endline=13;md5=b9c25b021ccaf287e50060602d20f3a7 \
10                    file://trio.c;beginline=5;endline=14;md5=cd4f61e27f88c1d43df112966b1cd28f"
11
12DEPENDS = "zlib virtual/libiconv"
13
14inherit gnomebase
15
16SRC_URI += "http://www.w3.org/XML/Test/xmlts20080827.tar;subdir=${BP};name=testtar \
17           file://libxml-64bit.patch \
18           file://runtest.patch \
19           file://run-ptest \
20           file://python-sitepackages-dir.patch \
21           file://0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch \
22           file://fix-execution-of-ptests.patch \
23           file://remove-fuzz-from-ptests.patch \
24           file://libxml-m4-use-pkgconfig.patch \
25           file://0001-Port-gentest.py-to-Python-3.patch \
26           file://CVE-2022-40303.patch \
27           file://CVE-2022-40304.patch \
28           "
29
30SRC_URI[archive.sha256sum] = "60d74a257d1ccec0475e749cba2f21559e48139efba6ff28224357c7c798dfee"
31SRC_URI[testtar.sha256sum] = "9b2c865aba66c6429ca301a7ef048d7eca2cdb7a9106184416710853c7b37d0d"
32
33BINCONFIG = "${bindir}/xml2-config"
34
35# Fixed since 2.9.11 via
36# https://gitlab.gnome.org/GNOME/libxml2/-/commit/c1ba6f54d32b707ca6d91cb3257ce9de82876b6f
37CVE_CHECK_IGNORE += "CVE-2016-3709"
38
39PACKAGECONFIG ??= "python \
40    ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
41"
42PACKAGECONFIG[python] = "--with-python=${PYTHON},--without-python,python3"
43PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
44
45inherit autotools pkgconfig binconfig-disabled ptest
46
47inherit ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3targetconfig', '', d)}
48
49RDEPENDS:${PN}-ptest += "bash make ${@bb.utils.contains('PACKAGECONFIG', 'python', 'libgcc python3-core python3-logging python3-shell  python3-stringold python3-threading python3-unittest ${PN}-python', '', d)}"
50
51RDEPENDS:${PN}-python += "${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3-core', '', d)}"
52
53RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-gconv-ebcdic-us \
54                                           glibc-gconv-ibm1141 \
55                                           glibc-gconv-iso8859-5 \
56                                           glibc-gconv-euc-jp \
57                                           locale-base-en-us \
58                                         "
59
60export PYTHON_SITE_PACKAGES="${PYTHON_SITEPACKAGES_DIR}"
61
62# WARNING: zlib is required for RPM use
63EXTRA_OECONF = "--without-debug --without-legacy --with-catalog --without-docbook --with-c14n --without-lzma --with-fexceptions"
64EXTRA_OECONF:class-native = "--without-legacy --without-docbook --with-c14n --without-lzma --with-zlib"
65EXTRA_OECONF:class-nativesdk = "--without-legacy --without-docbook --with-c14n --without-lzma --with-zlib"
66EXTRA_OECONF:linuxstdbase = "--with-debug --with-legacy --with-docbook --with-c14n --without-lzma --with-zlib"
67
68python populate_packages:prepend () {
69    # autonamer would call this libxml2-2, but we don't want that
70    if d.getVar('DEBIAN_NAMES'):
71        d.setVar('PKG:libxml2', '${MLPREFIX}libxml2')
72}
73
74PACKAGE_BEFORE_PN += "${PN}-utils"
75PACKAGES += "${PN}-python"
76
77FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
78FILES:${PN}-dev += "${libdir}/xml2Conf.sh"
79FILES:${PN}-utils = "${bindir}/*"
80FILES:${PN}-python = "${PYTHON_SITEPACKAGES_DIR}"
81
82do_configure:prepend () {
83	# executables take longer to package: these should not be executable
84	find ${S}/xmlconf/ -type f -exec chmod -x {} \+
85}
86
87do_compile_ptest() {
88        # Make sure that testapi.c is newer than gentests.py, because
89        # with reproducible builds, they will both get e.g. Jan  1  1970
90        # modification time from SOURCE_DATE_EPOCH and then check-am
91        # might try to rebuild_testapi, which will fail even with
92        # 0001-Port-gentest.py-to-Python-3.patch, because it needs
93        # libxml2 module (libxml2-native dependency and correctly
94        # set PYTHON_SITE_PACKAGES), it's easier to
95        # just rely on pre-generated testapi.c from the release
96        touch ${S}/testapi.c
97
98	oe_runmake check-am
99}
100
101do_install_ptest () {
102	cp -r ${S}/xmlconf ${D}${PTEST_PATH}
103	if [ "${@bb.utils.filter('PACKAGECONFIG', 'python', d)}" ]; then
104		sed -i -e 's|^\(PYTHON = \).*|\1${USRBINPATH}/${PYTHON_PN}|' \
105		    ${D}${PTEST_PATH}/python/tests/Makefile
106		grep -lrZ '#!/usr/bin/python' ${D}${PTEST_PATH}/python |
107			xargs -0 sed -i -e 's|/usr/bin/python|${USRBINPATH}/${PYTHON_PN}|'
108	fi
109	#Remove build host references from various Makefiles
110	find "${D}${PTEST_PATH}" -name Makefile -type f -exec \
111	    sed -i \
112	    -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
113	    -e 's|${DEBUG_PREFIX_MAP}||g' \
114	    -e 's:${HOSTTOOLS_DIR}/::g' \
115	    -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
116	    -e 's:${RECIPE_SYSROOT}::g' \
117	    -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
118	    -e '/^RELDATE/d' \
119	    {} +
120}
121
122do_install:append:class-native () {
123	# Docs are not needed in the native case
124	rm ${D}${datadir}/gtk-doc -rf
125}
126
127BBCLASSEXTEND = "native nativesdk"
128