So that the "Finalizing foo, but it still has children left" message is not truncated. This commit will be reverted when GTK is new enough in our image.
417 lines
11 KiB
YAML
417 lines
11 KiB
YAML
include:
|
|
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/34f4ade99434043f88e164933f570301fd18b125/templates/fedora.yml'
|
|
|
|
variables:
|
|
FDO_UPSTREAM_REPO: gnome/gnome-control-center
|
|
|
|
stages:
|
|
- prepare
|
|
- build
|
|
- test
|
|
- manual
|
|
- deploy
|
|
|
|
.Log files: &log_files [./*.log, _build/meson-logs/]
|
|
|
|
.Build logs: &save_build_logs
|
|
artifacts:
|
|
name: log
|
|
when: always
|
|
paths: *log_files
|
|
|
|
.Git Untracked files: &save_untracked_files
|
|
artifacts:
|
|
name: untracked
|
|
paths: [$(pwd)]
|
|
expire_in: 3h30min
|
|
|
|
.Show Info: &environment_information
|
|
build-aux/ci/ci-helper.sh "INFO" &&
|
|
build-aux/ci/ci-helper.sh "GIT_INFO"
|
|
|
|
.Build procedure: &build_procedure
|
|
echo "== Building ==" &&
|
|
git clone https://gitlab.gnome.org/GNOME/gtk.git &&
|
|
cd gtk &&
|
|
dnf install -y dnf-plugins-core && dnf builddep -y gtk4 &&
|
|
meson setup . _build -Dprefix=/usr -Dlibdir=lib64 &&
|
|
ninja -C _build install &&
|
|
cd .. &&
|
|
rm -rf _build/ &&
|
|
meson . _build ${BUILD_OPTS} -Dprofile=development &&
|
|
ninja -C _build 2>&1 | tee compilation.log
|
|
|
|
.Run Tests: &run_tests
|
|
echo "== Testing ==" &&
|
|
meson test -C _build --verbose --no-stdsplit
|
|
|
|
.fedora.container.common:
|
|
# As of 2022-03-07 runners not tagged with "crun" have broken seccomp rules
|
|
# affecting the close_range syscall and breaking g_spawn
|
|
# Note that "asan" tests are disabled for the same reason, see below.
|
|
# https://gitlab.gnome.org/Infrastructure/GitLab/-/issues/545
|
|
tags: [ crun ]
|
|
variables:
|
|
# When branching a stable release, change 'main'
|
|
# to the release number/branch to ensure that
|
|
# a new image will be created, tailored for the
|
|
# stable branch.
|
|
# Could probably also switch away from rawhide,
|
|
# to stable fedora branch as well.
|
|
FDO_DISTRIBUTION_TAG: '2023-03-14.0-main'
|
|
FDO_DISTRIBUTION_VERSION: rawhide
|
|
|
|
#############################################
|
|
# Create CI Docker Images #
|
|
#############################################
|
|
|
|
# See also https://gitlab.freedesktop.org/freedesktop/ci-templates
|
|
build.container.fedora@x86_64:
|
|
extends:
|
|
- '.fdo.container-build@fedora'
|
|
- '.fedora.container.common'
|
|
stage: 'prepare'
|
|
variables:
|
|
# no need to pull the whole tree for rebuilding the image
|
|
GIT_STRATEGY: none
|
|
# Expiry sets fdo.expires on the image
|
|
FDO_EXPIRES_AFTER: 8w
|
|
# NOTES:
|
|
# - gobject-introspection-devel is needed for gsettings-desktop-schemas
|
|
FDO_DISTRIBUTION_PACKAGES: >-
|
|
@c-development @development-tools
|
|
git
|
|
llvm clang libasan libtsan libubsan gcovr
|
|
meson
|
|
accountsservice-devel
|
|
cheese-libs-devel
|
|
chrpath
|
|
colord-devel colord-gtk-devel
|
|
cups-devel
|
|
desktop-file-utils
|
|
docbook-style-xsl
|
|
flatpak-devel
|
|
gdk-pixbuf2-devel
|
|
gettext
|
|
glib2-devel
|
|
gobject-introspection-devel
|
|
gnome-bluetooth-libs-devel
|
|
gnome-desktop3-devel
|
|
gnome-online-accounts-devel
|
|
grilo-devel
|
|
gsettings-desktop-schemas-devel
|
|
gsound-devel
|
|
gtk3-devel ibus-devel
|
|
gtk4-devel
|
|
intltool
|
|
libadwaita-devel
|
|
libcanberra-devel
|
|
libgtop2-devel
|
|
libgudev-devel
|
|
libnma-devel
|
|
libnotify-devel
|
|
libpwquality-devel
|
|
libsmbclient-devel
|
|
libsoup3-devel
|
|
libudisks2-devel
|
|
libwacom-devel
|
|
libX11-devel
|
|
libXi-devel
|
|
libxml2-devel
|
|
libxslt
|
|
ModemManager-glib-devel
|
|
NetworkManager-libnm-devel
|
|
polkit-devel
|
|
pulseaudio-libs-devel
|
|
upower-devel
|
|
python3-dbusmock
|
|
xorg-x11-server-Xvfb
|
|
mesa-dri-drivers
|
|
libsecret-devel
|
|
geocode-glib2-devel
|
|
libgweather-devel
|
|
lcms2-devel
|
|
geoclue2-devel
|
|
libnotify-devel
|
|
alsa-lib-devel
|
|
nss-devel
|
|
gcr3-devel
|
|
gcr-devel
|
|
setxkbmap
|
|
FDO_DISTRIBUTION_EXEC: |-
|
|
git clone https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas.git && \
|
|
cd gsettings-desktop-schemas && \
|
|
meson . _build --prefix=/usr && \
|
|
ninja -C _build && \
|
|
ninja -C _build install && \
|
|
cd .. && \
|
|
git clone https://gitlab.gnome.org/GNOME/gnome-desktop.git && \
|
|
cd gnome-desktop && \
|
|
meson . _build --prefix=/usr -Ddesktop_docs=false && \
|
|
ninja -C _build && \
|
|
ninja -C _build install && \
|
|
cd .. && \
|
|
git clone https://gitlab.gnome.org/GNOME/gnome-bluetooth.git && \
|
|
cd gnome-bluetooth && \
|
|
meson . _build --prefix=/usr -Dsendto=false && \
|
|
ninja -C _build && \
|
|
ninja -C _build install && \
|
|
cd .. && \
|
|
git clone https://gitlab.gnome.org/GNOME/libnma.git && \
|
|
cd libnma && \
|
|
meson . _build --prefix=/usr -Dlibnma_gtk4=true -Dmobile_broadband_provider_info=false -Dgcr=false -Dgtk_doc=false && \
|
|
ninja -C _build && \
|
|
ninja -C _build install && \
|
|
cd .. && \
|
|
git clone https://github.com/hughsie/colord-gtk.git && \
|
|
cd colord-gtk && \
|
|
meson . _build --prefix=/usr -Dgtk4=true -Ddocs=false -Dtests=false -Dman=false && \
|
|
ninja -C _build && \
|
|
ninja -C _build install && \
|
|
cd .. && \
|
|
git clone https://gitlab.gnome.org/GNOME/libgweather.git && \
|
|
cd libgweather && \
|
|
meson . _build --prefix=/usr -Denable_vala=false -Dgtk_doc=false -Dintrospection=false && \
|
|
ninja -C _build && \
|
|
ninja -C _build install && \
|
|
cd .. && \
|
|
git clone https://gitlab.gnome.org/GNOME/gnome-settings-daemon.git && \
|
|
cd gnome-settings-daemon && \
|
|
meson . _build --prefix=/usr && \
|
|
ninja -C _build && \
|
|
ninja -C _build install && \
|
|
cd ..
|
|
|
|
##
|
|
# Stage: Build
|
|
#
|
|
# Checks if GNOME Control Center is properly building and installing. This is the
|
|
# most important stage of the CI, and no MR should ever be merged if it breaks
|
|
# any of them.
|
|
##
|
|
build:
|
|
extends:
|
|
- '.fdo.distribution-image@fedora'
|
|
- '.fedora.container.common'
|
|
|
|
<<: *save_untracked_files
|
|
stage: build
|
|
|
|
script:
|
|
- *environment_information
|
|
- *build_procedure
|
|
|
|
- echo "== Installing =="
|
|
- ninja -C _build install
|
|
|
|
- echo "== Report =="
|
|
- build-aux/ci/ci-helper.sh "WARNINGS"
|
|
|
|
# Save all but git-related files
|
|
- rm -rf .git .gitignore .gitmodules
|
|
|
|
except:
|
|
variables:
|
|
- $CI_PIPELINE_SOURCE == "schedule"
|
|
|
|
##
|
|
# Stage: Test
|
|
#
|
|
# Runs the unit tests.
|
|
##
|
|
test:
|
|
extends:
|
|
- '.fdo.distribution-image@fedora'
|
|
- '.fedora.container.common'
|
|
<<: *save_build_logs
|
|
stage: test
|
|
|
|
dependencies:
|
|
- build
|
|
|
|
script:
|
|
- *environment_information
|
|
- *build_procedure
|
|
- *run_tests
|
|
|
|
- |
|
|
if [[ -n "${CI_COMMIT_TAG}" ]]; then
|
|
echo "== Distro Test =="
|
|
ninja dist -C _build
|
|
fi
|
|
|
|
except:
|
|
variables:
|
|
- $CI_PIPELINE_SOURCE == "schedule"
|
|
- $CI_COMMIT_TITLE =~ /^Update.*translation$/
|
|
|
|
# Runs the coverage test.
|
|
coverage:
|
|
extends:
|
|
- '.fdo.distribution-image@fedora'
|
|
- '.fedora.container.common'
|
|
<<: *save_build_logs
|
|
stage: test
|
|
variables:
|
|
BUILD_OPTS: "-Db_coverage=true"
|
|
coverage: '/^Lines:.\d+.\d+.(\d+\.\d+\%)/'
|
|
only:
|
|
- main@GNOME/gnome-control-center
|
|
|
|
script:
|
|
- *environment_information
|
|
- *build_procedure
|
|
- *run_tests
|
|
|
|
- ninja -C _build coverage-html
|
|
|
|
# Parse the report to get the coverage result
|
|
- |
|
|
echo == Coverage ==
|
|
sed -e 's/<[^>]*>//g' _build/meson-logs/coveragereport/index.html | tr -d ' \t' | grep -A3 -P '^Lines:$' | tr '\n' ' '; echo
|
|
|
|
except:
|
|
variables:
|
|
- $CI_PIPELINE_SOURCE == "schedule"
|
|
- $CI_COMMIT_TITLE =~ /^Update.*translation$/
|
|
|
|
# Runs the address sanitizer.
|
|
# - below, at the "sanitizers section"
|
|
|
|
##
|
|
# Stage: Deploy
|
|
#
|
|
# Publishes the Coverage Report generated above
|
|
##
|
|
pages:
|
|
extends:
|
|
- '.fdo.distribution-image@fedora'
|
|
- '.fedora.container.common'
|
|
stage: deploy
|
|
dependencies:
|
|
- coverage
|
|
script:
|
|
- mv _build/meson-logs/coveragereport/ public/
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
only:
|
|
- main@GNOME/gnome-control-center
|
|
|
|
except:
|
|
variables:
|
|
- $CRON_TASK == "BUILD_CI_IMAGES"
|
|
- $CI_COMMIT_TITLE =~ /^Update.*translation$/
|
|
|
|
##
|
|
# Stage: Manual
|
|
#
|
|
# Creates a flatpak
|
|
##
|
|
flatpak:
|
|
stage: manual
|
|
image: quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master
|
|
artifacts:
|
|
name: package
|
|
paths:
|
|
- $(pwd)/*.flatpak
|
|
expire_in: 7 days
|
|
|
|
variables:
|
|
OLD_APPID: "org.gnome.Settings"
|
|
APPID: "org.gnome.SettingsDevel"
|
|
BUNDLE: "org.gnome.SettingsDevel.flatpak"
|
|
MANIFEST_PATH: "build-aux/flatpak/org.gnome.Settings.json"
|
|
PROJECT_ID: "org.gnome.Settings"
|
|
PROJECT_NAME: "gnome-control-center.git"
|
|
RUNTIME_REPO: "https://sdk.gnome.org/gnome-nightly.flatpakrepo"
|
|
|
|
script:
|
|
- echo "== Flatpak packaging =="
|
|
|
|
# Make it a develoment manifest
|
|
- sed -i -n "p; s/$PROJECT_NAME//p" ${MANIFEST_PATH}
|
|
- >
|
|
sed -i "s,\"app-id\" : \"$PROJECT_ID\",\"app-id\" : \"<<ID>>\",g" ${MANIFEST_PATH}
|
|
- >
|
|
sed -i "s,\"url\" : \"https://gitlab.gnome.org/GNOME/$PROJECT_NAME\",\"branch\" : \"<<current>>\"\,,g" ${MANIFEST_PATH}
|
|
- >
|
|
sed -i "s,\"url\" : \"https://gitlab.gnome.org/GNOME/\",\"path\" : \".\",g" ${MANIFEST_PATH}
|
|
|
|
# Adjust the manifest to HEAD
|
|
- sed -i "s,<<ID>>,$APPID,g" ${MANIFEST_PATH}
|
|
- sed -i "s,<<current>>,origin/$CI_COMMIT_REF_NAME,g" ${MANIFEST_PATH}
|
|
|
|
# Update the icon name
|
|
- mv data/icons/hicolor/scalable/apps/$OLD_APPID.svg data/icons/hicolor/scalable/apps/$APPID.svg
|
|
- mv data/icons/hicolor/symbolic/apps/$OLD_APPID-symbolic.svg data/icons/hicolor/symbolic/apps/$APPID-symbolic.svg
|
|
|
|
- flatpak-builder --bundle-sources --disable-rofiles-fuse --repo=devel build ${MANIFEST_PATH}
|
|
- flatpak build-bundle devel ${BUNDLE} --runtime-repo=${RUNTIME_REPO} ${APPID}
|
|
|
|
cache:
|
|
paths:
|
|
- .flatpak-builder/cache
|
|
when: manual
|
|
except:
|
|
- tags
|
|
- gnome-3-.*
|
|
- main@GNOME/gnome-control-center
|
|
|
|
|
|
# Runs the sanitizers [address, thread, undefined, and memory].
|
|
.sanitizer: &sanitizer
|
|
extends:
|
|
- '.fdo.distribution-image@fedora'
|
|
- '.fedora.container.common'
|
|
<<: *save_build_logs
|
|
stage: manual
|
|
when: manual
|
|
script:
|
|
- *environment_information
|
|
- *build_procedure
|
|
- *run_tests
|
|
|
|
except:
|
|
variables:
|
|
- $CI_PIPELINE_SOURCE == "schedule"
|
|
- $CI_COMMIT_TITLE =~ /^Update.*translation$/
|
|
|
|
# Disabled because we currently need "crun" tagged runners, see above
|
|
#asan:
|
|
# extends:
|
|
# - '.fdo.distribution-image@fedora'
|
|
# - '.fedora.container.common'
|
|
# <<: *sanitizer
|
|
# # ASAN requires debugging capabilities
|
|
# tags: [ asan ]
|
|
# stage: manual
|
|
# when: manual
|
|
# variables:
|
|
# BUILD_OPTS: "-Db_sanitize=address"
|
|
# LSAN_OPTIONS: "suppressions=${CI_PROJECT_DIR}/build-aux/ci/lsan.supp"
|
|
|
|
tsan:
|
|
extends:
|
|
- '.fdo.distribution-image@fedora'
|
|
- '.fedora.container.common'
|
|
<<: *sanitizer
|
|
variables:
|
|
BUILD_OPTS: "-Db_sanitize=thread"
|
|
|
|
ubsan:
|
|
extends:
|
|
- '.fdo.distribution-image@fedora'
|
|
- '.fedora.container.common'
|
|
<<: *sanitizer
|
|
variables:
|
|
BUILD_OPTS: "-Db_sanitize=undefined"
|
|
|
|
msan:
|
|
extends:
|
|
- '.fdo.distribution-image@fedora'
|
|
- '.fedora.container.common'
|
|
<<: *sanitizer
|
|
variables:
|
|
BUILD_OPTS: "-Db_sanitize=memory"
|
|
CC: "clang"
|