+++ /dev/null
-.test:
- # The image was generated with the following Dockerfile. It is also used
- # for libxslt, that's why we need git and libgcrypt-dev.
- #
- # FROM ubuntu:20.04
- # ENV DEBIAN_FRONTEND=noninteractive
- # RUN apt-get update && \
- # apt-get upgrade -y && \
- # apt-get install -y --no-install-recommends \
- # curl git ca-certificates \
- # autoconf automake libtool pkg-config \
- # make gcc clang llvm \
- # zlib1g-dev liblzma-dev libgcrypt-dev \
- # python-dev python3-dev \
- # cmake
- # WORKDIR /tests
- # RUN curl https://www.w3.org/XML/Test/xmlts20080827.tar.gz |tar xz
- image: registry.gitlab.gnome.org/gnome/libxml2
- script:
- - |
- ln -s /tests/xmlconf
- sh autogen.sh $CONFIG
- make -j$(nproc) V=1 CFLAGS="$CFLAGS -Werror"
- make check
-
-gcc:
- extends: .test
- variables:
- CFLAGS: "-O2 -std=c89 -D_XOPEN_SOURCE=700"
-
-gcc:python3:
- extends: .test
- only:
- - schedules
- variables:
- CONFIG: "--with-python=/usr/bin/python3"
- CFLAGS: "-O2"
-
-clang:asan:
- extends: .test
- variables:
- CONFIG: "--without-python"
- CC: clang
- CFLAGS: "-O2 -g -fno-omit-frame-pointer -fsanitize=address,undefined,unsigned-integer-overflow -fno-sanitize-recover=all -Wno-error=cast-align"
- # LeakSanitizer requires SYS_CAP_PTRACE
- ASAN_OPTIONS: "detect_leaks=0"
- UBSAN_OPTIONS: "print_stacktrace=1"
-
-clang:msan:
- extends: .test
- only:
- - schedules
- variables:
- CONFIG: "--without-python --without-zlib --without-lzma"
- CC: clang
- CFLAGS: "-O2 -g -fno-omit-frame-pointer -fsanitize=memory -Wno-error=cast-align"
-
-.cmake:linux:
- image: registry.gitlab.gnome.org/gnome/libxml2
- script:
- - cmake -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DCMAKE_INSTALL_PREFIX=libxml2-install -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLIBXML2_XMLCONF_WORKING_DIR=/tests -S . -B libxml2-build
- - cmake --build libxml2-build --target install
- - mkdir -p libxml2-install/share/libxml2
- - cp Copyright libxml2-install/share/libxml2
- - cd libxml2-build
- - ctest -VV
- after_script:
- - cd libxml2-install
- - tar -czf ../libxml2-$CI_COMMIT_SHORT_SHA-$CC-$SUFFIX.tar.gz *
- artifacts:
- paths:
- - libxml2-$CI_COMMIT_SHORT_SHA-$CC-$SUFFIX.tar.gz
- expire_in: 1 day
-
-cmake:linux:gcc:shared:
- extends: .cmake:linux
- only:
- - schedules
- variables:
- BUILD_SHARED_LIBS: "ON"
- CC: gcc
- SUFFIX: shared
-
-cmake:linux:gcc:static:
- extends: .cmake:linux
- only:
- - schedules
- variables:
- BUILD_SHARED_LIBS: "OFF"
- CC: gcc
- SUFFIX: static
-
-cmake:linux:clang:shared:
- extends: .cmake:linux
- only:
- - schedules
- variables:
- BUILD_SHARED_LIBS: "ON"
- CC: clang
- SUFFIX: shared
-
-cmake:linux:clang:static:
- extends: .cmake:linux
- only:
- - schedules
- variables:
- BUILD_SHARED_LIBS: "OFF"
- CC: clang
- SUFFIX: static
-
-.cmake:mingw:
- tags:
- - win32-ps
- before_script:
- - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12"
- - $Env:Path="C:\msys64\$Env:MINGW_PATH\bin;C:\msys64\usr\bin;$Env:Path"
- - pacman --noconfirm -Syu
- - pacman --noconfirm -S
- $Env:MINGW_PACKAGE_PREFIX-cmake
- $Env:MINGW_PACKAGE_PREFIX-libiconv
- $Env:MINGW_PACKAGE_PREFIX-ninja
- $Env:MINGW_PACKAGE_PREFIX-python
- $Env:MINGW_PACKAGE_PREFIX-python2
- $Env:MINGW_PACKAGE_PREFIX-xz
- $Env:MINGW_PACKAGE_PREFIX-zlib
- - if (-not (Test-Path 7za.exe)) {
- Invoke-WebRequest -Uri https://www.7-zip.org/a/7z1900-extra.7z -OutFile 7z1900-extra.7z ;
- cmake -E tar xf 7z1900-extra.7z 7za.exe
- }
- - if (-not (Test-Path libxml2-build/xmlconf)) {
- Invoke-WebRequest -Uri https://www.w3.org/XML/Test/xmlts20080827.tar.gz -OutFile xmlts20080827.tar.gz ;
- .\7za.exe x xmlts20080827.tar.gz -olibxml2-build
- }
- script:
- - cmake -G Ninja -DBUILD_SHARED_LIBS="$Env:BUILD_SHARED_LIBS" -DCMAKE_INSTALL_PREFIX=libxml2-install -DCMAKE_BUILD_TYPE=RelWithDebInfo -S . -B libxml2-build
- - cmake --build libxml2-build --target install
- - New-Item -ItemType Directory libxml2-install\share\libxml2
- - Copy-Item Copyright libxml2-install\share\libxml2
- - cd libxml2-build
- - ctest -VV
- after_script:
- - .\7za.exe a libxml2-$Env:CI_COMMIT_SHORT_SHA-$Env:MINGW_PACKAGE_PREFIX-$Env:SUFFIX.7z .\libxml2-install\*
- cache:
- key: "$MINGW_PACKAGE_PREFIX"
- paths:
- - libxml2-build/xmlconf/
- - 7za.exe
- artifacts:
- paths:
- - libxml2-$Env:CI_COMMIT_SHORT_SHA-$Env:MINGW_PACKAGE_PREFIX-$Env:SUFFIX.7z
- expire_in: 1 day
-
-cmake:mingw:w64-i686:shared:
- extends: .cmake:mingw
- only:
- - schedules
- variables:
- BUILD_SHARED_LIBS: "ON"
- MINGW_PACKAGE_PREFIX: mingw-w64-i686
- MINGW_PATH: mingw32
- SUFFIX: shared
-
-cmake:mingw:w64-i686:static:
- extends: .cmake:mingw
- only:
- - schedules
- variables:
- BUILD_SHARED_LIBS: "OFF"
- MINGW_PACKAGE_PREFIX: mingw-w64-i686
- MINGW_PATH: mingw32
- SUFFIX: static
-
-cmake:mingw:w64-x86_64:shared:
- extends: .cmake:mingw
- variables:
- BUILD_SHARED_LIBS: "ON"
- MINGW_PACKAGE_PREFIX: mingw-w64-x86_64
- MINGW_PATH: mingw64
- SUFFIX: shared
-
-cmake:mingw:w64-x86_64:static:
- extends: .cmake:mingw
- only:
- - schedules
- variables:
- BUILD_SHARED_LIBS: "OFF"
- MINGW_PACKAGE_PREFIX: mingw-w64-x86_64
- MINGW_PATH: mingw64
- SUFFIX: static
-
-.cmake:msvc:
- tags:
- - win32-ps
- variables:
- CMAKE_VERSION: 3.19.4
- before_script:
- - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12"
- - if (-not (Test-Path cmake-$Env:CMAKE_VERSION-win64-x64)) {
- Invoke-WebRequest -Uri http://github.com/Kitware/CMake/releases/download/v$Env:CMAKE_VERSION/cmake-$Env:CMAKE_VERSION-win64-x64.zip -OutFile cmake-$Env:CMAKE_VERSION-win64-x64.zip ;
- Expand-Archive cmake-$Env:CMAKE_VERSION-win64-x64.zip -DestinationPath .
- }
- - $Env:Path="$Env:CI_PROJECT_DIR\cmake-$Env:CMAKE_VERSION-win64-x64\bin;$Env:Path"
- - if (-not (Test-Path 7za.exe)) {
- Invoke-WebRequest -Uri https://www.7-zip.org/a/7z1900-extra.7z -OutFile 7z1900-extra.7z ;
- cmake -E tar xf 7z1900-extra.7z 7za.exe
- }
- - if (-not (Test-Path libxml2-build/xmlconf)) {
- Invoke-WebRequest -Uri https://www.w3.org/XML/Test/xmlts20080827.tar.gz -OutFile xmlts20080827.tar.gz ;
- .\7za.exe x xmlts20080827.tar.gz -olibxml2-build
- }
- script:
- - cmake -DBUILD_SHARED_LIBS="$Env:BUILD_SHARED_LIBS" -DCMAKE_INSTALL_PREFIX=libxml2-install -DLIBXML2_WITH_ICONV=OFF -DLIBXML2_WITH_LZMA=OFF -DLIBXML2_WITH_PYTHON=OFF -DLIBXML2_WITH_ZLIB=OFF -S . -B libxml2-build
- - cmake --build libxml2-build --config Debug --target install
- - cmake --build libxml2-build --config Release --target install
- - New-Item -ItemType Directory libxml2-install\share\libxml2
- - Copy-Item Copyright libxml2-install\share\libxml2
- - cd libxml2-build
- - ctest -C Debug -VV
- - ctest -C Release -VV
- after_script:
- - .\7za.exe a libxml2-$Env:CI_COMMIT_SHORT_SHA-$Env:CMAKE_GENERATOR_TOOLSET-$Env:CMAKE_GENERATOR_PLATFORM-$Env:SUFFIX.7z .\libxml2-install\*
- cache:
- key: "msvc"
- paths:
- - cmake-$Env:CMAKE_VERSION-win64-x64/
- - libxml2-build/xmlconf/
- - 7za.exe
- artifacts:
- paths:
- - libxml2-$Env:CI_COMMIT_SHORT_SHA-$Env:CMAKE_GENERATOR_TOOLSET-$Env:CMAKE_GENERATOR_PLATFORM-$Env:SUFFIX.7z
- expire_in: 1 day
-
-.cmake:msvc:v141:
- extends: .cmake:msvc
- variables:
- CMAKE_GENERATOR: Visual Studio 15 2017
- CMAKE_GENERATOR_TOOLSET: v141
-
-.cmake:msvc:v141:x64:
- extends: .cmake:msvc:v141
- variables:
- CMAKE_GENERATOR_PLATFORM: x64
-
-cmake:msvc:v141:x64:shared:
- extends: .cmake:msvc:v141:x64
- variables:
- BUILD_SHARED_LIBS: "ON"
- SUFFIX: shared
-
-cmake:msvc:v141:x64:static:
- extends: .cmake:msvc:v141:x64
- only:
- - schedules
- variables:
- BUILD_SHARED_LIBS: "OFF"
- SUFFIX: static
-
-.cmake:msvc:v141:x86:
- extends: .cmake:msvc:v141
- only:
- - schedules
- variables:
- CMAKE_GENERATOR_PLATFORM: Win32
-
-cmake:msvc:v141:x86:shared:
- extends: .cmake:msvc:v141:x86
- only:
- - schedules
- variables:
- BUILD_SHARED_LIBS: "ON"
- SUFFIX: shared
-
-cmake:msvc:v141:x86:static:
- extends: .cmake:msvc:v141:x86
- variables:
- BUILD_SHARED_LIBS: "OFF"
- SUFFIX: static
--- /dev/null
+Name: libxml2
+Version: 2.9.12
+Release: 0
+Summary: A Library to Manipulate XML Files
+License: MIT
+Group: System/Libraries
+Url: http://xmlsoft.org
+# Source ftp://xmlsoft.org/libxml2/libxml2-git-snapshot.tar.gz changes every day
+Source: ftp://xmlsoft.org/libxml2/%{name}-%{version}.tar.gz
+Source2: baselibs.conf
+Source3: Add_pie_compile_option.patch
+Source1001: libxml2.manifest
+BuildRequires: pkg-config
+BuildRequires: readline-devel
+BuildRequires: xz-devel
+BuildRequires: zlib-devel
+
+%description
+The XML C library was initially developed for the GNOME project. It is
+now used by many programs to load and save extensible data structures
+or manipulate any kind of XML files.
+
+This library implements a number of existing standards related to
+markup languages, including the XML standard, name spaces in XML, XML
+Base, RFC 2396, XPath, XPointer, HTML4, XInclude, SGML catalogs, and
+XML catalogs. In most cases, libxml tries to implement the
+specification in a rather strict way. To some extent, it provides
+support for the following specifications, but does not claim to
+implement them: DOM, FTP client, HTTP client, and SAX.
+
+The library also supports RelaxNG. Support for W3C XML Schemas is in
+progress.
+
+
+%package tools
+Summary: Tools using libxml
+Group: System/Libraries
+
+%description tools
+This package contains xmllint, a very useful tool proving libxml's power.
+
+%package devel
+Summary: Include Files and Libraries mandatory for Development
+Group: Development/Libraries
+Requires: %{name} = %{version}
+Requires: %{name}-tools = %{version}
+Requires: glibc-devel
+Requires: readline-devel
+Requires: xz-devel
+Requires: zlib-devel
+
+%description devel
+This package contains all necessary include files and libraries needed
+to develop applications that require these.
+
+%prep
+%setup -q
+cp %{SOURCE1001} .
+%{__patch} -p1 < %{SOURCE3}
+
+%build
+export CFLAGS+=" -fPIC"
+chmod +x autogen.sh
+%autogen
+%configure --disable-static \
+ --docdir=%_docdir/%name \
+ --with-html-dir=%_docdir/%name/html \
+ --with-fexceptions \
+ --with-history \
+ --without-python \
+ --enable-ipv6 \
+ --with-sax1 \
+ --with-regexps \
+ --with-threads \
+ --with-reader \
+ --with-http
+
+make %{?_smp_mflags} BASE_DIR="%_docdir" DOC_MODULE="%name"
+
+%check
+rm -f /tmp/%{name}_test
+%__make runtests
+
+
+%install
+make install DESTDIR="%buildroot" BASE_DIR="%_docdir" DOC_MODULE="%name"
+ln -s libxml2/libxml %{buildroot}%{_includedir}/libxml
+
+%remove_docs
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%manifest %{name}.manifest
+%defattr(-, root, root)
+%license Copyright
+%{_libdir}/lib*.so.*
+
+%files tools
+%manifest %{name}.manifest
+%defattr(-, root, root)
+%license Copyright
+%{_bindir}/xmllint
+%{_bindir}/xmlcatalog
+
+%files devel
+%manifest %{name}.manifest
+%defattr(-, root, root)
+%license Copyright
+%{_bindir}/xml2-config
+%dir %{_datadir}/aclocal
+%{_datadir}/aclocal/libxml.m4
+%{_includedir}/libxml
+%{_includedir}/libxml2
+%{_libdir}/lib*.so
+# libxml2.la is needed for the python-libxml2 build. Deleting it breaks build of python-libxml2.
+%{_libdir}/libxml2.la
+%{_libdir}/*.sh
+%{_libdir}/pkgconfig/*.pc
+%{_libdir}/cmake/libxml2/libxml2-config.cmake
+
+%changelog