153aa9179Sopenharmony_ci.test:
253aa9179Sopenharmony_ci  # The image was generated with the following Dockerfile. It is also used
353aa9179Sopenharmony_ci  # for libxslt, that's why we need git and libgcrypt-dev.
453aa9179Sopenharmony_ci  #
553aa9179Sopenharmony_ci  # FROM ubuntu:20.04
653aa9179Sopenharmony_ci  # ENV DEBIAN_FRONTEND=noninteractive
753aa9179Sopenharmony_ci  # RUN apt-get update && \
853aa9179Sopenharmony_ci  #     apt-get upgrade -y && \
953aa9179Sopenharmony_ci  #     apt-get install -y --no-install-recommends \
1053aa9179Sopenharmony_ci  #         curl git ca-certificates \
1153aa9179Sopenharmony_ci  #         autoconf automake libtool pkg-config \
1253aa9179Sopenharmony_ci  #         make gcc clang llvm \
1353aa9179Sopenharmony_ci  #         zlib1g-dev liblzma-dev libgcrypt-dev \
1453aa9179Sopenharmony_ci  #         python-dev python3-dev \
1553aa9179Sopenharmony_ci  #         cmake
1653aa9179Sopenharmony_ci  # WORKDIR /tests
1753aa9179Sopenharmony_ci  # RUN curl https://www.w3.org/XML/Test/xmlts20080827.tar.gz |tar xz
1853aa9179Sopenharmony_ci  image: registry.gitlab.gnome.org/gnome/libxml2
1953aa9179Sopenharmony_ci  script:
2053aa9179Sopenharmony_ci    - |
2153aa9179Sopenharmony_ci      ln -s /tests/xmlconf
2253aa9179Sopenharmony_ci      sh autogen.sh $CONFIG
2353aa9179Sopenharmony_ci      make -j$(nproc) V=1 CFLAGS="$CFLAGS -Werror"
2453aa9179Sopenharmony_ci      make check
2553aa9179Sopenharmony_ci
2653aa9179Sopenharmony_cigcc:
2753aa9179Sopenharmony_ci  extends: .test
2853aa9179Sopenharmony_ci  variables:
2953aa9179Sopenharmony_ci    CFLAGS: "-O2 -std=c89 -D_XOPEN_SOURCE=700"
3053aa9179Sopenharmony_ci
3153aa9179Sopenharmony_cigcc:python3:
3253aa9179Sopenharmony_ci  extends: .test
3353aa9179Sopenharmony_ci  only:
3453aa9179Sopenharmony_ci    - schedules
3553aa9179Sopenharmony_ci  variables:
3653aa9179Sopenharmony_ci    CONFIG: "--with-python=/usr/bin/python3"
3753aa9179Sopenharmony_ci    CFLAGS: "-O2"
3853aa9179Sopenharmony_ci
3953aa9179Sopenharmony_ciclang:asan:
4053aa9179Sopenharmony_ci  extends: .test
4153aa9179Sopenharmony_ci  variables:
4253aa9179Sopenharmony_ci    CONFIG: "--without-python"
4353aa9179Sopenharmony_ci    CC: clang
4453aa9179Sopenharmony_ci    CFLAGS: "-O2 -g -fno-omit-frame-pointer -fsanitize=address,undefined,integer -fno-sanitize-recover=all -Wno-error=cast-align"
4553aa9179Sopenharmony_ci    # LeakSanitizer requires SYS_CAP_PTRACE
4653aa9179Sopenharmony_ci    ASAN_OPTIONS: "detect_leaks=0"
4753aa9179Sopenharmony_ci    UBSAN_OPTIONS: "print_stacktrace=1"
4853aa9179Sopenharmony_ci
4953aa9179Sopenharmony_ciclang:msan:
5053aa9179Sopenharmony_ci  extends: .test
5153aa9179Sopenharmony_ci  only:
5253aa9179Sopenharmony_ci    - schedules
5353aa9179Sopenharmony_ci  variables:
5453aa9179Sopenharmony_ci    CONFIG: "--without-python --without-zlib --without-lzma"
5553aa9179Sopenharmony_ci    CC: clang
5653aa9179Sopenharmony_ci    CFLAGS: "-O2 -g -fno-omit-frame-pointer -fsanitize=memory -Wno-error=cast-align"
5753aa9179Sopenharmony_ci
5853aa9179Sopenharmony_ci.cmake:linux:
5953aa9179Sopenharmony_ci  image: registry.gitlab.gnome.org/gnome/libxml2
6053aa9179Sopenharmony_ci  script:
6153aa9179Sopenharmony_ci    - 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
6253aa9179Sopenharmony_ci    - cmake --build libxml2-build --target install
6353aa9179Sopenharmony_ci    - mkdir -p libxml2-install/share/libxml2
6453aa9179Sopenharmony_ci    - cp Copyright libxml2-install/share/libxml2
6553aa9179Sopenharmony_ci    - cd libxml2-build
6653aa9179Sopenharmony_ci    - ctest -VV
6753aa9179Sopenharmony_ci  after_script:
6853aa9179Sopenharmony_ci    - cd libxml2-install
6953aa9179Sopenharmony_ci    - tar -czf ../libxml2-$CI_COMMIT_SHORT_SHA-$CC-$SUFFIX.tar.gz *
7053aa9179Sopenharmony_ci  artifacts:
7153aa9179Sopenharmony_ci    paths:
7253aa9179Sopenharmony_ci      - libxml2-$CI_COMMIT_SHORT_SHA-$CC-$SUFFIX.tar.gz
7353aa9179Sopenharmony_ci    expire_in: 1 day
7453aa9179Sopenharmony_ci
7553aa9179Sopenharmony_cicmake:linux:gcc:shared:
7653aa9179Sopenharmony_ci  extends: .cmake:linux
7753aa9179Sopenharmony_ci  only:
7853aa9179Sopenharmony_ci    - schedules
7953aa9179Sopenharmony_ci  variables:
8053aa9179Sopenharmony_ci    BUILD_SHARED_LIBS: "ON"
8153aa9179Sopenharmony_ci    CC: gcc
8253aa9179Sopenharmony_ci    SUFFIX: shared
8353aa9179Sopenharmony_ci
8453aa9179Sopenharmony_cicmake:linux:gcc:static:
8553aa9179Sopenharmony_ci  extends: .cmake:linux
8653aa9179Sopenharmony_ci  only:
8753aa9179Sopenharmony_ci    - schedules
8853aa9179Sopenharmony_ci  variables:
8953aa9179Sopenharmony_ci    BUILD_SHARED_LIBS: "OFF"
9053aa9179Sopenharmony_ci    CC: gcc
9153aa9179Sopenharmony_ci    SUFFIX: static
9253aa9179Sopenharmony_ci
9353aa9179Sopenharmony_cicmake:linux:clang:shared:
9453aa9179Sopenharmony_ci  extends: .cmake:linux
9553aa9179Sopenharmony_ci  only:
9653aa9179Sopenharmony_ci    - schedules
9753aa9179Sopenharmony_ci  variables:
9853aa9179Sopenharmony_ci    BUILD_SHARED_LIBS: "ON"
9953aa9179Sopenharmony_ci    CC: clang
10053aa9179Sopenharmony_ci    SUFFIX: shared
10153aa9179Sopenharmony_ci
10253aa9179Sopenharmony_cicmake:linux:clang:static:
10353aa9179Sopenharmony_ci  extends: .cmake:linux
10453aa9179Sopenharmony_ci  only:
10553aa9179Sopenharmony_ci    - schedules
10653aa9179Sopenharmony_ci  variables:
10753aa9179Sopenharmony_ci    BUILD_SHARED_LIBS: "OFF"
10853aa9179Sopenharmony_ci    CC: clang
10953aa9179Sopenharmony_ci    SUFFIX: static
11053aa9179Sopenharmony_ci
11153aa9179Sopenharmony_ci.cmake:mingw:
11253aa9179Sopenharmony_ci  tags:
11353aa9179Sopenharmony_ci    - win32-ps
11453aa9179Sopenharmony_ci  before_script:
11553aa9179Sopenharmony_ci    - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12"
11653aa9179Sopenharmony_ci    - $Env:Path="C:\msys64\$Env:MINGW_PATH\bin;C:\msys64\usr\bin;$Env:Path"
11753aa9179Sopenharmony_ci    - pacman --noconfirm -Syu
11853aa9179Sopenharmony_ci    - pacman --noconfirm -S
11953aa9179Sopenharmony_ci        $Env:MINGW_PACKAGE_PREFIX-cmake
12053aa9179Sopenharmony_ci        $Env:MINGW_PACKAGE_PREFIX-libiconv
12153aa9179Sopenharmony_ci        $Env:MINGW_PACKAGE_PREFIX-ninja
12253aa9179Sopenharmony_ci        $Env:MINGW_PACKAGE_PREFIX-python
12353aa9179Sopenharmony_ci        $Env:MINGW_PACKAGE_PREFIX-python2
12453aa9179Sopenharmony_ci        $Env:MINGW_PACKAGE_PREFIX-xz
12553aa9179Sopenharmony_ci        $Env:MINGW_PACKAGE_PREFIX-zlib
12653aa9179Sopenharmony_ci    - if (-not (Test-Path 7za.exe)) {
12753aa9179Sopenharmony_ci        Invoke-WebRequest -Uri https://www.7-zip.org/a/7z1900-extra.7z -OutFile 7z1900-extra.7z ;
12853aa9179Sopenharmony_ci        cmake -E tar xf 7z1900-extra.7z 7za.exe
12953aa9179Sopenharmony_ci      }
13053aa9179Sopenharmony_ci    - if (-not (Test-Path libxml2-build/xmlconf)) {
13153aa9179Sopenharmony_ci        Invoke-WebRequest -Uri https://www.w3.org/XML/Test/xmlts20080827.tar.gz -OutFile xmlts20080827.tar.gz ;
13253aa9179Sopenharmony_ci        .\7za.exe x xmlts20080827.tar.gz -olibxml2-build
13353aa9179Sopenharmony_ci      }
13453aa9179Sopenharmony_ci  script:
13553aa9179Sopenharmony_ci    - cmake -G Ninja -DBUILD_SHARED_LIBS="$Env:BUILD_SHARED_LIBS" -DCMAKE_INSTALL_PREFIX=libxml2-install -DCMAKE_BUILD_TYPE=RelWithDebInfo -S . -B libxml2-build
13653aa9179Sopenharmony_ci    - cmake --build libxml2-build --target install
13753aa9179Sopenharmony_ci    - New-Item -ItemType Directory libxml2-install\share\libxml2
13853aa9179Sopenharmony_ci    - Copy-Item Copyright libxml2-install\share\libxml2
13953aa9179Sopenharmony_ci    - cd libxml2-build
14053aa9179Sopenharmony_ci    - ctest -VV
14153aa9179Sopenharmony_ci  after_script:
14253aa9179Sopenharmony_ci    - .\7za.exe a libxml2-$Env:CI_COMMIT_SHORT_SHA-$Env:MINGW_PACKAGE_PREFIX-$Env:SUFFIX.7z .\libxml2-install\*
14353aa9179Sopenharmony_ci  cache:
14453aa9179Sopenharmony_ci    key: "$MINGW_PACKAGE_PREFIX"
14553aa9179Sopenharmony_ci    paths:
14653aa9179Sopenharmony_ci      - libxml2-build/xmlconf/
14753aa9179Sopenharmony_ci      - 7za.exe
14853aa9179Sopenharmony_ci  artifacts:
14953aa9179Sopenharmony_ci    paths:
15053aa9179Sopenharmony_ci      - libxml2-$Env:CI_COMMIT_SHORT_SHA-$Env:MINGW_PACKAGE_PREFIX-$Env:SUFFIX.7z
15153aa9179Sopenharmony_ci    expire_in: 1 day
15253aa9179Sopenharmony_ci
15353aa9179Sopenharmony_cicmake:mingw:w64-i686:shared:
15453aa9179Sopenharmony_ci  extends: .cmake:mingw
15553aa9179Sopenharmony_ci  only:
15653aa9179Sopenharmony_ci    - schedules
15753aa9179Sopenharmony_ci  variables:
15853aa9179Sopenharmony_ci    BUILD_SHARED_LIBS: "ON"
15953aa9179Sopenharmony_ci    MINGW_PACKAGE_PREFIX: mingw-w64-i686
16053aa9179Sopenharmony_ci    MINGW_PATH: mingw32
16153aa9179Sopenharmony_ci    SUFFIX: shared
16253aa9179Sopenharmony_ci
16353aa9179Sopenharmony_cicmake:mingw:w64-i686:static:
16453aa9179Sopenharmony_ci  extends: .cmake:mingw
16553aa9179Sopenharmony_ci  only:
16653aa9179Sopenharmony_ci    - schedules
16753aa9179Sopenharmony_ci  variables:
16853aa9179Sopenharmony_ci    BUILD_SHARED_LIBS: "OFF"
16953aa9179Sopenharmony_ci    MINGW_PACKAGE_PREFIX: mingw-w64-i686
17053aa9179Sopenharmony_ci    MINGW_PATH: mingw32
17153aa9179Sopenharmony_ci    SUFFIX: static
17253aa9179Sopenharmony_ci
17353aa9179Sopenharmony_cicmake:mingw:w64-x86_64:shared:
17453aa9179Sopenharmony_ci  extends: .cmake:mingw
17553aa9179Sopenharmony_ci  variables:
17653aa9179Sopenharmony_ci    BUILD_SHARED_LIBS: "ON"
17753aa9179Sopenharmony_ci    MINGW_PACKAGE_PREFIX: mingw-w64-x86_64
17853aa9179Sopenharmony_ci    MINGW_PATH: mingw64
17953aa9179Sopenharmony_ci    SUFFIX: shared
18053aa9179Sopenharmony_ci
18153aa9179Sopenharmony_cicmake:mingw:w64-x86_64:static:
18253aa9179Sopenharmony_ci  extends: .cmake:mingw
18353aa9179Sopenharmony_ci  only:
18453aa9179Sopenharmony_ci    - schedules
18553aa9179Sopenharmony_ci  variables:
18653aa9179Sopenharmony_ci    BUILD_SHARED_LIBS: "OFF"
18753aa9179Sopenharmony_ci    MINGW_PACKAGE_PREFIX: mingw-w64-x86_64
18853aa9179Sopenharmony_ci    MINGW_PATH: mingw64
18953aa9179Sopenharmony_ci    SUFFIX: static
19053aa9179Sopenharmony_ci
19153aa9179Sopenharmony_ci.cmake:msvc:
19253aa9179Sopenharmony_ci  tags:
19353aa9179Sopenharmony_ci    - win32-ps
19453aa9179Sopenharmony_ci  variables:
19553aa9179Sopenharmony_ci    CMAKE_VERSION: 3.19.4
19653aa9179Sopenharmony_ci  before_script:
19753aa9179Sopenharmony_ci    - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12"
19853aa9179Sopenharmony_ci    - if (-not (Test-Path cmake-$Env:CMAKE_VERSION-win64-x64)) {
19953aa9179Sopenharmony_ci        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 ;
20053aa9179Sopenharmony_ci        Expand-Archive cmake-$Env:CMAKE_VERSION-win64-x64.zip -DestinationPath .
20153aa9179Sopenharmony_ci      }
20253aa9179Sopenharmony_ci    - $Env:Path="$Env:CI_PROJECT_DIR\cmake-$Env:CMAKE_VERSION-win64-x64\bin;$Env:Path"
20353aa9179Sopenharmony_ci    - if (-not (Test-Path 7za.exe)) {
20453aa9179Sopenharmony_ci        Invoke-WebRequest -Uri https://www.7-zip.org/a/7z1900-extra.7z -OutFile 7z1900-extra.7z ;
20553aa9179Sopenharmony_ci        cmake -E tar xf 7z1900-extra.7z 7za.exe
20653aa9179Sopenharmony_ci      }
20753aa9179Sopenharmony_ci    - if (-not (Test-Path libxml2-build/xmlconf)) {
20853aa9179Sopenharmony_ci        Invoke-WebRequest -Uri https://www.w3.org/XML/Test/xmlts20080827.tar.gz -OutFile xmlts20080827.tar.gz ;
20953aa9179Sopenharmony_ci        .\7za.exe x xmlts20080827.tar.gz -olibxml2-build
21053aa9179Sopenharmony_ci      }
21153aa9179Sopenharmony_ci  script:
21253aa9179Sopenharmony_ci    - 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
21353aa9179Sopenharmony_ci    - cmake --build libxml2-build --config Debug --target install
21453aa9179Sopenharmony_ci    - cmake --build libxml2-build --config Release --target install
21553aa9179Sopenharmony_ci    - New-Item -ItemType Directory libxml2-install\share\libxml2
21653aa9179Sopenharmony_ci    - Copy-Item Copyright libxml2-install\share\libxml2
21753aa9179Sopenharmony_ci    - cd libxml2-build
21853aa9179Sopenharmony_ci    - ctest -C Debug -VV
21953aa9179Sopenharmony_ci    - ctest -C Release -VV
22053aa9179Sopenharmony_ci  after_script:
22153aa9179Sopenharmony_ci    - .\7za.exe a libxml2-$Env:CI_COMMIT_SHORT_SHA-$Env:CMAKE_GENERATOR_TOOLSET-$Env:CMAKE_GENERATOR_PLATFORM-$Env:SUFFIX.7z .\libxml2-install\*
22253aa9179Sopenharmony_ci  cache:
22353aa9179Sopenharmony_ci    key: "msvc"
22453aa9179Sopenharmony_ci    paths:
22553aa9179Sopenharmony_ci      - cmake-$Env:CMAKE_VERSION-win64-x64/
22653aa9179Sopenharmony_ci      - libxml2-build/xmlconf/
22753aa9179Sopenharmony_ci      - 7za.exe
22853aa9179Sopenharmony_ci  artifacts:
22953aa9179Sopenharmony_ci    paths:
23053aa9179Sopenharmony_ci      - libxml2-$Env:CI_COMMIT_SHORT_SHA-$Env:CMAKE_GENERATOR_TOOLSET-$Env:CMAKE_GENERATOR_PLATFORM-$Env:SUFFIX.7z
23153aa9179Sopenharmony_ci    expire_in: 1 day
23253aa9179Sopenharmony_ci
23353aa9179Sopenharmony_ci.cmake:msvc:v141:
23453aa9179Sopenharmony_ci  extends: .cmake:msvc
23553aa9179Sopenharmony_ci  variables:
23653aa9179Sopenharmony_ci    CMAKE_GENERATOR: Visual Studio 15 2017
23753aa9179Sopenharmony_ci    CMAKE_GENERATOR_TOOLSET: v141
23853aa9179Sopenharmony_ci
23953aa9179Sopenharmony_ci.cmake:msvc:v141:x64:
24053aa9179Sopenharmony_ci  extends: .cmake:msvc:v141
24153aa9179Sopenharmony_ci  variables:
24253aa9179Sopenharmony_ci    CMAKE_GENERATOR_PLATFORM: x64
24353aa9179Sopenharmony_ci
24453aa9179Sopenharmony_cicmake:msvc:v141:x64:shared:
24553aa9179Sopenharmony_ci  extends: .cmake:msvc:v141:x64
24653aa9179Sopenharmony_ci  variables:
24753aa9179Sopenharmony_ci    BUILD_SHARED_LIBS: "ON"
24853aa9179Sopenharmony_ci    SUFFIX: shared
24953aa9179Sopenharmony_ci
25053aa9179Sopenharmony_cicmake:msvc:v141:x64:static:
25153aa9179Sopenharmony_ci  extends: .cmake:msvc:v141:x64
25253aa9179Sopenharmony_ci  only:
25353aa9179Sopenharmony_ci    - schedules
25453aa9179Sopenharmony_ci  variables:
25553aa9179Sopenharmony_ci    BUILD_SHARED_LIBS: "OFF"
25653aa9179Sopenharmony_ci    SUFFIX: static
25753aa9179Sopenharmony_ci
25853aa9179Sopenharmony_ci.cmake:msvc:v141:x86:
25953aa9179Sopenharmony_ci  extends: .cmake:msvc:v141
26053aa9179Sopenharmony_ci  only:
26153aa9179Sopenharmony_ci    - schedules
26253aa9179Sopenharmony_ci  variables:
26353aa9179Sopenharmony_ci    CMAKE_GENERATOR_PLATFORM: Win32
26453aa9179Sopenharmony_ci
26553aa9179Sopenharmony_cicmake:msvc:v141:x86:shared:
26653aa9179Sopenharmony_ci  extends: .cmake:msvc:v141:x86
26753aa9179Sopenharmony_ci  only:
26853aa9179Sopenharmony_ci    - schedules
26953aa9179Sopenharmony_ci  variables:
27053aa9179Sopenharmony_ci    BUILD_SHARED_LIBS: "ON"
27153aa9179Sopenharmony_ci    SUFFIX: shared
27253aa9179Sopenharmony_ci
27353aa9179Sopenharmony_cicmake:msvc:v141:x86:static:
27453aa9179Sopenharmony_ci  extends: .cmake:msvc:v141:x86
27553aa9179Sopenharmony_ci  variables:
27653aa9179Sopenharmony_ci    BUILD_SHARED_LIBS: "OFF"
27753aa9179Sopenharmony_ci    SUFFIX: static
27853aa9179Sopenharmony_ci
27953aa9179Sopenharmony_cipages:
28053aa9179Sopenharmony_ci  script:
28153aa9179Sopenharmony_ci    - mkdir -p public
28253aa9179Sopenharmony_ci    - cp -r doc/devhelp doc/tutorial doc/xmllint.html doc/xmlcatalog_man.html public
28353aa9179Sopenharmony_ci  artifacts:
28453aa9179Sopenharmony_ci    paths:
28553aa9179Sopenharmony_ci      - public
28653aa9179Sopenharmony_ci    exclude:
28753aa9179Sopenharmony_ci      - public/devhelp/Makefile*
28853aa9179Sopenharmony_ci      - public/devhelp/*.xsl
28953aa9179Sopenharmony_ci  only:
29053aa9179Sopenharmony_ci    - master@GNOME/libxml2
291