1*c9537f57SPatrick WilliamsSUMMARY = "XML C Parser Library and Toolkit"
2*c9537f57SPatrick WilliamsDESCRIPTION = "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."
3*c9537f57SPatrick WilliamsHOMEPAGE = "https://gitlab.gnome.org/GNOME/libxml2"
4*c9537f57SPatrick WilliamsBUGTRACKER = "http://bugzilla.gnome.org/buglist.cgi?product=libxml2"
5*c9537f57SPatrick WilliamsSECTION = "libs"
6*c9537f57SPatrick WilliamsLICENSE = "MIT"
7*c9537f57SPatrick WilliamsLIC_FILES_CHKSUM = "file://Copyright;md5=5873615e8a9ecbf5c8857c4312ee05d6 \
8*c9537f57SPatrick Williams file://dict.c;beginline=6;endline=15;md5=2b4b7b827d2d8b080372433c4c9c85b6 \
9*c9537f57SPatrick Williams file://list.c;beginline=4;endline=13;md5=b9c25b021ccaf287e50060602d20f3a7 \
10*c9537f57SPatrick Williams "
11*c9537f57SPatrick Williams
12*c9537f57SPatrick WilliamsDEPENDS = "zlib virtual/libiconv"
13*c9537f57SPatrick Williams
14*c9537f57SPatrick WilliamsGNOMEBASEBUILDCLASS = "autotools"
15*c9537f57SPatrick Williamsinherit gnomebase
16*c9537f57SPatrick Williams
17*c9537f57SPatrick WilliamsSRC_URI += "http://www.w3.org/XML/Test/xmlts20130923.tar;subdir=${BP};name=testtar \
18*c9537f57SPatrick Williams file://run-ptest \
19*c9537f57SPatrick Williams file://install-tests.patch \
20*c9537f57SPatrick Williams file://0001-Revert-cmake-Fix-installation-directories-in-libxml2.patch \
21*c9537f57SPatrick Williams "
22*c9537f57SPatrick Williams
23*c9537f57SPatrick WilliamsSRC_URI[archive.sha256sum] = "6de55cacc8c2bc758f2ef6f93c313cb30e4dd5d84ac5d3c7ccbd9344d8cc6833"
24*c9537f57SPatrick WilliamsSRC_URI[testtar.sha256sum] = "c6b2d42ee50b8b236e711a97d68e6c4b5c8d83e69a2be4722379f08702ea7273"
25*c9537f57SPatrick Williams
26*c9537f57SPatrick Williams# Disputed as a security issue, but fixed in d39f780
27*c9537f57SPatrick WilliamsCVE_STATUS[CVE-2023-45322] = "disputed: issue requires memory allocation to fail"
28*c9537f57SPatrick Williams
29*c9537f57SPatrick WilliamsBINCONFIG = "${bindir}/xml2-config"
30*c9537f57SPatrick Williams
31*c9537f57SPatrick WilliamsPACKAGECONFIG ??= "python"
32*c9537f57SPatrick WilliamsPACKAGECONFIG[python] = "--with-python=${PYTHON},--without-python,python3"
33*c9537f57SPatrick Williams
34*c9537f57SPatrick Williamsinherit autotools pkgconfig binconfig-disabled ptest
35*c9537f57SPatrick Williams
36*c9537f57SPatrick Williamsinherit_defer ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3targetconfig', '', d)}
37*c9537f57SPatrick Williams
38*c9537f57SPatrick WilliamsLDFLAGS:append:riscv64 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld ptest', ' -fuse-ld=bfd', '', d)}"
39*c9537f57SPatrick Williams
40*c9537f57SPatrick WilliamsRDEPENDS:${PN}-ptest += "bash make locale-base-en-us ${@bb.utils.contains('PACKAGECONFIG', 'python', 'libgcc python3-core python3-logging python3-shell python3-stringold python3-threading python3-unittest ${PN}-python', '', d)}"
41*c9537f57SPatrick Williams
42*c9537f57SPatrick WilliamsRDEPENDS:${PN}-python += "${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3-core', '', d)}"
43*c9537f57SPatrick Williams
44*c9537f57SPatrick WilliamsRDEPENDS:${PN}-ptest:append:libc-musl = " musl-locales"
45*c9537f57SPatrick WilliamsRDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-gconv-ebcdic-us \
46*c9537f57SPatrick Williams glibc-gconv-ibm1141 \
47*c9537f57SPatrick Williams glibc-gconv-iso8859-5 \
48*c9537f57SPatrick Williams glibc-gconv-euc-jp \
49*c9537f57SPatrick Williams "
50*c9537f57SPatrick Williams
51*c9537f57SPatrick Williams# WARNING: zlib is required for RPM use
52*c9537f57SPatrick WilliamsEXTRA_OECONF = "--without-debug --without-legacy --with-catalog --with-c14n --without-lzma"
53*c9537f57SPatrick WilliamsEXTRA_OECONF:class-native = "--without-legacy --with-c14n --without-lzma --with-zlib"
54*c9537f57SPatrick WilliamsEXTRA_OECONF:class-nativesdk = "--without-legacy --with-c14n --without-lzma --with-zlib"
55*c9537f57SPatrick WilliamsEXTRA_OECONF:linuxstdbase = "--with-debug --with-legacy --with-c14n --without-lzma --with-zlib"
56*c9537f57SPatrick Williams
57*c9537f57SPatrick Williamspython populate_packages:prepend () {
58*c9537f57SPatrick Williams # autonamer would call this libxml2-2, but we don't want that
59*c9537f57SPatrick Williams if d.getVar('DEBIAN_NAMES'):
60*c9537f57SPatrick Williams d.setVar('PKG:libxml2', '${MLPREFIX}libxml2')
61*c9537f57SPatrick Williams}
62*c9537f57SPatrick Williams
63*c9537f57SPatrick WilliamsPACKAGE_BEFORE_PN += "${PN}-utils"
64*c9537f57SPatrick WilliamsPACKAGES += "${PN}-python"
65*c9537f57SPatrick Williams
66*c9537f57SPatrick WilliamsFILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
67*c9537f57SPatrick WilliamsFILES:${PN}-utils = "${bindir}/*"
68*c9537f57SPatrick WilliamsFILES:${PN}-python = "${PYTHON_SITEPACKAGES_DIR}"
69*c9537f57SPatrick Williams
70*c9537f57SPatrick Williamsdo_configure:prepend () {
71*c9537f57SPatrick Williams # executables take longer to package: these should not be executable
72*c9537f57SPatrick Williams find ${S}/xmlconf/ -type f -exec chmod -x {} \+
73*c9537f57SPatrick Williams}
74*c9537f57SPatrick Williams
75*c9537f57SPatrick Williamsdo_install_ptest () {
76*c9537f57SPatrick Williams oe_runmake DESTDIR=${D} ptestdir=${PTEST_PATH} install-test-data
77*c9537f57SPatrick Williams
78*c9537f57SPatrick Williams cp -r ${S}/xmlconf ${D}${PTEST_PATH}
79*c9537f57SPatrick Williams
80*c9537f57SPatrick Williams if ! ${@bb.utils.contains('PACKAGECONFIG', 'python', 'true', 'false', d)}; then
81*c9537f57SPatrick Williams rm -rf ${D}${PTEST_DIR}/python
82*c9537f57SPatrick Williams fi
83*c9537f57SPatrick Williams}
84*c9537f57SPatrick Williams
85*c9537f57SPatrick Williams# with musl we need to enable icu support explicitly for these tests
86*c9537f57SPatrick Williamsdo_install_ptest:append:libc-musl () {
87*c9537f57SPatrick Williams rm -rf ${D}/${PTEST_PATH}/test/icu_parse_test.xml
88*c9537f57SPatrick Williams}
89*c9537f57SPatrick Williams
90*c9537f57SPatrick Williamsdo_install:append:class-native () {
91*c9537f57SPatrick Williams # Docs are not needed in the native case
92*c9537f57SPatrick Williams rm ${D}${datadir}/gtk-doc -rf
93*c9537f57SPatrick Williams
94*c9537f57SPatrick Williams create_wrapper ${D}${bindir}/xmllint 'XML_CATALOG_FILES=${XML_CATALOG_FILES:-${sysconfdir}/xml/catalog}'
95*c9537f57SPatrick Williams}
96*c9537f57SPatrick Williamsdo_install[vardepsexclude] += "XML_CATALOG_FILES:-${sysconfdir}/xml/catalog"
97