blob: c6ec190e59bfa4814ba5c607d9b8ce5687e9b2bc [file] [log] [blame]
# Maintainer: Alexey Pavlov <alexpux@gmail.com>
# Contributor: Renato Silva <br.renatosilva@gmail.com>
# Notation: python3 patch is based upon: https://gist.github.com/novocaine/09d5c00e67fd0aa13cfc
_realname=libxml2
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=2.9.12
pkgrel=1
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64')
pkgdesc="XML parsing library, version 2 (mingw-w64)"
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
"${MINGW_PACKAGE_PREFIX}-gettext"
"${MINGW_PACKAGE_PREFIX}-xz"
"${MINGW_PACKAGE_PREFIX}-zlib")
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc"
"${MINGW_PACKAGE_PREFIX}-pkg-config"
"${MINGW_PACKAGE_PREFIX}-python")
options=('strip' 'staticlibs')
license=(MIT)
url="http://www.xmlsoft.org/"
install=${_realname}-${MSYSTEM}.install
source=("http://xmlsoft.org/sources/${_realname}-${pkgver}.tar.gz"
https://www.w3.org/XML/Test/xmlts20130923.tar.gz
0015-fix-unused-parameters-warning.all.patch
0016-WARNING-to-be-fixed.all.patch
0019-unused-flags.all.patch
0020-fix-warnings.patch
0023-fix-sitedir-detection.mingw.patch
0026-mingw-relocate.patch
libxml2-2.9.9-python.patch
0027-decoding-segfault.patch
libxml2-disable-version-script.patch)
sha256sums=('c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92'
'9b61db9f5dbffa545f4b8d78422167083a8568c59bd1129f94138f936cf6fc1f'
'a9457b1a5e7d9499270ccfdeabbf0ca75b0e4643c111a42a5da0d113bae485c5'
'81811dc3a497025b1f7c8fe78b7510ab080be558a646c26b89b281a9348ad195'
'3f025f34bf0c9b084905d24a7195315bccba45a617a02cd051cd5ee791fad098'
'4e8377b8bd163cc29056e45f59598e36dc6f00029166bdce4c78a88f1f9b3ed4'
'e93902af20bee41ca7708280f30a1d087ab8c6f86d18939bdd56789cd1a73531'
'185033761dbfa2ff206df2adf87abb79d4733b5c84a6c68c429872a0755818d9'
'7b9bc59b174da93a547429b2f751047c758657953f6e2fb398e73b5ebf0f55e3'
'0391a4b267ba7251ca74ff2e98bf4c0332a14b618e8147a9341ec5617e45d9d9'
'96f5b4de10b56563da0cb3c8b9ee9a88f89e5385acd66cadf4acab9628dc9848')
# Helper macros to help make tasks easier #
apply_patch_with_msg() {
for _fname in "$@"
do
msg2 "Applying ${_fname}"
patch -Nbp1 -i "${srcdir}"/${_fname}
done
}
del_file_exists() {
for _fname in "$@"
do
if [ -f $_fname ] || [ -d $_fname ]; then
rm -rf $_fname
fi
done
}
# =========================================== #
prepare() {
cd ${_realname}-${pkgver}
del_file_exists pathtools.c pathtools.h
apply_patch_with_msg \
0015-fix-unused-parameters-warning.all.patch \
0016-WARNING-to-be-fixed.all.patch \
0019-unused-flags.all.patch \
0020-fix-warnings.patch \
0023-fix-sitedir-detection.mingw.patch \
0026-mingw-relocate.patch \
libxml2-2.9.9-python.patch \
libxml2-disable-version-script.patch
# https://gitlab.gnome.org/GNOME/libxml2/-/issues/64
# https://github.com/msys2/MINGW-packages/issues/7955
apply_patch_with_msg \
0027-decoding-segfault.patch
libtoolize --copy --force
aclocal
automake --add-missing
autoconf
}
build() {
# Static build
msg2 "Building static for ${CARCH}"
mkdir -p ${srcdir}/build-static-${CARCH} && cd ${srcdir}/build-static-${CARCH}
../${_realname}-${pkgver}/configure \
--prefix=${MINGW_PREFIX} \
--host=${MINGW_CHOST} \
--target=${MINGW_CHOST} \
--build="${MINGW_CHOST}" \
--without-python \
--with-modules \
--enable-static \
--disable-shared \
--with-threads=win32 \
CFLAGS="${CFLAGS} -DLIBXML_STATIC_FOR_DLL -DNOLIBTOOL"
make
# Shared build
msg2 "Building shared with Python ext ${CARCH}"
[[ -d "${srcdir}"/build-shared-${CARCH} ]] && rm -rf "${srcdir}"/build-shared-${CARCH}
mkdir -p ${srcdir}/build-shared-${CARCH} && cd ${srcdir}/build-shared-${CARCH}
../${_realname}-${pkgver}/configure \
--prefix=${MINGW_PREFIX} \
--host=${MINGW_CHOST} \
--target=${MINGW_CHOST} \
--build="${MINGW_CHOST}" \
--with-python=${MINGW_PREFIX}/bin/python \
--with-modules \
--disable-static \
--enable-shared \
--with-threads=win32
# Hack for mingw python
local PREFIX_DEPS=$(cygpath -am ${MINGW_PREFIX})
find . -type f -name "Makefile" -exec sed -i "s|${PREFIX_DEPS}|${MINGW_PREFIX}|g" {} \;
make
}
check() {
cd ${srcdir}/build-shared-${CARCH}
cp -r ../xmlconf .
make check
}
package() {
# First install shared
cd ${srcdir}/build-shared-${CARCH}
make install DESTDIR="${pkgdir}"
# then manually install static
cd ${srcdir}/build-static-${CARCH}
install -m 0644 .libs/libxml2.a "${pkgdir}${MINGW_PREFIX}"/lib/
# License
install -Dm644 "${srcdir}/${_realname}-${pkgver}/COPYING" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING"
rm "${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}-${pkgver}/Copyright" # This is the same file as COPYING
# Remove hard coded library path from xlm2-config and libxml-2.0.pc files
local PREFIX_DEPS=$(cygpath -am ${MINGW_PREFIX})
pushd "${pkgdir}${MINGW_PREFIX}/bin" > /dev/null
sed -s "s|${PREFIX_DEPS}\/lib|\${libdir}|g" -i ./xml2-config
popd > /dev/null
pushd "${pkgdir}${MINGW_PREFIX}/lib/pkgconfig" > /dev/null
sed -s "s|${PREFIX_DEPS}\/lib|\${libdir}|g" -i ./libxml-2.0.pc
popd > /dev/null
}