Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 1 addition & 2 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
---
Checks: '-*,performance-*,bugprone-*,readability-inconsistent-declaration-parameter-name,readability-string-compare,readability-braces-around-statements,modernize-deprecated-headers,modernize-make-unique,modernize-make-shared,modernize-use-override,modernize-use-equals-delete,modernize-use-emplace,modernize-use-bool-literals,modernize-redundant-void-arg,modernize-loop-convert,google-explicit-constructor,-bugprone-narrowing-conversions,-bugprone-macro-parentheses,-bugprone-suspicious-string-compare,-bugprone-incorrect-roundings,-bugprone-undefined-memory-manipulation,-bugprone-sizeof-expression,-bugprone-branch-clone,-bugprone-reserved-identifier,-bugprone-suspicious-include,-performance-no-int-to-ptr,-bugprone-easily-swappable-parameters,-bugprone-implicit-widening-of-multiplication-result'
Checks: '-*,bugprone-*,performance-*,readability-*,modernize-*,google-explicit-constructor,-bugprone-narrowing-conversions,-bugprone-incorrect-roundings,-bugprone-branch-clone,-bugprone-reserved-identifier,-bugprone-easily-swappable-parameters,-bugprone-implicit-widening-of-multiplication-result,-bugprone-assignment-in-if-condition,-bugprone-switch-missing-default-case,-performance-avoid-endl,-performance-enum-size,-readability-identifier-length,-readability-implicit-bool-conversion,-readability-magic-numbers,-readability-enum-initial-value,-readability-avoid-const-params-in-decls,-readability-redundant-inline-specifier,-readability-make-member-function-const,-readability-avoid-nested-conditional-operator,-readability-use-std-min-max,-readability-isolate-declaration,-readability-math-missing-parentheses,-readability-simplify-boolean-expr,-readability-else-after-return,-readability-function-cognitive-complexity,-readability-convert-member-functions-to-static,-readability-uppercase-literal-suffix,-readability-avoid-unconditional-preprocessor-if,-readability-redundant-casting,-readability-named-parameter,-readability-qualified-auto,-readability-container-data-pointer,-readability-suspicious-call-argument,-modernize-macro-to-enum,-modernize-use-trailing-return-type,-modernize-use-nodiscard,-modernize-use-using,-modernize-use-auto,-modernize-use-designated-initializers,-modernize-avoid-c-arrays,-modernize-use-default-member-init,-modernize-use-std-print,-modernize-return-braced-init-list,-modernize-pass-by-value,-modernize-avoid-bind,-modernize-concat-nested-namespaces,-clang-analyzer-*'
WarningsAsErrors: '*'
HeaderFilterRegex: '.'
AnalyzeTemporaryDtors: false
FormatStyle: none
User: user
...
2 changes: 2 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@
f7466e31408ba884c44728f7da04227863177241
# clang-format-14 wanted a bit of reformat
a94a444e5acff86e04d1688d862e81a82108cf03
# clang-format-15 wanted a bit of reformat also
b5aa09403e0f106f51292683c1841908167337ea
102 changes: 69 additions & 33 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ before_script:
- echo 'deb-src http://deb.debian.org/debian unstable main' >> /etc/apt/sources.list
- apt-get update
- apt-get build-dep --yes --no-install-recommends poppler
- apt-get install --yes --no-install-recommends ninja-build libcurl4-openssl-dev git ca-certificates locales libgtk-3-dev wget p7zip-full libbrotli-dev libboost-container-dev qt6-base-dev
- apt-get install --yes --no-install-recommends ninja-build libcurl4-openssl-dev git ca-certificates locales libgtk-3-dev libbrotli-dev libboost-container-dev qt6-base-dev
- echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen
- locale-gen

Expand All @@ -22,39 +22,43 @@ variables:
UPSTREAM_TEST_DATA_URL: https://gitlab.freedesktop.org/poppler/test.git

cache:
key: "$CI_BUILD_NAME"
key: "$CI_JOB_NAME"
paths:
- build/

clang_format:
stage: build
before_script:
- apt-get update
- apt-get install --yes --no-install-recommends git clang-format-14
- apt-get install --yes --no-install-recommends git clang-format-19
script:
- find . \( -name "*.cpp" -or -name "*.h" -or -name "*.c" -or -name "*.cc" \) -exec clang-format-14 -i {} \;
- find . \( -name "*.cpp" -or -name "*.h" -or -name "*.c" -or -name "*.cc" \) -exec clang-format-19 -i {} \;
- git diff --exit-code

build:
stage: build
script:
- apt-get update
- bash do-the-gnupg-2.4-dance.sh $PWD/build/gnupg/
- git clone --branch ${CI_COMMIT_REF_NAME} --depth 1 ${TEST_DATA_URL} test-data || git clone --depth 1 ${UPSTREAM_TEST_DATA_URL} test-data
- mkdir -p build && cd build
- cmake -G Ninja -DTESTDATADIR=$PWD/../test-data ..
- ninja
- cmake -G Ninja -DTESTDATADIR=$PWD/../test-data -DCMAKE_PREFIX_PATH=$PWD/gnupg -DENABLE_UNSTABLE_API_ABI_HEADERS=ON -DVERIFY_PUBLIC_PRIVATE_HEADERS=true ..
- ninja -j ${FDO_CI_CONCURRENT}
- ninja -j ${FDO_CI_CONCURRENT} all_verify_interface_header_sets
- ctest --output-on-failure

build_clang14_libcpp:
build_clang19_libcpp:
stage: build
script:
- echo "We want to compile with C++23 here because it has some nice things like deleted std::string nullptr constructor"
- sed -i -e "s@CMAKE_CXX_STANDARD 17@CMAKE_CXX_STANDARD 23@g" CMakeLists.txt
- sed -i -e "s@CMAKE_CXX_STANDARD 20@CMAKE_CXX_STANDARD 23@g" CMakeLists.txt
- git clone --branch ${CI_COMMIT_REF_NAME} --depth 1 ${TEST_DATA_URL} test-data || git clone --depth 1 ${UPSTREAM_TEST_DATA_URL} test-data
- apt-get install --yes --no-install-recommends libclang-14-dev llvm-14-dev libc++-14-dev libc++abi-14-dev clang-tidy-14 clang-14 libunwind-14-dev gperf jq
- apt-get install --yes --no-install-recommends libclang-19-dev llvm-19-dev libc++-19-dev libc++abi-19-dev clang-tidy-19 clang-19 libunwind-19-dev gperf jq
- srcdir=`pwd` && mkdir -p /tmp/poppler_build && cd /tmp/poppler_build
- clang++-14 -fPIC -shared -o goostring-format-checker.so $srcdir/test/goostring-format-checker/goostring-format-checker.cc -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I /usr/lib/llvm-14/include/
- CC=clang-14 CXX=clang++-14 cmake -G Ninja -DCMAKE_CXX_FLAGS="-stdlib=libc++ -Xclang -load -Xclang $PWD/goostring-format-checker.so -Xclang -add-plugin -Xclang goostring-format-checker -Werror -Wno-deprecated-declarations" -DTESTDATADIR=$srcdir/test-data -DCMAKE_EXPORT_COMPILE_COMMANDS=ON $srcdir
- ninja
- clang++-19 -fPIC -shared -o goostring-format-checker.so $srcdir/test/goostring-format-checker/goostring-format-checker.cc -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I /usr/lib/llvm-19/include/
- echo "We disable Qt6 tests since Qt6 exposes std::string in its ABI which makes it not build in this CI since we're using libc++ but Qt6 in debian is build with libstdc++"
- CC=clang-19 CXX=clang++-19 cmake -DCMAKE_CXX_FLAGS="-stdlib=libc++ -Xclang -load -Xclang $PWD/goostring-format-checker.so -Xclang -add-plugin -Xclang goostring-format-checker -Werror -Wno-deprecated-declarations -Wno-error=unused-command-line-argument" -DTESTDATADIR=$srcdir/test-data -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DBUILD_QT6_TESTS=OFF -DENABLE_GPGME=OFF $srcdir
- make -j ${FDO_CI_CONCURRENT}
- ctest --output-on-failure
- echo "This is a complex way of not running clang-tidy over autogenerated files, unfortunately -DCMAKE_CXX_CLANG_TIDY doesn't support that https://gitlab.kitware.com/cmake/cmake/-/issues/19772"
- cat compile_commands.json | jq '[.[] | select(.file | contains("'"$srcdir"'"))]' > compile_commands.aux.json
Expand All @@ -63,58 +67,90 @@ build_clang14_libcpp:
- echo "Maybe we can replace this with NOLINTBEGIN in the future https://github.com/llvm/llvm-project/issues/56983"
- find $srcdir/qt* -name *.cpp -exec sed -E -i '/#include .*moc"$/d' {} \;
- cp "$srcdir/.clang-tidy" .
- run-clang-tidy-14
- run-clang-tidy-19

build_ubuntu_18_04:
build_ubuntu_22_04:
stage: build
image: ubuntu:bionic
image: ubuntu:22.04
before_script:
- apt-get update
- apt-get install --yes --no-install-recommends build-essential cmake ninja-build libjpeg-dev libopenjp2-7-dev qtbase5-dev gobject-introspection libglib2.0-dev libgtk-3-dev libgirepository1.0-dev libnss3-dev ca-certificates libcurl4-nss-dev liblcms2-dev libboost-container-dev libtiff-dev
- apt-get install --yes --no-install-recommends build-essential cmake ninja-build libjpeg-dev libopenjp2-7-dev qtbase5-dev gobject-introspection libglib2.0-dev libgtk-3-dev libgirepository1.0-dev libnss3-dev ca-certificates libcurl4-nss-dev liblcms2-dev libboost-container-dev libtiff-dev wget p7zip-full git qt6-base-dev clang-15 libc++-15-dev libc++abi-15-dev
script:
- git clone --branch ${CI_COMMIT_REF_NAME} --depth 1 ${TEST_DATA_URL} test-data || git clone --depth 1 ${UPSTREAM_TEST_DATA_URL} test-data
- mkdir -p build && cd build
- cmake -G Ninja ..
- cmake -G Ninja -DENABLE_GPGME=OFF -DTESTDATADIR=$PWD/../test-data ..
- ninja
- ctest --output-on-failure
- cd .. && mkdir -p build_clang && cd build_clang
- CC=clang-15 CXX=clang++-15 cmake -DCMAKE_CXX_FLAGS="-stdlib=libc++ -fexperimental-library" -G Ninja -DENABLE_GPGME=OFF -DTESTDATADIR=$PWD/../test-data ..
- ninja
- ctest --output-on-failure

build_mingw64_fedora37:
build_mingw64_fedora41:
stage: build
image: fedora:37
image: fedora:41
before_script:
- dnf install -y 'dnf-command(builddep)'
- dnf builddep -y mingw64-poppler
- dnf -y install glibc-langpack-en make ninja-build mingw64-boost mingw64-curl mingw64-qt6-qtbase
- dnf -y install glibc-langpack-en make ninja-build mingw64-boost mingw64-curl mingw64-qt6-qtbase mingw64-gcc-c++ cmake-rpm-macros
script:
- mkdir -p build && cd build
- mingw64-cmake -G Ninja ..
- mingw64-cmake -DENABLE_NSS3=OFF -DENABLE_GPGME=OFF -G Ninja ..
- ninja

build_clazy_clang14:
build_clazy_fedora41:
stage: build
image: fedora:41
before_script:
- dnf install -y 'dnf-command(builddep)'
- dnf builddep -y poppler
- dnf -y install clazy ninja-build glibc-langpack-en
script:
- apt-get install --yes --no-install-recommends clazy clang-14
- mkdir -p build && cd build
- CC=clang-14 CXX=clazy CXXFLAGS="-Werror -Wno-deprecated-declarations" cmake -G Ninja ..
- CLAZY_CHECKS="level0,level1,level2,isempty-vs-count,qhash-with-char-pointer-key,tr-non-literal,no-non-pod-global-static" ninja
- CC=clang-19 CXX=clazy CXXFLAGS="-Werror -Wno-deprecated-declarations" cmake -G Ninja ..
- CLAZY_CHECKS="level0,level1,level2,isempty-vs-count,qhash-with-char-pointer-key,tr-non-literal,no-non-pod-global-static" ninja -j ${FDO_CI_CONCURRENT}

build_android:
build_qt68_android:
stage: build
image: kdeorg/android-sdk
image: invent-registry.kde.org/sysadmin/ci-images/android-qt68-ci
before_script:
- echo "workaround for ECM Android toolchain wanting all binaries to be shared libraries"
- sed -i -e 's/<LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS>/<LINK_FLAGS>/g' /opt/nativetooling/share/ECM/toolchain/Android.cmake
- sudo apt install --yes wget
script:
- wget https://download.savannah.gnu.org/releases/freetype/freetype-2.13.3.tar.xz
- tar xvfh freetype-2.13.3.tar.xz
- cd freetype-2.13.3
- mkdir -p build && cd build
- 'ANDROID_ARCH_ABI=arm64-v8a cmake -G Ninja ..
-DCMAKE_ANDROID_API=28
-DCMAKE_PREFIX_PATH="/opt/Qt/;/opt/kdeandroid-arm64/"
-DCMAKE_ANDROID_API=29
-DCMAKE_BUILD_TYPE=debug
-DCMAKE_POSITION_INDEPENDENT_CODE=OFF
-DCMAKE_TOOLCHAIN_FILE=/home/user/android-arm-clang/lib/cmake/Qt6/qt.toolchain.cmake
-DQT_CHAINLOAD_TOOLCHAIN_FILE=/opt/nativetooling/share/ECM/toolchain/Android.cmake
-DCMAKE_INSTALL_PREFIX=/home/user/android-arm-clang
-DBUILD_SHARED_LIBS=ON'
- ninja -j ${FDO_CI_CONCURRENT} install
- cd ../..
- mkdir -p build && cd build
- 'ANDROID_ARCH_ABI=arm64-v8a cmake -G Ninja ..
-DCMAKE_ANDROID_API=29
-DCMAKE_PREFIX_PATH="/home/user/android-arm-clang"
-DCMAKE_BUILD_TYPE=debug
-DCMAKE_POSITION_INDEPENDENT_CODE=OFF
-DENABLE_DCTDECODER=unmaintained
-DENABLE_LIBOPENJPEG=unmaintained
-DENABLE_BOOST=OFF
-DENABLE_LCMS=OFF
-DENABLE_LIBCURL=OFF
-DENABLE_LIBTIFF=OFF
-DENABLE_QT5=OFF
-DENABLE_NSS3=OFF
-DENABLE_GPGME=OFF
-DCMAKE_CXX_FLAGS="-Werror -Wno-deprecated-declarations"
-DCMAKE_TOOLCHAIN_FILE=/opt/nativetooling/share/ECM/toolchain/Android.cmake'
- ninja
-DCMAKE_TOOLCHAIN_FILE=/home/user/android-arm-clang/lib/cmake/Qt6/qt.toolchain.cmake
-DQT_CHAINLOAD_TOOLCHAIN_FILE=/opt/nativetooling/share/ECM/toolchain/Android.cmake'
- ninja -j ${FDO_CI_CONCURRENT}

qt5_docs:
only:
Expand Down Expand Up @@ -164,8 +200,8 @@ glib_docs:
script:
- apt-get install --yes --no-install-recommends gtk-doc-tools
- mkdir -p build && cd build
- cmake -G Ninja -DENABLE_GTK_DOC=YES ..
- ninja glib-docs
- cmake -G Ninja -DENABLE_GTK_DOC=YES -DENABLE_GPGME=OFF ..
- ninja -j ${FDO_CI_CONCURRENT} glib-docs
cache: {}
artifacts:
paths:
Expand Down
Loading
Loading