librsvg source for verification 2026-05-22
This commit is contained in:
540
.gitlab-ci.yml
Normal file
540
.gitlab-ci.yml
Normal file
@@ -0,0 +1,540 @@
|
||||
# -*- indent-tabs-mode: nil -*-
|
||||
|
||||
include:
|
||||
- local: 'ci/container_builds.yml'
|
||||
- project: "GNOME/citemplates"
|
||||
file: "templates/default-rules.yml"
|
||||
- component: "gitlab.gnome.org/GNOME/citemplates/release-service@master"
|
||||
inputs:
|
||||
dist-job-name: "distcheck"
|
||||
tarball-artifact-path: "_build/meson-dist/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.tar.xz"
|
||||
- component: "gitlab.gnome.org/GNOME/citemplates/markdown-lint@master"
|
||||
inputs:
|
||||
job-stage: "lint"
|
||||
|
||||
variables:
|
||||
LIBRSVG_DEBUG: "yes"
|
||||
# Turn compiler warnings into errors
|
||||
RUSTFLAGS: '-D warnings'
|
||||
|
||||
stages:
|
||||
- container-build
|
||||
- ci-check
|
||||
- check
|
||||
- build
|
||||
- lint
|
||||
- analysis
|
||||
- acceptance test
|
||||
- docs
|
||||
- deploy
|
||||
|
||||
lint ci python scripts:
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
stage: ci-check
|
||||
script:
|
||||
- source ci/env.sh
|
||||
- ruff check ci
|
||||
|
||||
run ci tests:
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
stage: ci-check
|
||||
script:
|
||||
- source ci/env.sh
|
||||
- pytest ci/*.py
|
||||
|
||||
lint ci shell scripts:
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
stage: ci-check
|
||||
script:
|
||||
- source ci/env.sh
|
||||
- sh ci/check_shell_scripts.sh
|
||||
|
||||
check:
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
- '.cache_push'
|
||||
stage: check
|
||||
needs: ['opensuse-container@x86_64.stable']
|
||||
variables:
|
||||
PREFIX: "/usr/local/librsvg"
|
||||
RUSTFLAGS: "--cfg check"
|
||||
script:
|
||||
- source ./ci/setup-dependencies-env.sh
|
||||
- cargo check --all-targets --workspace --exclude 'librsvg-rebind*'
|
||||
|
||||
cargo_test:
|
||||
stage: check
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
# Tests require extra crates, hence cache is pushed
|
||||
- '.cache_push'
|
||||
needs:
|
||||
- job: check
|
||||
artifacts:
|
||||
when: 'on_failure'
|
||||
paths:
|
||||
- tests/output
|
||||
expire_in: 1 day
|
||||
variables:
|
||||
TESTS_OUTPUT_DIR: "${CI_PROJECT_DIR}/tests/output"
|
||||
PREFIX: "/usr/local/librsvg"
|
||||
script:
|
||||
- source ./ci/setup-dependencies-env.sh
|
||||
- cargo test --workspace --exclude pixbufloader-svg --exclude 'librsvg-rebind*' -- --skip loading_crash --skip reference --skip render_crash
|
||||
|
||||
.cargo-test:
|
||||
extends: '.cache'
|
||||
stage: build
|
||||
variables:
|
||||
TESTS_OUTPUT_DIR: "${CI_PROJECT_DIR}/tests/output"
|
||||
PREFIX: "/usr/local/librsvg"
|
||||
script:
|
||||
- source ./ci/setup-dependencies-env.sh
|
||||
- rustup default ${RUST_VERSION}
|
||||
- cargo test --workspace --exclude pixbufloader-svg --exclude 'librsvg-rebind*'
|
||||
artifacts:
|
||||
when: 'on_failure'
|
||||
paths:
|
||||
- tests/output
|
||||
expire_in: 1 day
|
||||
|
||||
.meson build:
|
||||
stage: build
|
||||
variables:
|
||||
TESTS_OUTPUT_DIR: "${CI_PROJECT_DIR}/_build/tests/output"
|
||||
PREFIX: "/usr/local/librsvg"
|
||||
script:
|
||||
- meson setup _build --prefix=$PREFIX -Ddocs=enabled -Dintrospection=enabled -Dvala=enabled -Dwarning_level=3
|
||||
- meson compile -C _build
|
||||
- meson test -C _build --print-errorlogs
|
||||
- meson install -C _build
|
||||
|
||||
# Generate 'cargo doc' documentation here, since the librsvg-rebind docs require an installed library
|
||||
# and pkg-config file.
|
||||
- bash -x ./ci/gen-rust-docs.sh
|
||||
artifacts:
|
||||
when: 'always'
|
||||
paths:
|
||||
- _build/doc/
|
||||
- _build/meson-logs/*.*
|
||||
- _build/tests/output
|
||||
- public
|
||||
reports:
|
||||
junit: _build/meson-logs/testlog.junit.xml
|
||||
expire_in: 1 day
|
||||
|
||||
.meson build no docs:
|
||||
stage: build
|
||||
variables:
|
||||
TESTS_OUTPUT_DIR: "${CI_PROJECT_DIR}/_build/tests/output"
|
||||
PREFIX: "/usr/local/librsvg"
|
||||
script:
|
||||
- meson setup _build --prefix=$PREFIX -Ddocs=disabled -Dintrospection=enabled -Dvala=enabled -Dwarning_level=3
|
||||
- meson compile -C _build
|
||||
- meson test -C _build --print-errorlogs
|
||||
artifacts:
|
||||
when: 'always'
|
||||
paths:
|
||||
- _build/meson-logs/*.*
|
||||
- _build/tests/output
|
||||
reports:
|
||||
junit: _build/meson-logs/testlog.junit.xml
|
||||
expire_in: 1 day
|
||||
|
||||
meson build - opensuse@x86_64.stable:
|
||||
stage: build
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- .fdo.distribution-image@opensuse
|
||||
# make check runs extra tests that require extra crates, hence cache is pushed
|
||||
- .cache_push
|
||||
- ".meson build"
|
||||
needs:
|
||||
- job: opensuse-container@x86_64.stable
|
||||
artifacts: false
|
||||
- job: check
|
||||
artifacts: false
|
||||
script:
|
||||
- source ./ci/setup-dependencies-env.sh
|
||||
- !reference [".meson build", "script"]
|
||||
|
||||
|
||||
cargo test - opensuse@x86_64:
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- .fdo.distribution-image@opensuse
|
||||
- .cargo-test
|
||||
needs:
|
||||
- job: opensuse-container@x86_64.stable
|
||||
artifacts: false
|
||||
- job: check
|
||||
artifacts: false
|
||||
parallel:
|
||||
matrix:
|
||||
- RUST_VERSION:
|
||||
# This is effectively the same as the cargo_test
|
||||
# job in the check stage
|
||||
# - "${RUST_STABLE}"
|
||||
- "${RUST_MINIMUM}"
|
||||
- "${RUST_NIGHTLY}"
|
||||
|
||||
cargo test - opensuse@aarch64:
|
||||
extends:
|
||||
- .container.opensuse@aarch64
|
||||
- .fdo.distribution-image@opensuse
|
||||
- .cargo-test
|
||||
needs:
|
||||
- job: opensuse-container@aarch64
|
||||
artifacts: false
|
||||
- job: check
|
||||
artifacts: false
|
||||
allow_failure: true
|
||||
|
||||
.cache:
|
||||
variables:
|
||||
# Only stuff inside the repo directory can be cached
|
||||
# Override the CARGO_HOME variable to force its location
|
||||
CARGO_HOME: "${CI_PROJECT_DIR}/cargo_cache"
|
||||
before_script:
|
||||
- source ./ci/env.sh
|
||||
- mkdir -p cargo_cache
|
||||
cache:
|
||||
key:
|
||||
files:
|
||||
- Cargo.lock
|
||||
paths:
|
||||
# Rust cache
|
||||
# https://doc.rust-lang.org/cargo/guide/cargo-home.html#caching-the-cargo-home-in-ci
|
||||
- cargo_cache/bin
|
||||
- cargo_cache/registry/index
|
||||
- cargo_cache/registry/cache
|
||||
- cargo_cache/git/db
|
||||
policy: pull
|
||||
|
||||
.cache_push:
|
||||
extends: .cache
|
||||
cache:
|
||||
policy: pull-push
|
||||
|
||||
meson build - gnomeos.nightly@x86_64:
|
||||
extends:
|
||||
- ".container.gnomeos.nightly@x86_64"
|
||||
- .fdo.distribution-image@gnomeos
|
||||
- ".meson build"
|
||||
needs:
|
||||
- job: gnomeos-container.nightly@x86_64
|
||||
artifacts: false
|
||||
- job: check
|
||||
artifacts: false
|
||||
|
||||
meson build - gnomeos.stable@x86_64:
|
||||
extends:
|
||||
- ".container.gnomeos.stable@x86_64"
|
||||
- .fdo.distribution-image@gnomeos
|
||||
- ".meson build no docs"
|
||||
needs:
|
||||
- job: gnomeos-container.stable@x86_64
|
||||
artifacts: false
|
||||
- job: check
|
||||
artifacts: false
|
||||
|
||||
cargo test - gnomeos.nightly.@x86_64:
|
||||
extends:
|
||||
- ".container.gnomeos.nightly@x86_64"
|
||||
- .fdo.distribution-image@gnomeos
|
||||
- .cargo-test
|
||||
needs:
|
||||
- job: gnomeos-container.nightly@x86_64
|
||||
artifacts: false
|
||||
- job: check
|
||||
artifacts: false
|
||||
|
||||
cargo test - gnomeos.stable@x86_64:
|
||||
extends:
|
||||
- ".container.gnomeos.stable@x86_64"
|
||||
- .fdo.distribution-image@gnomeos
|
||||
- .cargo-test
|
||||
needs:
|
||||
- job: gnomeos-container.stable@x86_64
|
||||
artifacts: false
|
||||
- job: check
|
||||
artifacts: false
|
||||
|
||||
fmt:
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
- '.cache'
|
||||
stage: lint
|
||||
needs:
|
||||
- job: check
|
||||
script:
|
||||
- cargo fmt --all -- --check
|
||||
|
||||
clippy:
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
- '.cache'
|
||||
stage: lint
|
||||
needs:
|
||||
- job: check
|
||||
variables:
|
||||
PREFIX: "/usr/local/librsvg"
|
||||
script:
|
||||
- source ./ci/setup-dependencies-env.sh
|
||||
- cargo clippy --version
|
||||
- gitlab-clippy --version
|
||||
- cargo clippy
|
||||
- cargo clippy --message-format=json | gitlab-clippy -o gl-code-quality-report.json
|
||||
artifacts:
|
||||
reports:
|
||||
codequality: gl-code-quality-report.json
|
||||
expire_in: 1 week
|
||||
rules:
|
||||
- if: '$CODE_QUALITY_DISABLED'
|
||||
when: never
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
- if: '$CI_COMMIT_TAG'
|
||||
- if: '$CI_COMMIT_BRANCH'
|
||||
|
||||
deny:
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
- '.cache'
|
||||
stage: lint
|
||||
needs:
|
||||
- job: check
|
||||
artifacts: false
|
||||
script:
|
||||
- cargo deny check
|
||||
|
||||
check_versions:
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
stage: lint
|
||||
needs:
|
||||
- job: check
|
||||
artifacts: false
|
||||
script:
|
||||
- python3 ci/check_project_version.py
|
||||
- python3 ci/check_public_crate_version.py
|
||||
- python3 ci/check_crate_versions_in_example.py
|
||||
- python3 ci/check_rust_versions.py
|
||||
|
||||
coverage:
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- .fdo.distribution-image@opensuse
|
||||
- .cache
|
||||
stage: analysis
|
||||
needs:
|
||||
- job: opensuse-container@x86_64.stable
|
||||
- job: check
|
||||
artifacts: false
|
||||
variables:
|
||||
PREFIX: "/usr/local/librsvg"
|
||||
script:
|
||||
- source ./ci/env.sh
|
||||
- source ./ci/setup-dependencies-env.sh
|
||||
- bash -x ./ci/build-with-coverage.sh
|
||||
- bash -x ./ci/gen-coverage.sh
|
||||
coverage: '/Coverage: \d+\.\d+/'
|
||||
artifacts:
|
||||
name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
|
||||
expire_in: 2 days
|
||||
when: always
|
||||
reports:
|
||||
coverage_report:
|
||||
coverage_format: cobertura
|
||||
path: coverage.xml
|
||||
paths:
|
||||
- public
|
||||
|
||||
cargo_bench:
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
- '.cache'
|
||||
stage: analysis
|
||||
needs:
|
||||
- job: check
|
||||
variables:
|
||||
PREFIX: "/usr/local/librsvg"
|
||||
script: |
|
||||
source ./ci/setup-dependencies-env.sh
|
||||
BENCHES=("box_blur" "composite" "lighting" "path_parser" "pixbuf_from_surface" "pixel_iterators" "pixel_ops" "srgb" "surface_from_pixbuf")
|
||||
git checkout ${CI_DEFAULT_BRANCH}
|
||||
for BENCH in "${BENCHES[@]}"
|
||||
do
|
||||
cargo bench --bench $BENCH -- --noplot --save-baseline main
|
||||
done
|
||||
git checkout ${CI_COMMIT_SHA}
|
||||
for BENCH in "${BENCHES[@]}"
|
||||
do
|
||||
cargo bench --bench $BENCH -- --noplot --baseline main
|
||||
cargo bench --profile overflow --bench $BENCH -- --noplot --baseline main
|
||||
done
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != "main"'
|
||||
when: manual
|
||||
allow_failure: true
|
||||
artifacts:
|
||||
paths:
|
||||
- target/criterion
|
||||
expire_in: 1 week
|
||||
|
||||
msys2-mingw64:
|
||||
stage: acceptance test
|
||||
tags:
|
||||
- win32-ps
|
||||
needs:
|
||||
- job: check
|
||||
variables:
|
||||
MSYSTEM: "MINGW64"
|
||||
CHERE_INVOKING: "yes"
|
||||
script:
|
||||
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
|
||||
- C:\msys64\usr\bin\bash -lc "bash -x ./ci/test-msys2.sh"
|
||||
artifacts:
|
||||
when: 'on_failure'
|
||||
paths:
|
||||
- _build\meson-logs
|
||||
- _build\tests\*.log
|
||||
- _build\tests\output
|
||||
expire_in: 1 day
|
||||
allow_failure: true
|
||||
|
||||
meson build - vs2019-x64-stable:
|
||||
# TODO: Uncomment this when ready to merge.
|
||||
# rules:
|
||||
# - if: $CI_PROJECT_NAMESPACE == "GNOME"
|
||||
stage: build
|
||||
tags:
|
||||
- win32-ps
|
||||
needs: []
|
||||
script:
|
||||
- ci/test-msvc.bat
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- "${CI_PROJECT_DIR}/msvc-build/meson-logs"
|
||||
- "${CI_PROJECT_DIR}/msvc-build/tests/output"
|
||||
allow_failure: true
|
||||
|
||||
distcheck:
|
||||
stage: acceptance test
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
- '.cache'
|
||||
needs:
|
||||
- job: check
|
||||
artifacts: false
|
||||
variables:
|
||||
PREFIX: "/usr/local/librsvg"
|
||||
script:
|
||||
- source ./ci/setup-dependencies-env.sh
|
||||
- meson setup _build --prefix=$PREFIX -Dvala=enabled --buildtype=release
|
||||
- meson dist -C _build
|
||||
artifacts:
|
||||
when: 'on_success'
|
||||
paths:
|
||||
- _build/meson-dist/librsvg-*.tar.xz
|
||||
- _build/meson-dist/librsvg-*.tar.xz.sha256sum
|
||||
expire_in: 1 week
|
||||
|
||||
reference:
|
||||
stage: docs
|
||||
needs:
|
||||
- job: meson build - opensuse@x86_64.stable
|
||||
artifacts: true
|
||||
script:
|
||||
- mkdir -p public/
|
||||
- mv _build/doc/Rsvg-2.0 public/
|
||||
artifacts:
|
||||
paths:
|
||||
- public
|
||||
expire_in: 1 day
|
||||
|
||||
check devel-docs links:
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
- '.cache'
|
||||
stage: docs
|
||||
needs:
|
||||
- job: opensuse-container@x86_64.stable
|
||||
artifacts: false
|
||||
script:
|
||||
- bash -x ./ci/check_docs_links.sh
|
||||
artifacts:
|
||||
paths:
|
||||
- public/devel-docs-check
|
||||
expire_in: 1 day
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != "main"'
|
||||
allow_failure: true
|
||||
|
||||
devel-docs:
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
- '.cache'
|
||||
stage: docs
|
||||
needs:
|
||||
- job: opensuse-container@x86_64.stable
|
||||
artifacts: false
|
||||
script:
|
||||
- bash -x ./ci/gen-devel-docs.sh
|
||||
artifacts:
|
||||
paths:
|
||||
- public
|
||||
expire_in: 1 day
|
||||
|
||||
pages:
|
||||
stage: docs
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
- '.cache'
|
||||
needs:
|
||||
- job: reference
|
||||
- job: coverage
|
||||
- job: devel-docs
|
||||
- job: "meson build - opensuse@x86_64.stable"
|
||||
script:
|
||||
- cp ci/pages-index.html public/index.html
|
||||
artifacts:
|
||||
paths:
|
||||
- public
|
||||
expire_in: 1 day
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "main"'
|
||||
|
||||
check rsvg-convert options:
|
||||
extends:
|
||||
- '.container.opensuse@x86_64.stable'
|
||||
- '.fdo.distribution-image@opensuse'
|
||||
- '.cache'
|
||||
stage: docs
|
||||
needs:
|
||||
- job: opensuse-container@x86_64.stable
|
||||
artifacts: false
|
||||
- job: check
|
||||
artifacts: false
|
||||
variables:
|
||||
PREFIX: "/usr/local/librsvg"
|
||||
script:
|
||||
- source ./ci/setup-dependencies-env.sh
|
||||
- cargo run -p ci --bin check-rsvg-convert-options
|
||||
Reference in New Issue
Block a user