commit: 0f5ec113f82e4b0aa635e6ee1c284bbd99036864 Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Sat Jun 21 14:56:28 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Sat Jun 21 14:56:28 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0f5ec113
dev-libs/libxml2: fix CMake config file We instlal the file, so let's backport a fix to it. Signed-off-by: Sam James <sam <AT> gentoo.org> dev-libs/libxml2/files/libxml2-2.14.4-cmake.patch | 66 ++++++++ dev-libs/libxml2/libxml2-2.14.4-r1.ebuild | 184 ++++++++++++++++++++++ 2 files changed, 250 insertions(+) diff --git a/dev-libs/libxml2/files/libxml2-2.14.4-cmake.patch b/dev-libs/libxml2/files/libxml2-2.14.4-cmake.patch new file mode 100644 index 000000000000..b047fba3d5d1 --- /dev/null +++ b/dev-libs/libxml2/files/libxml2-2.14.4-cmake.patch @@ -0,0 +1,66 @@ +https://gitlab.gnome.org/GNOME/libxml2/-/commit/5700d989cc18889e1601c651ad69a41af8b32073 +https://gitlab.gnome.org/GNOME/libxml2/-/commit/d3e33dc214276498e73b61188be02b2863c9670a + +From 5700d989cc18889e1601c651ad69a41af8b32073 Mon Sep 17 00:00:00 2001 +From: Markus Rickert <[email protected]> +Date: Wed, 18 Jun 2025 13:48:55 +0200 +Subject: [PATCH] Fix CMake iconv handling after change to private dependency + +--- + CMakeLists.txt | 2 +- + libxml2-config.cmake.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e136f2167..b952d7bfa 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -354,7 +354,7 @@ if(WIN32) + endif() + + if(LIBXML2_WITH_ICONV) +- target_link_libraries(LibXml2 PUBLIC Iconv::Iconv) ++ target_link_libraries(LibXml2 PRIVATE Iconv::Iconv) + if(NOT Iconv_IS_BUILT_IN) + set(ICONV_LIBS "-liconv") + endif() +diff --git a/libxml2-config.cmake.in b/libxml2-config.cmake.in +index e040a759b..3ce7ef43f 100644 +--- a/libxml2-config.cmake.in ++++ b/libxml2-config.cmake.in +@@ -56,7 +56,7 @@ if(NOT LIBXML2_SHARED) + if(LIBXML2_WITH_ICONV) + find_dependency(Iconv) + list(APPEND LIBXML2_LIBRARIES ${Iconv_LIBRARIES}) +- list(APPEND LIBXML2_INTERFACE_LINK_LIBRARIES "Iconv::Iconv") ++ list(APPEND LIBXML2_INTERFACE_LINK_LIBRARIES "\$<LINK_ONLY:Iconv::Iconv>") + if(NOT Iconv_FOUND) + set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE) + set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "Iconv dependency was not found") +-- +GitLab + +From d3e33dc214276498e73b61188be02b2863c9670a Mon Sep 17 00:00:00 2001 +From: Nick Wellnhofer <[email protected]> +Date: Fri, 20 Jun 2025 11:20:34 +0200 +Subject: [PATCH] cmake: Add missing endif() in libxml2-config.cmake.in + +Regressed with 28ccdaf9. +--- + libxml2-config.cmake.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libxml2-config.cmake.in b/libxml2-config.cmake.in +index 3ce7ef43f..bd971e081 100644 +--- a/libxml2-config.cmake.in ++++ b/libxml2-config.cmake.in +@@ -119,6 +119,7 @@ if(NOT LIBXML2_SHARED) + if(LIBXML2_WITH_HTTP) + list(APPEND LIBXML2_LIBRARIES ws2_32) + list(APPEND LIBXML2_INTERFACE_LINK_LIBRARIES "\$<LINK_ONLY:ws2_32>") ++ endif() + endif() + endif() + +-- +GitLab diff --git a/dev-libs/libxml2/libxml2-2.14.4-r1.ebuild b/dev-libs/libxml2/libxml2-2.14.4-r1.ebuild new file mode 100644 index 000000000000..f8c49ee9c226 --- /dev/null +++ b/dev-libs/libxml2/libxml2-2.14.4-r1.ebuild @@ -0,0 +1,184 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Note: Please bump in sync with dev-libs/libxslt + +PYTHON_COMPAT=( python3_{11..14} ) +PYTHON_REQ_USE="xml(+)" +inherit python-r1 meson-multilib + +XSTS_HOME="http://www.w3.org/XML/2004/xml-schema-test-suite" +XSTS_NAME_1="xmlschema2002-01-16" +XSTS_NAME_2="xmlschema2004-01-14" +XSTS_TARBALL_1="xsts-2002-01-16.tar.gz" +XSTS_TARBALL_2="xsts-2004-01-14.tar.gz" +XMLCONF_TARBALL="xmlts20130923.tar.gz" + +DESCRIPTION="XML C parser and toolkit" +HOMEPAGE="https://gitlab.gnome.org/GNOME/libxml2/-/wikis/home" +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://gitlab.gnome.org/GNOME/libxml2" + inherit git-r3 +else + inherit gnome.org + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +fi + +SRC_URI+=" + test? ( + ${XSTS_HOME}/${XSTS_NAME_1}/${XSTS_TARBALL_1} + ${XSTS_HOME}/${XSTS_NAME_2}/${XSTS_TARBALL_2} + https://www.w3.org/XML/Test/${XMLCONF_TARBALL} + ) +" +S="${WORKDIR}/${PN}-${PV%_rc*}" + +LICENSE="MIT" +# see so_version = v_maj + v_min_compat for subslot +SLOT="2/16" +IUSE="icu +python readline static-libs test" +RESTRICT="!test? ( test )" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +RDEPEND=" + virtual/libiconv + >=sys-libs/zlib-1.2.8-r1:=[${MULTILIB_USEDEP}] + icu? ( >=dev-libs/icu-51.2-r1:=[${MULTILIB_USEDEP}] ) + python? ( ${PYTHON_DEPS} ) + readline? ( sys-libs/readline:= ) +" +DEPEND="${RDEPEND}" +BDEPEND="virtual/pkgconfig" + +MULTILIB_CHOST_TOOLS=( + /usr/bin/xml2-config +) + +PATCHES=( + "${FILESDIR}"/libxml2-2.14.2-no-git.patch + "${FILESDIR}"/libxml2-2.14.4-cmake.patch +) + +src_unpack() { + if [[ ${PV} == 9999 ]] ; then + git-r3_src_unpack + else + local tarname=${P/_rc/-rc}.tar.xz + + # ${A} isn't used to avoid unpacking of test tarballs into ${WORKDIR}, + # as they are needed as tarballs in ${S}/xstc instead and not unpacked + unpack ${tarname} + + if [[ -n ${PATCHSET_VERSION} ]] ; then + unpack ${PN}-${PATCHSET_VERSION}.tar.xz + fi + fi + + cd "${S}" || die + + if use test ; then + cp "${DISTDIR}/${XSTS_TARBALL_1}" \ + "${DISTDIR}/${XSTS_TARBALL_2}" \ + "${S}"/xstc/ \ + || die "Failed to install test tarballs" + unpack ${XMLCONF_TARBALL} + fi +} + +src_prepare() { + default + + sed -e "/^dir_doc/ s/meson.project_name()$/\'${PF}\'/" -i meson.build || die +} + +python_configure() { + local emesonargs=( + $(meson_feature icu) + $(meson_native_use_feature readline) + $(meson_native_use_feature readline history) + -Dpython=enabled + ) + mkdir "${BUILD_DIR}" || die + pushd "${BUILD_DIR}" >/dev/null || die + meson_src_configure + popd >/dev/null || die +} + +multilib_src_configure() { + local emesonargs=( + -Ddefault_library=$(multilib_native_usex static-libs both shared) + $(meson_feature icu) + $(meson_native_use_feature readline) + $(meson_native_use_feature readline history) + -Dpython=disabled + + # There has been a clean break with a soname bump. + # It's time to deal with the breakage. + # bug #935452 + -Dlegacy=disabled + ) + meson_src_configure + + if multilib_is_native_abi && use python ; then + python_foreach_impl python_configure + fi +} + +python_compile() { + pushd "${BUILD_DIR}" >/dev/null || die + meson_src_compile + popd >/dev/null || die +} + +multilib_src_compile() { + meson_src_compile + + if multilib_is_native_abi && use python ; then + python_foreach_impl python_compile + fi +} + +multilib_src_test() { + meson_src_test + + if multilib_is_native_abi && use python ; then + python_foreach_impl meson_src_test + fi +} + +python_install() { + pushd "${BUILD_DIR}" >/dev/null || die + meson_src_install + python_optimize + popd >/dev/null || die +} + +multilib_src_install() { + if multilib_is_native_abi && use python ; then + python_foreach_impl python_install + fi + + meson_src_install +} + +pkg_postinst() { + # We don't want to do the xmlcatalog during stage1, as xmlcatalog will not + # be in / and stage1 builds to ROOT=/tmp/stage1root. This fixes bug #208887. + if [[ -n "${ROOT}" ]]; then + elog "Skipping XML catalog creation for stage building (bug #208887)." + else + # Need an XML catalog, so no-one writes to a non-existent one + CATALOG="${EROOT}/etc/xml/catalog" + + # We don't want to clobber an existing catalog though, + # only ensure that one is there + # <[email protected]> + if [[ ! -e "${CATALOG}" ]]; then + [[ -d "${EROOT}/etc/xml" ]] || mkdir -p "${EROOT}/etc/xml" + "${EPREFIX}"/usr/bin/xmlcatalog --create > "${CATALOG}" + einfo "Created XML catalog in ${CATALOG}" + fi + fi +}
