diff mupdf-source/thirdparty/harfbuzz/.circleci/config.yml @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mupdf-source/thirdparty/harfbuzz/.circleci/config.yml	Mon Sep 15 11:43:07 2025 +0200
@@ -0,0 +1,229 @@
+version: 2.1
+
+executors:
+  win32-executor:
+    docker:
+      - image: cimg/base:edge-20.04
+  win64-executor:
+    docker:
+      - image: cimg/base:edge-20.04
+  autotools-executor:
+    docker:
+      - image: cimg/base:edge-20.04
+
+jobs:
+
+  macos-aat-fonts:
+    macos:
+      xcode: "12.5.1"
+    steps:
+      - checkout
+      - run: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config ragel freetype glib cairo python3 icu4c graphite2 gobject-introspection gtk-doc ninja
+      - run: pip3 install meson --upgrade
+      - run: PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/libffi/lib/pkgconfig" meson build -Dcoretext=enabled -Dgraphite=enabled -Dauto_features=enabled -Dchafa=disabled
+      - run: meson compile -Cbuild
+      - run: meson test -Cbuild --print-errorlogs
+      - store_artifacts:
+          path: build/meson-logs/
+
+  # will be dropped with autotools removal
+  distcheck:
+    executor: autotools-executor
+    steps:
+      - checkout
+      - run: sudo apt update && DEBIAN_FRONTEND=noninteractive sudo apt install -y git ninja-build binutils libtool autoconf automake make gcc g++ pkg-config ragel gtk-doc-tools gobject-introspection libfreetype6-dev libglib2.0-dev libgirepository1.0-dev libcairo2-dev libicu-dev libgraphite2-dev python3 python3-pip
+      - run: pip3 install fonttools meson --upgrade
+      - run: ./autogen.sh
+      - run: make -j2 distcheck
+      - run: rm harfbuzz-* && make distdir
+      - run: cd harfbuzz-* && meson build && ninja -j2 -Cbuild test
+      - run: make dist
+      - persist_to_workspace:
+          root: .
+          paths: harfbuzz-*.tar.xz
+
+  publish-dist:
+    executor: autotools-executor
+    steps:
+      - checkout
+      - attach_workspace:
+          at: .
+      - run: |
+          .ci/publish_release_artifact.sh harfbuzz-$CIRCLE_TAG.tar.xz
+
+  fedora-valgrind:
+    docker:
+      - image: fedora:36
+    steps:
+      - checkout
+      - run: dnf install -y pkg-config ragel valgrind gcc gcc-c++ meson git glib2-devel freetype-devel cairo-devel libicu-devel gobject-introspection-devel graphite2-devel redhat-rpm-config python python-pip || true
+      - run: meson build --buildtype=debugoptimized
+      - run: ninja -Cbuild -j9
+      # TOOD: increase timeouts and remove --no-suite=slow
+      - run: RUN_VALGRIND=1 meson test -Cbuild --no-suite=slow --wrap='valgrind --leak-check=full --error-exitcode=1' --print-errorlogs --num-processes=$(($(nproc)/2 + 1))
+
+  alpine:
+    docker:
+      - image: alpine
+    steps:
+      - checkout
+      - run: apk update && apk add ragel gcc g++ glib-dev freetype-dev cairo-dev git py3-pip ninja
+      - run: pip3 install meson==0.56.0
+      - run: meson build --buildtype=minsize
+      - run: ninja -Cbuild -j9
+      - run: meson test -Cbuild --print-errorlogs
+
+  archlinux:
+    docker:
+      - image: archlinux/base
+    steps:
+      - checkout
+      - run: pacman --noconfirm -Syu freetype2 meson git clang cairo icu gettext gobject-introspection gcc gcc-libs glib2 graphite pkg-config ragel python python-pip base-devel gtk-doc
+      - run: pip install flake8 fonttools
+      - run: flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
+      - run: meson build -Dgraphite=enabled -Dauto_features=enabled -Dexperimental_api=true
+      - run: meson compile -Cbuild -j9
+      - run: meson test -Cbuild --print-errorlogs
+      - run: meson dist -Cbuild
+      - run: clang -c src/harfbuzz.cc -DHB_NO_MT
+      - run: clang -c src/hb-*.cc -DHB_NO_MT -DHB_TINY -DHB_NO_OT_FONT
+
+  asan-ubsan:
+    docker:
+      - image: ubuntu:20.04
+    steps:
+      - checkout
+      - run: apt update || true
+      - run: DEBIAN_FRONTEND=noninteractive apt install -y python3 python3-pip ninja-build clang lld git binutils pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
+      - run: pip3 install meson==0.56.0
+      - run: CC=clang CXX=clang++ meson build --default-library=static -Db_sanitize=address,undefined --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true
+      - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
+
+  tsan:
+    docker:
+      - image: ubuntu:20.04
+    steps:
+      - checkout
+      - run: apt update || true
+      - run: DEBIAN_FRONTEND=noninteractive apt install -y python3 python3-pip ninja-build clang lld git binutils pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
+      - run: pip3 install meson==0.56.0
+      - run: CC=clang CXX=clang++ meson build --default-library=static -Db_sanitize=thread --buildtype=debugoptimized --wrap-mode=nodownload -Dexperimental_api=true
+      - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
+
+  msan:
+    docker:
+      - image: ubuntu:20.04
+    steps:
+      - checkout
+      - run: apt update || true
+      - run: DEBIAN_FRONTEND=noninteractive apt install -y python3 python3-pip ninja-build clang lld git binutils pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
+      - run: pip3 install meson==0.56.0
+      # msan, needs --force-fallback-for=glib,freetype2 also which doesn't work yet but runs fuzzer cases at least
+      - run: CC=clang CXX=clang++ meson build --default-library=static -Db_sanitize=memory --buildtype=debugoptimized --wrap-mode=nodownload -Dauto_features=disabled -Dtests=enabled -Dexperimental_api=true
+      - run: ninja -Cbuild -j8 && meson test -Cbuild --print-errorlogs | asan_symbolize | c++filt
+
+  clang-cxx2a:
+    docker:
+      - image: ubuntu:20.04
+    steps:
+      - checkout
+      - run: apt update || true
+      - run: DEBIAN_FRONTEND=noninteractive apt install -y clang lld git binutils
+      - run: clang -c src/harfbuzz-subset.cc -DHB_NO_MT -Werror -std=c++2a
+
+  crossbuild-win32:
+    executor: win32-executor
+    steps:
+      - checkout
+      - run: sudo apt update && DEBIAN_FRONTEND=noninteractive sudo apt install -y ninja-build gtk-doc-tools python3 python3-pip git g++-mingw-w64-i686 zip
+      - run: pip3 install meson==0.60.0
+      - run: .ci/build-win32.sh
+      - store_artifacts:
+          path: harfbuzz-win32.zip
+      - persist_to_workspace:
+          root: .
+          paths: harfbuzz-win32.zip
+
+  publish-win32:
+    executor: win32-executor
+    steps:
+      - checkout
+      - attach_workspace:
+          at: .
+      - run: |
+          mv harfbuzz-win32{,-$CIRCLE_TAG}.zip
+          .ci/publish_release_artifact.sh harfbuzz-win32-$CIRCLE_TAG.zip
+
+  crossbuild-win64:
+    executor: win64-executor
+    steps:
+      - checkout
+      - run: sudo apt update && DEBIAN_FRONTEND=noninteractive sudo apt install -y ninja-build gtk-doc-tools python3 python3-pip git g++-mingw-w64-x86-64 zip
+      - run: pip3 install meson==0.60.0
+      - run: bash .ci/build-win64.sh
+      - store_artifacts:
+          path: harfbuzz-win64.zip
+      - persist_to_workspace:
+          root: .
+          paths: harfbuzz-win64.zip
+
+  publish-win64:
+    executor: win64-executor
+    steps:
+      - checkout
+      - attach_workspace:
+          at: .
+      - run: |
+          mv harfbuzz-win64{,-$CIRCLE_TAG}.zip
+          .ci/publish_release_artifact.sh harfbuzz-win64-$CIRCLE_TAG.zip
+
+
+workflows:
+  version: 2
+
+  build:
+    jobs:
+      - macos-aat-fonts
+      - distcheck:
+          filters: # must have filter or won't work as a dependency
+            tags:
+              only: /.*/
+      - publish-dist:
+          requires:
+            - distcheck
+          filters:
+            tags:
+              only: /^\d+\.\d+\.\d+$/
+            branches:
+              ignore: /.*/
+      - fedora-valgrind
+      - alpine
+     #- archlinux
+      - asan-ubsan
+      - tsan
+      - msan
+      - clang-cxx2a
+      - crossbuild-win32:
+          filters: # must have filter or won't work as a dependency
+            tags:
+              only: /.*/
+      - crossbuild-win64:
+          filters: # must have filter or won't work as a dependency
+            tags:
+              only: /.*/
+      - publish-win32:
+          requires:
+            - crossbuild-win32
+          filters:
+            tags:
+              only: /^\d+\.\d+\.\d+$/
+            branches:
+              ignore: /.*/
+      - publish-win64:
+          requires:
+            - crossbuild-win64
+          filters:
+            tags:
+              only: /^\d+\.\d+\.\d+$/
+            branches:
+              ignore: /.*/