From 2bcbb4d4512e0e2d9711a177bdc73f98fc126efd Mon Sep 17 00:00:00 2001 From: Michael Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 16:43:52 +0100 Subject: [PATCH 01/33] Build example test release for configure/make tests Bats testing now works from another directory --- .../configure-checks/setup_configure_image.sh | 2 +- .../autoconf-check-different-distro.yml | 23 ------- .github/workflows/autoconf-check.yml | 61 ++++++++++++++++++- 3 files changed, 60 insertions(+), 26 deletions(-) delete mode 100644 .github/workflows/autoconf-check-different-distro.yml diff --git a/.github/jobs/configure-checks/setup_configure_image.sh b/.github/jobs/configure-checks/setup_configure_image.sh index b3bdcad686..931b8115f1 100755 --- a/.github/jobs/configure-checks/setup_configure_image.sh +++ b/.github/jobs/configure-checks/setup_configure_image.sh @@ -20,4 +20,4 @@ make configure cp submit/assert.bash .github/jobs/configure-checks/ # Run the configure tests for this usecase -test_path="/__w/domjudge/domjudge" bats .github/jobs/configure-checks/all.bats +test_path="/__w/domjudge/domjudge/release" bats .github/jobs/configure-checks/all.bats diff --git a/.github/workflows/autoconf-check-different-distro.yml b/.github/workflows/autoconf-check-different-distro.yml deleted file mode 100644 index 76597171e4..0000000000 --- a/.github/workflows/autoconf-check-different-distro.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Check autoconf (Other distros) -on: - merge_group: - pull_request: - branches: - - main - - '[0-9]+.[0-9]+' - -jobs: - redhat-family: - strategy: - matrix: - version: [latest] - os: [fedora] - runs-on: ubuntu-latest - container: - image: ${{ matrix.os }}:${{ matrix.version }} - steps: - - name: Install git so we get the .github directory - run: dnf install -y git - - uses: actions/checkout@v4 - - name: Setup image and run bats tests - run: .github/jobs/configure-checks/setup_configure_image.sh diff --git a/.github/workflows/autoconf-check.yml b/.github/workflows/autoconf-check.yml index dee59a67c6..133987ee48 100644 --- a/.github/workflows/autoconf-check.yml +++ b/.github/workflows/autoconf-check.yml @@ -7,7 +7,53 @@ on: - '[0-9]+.[0-9]+' jobs: + build: + runs-on: ubuntu-latest + container: + image: domjudge/gitlabci:24.04 + steps: + - name: Checkout Code + uses: actions/checkout@v3 + - name: Create the distribution tarball + run: | + make dist + cd .. + mv domjudge release + mkdir domjudge #Workdir for next steps + tar -cf release.tar release + gzip -9 release.tar + mv release.tar.gz domjudge/ + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + compression-level: 0 + name: test-tarball + path: ${{ github.workspace }}/release.tar.gz + + redhat-family: + needs: build + strategy: + matrix: + version: [latest] + os: [fedora] + runs-on: ubuntu-latest + container: + image: ${{ matrix.os }}:${{ matrix.version }} + steps: + - name: Download Artifact + uses: actions/download-artifact@v4 + with: + name: test-tarball + - name: Install git so we get the .github directory + run: dnf install -y git + - name: Unpack the "Release" tarball + run: tar xvf release.tar.gz + - name: Setup image and run bats tests + working-directory: release + run: .github/jobs/configure-checks/setup_configure_image.sh + debian-family: + needs: build strategy: matrix: version: [jammy, focal, rolling] @@ -28,8 +74,19 @@ jobs: container: image: ${{ matrix.os }}:${{ matrix.version }} steps: + - name: Download Artifact + uses: actions/download-artifact@v4 + with: + name: test-tarball - name: Install git so we get the .github directory - run: apt-get update; apt-get install -y git - - uses: actions/checkout@v4 + run: | + apt-get update + apt-get install -y git + - name: Unpack the "Release" tarball + run: | + ls -atrl + tar xvf release.tar.gz - name: Setup image and run bats tests + working-directory: release run: .github/jobs/configure-checks/setup_configure_image.sh + From a99acfa95903e95986d6d386fd0287720d143efc Mon Sep 17 00:00:00 2001 From: Michael Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 18:51:49 +0100 Subject: [PATCH 02/33] Test with other linux distros --- .github/workflows/autoconf-check.yml | 66 ++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/.github/workflows/autoconf-check.yml b/.github/workflows/autoconf-check.yml index 133987ee48..f2e3832e34 100644 --- a/.github/workflows/autoconf-check.yml +++ b/.github/workflows/autoconf-check.yml @@ -30,6 +30,72 @@ jobs: name: test-tarball path: ${{ github.workspace }}/release.tar.gz + gentoo-family: + needs: build + strategy: + matrix: + version: [latest] + os: [gentoo/portage] + runs-on: ubuntu-latest + container: + image: ${{ matrix.os }}:${{ matrix.version }} + steps: + - name: Download Artifact + uses: actions/download-artifact@v4 + with: + name: test-tarball + - name: Install git so we get the .github directory + run: emerge dev-vcs/git + - name: Unpack the "Release" tarball + run: tar xvf release.tar.gz + - name: Setup image and run bats tests + working-directory: release + run: .github/jobs/configure-checks/setup_configure_image.sh + + suse-family: + needs: build + strategy: + matrix: + version: [latest] + os: [opensuse/tumbleweed] + runs-on: ubuntu-latest + container: + image: ${{ matrix.os }}:${{ matrix.version }} + steps: + - name: Download Artifact + uses: actions/download-artifact@v4 + with: + name: test-tarball + - name: Install git so we get the .github directory + run: zypper install -y git + - name: Unpack the "Release" tarball + run: tar xvf release.tar.gz + - name: Setup image and run bats tests + working-directory: release + run: .github/jobs/configure-checks/setup_configure_image.sh + + arch-family: + needs: build + strategy: + matrix: + version: [latest] + os: [archlinux] + runs-on: ubuntu-latest + container: + image: ${{ matrix.os }}:${{ matrix.version }} + steps: + - name: Download Artifact + uses: actions/download-artifact@v4 + with: + name: test-tarball + - name: Install git so we get the .github directory + run: pacman -Sy git + - name: Unpack the "Release" tarball + run: tar xvf release.tar.gz + - name: Setup image and run bats tests + working-directory: release + run: .github/jobs/configure-checks/setup_configure_image.sh + redhat-family: needs: build strategy: From f8ba11fc48de963cea813057fdf961ff97e64ee2 Mon Sep 17 00:00:00 2001 From: Michael Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 21 Jan 2024 16:22:45 +0100 Subject: [PATCH 03/33] Keep the owner:group of the one downloading the tarball In the scenario: ./configure --prefix= make domserver sudo make-installdomserver We would copy the Nelmiodoc files as root, so the user can't run a make {dist}clean without errors as we can't remove the folder as its owned by root. See https://github.com/DOMjudge/domjudge/pull/2303#discussion_r1493469404 for the reasoning behind this. So we replace phony copy-bundle-assets target by a real one. This makes that we don't rerun the rule during `domserver-install` if it already ran during `domserver`, so that if you install as root, the local files are still owned by the user who first ran `make domserver`, not root. This does assume that if the directory `public/bundles/nelmioapidoc` exists, then it contains the assets, and these won't automatically get updated, for example, in the setting of a maintainer-install so there we always remove the directory and recreate it. --- webapp/Makefile | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/webapp/Makefile b/webapp/Makefile index 5eac62ea13..1eae41c953 100644 --- a/webapp/Makefile +++ b/webapp/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/Makefile.global # Subdirectories to recurse into for REC_TARGETS SUBDIRS = config -domserver: composer-dump-autoload +domserver: composer-dump-autoload public/bundles/nelmioapidoc # Install PHP dependencies composer-dependencies: @@ -43,20 +43,17 @@ composer-dump-autoload-dev: @echo "# the DOMjudge Symfony application in developer mode. Adjust as needed." >> $@ @echo "APP_ENV=dev" >> $@ -copy-bundle-assets: +public/bundles/nelmioapidoc: # We can not use bin/console here, as when using a fakeroot, # the include paths are broken. We just copy in the data we need - -rm -rf public/bundles/nelmioapidoc - mkdir -p public/bundles/nelmioapidoc - cp -R vendor/nelmio/api-doc-bundle/public/* public/bundles/nelmioapidoc/ + mkdir -p $@ + cp -a vendor/nelmio/api-doc-bundle/public/* $@ clean-l: -rm -rf public/bundles/nelmioapidoc -rm -f vendor/autoload_runtime.php install-domserver: -# This must be done first to install with the rest. - $(MAKE) copy-bundle-assets $(INSTALL_DIR) $(DESTDIR)$(domserver_webappdir); for d in bin config migrations public resources src templates tests vendor; do \ $(call install_tree,$(DESTDIR)$(domserver_webappdir),$$d) ; \ @@ -71,6 +68,11 @@ maintainer-conf: .env.local maintainer-install: composer-dump-autoload-dev +maintainer-install-l: +# This must be done first to install with the rest. + -rm -rf public/bundles/nelmioapidoc + $(MAKE) public/bundles/nelmioapidoc + maintainer-clean-l: -for d in cache log ; do \ for t in dev prod ; do \ @@ -78,5 +80,4 @@ maintainer-clean-l: done ; \ done -.PHONY: composer-dump-autoload composer-dump-autoload-dev \ - copy-bundle-assets +.PHONY: composer-dump-autoload composer-dump-autoload-dev From 290a870cff9f7e8f5b9cdaf7a294f52285b90e4c Mon Sep 17 00:00:00 2001 From: Michael Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 18:11:04 +0100 Subject: [PATCH 04/33] Extra function to detect make errors --- .github/jobs/configure-checks/all.bats | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/jobs/configure-checks/all.bats b/.github/jobs/configure-checks/all.bats index 0ac60eae40..bd16c60722 100755 --- a/.github/jobs/configure-checks/all.bats +++ b/.github/jobs/configure-checks/all.bats @@ -48,6 +48,7 @@ repo-install () { args=$(translate $@) ${cmd} install $args -y >/dev/null } + repo-remove () { args=$(translate $@) ${cmd} remove $args -y #>/dev/null @@ -56,6 +57,14 @@ repo-remove () { fi } +run_user_stderr () { + su $u -c "$*" 2>&1 +} + +run_stderr () { + run "$* 2>&1" +} + @test "Default empty configure" { # cleanup from earlier runs repo-remove gcc g++ clang From b1ce185ebbd62dd6727db4fca876c76a0a76046c Mon Sep 17 00:00:00 2001 From: Michael Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 18:11:37 +0100 Subject: [PATCH 05/33] Fixup --- .github/jobs/configure-checks/all.bats | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/jobs/configure-checks/all.bats b/.github/jobs/configure-checks/all.bats index bd16c60722..1765576cf8 100755 --- a/.github/jobs/configure-checks/all.bats +++ b/.github/jobs/configure-checks/all.bats @@ -60,7 +60,7 @@ repo-remove () { run_user_stderr () { su $u -c "$*" 2>&1 } - + run_stderr () { run "$* 2>&1" } From 29fd64ed12d8351ec2de3fbf57a2cc7d0ae6ab2e Mon Sep 17 00:00:00 2001 From: Michael Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 18:12:44 +0100 Subject: [PATCH 06/33] Extra test --- .github/jobs/configure-checks/all.bats | 81 ++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/.github/jobs/configure-checks/all.bats b/.github/jobs/configure-checks/all.bats index 1765576cf8..97471dc7c7 100755 --- a/.github/jobs/configure-checks/all.bats +++ b/.github/jobs/configure-checks/all.bats @@ -467,3 +467,84 @@ compile_assertions_finished () { run make judgehost assert_failure } + +#@test "'Make distclean' has all permissions" { +# +# +# +# if [ "$distro_id" = "ID=fedora" ]; then +# +# +# # Fails as libraries are not found +# +# +# skip +# +# +# fi +# +# +# setup +# +# +# run run_configure +# +# +# run_user_stderr make domserver +# +# +# make install-domserver +# +# +# run_user_stderr make distclean +# +# +# refute_partial "cannot remove" +# +# +# refute_partial "Permission denied" +# +# +# assert_success +# +# +#} +# +# +# +# +# +#@test "'Make distclean' has permission errors" { +# +# +# if [ "$distro_id" = "ID=fedora" ]; then +# +# +# # Fails as libraries are not found +# +# +# skip +# +# +# fi +# +# +# setup +# +# +# run run_configure +# +# +# run_stderr make install-domserver +# +# +# run_user_stderr make distclean +# +# +# assert_partial "cannot remove" +# +# +# assert_partial "Permission denied" +# +# +#} From 1fc9a7432ed0464bdaa49fb92a201dd49274a0a6 Mon Sep 17 00:00:00 2001 From: Michael Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 2 Mar 2025 13:49:16 +0000 Subject: [PATCH 07/33] Fxiup --- .github/jobs/configure-checks/all.bats | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/jobs/configure-checks/all.bats b/.github/jobs/configure-checks/all.bats index 97471dc7c7..8da8ce5bcd 100755 --- a/.github/jobs/configure-checks/all.bats +++ b/.github/jobs/configure-checks/all.bats @@ -427,6 +427,7 @@ compile_assertions_finished () { assert_line " * judgehost...........: /opt/domjudge/judgehost" assert_line " * runguard group......: domjudge-run" run make domserver + assert_regex "^.*cp -a vendor/nelmio/api-doc-bundle/public/\* public/bundles/nelmioapidoc.*$" assert_success run make judgehost assert_success From 9d3d03099df211feb3fecc872d36c66b7ed3b5eb Mon Sep 17 00:00:00 2001 From: Michael Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 12:46:53 +0100 Subject: [PATCH 08/33] Try to only trigger fedora in merge-queue --- .github/workflows/autoconf-check.yml | 79 ++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/.github/workflows/autoconf-check.yml b/.github/workflows/autoconf-check.yml index f2e3832e34..76dd78a902 100644 --- a/.github/workflows/autoconf-check.yml +++ b/.github/workflows/autoconf-check.yml @@ -156,3 +156,82 @@ jobs: working-directory: release run: .github/jobs/configure-checks/setup_configure_image.sh +# debian-family: +# needs: build +# strategy: +# matrix: +# version: [jammy, focal, rolling] +# os: [ubuntu] +# releaseBranch: +# - ${{ contains(github.ref, 'gh-readonly-queue') }} +# exclude: +# - releaseBranch: false +# include: +# - os: debian +# version: stable +# - os: debian +# version: testing +# runs-on: ubuntu-latest +# env: +# DEBIAN_FRONTEND: noninteractive +# TZ: Etc/UTC +# container: +# image: ${{ matrix.os }}:${{ matrix.version }} +# steps: +# - name: Download Artifact +# uses: actions/download-artifact@v4 +# with: +# name: test-tarball +# - name: Install git so we get the .github directory +# run: | +# apt-get update +# apt-get install -y git +# - name: Unpack the "Release" tarball +# run: | +# ls -atrl +# tar xvf release.tar.gz +# - name: Setup image and run bats tests +# working-directory: domjudge +# run: .github/jobs/configure-checks/setup_configure_image.sh +# +## Copy the fedora stuff here and use: +## if: github.event_name != 'merge_group' on the job level +##name: Build and Trigger Workflows +### Either just filter the fedora stuff in onther build step (and run on main but skip) or trigger 2 workflows. I don't work enough with GHA to see which one I prefer for now. +## +##on: +## push: +## branches: +## - main +## +##jobs: +## build: +## name: Build Artifact +## runs-on: ubuntu-latest +## +## steps: +## - name: Checkout code +## uses: actions/checkout@v4 +## +## - name: Build project +## run: | +## # Example build command +## mkdir -p build +## echo "Artifact content" > build/artifact.txt +## +## - name: Upload artifact +## uses: actions/upload-artifact@v4 +## with: +## name: my-artifact +## path: build/artifact.txt +## +## +## - name: Trigger workflow 2 +## run: | +## curl -X POST \ +## -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ +## -H "Accept: application/vnd.github+json" \ +## https://api.github.com/repos/${{ github.repository }}/actions/workflows/workflow_2.yml/dispatches \ +## -d '{"ref":"main"}' +## +## From 4b099923269ae00b5d2324dea4b31dbe3ff8cff9 Mon Sep 17 00:00:00 2001 From: Michael Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 18:25:21 +0100 Subject: [PATCH 09/33] Cleanup --- .github/workflows/autoconf-check.yml | 73 ---------------------------- 1 file changed, 73 deletions(-) diff --git a/.github/workflows/autoconf-check.yml b/.github/workflows/autoconf-check.yml index 76dd78a902..415652511f 100644 --- a/.github/workflows/autoconf-check.yml +++ b/.github/workflows/autoconf-check.yml @@ -156,82 +156,9 @@ jobs: working-directory: release run: .github/jobs/configure-checks/setup_configure_image.sh -# debian-family: -# needs: build -# strategy: -# matrix: -# version: [jammy, focal, rolling] -# os: [ubuntu] -# releaseBranch: -# - ${{ contains(github.ref, 'gh-readonly-queue') }} -# exclude: -# - releaseBranch: false -# include: -# - os: debian -# version: stable -# - os: debian -# version: testing -# runs-on: ubuntu-latest -# env: -# DEBIAN_FRONTEND: noninteractive -# TZ: Etc/UTC -# container: -# image: ${{ matrix.os }}:${{ matrix.version }} -# steps: -# - name: Download Artifact -# uses: actions/download-artifact@v4 -# with: -# name: test-tarball -# - name: Install git so we get the .github directory -# run: | -# apt-get update -# apt-get install -y git -# - name: Unpack the "Release" tarball -# run: | -# ls -atrl -# tar xvf release.tar.gz -# - name: Setup image and run bats tests -# working-directory: domjudge -# run: .github/jobs/configure-checks/setup_configure_image.sh # ## Copy the fedora stuff here and use: ## if: github.event_name != 'merge_group' on the job level ##name: Build and Trigger Workflows ### Either just filter the fedora stuff in onther build step (and run on main but skip) or trigger 2 workflows. I don't work enough with GHA to see which one I prefer for now. ## -##on: -## push: -## branches: -## - main -## -##jobs: -## build: -## name: Build Artifact -## runs-on: ubuntu-latest -## -## steps: -## - name: Checkout code -## uses: actions/checkout@v4 -## -## - name: Build project -## run: | -## # Example build command -## mkdir -p build -## echo "Artifact content" > build/artifact.txt -## -## - name: Upload artifact -## uses: actions/upload-artifact@v4 -## with: -## name: my-artifact -## path: build/artifact.txt -## -## -## - name: Trigger workflow 2 -## run: | -## curl -X POST \ -## -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ -## -H "Accept: application/vnd.github+json" \ -## https://api.github.com/repos/${{ github.repository }}/actions/workflows/workflow_2.yml/dispatches \ -## -d '{"ref":"main"}' -## -## From 15bb6b662f1f92ef8896443e374a037c2b7d9526 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 19:33:24 +0100 Subject: [PATCH 10/33] Update autoconf-check.yml --- .github/workflows/autoconf-check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/autoconf-check.yml b/.github/workflows/autoconf-check.yml index 415652511f..c7f979c643 100644 --- a/.github/workflows/autoconf-check.yml +++ b/.github/workflows/autoconf-check.yml @@ -89,7 +89,7 @@ jobs: with: name: test-tarball - name: Install git so we get the .github directory - run: pacman -Sy git + run: pacman -Sy --noconfirm git - name: Unpack the "Release" tarball run: tar xvf release.tar.gz - name: Setup image and run bats tests From 7ae40c98fb36a1ff37e3d658053a44220884572e Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 19:38:00 +0100 Subject: [PATCH 11/33] Update autoconf-check.yml --- .github/workflows/autoconf-check.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/autoconf-check.yml b/.github/workflows/autoconf-check.yml index c7f979c643..1270aaffcf 100644 --- a/.github/workflows/autoconf-check.yml +++ b/.github/workflows/autoconf-check.yml @@ -40,12 +40,12 @@ jobs: container: image: ${{ matrix.os }}:${{ matrix.version }} steps: + - name: Install git so we get the .github directory + run: emerge dev-vcs/git sys-libs/glibc - name: Download Artifact uses: actions/download-artifact@v4 with: name: test-tarball - - name: Install git so we get the .github directory - run: emerge dev-vcs/git - name: Unpack the "Release" tarball run: tar xvf release.tar.gz - name: Setup image and run bats tests From 5a23d5c9c0b0567840d9c9aae5eec8030d4493fd Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 19:48:37 +0100 Subject: [PATCH 12/33] Update setup_configure_image.sh --- .github/jobs/configure-checks/setup_configure_image.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/jobs/configure-checks/setup_configure_image.sh b/.github/jobs/configure-checks/setup_configure_image.sh index 931b8115f1..2e183bce47 100755 --- a/.github/jobs/configure-checks/setup_configure_image.sh +++ b/.github/jobs/configure-checks/setup_configure_image.sh @@ -7,10 +7,12 @@ distro_id=$(grep "^ID=" /etc/os-release) # Install everything for configure and testing case $distro_id in "ID=fedora") - dnf install pkg-config make bats autoconf automake util-linux -y ;; + dnf install make bats autoconf automake -y ;; + 'ID="opensuse-leap"') + zypper install -y make bats autoconf automake ;; *) apt-get update; apt-get full-upgrade -y - apt-get install pkg-config make bats autoconf -y ;; + apt-get install make bats autoconf -y ;; esac # Build the configure file From bcf208d8913814ef6a3431919e13d56afb040ff2 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 19:58:13 +0100 Subject: [PATCH 13/33] Update autoconf-check.yml --- .github/workflows/autoconf-check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/autoconf-check.yml b/.github/workflows/autoconf-check.yml index 1270aaffcf..e38fd983e0 100644 --- a/.github/workflows/autoconf-check.yml +++ b/.github/workflows/autoconf-check.yml @@ -57,7 +57,7 @@ jobs: strategy: matrix: version: [latest] - os: [opensuse/tumbleweed] + os: [opensuse/leap] runs-on: ubuntu-latest container: image: ${{ matrix.os }}:${{ matrix.version }} From 20664ad67b8091ba76fe4b8bb02371da16f03195 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 20:00:04 +0100 Subject: [PATCH 14/33] Gentoo does not have enough marketshare And it's hard to boot as there is no simple container. --- .github/workflows/autoconf-check.yml | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/.github/workflows/autoconf-check.yml b/.github/workflows/autoconf-check.yml index e38fd983e0..f9b0aaffed 100644 --- a/.github/workflows/autoconf-check.yml +++ b/.github/workflows/autoconf-check.yml @@ -30,28 +30,6 @@ jobs: name: test-tarball path: ${{ github.workspace }}/release.tar.gz - gentoo-family: - needs: build - strategy: - matrix: - version: [latest] - os: [gentoo/portage] - runs-on: ubuntu-latest - container: - image: ${{ matrix.os }}:${{ matrix.version }} - steps: - - name: Install git so we get the .github directory - run: emerge dev-vcs/git sys-libs/glibc - - name: Download Artifact - uses: actions/download-artifact@v4 - with: - name: test-tarball - - name: Unpack the "Release" tarball - run: tar xvf release.tar.gz - - name: Setup image and run bats tests - working-directory: release - run: .github/jobs/configure-checks/setup_configure_image.sh - suse-family: needs: build strategy: From e0747e2c06913ac1de5cdae9403c428678eba4e5 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 20:07:44 +0100 Subject: [PATCH 15/33] Update setup_configure_image.sh --- .github/jobs/configure-checks/setup_configure_image.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/jobs/configure-checks/setup_configure_image.sh b/.github/jobs/configure-checks/setup_configure_image.sh index 2e183bce47..ad812b101d 100755 --- a/.github/jobs/configure-checks/setup_configure_image.sh +++ b/.github/jobs/configure-checks/setup_configure_image.sh @@ -6,6 +6,8 @@ distro_id=$(grep "^ID=" /etc/os-release) # Install everything for configure and testing case $distro_id in + "ID=arch") + pacman -Sy --noconfirm make bats autoconf automake "ID=fedora") dnf install make bats autoconf automake -y ;; 'ID="opensuse-leap"') From c26e4f237595faae8ee9b0756343ad99ba023943 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 20:12:32 +0100 Subject: [PATCH 16/33] Update setup_configure_image.sh --- .github/jobs/configure-checks/setup_configure_image.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/jobs/configure-checks/setup_configure_image.sh b/.github/jobs/configure-checks/setup_configure_image.sh index ad812b101d..a74bea2c81 100755 --- a/.github/jobs/configure-checks/setup_configure_image.sh +++ b/.github/jobs/configure-checks/setup_configure_image.sh @@ -9,7 +9,8 @@ case $distro_id in "ID=arch") pacman -Sy --noconfirm make bats autoconf automake "ID=fedora") - dnf install make bats autoconf automake -y ;; + dnf install make npm autoconf automake -y + npm install -g bats ;; 'ID="opensuse-leap"') zypper install -y make bats autoconf automake ;; *) From dc782a3a7ea8cf97d77db3fdc5e8ad0e813763f6 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 20:13:34 +0100 Subject: [PATCH 17/33] Update setup_configure_image.sh --- .github/jobs/configure-checks/setup_configure_image.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/jobs/configure-checks/setup_configure_image.sh b/.github/jobs/configure-checks/setup_configure_image.sh index a74bea2c81..0c23c82379 100755 --- a/.github/jobs/configure-checks/setup_configure_image.sh +++ b/.github/jobs/configure-checks/setup_configure_image.sh @@ -7,7 +7,7 @@ distro_id=$(grep "^ID=" /etc/os-release) # Install everything for configure and testing case $distro_id in "ID=arch") - pacman -Sy --noconfirm make bats autoconf automake + pacman -Sy --noconfirm make bats autoconf automake tar "ID=fedora") dnf install make npm autoconf automake -y npm install -g bats ;; From 435df91004af772fcf2083ce7a86e8e09568c200 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 20:17:53 +0100 Subject: [PATCH 18/33] Update setup_configure_image.sh --- .github/jobs/configure-checks/setup_configure_image.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/jobs/configure-checks/setup_configure_image.sh b/.github/jobs/configure-checks/setup_configure_image.sh index 0c23c82379..9fc2085eae 100755 --- a/.github/jobs/configure-checks/setup_configure_image.sh +++ b/.github/jobs/configure-checks/setup_configure_image.sh @@ -7,7 +7,7 @@ distro_id=$(grep "^ID=" /etc/os-release) # Install everything for configure and testing case $distro_id in "ID=arch") - pacman -Sy --noconfirm make bats autoconf automake tar + pacman -Sy --noconfirm make bats autoconf automake tar ;; "ID=fedora") dnf install make npm autoconf automake -y npm install -g bats ;; From b209cf25b5555b7c71c869848212f6cc0b612efe Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 22:04:18 +0100 Subject: [PATCH 19/33] Update all.bats --- .github/jobs/configure-checks/all.bats | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/jobs/configure-checks/all.bats b/.github/jobs/configure-checks/all.bats index 8da8ce5bcd..4bb1b4ce93 100755 --- a/.github/jobs/configure-checks/all.bats +++ b/.github/jobs/configure-checks/all.bats @@ -10,6 +10,12 @@ cmd="apt-get" if [ "$distro_id" = "ID=fedora" ]; then cmd=dnf fi +if [ "$distro_id" = "ID=arch" ]; then + cmd=pacman +fi +if [ "$distro_id" = 'ID="opensuse-leap"' ]; then + cmd=zypper +fi translate () { args="$@" From 0acd88fe58be20660e180f5069890a66eda52828 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 22:16:32 +0100 Subject: [PATCH 20/33] Update autoconf-check.yml --- .github/workflows/autoconf-check.yml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/.github/workflows/autoconf-check.yml b/.github/workflows/autoconf-check.yml index f9b0aaffed..5c2e5a2486 100644 --- a/.github/workflows/autoconf-check.yml +++ b/.github/workflows/autoconf-check.yml @@ -44,8 +44,8 @@ jobs: uses: actions/download-artifact@v4 with: name: test-tarball - - name: Install git so we get the .github directory - run: zypper install -y git + - name: Install needed unpack tools + run: zypper install -y tar - name: Unpack the "Release" tarball run: tar xvf release.tar.gz - name: Setup image and run bats tests @@ -66,8 +66,6 @@ jobs: uses: actions/download-artifact@v4 with: name: test-tarball - - name: Install git so we get the .github directory - run: pacman -Sy --noconfirm git - name: Unpack the "Release" tarball run: tar xvf release.tar.gz - name: Setup image and run bats tests @@ -88,8 +86,6 @@ jobs: uses: actions/download-artifact@v4 with: name: test-tarball - - name: Install git so we get the .github directory - run: dnf install -y git - name: Unpack the "Release" tarball run: tar xvf release.tar.gz - name: Setup image and run bats tests @@ -122,10 +118,6 @@ jobs: uses: actions/download-artifact@v4 with: name: test-tarball - - name: Install git so we get the .github directory - run: | - apt-get update - apt-get install -y git - name: Unpack the "Release" tarball run: | ls -atrl From 3073debeee287592da17632eaded3c05b2922ff7 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 22:22:38 +0100 Subject: [PATCH 21/33] Update autoconf-check.yml --- .github/workflows/autoconf-check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/autoconf-check.yml b/.github/workflows/autoconf-check.yml index 5c2e5a2486..a80c039f0f 100644 --- a/.github/workflows/autoconf-check.yml +++ b/.github/workflows/autoconf-check.yml @@ -45,7 +45,7 @@ jobs: with: name: test-tarball - name: Install needed unpack tools - run: zypper install -y tar + run: zypper install -y tar gzip - name: Unpack the "Release" tarball run: tar xvf release.tar.gz - name: Setup image and run bats tests From 7e60dc0870a0a3dda3d2885d8f3e85d93a0ff6c1 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 22:25:17 +0100 Subject: [PATCH 22/33] Update all.bats --- .github/jobs/configure-checks/all.bats | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/jobs/configure-checks/all.bats b/.github/jobs/configure-checks/all.bats index 4bb1b4ce93..468c6e5596 100755 --- a/.github/jobs/configure-checks/all.bats +++ b/.github/jobs/configure-checks/all.bats @@ -52,7 +52,11 @@ run_configure () { repo-install () { args=$(translate $@) - ${cmd} install $args -y >/dev/null + if [ "$distro_id" = "ID=arch" ]; then + ${cmd} $args -Sy --noconfirm >/dev/null + else + ${cmd} install $args -y >/dev/null + fi } repo-remove () { From 2583f8ba3d79ecceb18bd6414d08c858284ad9bf Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 22:28:36 +0100 Subject: [PATCH 23/33] Update setup_configure_image.sh --- .github/jobs/configure-checks/setup_configure_image.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/jobs/configure-checks/setup_configure_image.sh b/.github/jobs/configure-checks/setup_configure_image.sh index 9fc2085eae..660a5c3878 100755 --- a/.github/jobs/configure-checks/setup_configure_image.sh +++ b/.github/jobs/configure-checks/setup_configure_image.sh @@ -9,8 +9,7 @@ case $distro_id in "ID=arch") pacman -Sy --noconfirm make bats autoconf automake tar ;; "ID=fedora") - dnf install make npm autoconf automake -y - npm install -g bats ;; + dnf install make autoconf automake bats -y 'ID="opensuse-leap"') zypper install -y make bats autoconf automake ;; *) From 614500ba5d51d5a90e8364a4009574d0f304605d Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sun, 9 Mar 2025 22:35:38 +0100 Subject: [PATCH 24/33] Ignore other CI jobs --- .github/workflows/chroot-checks.yml | 30 ----- .github/workflows/codeql-analysis.yml | 78 ------------ .github/workflows/codespell.yml | 24 ---- .github/workflows/codestyle.yml | 89 ------------- .github/workflows/database-upgrade.yml | 36 ------ .github/workflows/integration.yml | 161 ------------------------ .github/workflows/phpcodesniffer.yml | 29 ----- .github/workflows/phpstan.yml | 28 ----- .github/workflows/runpipe.yml | 39 ------ .github/workflows/shiftleft.yml | 26 ---- .github/workflows/unit-tests.yml | 101 --------------- .github/workflows/upload-unit-tests.yml | 34 ----- .github/workflows/webstandard.yml | 65 ---------- 13 files changed, 740 deletions(-) diff --git a/.github/workflows/chroot-checks.yml b/.github/workflows/chroot-checks.yml index f3ebd6609c..e69de29bb2 100644 --- a/.github/workflows/chroot-checks.yml +++ b/.github/workflows/chroot-checks.yml @@ -1,30 +0,0 @@ -name: Chroot checks -on: - push: - pull_request: - branches: - - main - - '[0-9]+.[0-9]+' - -jobs: - check-chroot-arch: - runs-on: ubuntu-24.04 - container: - image: domjudge/gitlabci:24.04 - options: --privileged --cgroupns=host --init - strategy: - matrix: - arch: [amd64, default] - steps: - - name: Checkout current code - uses: actions/checkout@v4 - - name: Install DOMjudge - run: | - .github/jobs/chroot_checks.sh ${{ matrix.arch }} - - name: Upload all logs/artifacts - if: ${{ !cancelled() }} - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.arch }}-logs - path: | - /tmp/artifacts diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 77a7a5852c..e69de29bb2 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -1,78 +0,0 @@ -name: "CodeQL" - -on: - merge_group: - pull_request: - branches: - - main - - '[0-9]+.[0-9]+' - -jobs: - analyze: - container: - image: domjudge/gitlabci:24.04 - options: --user domjudge - name: Analyze - runs-on: ubuntu-latest - env: - COMPILED: "cpp" - USER: "domjudge" - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: [ 'cpp', 'java', 'javascript', 'python' ] - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Initialize CodeQL - uses: github/codeql-action/init@v3 - with: - languages: ${{ matrix.language }} - - - name: Install composer files - if: ${{ contains(env.COMPILED, matrix.language) }} - run: | - cd webapp - composer install --no-scripts - - - name: Configure Makefile - if: ${{ contains(env.COMPILED, matrix.language) }} - run: | - DIR=$(pwd) - mkdir ./installdir - make configure - ./configure --enable-doc-build=no --prefix=$DIR/installdir - - - name: Compile domserver - if: ${{ contains(env.COMPILED, matrix.language) }} - run: | - make domserver - make install-domserver - - - name: Compile the build scripts for languages - run: | - make build-scripts - - - name: Compile judgehost - if: ${{ contains(env.COMPILED, matrix.language) }} - run: | - make judgehost - sudo make install-judgehost - - - name: Remove upstream code - run: | - rm -rf webapp/public/js/monaco doc/manual/_static - - - name: Chown everything to the current runner user - if: ${{ contains(env.COMPILED, matrix.language) }} - run: sudo chown -R ${USER} ./installdir - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml index 4e88d00c28..e69de29bb2 100644 --- a/.github/workflows/codespell.yml +++ b/.github/workflows/codespell.yml @@ -1,24 +0,0 @@ -on: - merge_group: - pull_request: - branches: - - main - - '[0-9]+.[0-9]+' - -name: Spell Check - -jobs: - codespell: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Rewrite Changelog to find new mistakes - run: awk '1;/Version 7.2.1 - 6 May 2020/{exit}' ChangeLog > latest_Changelog - - name: Get dirs to skip - id: list_to_csv - run: echo "::set-output name=SKIP::$(awk '{print $1}' .github/jobs/data/codespellignorefiles.txt | paste -s -d, -)" - - uses: codespell-project/actions-codespell@master - with: - check_filenames: true - ignore_words_file: .github/jobs/data/codespellignorewords.txt - skip: ${{ steps.list_to_csv.outputs.SKIP }} diff --git a/.github/workflows/codestyle.yml b/.github/workflows/codestyle.yml index 0dbddf8f72..e69de29bb2 100644 --- a/.github/workflows/codestyle.yml +++ b/.github/workflows/codestyle.yml @@ -1,89 +0,0 @@ -name: Codestandard -on: - merge_group: - pull_request: - branches: - - main - - '[0-9]+.[0-9]+' - -jobs: - syntax-job: - runs-on: ubuntu-latest - container: - image: domjudge/gitlabci:24.04 - steps: - - uses: actions/checkout@v4 - - name: Run the syntax checks - run: .github/jobs/syntax.sh - - detect-dump: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: "Search for leftover dump( statements" - run: .github/jobs/detect_dump.sh - - php-linter: - runs-on: ubuntu-latest - container: - image: pipelinecomponents/php-linter:latest - steps: - - uses: actions/checkout@v4 - - name: Detect PHP linting issues - run: > - parallel-lint --colors - lib/lib.*.php - etc - judge - webapp/src - webapp/tests - webapp/public - webapp/config - - phpcs_compatibility: - runs-on: ubuntu-latest - container: - image: pipelinecomponents/php-codesniffer:latest - strategy: - matrix: - PHPVERSION: ["8.1", "8.2", "8.3", "8.4"] - steps: - - run: apk add git - - uses: actions/checkout@v4 - - name: Various fixes to this image - run: .github/jobs/fix_pipelinecomponents_image.sh - - name: Detect compatibility with supported PHP version - run: > - phpcs -s -p --colors - --standard=PHPCompatibility - --extensions=php - --runtime-set testVersion ${{ matrix.PHPVERSION }} - lib/lib.*.php - etc - judge - webapp/src - webapp/tests - webapp/public - webapp/config - - pycodestyle: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Download pycodestyle python file - run: > - curl -L -o /tmp/pycodestyle.py 'https://github.com/PyCQA/pycodestyle/raw/refs/tags/2.12.1/pycodestyle.py' - - name: Check codestyle in python files - run: > - python3 /tmp/pycodestyle.py \ - --exclude='./example_problems/,./doc/,./gitlab/,./webapp/vendor/' \ - --max-line-length 120 \ - --show-pep8 --show-source \ - . - - pyright: - runs-on: ubuntu-latest - steps: - - uses: jakebailey/pyright-action@v2 - with: - version: 1.1.311 diff --git a/.github/workflows/database-upgrade.yml b/.github/workflows/database-upgrade.yml index 47b6a14ed1..e69de29bb2 100644 --- a/.github/workflows/database-upgrade.yml +++ b/.github/workflows/database-upgrade.yml @@ -1,36 +0,0 @@ -name: Database Upgrade Test - -on: - merge_group: - pull_request: - branches: - - main - - '[0-9]+.[0-9]+' - -jobs: - upgrade_test: - runs-on: ubuntu-latest - container: - image: domjudge/gitlabci:24.04 - services: - sqlserver: - image: mariadb - ports: - - 3306:3306 - env: - MYSQL_ROOT_PASSWORD: root - MYSQL_USER: domjudge - MYSQL_PASSWORD: domjudge - options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3 - steps: - - uses: actions/checkout@v4 - - name: Import Database - run: mysql -hsqlserver -uroot -proot < .github/jobs/data/dj733.sql - - name: Upgrade DOMjudge - run: .github/jobs/baseinstall.sh default upgrade - - name: Setting initial Admin Password - run: echo "pass" > /opt/domjudge/domserver/etc/initial_admin_password.secret - - name: Check for Errors in the Upgrade - run: mysql -hsqlserver -uroot -proot -e "SHOW TABLES FROM domjudge;" - - name: Check for Errors in DOMjudge Webinterface - run: .github/jobs/webstandard.sh none admin diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index e6921fa834..e69de29bb2 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -1,161 +0,0 @@ -name: Run integration tests -on: - merge_group: - pull_request: - branches: - - main - - '[0-9]+.[0-9]+' - -jobs: - integration: - runs-on: ubuntu-24.04 - timeout-minutes: 20 - container: - image: domjudge/gitlabci:24.04 - options: --privileged --cgroupns=host --init - services: - sqlserver: - image: mariadb - ports: - - 3306:3306 - env: - MYSQL_ROOT_PASSWORD: root - MYSQL_USER: domjudge - MYSQL_PASSWORD: domjudge - options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3 - steps: - - uses: actions/checkout@v4 - - name: info - run: | - cat /proc/cmdline && echo && - cat /proc/mounts && echo && - ls -al /sys/fs/cgroup && echo && - uname -a && echo && - stat -fc %T /sys/fs/cgroup && echo && - cat /proc/self/cgroup && echo && - cat /proc/cpuinfo - - name: pstree - run: pstree -p - - name: Install DOMjudge - run: .github/jobs/baseinstall.sh all - - name: Set up chroot - run: sudo misc-tools/dj_make_chroot -a amd64 - - name: Check nginx - run: curl -v https://localhost/domjudge/ - - name: Configure print command - working-directory: submit - run: | - curl --fail -u 'admin:password' -X 'GET' 'http://localhost/domjudge/api/v4/config?strict=false' \ - | jq '.print_command |= "cp [file] /tmp/dj-printfile"' \ - | curl --fail -u 'admin:password' -X 'PUT' -T - 'http://localhost/domjudge/api/v4/config?strict=false' \ - - name: Testing submit client - working-directory: submit - run: make check-full - - name: Configure judgehost - run: sudo cp /opt/domjudge/judgehost/etc/sudoers-domjudge /etc/sudoers.d/ && sudo chmod 400 /etc/sudoers.d/sudoers-domjudge && cat /opt/domjudge/judgehost/etc/sudoers-domjudge - - name: Create user - run: sudo userdel -f -r domjudge-run-0 ; sudo useradd -d /nonexistent -g nogroup -s /bin/false -u 2222 domjudge-run-0 - - name: Start judging - run: sudo -u domjudge sh -c 'cd /opt/domjudge/judgehost/ && nohup bin/judgedaemon -n 0 &' - - name: Import Kattis example problems - run: | - cd /tmp - git clone --depth=1 https://github.com/Kattis/problemtools.git - cd problemtools/examples - mv hello hello_kattis - # Remove 2 submissions that will not pass validation. The first is because it is - # a Python 2 submission. The latter has a judgement type we do not understand. - rm different/submissions/accepted/different_py2.py different/submissions/slow_accepted/different_slow.py - for i in hello_kattis different guess; do - ( - cd "$i" - zip -r "../${i}.zip" -- * - ) - curl --fail -X POST -n -N -F zip=@${i}.zip http://localhost/domjudge/api/contests/demo/problems - done - - name: Monitor judgehost log and stop once all submissions are judged - run: | - tail -f /opt/domjudge/judgehost/log/judge*-0.log | while read line; do - echo "$line" - grep "No submissions in queue" /opt/domjudge/judgehost/log/judge*-0.log && break - done - - name: dump the db - if: ${{ !cancelled() }} - run: mysqldump -uroot -proot --quick --max_allowed_packet=1024M domjudge > /tmp/db.sql - - name: Upload database dump for debugging - if: ${{ !cancelled() }} - uses: actions/upload-artifact@v4 - with: - name: DB-dump - path: /tmp/db.sql - - name: Get SQL logs - run: docker logs "${{ job.services.sqlserver.id }}" - - name: Collect docker logs on failure - if: ${{ !cancelled() }} - uses: jwalton/gh-docker-logs@v1 - with: - dest: '/tmp/docker-logs' - - name: Upload all logs/artifacts - if: ${{ !cancelled() }} - uses: actions/upload-artifact@v4 - with: - name: Logs - path: | - /var/log/nginx - /opt/domjudge/domserver/webapp/var/log/*.log - /tmp/docker-logs - /tmp/artifacts - - name: Verifying submissions - shell: bash - run: | - set -x - export CURLOPTS="--fail -sq -m 30 -b /tmp/cookiejar" - # Make an initial request which will get us a session id, and grab the csrf token from it - CSRFTOKEN=$(curl $CURLOPTS -c /tmp/cookiejar "http://localhost/domjudge/login" | sed -n 's/.*_csrf_token.*value="\(.*\)".*/\1/p') - # Make a second request with our session + csrf token to actually log in - curl $CURLOPTS -c /tmp/cookiejar -F "_csrf_token=$CSRFTOKEN" -F "_username=admin" -F "_password=password" "http://localhost/domjudge/login" - # Send a general clarification to later test if we see the event. - curl $CURLOPTS -F "sendto=" -F "problem=1-" -F "bodytext=Testing" -F "submit=Send" \ - "http://localhost/domjudge/jury/clarifications/send" -o /dev/null - curl $CURLOPTS "http://localhost/domjudge/jury/judging-verifier?verify_multiple=1" -o /dev/null - NUMNOTVERIFIED=$(curl $CURLOPTS "http://localhost/domjudge/jury/judging-verifier" | grep "submissions checked" | sed -r 's/^.* ([0-9]+) submissions checked.*$/\1/') - NUMVERIFIED=$( curl $CURLOPTS "http://localhost/domjudge/jury/judging-verifier" | grep "submissions not checked" | sed -r 's/^.* ([0-9]+) submissions not checked.*$/\1/') - NUMNOMAGIC=$( curl $CURLOPTS "http://localhost/domjudge/jury/judging-verifier" | grep "without magic string" | sed -r 's/^.* ([0-9]+) without magic string.*$/\1/') - NUMSUBS=$(curl $CURLOPTS http://localhost/domjudge/api/contests/demo/submissions | python3 -mjson.tool | grep -c '"id":') - # We expect - # - two submissions with ambiguous outcome, - # - one submissions submitted through the submit client, and thus the magic string ignored, - # - and all submissions to be judged. - if [ $NUMNOTVERIFIED -ne 2 ] || [ $NUMNOMAGIC -ne 1 ] || [ $NUMSUBS -gt $((NUMVERIFIED+NUMNOTVERIFIED)) ]; then - echo "verified subs: $NUMVERIFIED, unverified subs: $NUMNOTVERIFIED, total subs: $NUMSUBS" - echo "(expected 2 submissions to be unverified, but all to be processed)" - echo "Of these $NUMNOMAGIC do not have the EXPECTED_RESULTS string (should be 1)." - curl $CURLOPTS "http://localhost/domjudge/jury/judging-verifier?verify_multiple=1" | w3m -dump -T text/html - exit 1 - fi - - name: Finalize contest so that awards appear in the feed - shell: bash - run: | - set -x - export CURLOPTS="--fail -m 30 -b $COOKIEJAR" - curl $CURLOPTS http://localhost/domjudge/jury/contests/1/freeze/doNow || true - curl $CURLOPTS http://localhost/domjudge/jury/contests/1/end/doNow || true - curl $CURLOPTS -X POST -d 'finalize_contest[b]=0&finalize_contest[finalizecomment]=gitlab&finalize_contest[finalize]=' http://localhost/domjudge/jury/contests/1/finalize - - name: Verify no errors in symfony {prod,test,dev}.log - shell: bash - run: | - if cat /opt/domjudge/domserver/webapp/var/log/*.log | egrep '(CRITICAL|ERROR):'; then - exit 1 - fi - - name: Download and perform API check - shell: bash - run: | - cd $HOME - curl -o yajsv https://github.com/neilpa/yajsv/releases/download/v1.4.1/yajsv.linux.amd64 - chmod a+x yajsv - echo -e "\033[0m" - git clone https://github.com/icpc/ccs-specs.git - export CCS_SPECS_PINNED_SHA1='a68aff54c4e60fc2bff2fc5c36c119bffa4d30f1' - ( cd ccs-specs && git reset --hard $CCS_SPECS_PINNED_SHA1 ) - export CHECK_API="${HOME}/ccs-specs/check-api.sh -j ${HOME}/yajsv" - $CHECK_API -n -C -e -a 'strict=1' http://admin:password@localhost/domjudge/api diff --git a/.github/workflows/phpcodesniffer.yml b/.github/workflows/phpcodesniffer.yml index 249b86ce63..e69de29bb2 100644 --- a/.github/workflows/phpcodesniffer.yml +++ b/.github/workflows/phpcodesniffer.yml @@ -1,29 +0,0 @@ -name: PHP CodeSniffer - -# Controls when the action will run. -on: - merge_group: - pull_request: - branches: - - main - - '[0-9]+.[0-9]+' -jobs: - phpcs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 # important! - - name: Install PHP_CodeSniffer - run: | - curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar - php phpcs.phar --version - - - uses: domjudge/action-php-codesniffer@master - with: - files: "**.php" # you may customize glob as needed - scope: files - phpcs_path: php phpcs.phar - standard: .github/jobs/data/phpruleset.xml - fail_on_errors: false - fail_on_warnings: false diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index 3d7b4fd952..e69de29bb2 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -1,28 +0,0 @@ -name: Run PHPStan -on: - merge_group: - pull_request: - branches: - - main - - '[0-9]+.[0-9]+' - -jobs: - phpstan: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Setup composer dependencies - run: .github/jobs/composer_setup.sh - - name: Show the phpstan version - run: webapp/vendor/phpstan/phpstan/phpstan --version - - uses: php-actions/phpstan@v3.0.2 - with: - configuration: webapp/phpstan.dist.neon - path: webapp/src webapp/tests - php_extensions: gd intl mysqli pcntl zip - autoload_file: webapp/vendor/autoload.php - version: composer - - uses: actions/upload-artifact@v4 - if: always() - with: - path: /tmp/artifacts diff --git a/.github/workflows/runpipe.yml b/.github/workflows/runpipe.yml index b096a28141..e69de29bb2 100644 --- a/.github/workflows/runpipe.yml +++ b/.github/workflows/runpipe.yml @@ -1,39 +0,0 @@ -name: Run runpipe and runguard tests -on: - merge_group: - pull_request: - branches: - - main - - '[0-9]+.[0-9]+' - -jobs: - runpipe: - runs-on: ubuntu-24.04 - timeout-minutes: 20 - container: - image: domjudge/gitlabci:24.04 - options: --privileged --cgroupns=host --init - steps: - - uses: actions/checkout@v4 - - name: info - run: cat /proc/cmdline && echo && cat /proc/mounts && echo && ls -al /sys/fs/cgroup && echo && uname -a && echo && stat -fc %T /sys/fs/cgroup && echo && cat /proc/self/cgroup - - name: Create the configure file - run: make configure - - name: Do the default configure - run: ./configure --with-baseurl='http://localhost/domjudge/' --with-domjudge-user=domjudge --with-judgehost_chrootdir=${DIR}/chroot/domjudge - - name: Prepare judgehost files - run: make judgehost - - name: Run the actual runpipe tests - working-directory: judge/runpipe_test - run: make test - - name: Add user/group - run: sudo addgroup domjudge-run-0 && sudo usermod -g domjudge-run-0 domjudge-run-0 - - name: Create dir - run: mkdir -p /opt/domjudge/judgehost/tmp/ - - name: Run the actual runguard tests - working-directory: judge/runguard_test - env: - judgehost_tmpdir: /tmp - judgehost_judgedir: /tmp - run: make test - diff --git a/.github/workflows/shiftleft.yml b/.github/workflows/shiftleft.yml index 3f89782341..e69de29bb2 100644 --- a/.github/workflows/shiftleft.yml +++ b/.github/workflows/shiftleft.yml @@ -1,26 +0,0 @@ -name: SL Scan - -on: - merge_group: - -jobs: - Scan-Build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Perform Scan - uses: ShiftLeftSecurity/scan-action@master - env: - WORKSPACE: "" - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SCAN_AUTO_BUILD: true - SCAN_ANNOTATE_PR: 0 - with: - output: reports - type: python,bash - - - name: Upload report - uses: github/codeql-action/upload-sarif@v2 - with: - sarif_file: reports diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index d7fbb3bbc4..e69de29bb2 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -1,101 +0,0 @@ -name: Unit tests -# We can speedup with: https://github.com/actions/cache -on: - merge_group: - pull_request: - branches: - - main - - '[0-9]+.[0-9]+' - -jobs: - check-static-codecov: - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v4 - - name: Download latest codecov upload script - run: | - exit=1 - while [ "$exit" -ne 0 ]; do - wget https://codecov.io/bash -O newcodecov - exit="$?" - if [ "$exit" -ne 0 ]; then - sleep 30 - fi - done - - name: Detect changes to manually verify - run: diff newcodecov .github/jobs/uploadcodecov.sh - - unit-tests: - permissions: - checks: write - runs-on: ubuntu-24.04 - timeout-minutes: 20 - container: - image: domjudge/gitlabci:24.04 - services: - sqlserver: - image: mariadb - ports: - - 3306:3306 - env: - MYSQL_ROOT_PASSWORD: root - MYSQL_USER: domjudge - MYSQL_PASSWORD: domjudge - options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3 - strategy: - matrix: - PHPVERSION: [8.1, 8.4] - TEST: [Unit, E2E] - steps: - - uses: actions/checkout@v4 - - name: info - run: | - cat /proc/cmdline && echo && - cat /proc/mounts && echo && - ls -al /sys/fs/cgroup && echo && - uname -a && echo && - stat -fc %T /sys/fs/cgroup && echo && - cat /proc/self/cgroup && echo && - cat /proc/cpuinfo - - name: pstree - run: pstree -p - - name: Install DOMjudge - run: .github/jobs/baseinstall.sh unit install ${{ matrix.PHPVERSION }} test - - name: Check nginx - run: curl -v https://localhost/domjudge/ - - name: Run the unit-tests - run: .github/jobs/unit-tests.sh ${{ matrix.PHPVERSION }} ${{ matrix.TEST }} - - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action@v2 - if: ${{ !cancelled() }} - with: - comment_mode: changes in failures - check_name: unit-tests-${{ matrix.PHPVERSION }}-${{ matrix.TEST }}.xml - files: unit-tests-${{ matrix.PHPVERSION }}-${{ matrix.TEST }}.xml - - name: Get SQL logs - run: docker logs "${{ job.services.sqlserver.id }}" - - name: Collect docker logs on failure - if: ${{ !cancelled() }} - uses: jwalton/gh-docker-logs@v1 - with: - dest: '/tmp/docker-logs' - - name: Upload all logs/artifacts - if: ${{ !cancelled() }} - uses: actions/upload-artifact@v4 - with: - name: Logs-${{ matrix.PHPVERSION }}-${{ matrix.TEST }} - path: | - /var/log/nginx - /opt/domjudge/domserver/webapp/var/log/*.log - /tmp/docker-logs - /tmp/artifacts - - event_file: - name: "Post results assuming forks" - runs-on: ubuntu-latest - steps: - - name: Upload - uses: actions/upload-artifact@v4 - with: - name: Event File - path: ${{ github.event_path }} diff --git a/.github/workflows/upload-unit-tests.yml b/.github/workflows/upload-unit-tests.yml index 7e21b4942a..e69de29bb2 100644 --- a/.github/workflows/upload-unit-tests.yml +++ b/.github/workflows/upload-unit-tests.yml @@ -1,34 +0,0 @@ -name: Publish unit test results - -on: - workflow_run: - workflows: ["Unit tests"] - types: - - completed - permissions: {} - -jobs: - test-results: - name: Process test results - runs-on: ubuntu-latest - if: github.event.workflow_run.conclusion != 'skipped' - permissions: - # required by download step to access artifacts API - actions: read - # write the actual check-run - checks: write - # needed unless run with comment_mode: off - pull-requests: write - steps: - - name: Download and Extract Artifacts - uses: dawidd6/action-download-artifact@e7466d1a7587ed14867642c2ca74b5bcc1e19a2d - with: - run_id: ${{ github.event.workflow_run.id }} - path: artifacts - #- name: Publish Test Results - # uses: EnricoMi/publish-unit-test-result-action@v2 - # with: - # commit: ${{ github.event.workflow_run.head_sha }} - # event_file: artifacts/Event File/event.json - # event_name: ${{ github.event.workflow_run.event }} - # files: "tmp/artifacts/**/*.xml" diff --git a/.github/workflows/webstandard.yml b/.github/workflows/webstandard.yml index 23e0760cab..e69de29bb2 100644 --- a/.github/workflows/webstandard.yml +++ b/.github/workflows/webstandard.yml @@ -1,65 +0,0 @@ -name: Webstandard (WCAG, W3C) -on: - merge_group: - pull_request: - branches: - - main - - '[0-9]+.[0-9]+' - -jobs: - standards: - runs-on: ubuntu-latest - container: - image: domjudge/gitlabci:24.04 - services: - sqlserver: - image: mariadb - ports: - - 3306:3306 - env: - MYSQL_ROOT_PASSWORD: root - MYSQL_USER: domjudge - MYSQL_PASSWORD: domjudge - options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3 - strategy: - matrix: - role: [public, team, balloon, jury, admin] - test: [w3cval, WCAG2A, WCAG2AA] - db: [bare-install, install] - releaseBranch: - - ${{ contains(github.ref, 'gh-readonly-queue') }} - exclude: - - releaseBranch: false - - role: jury - test: WCAG2AA - - role: jury - test: WCAG2A - - role: admin - test: WCAG2AA - - role: admin - test: WCAG2A - include: - - role: public - test: WCAG2AA - db: install - - role: public - test: w3cval - db: install - - role: admin - test: w3cval - db: install - steps: - - uses: actions/checkout@v4 - - name: Install DOMjudge - run: .github/jobs/baseinstall.sh ${{ matrix.role }} - - name: Run webstandard tests (W3C, WCAG) - run: .github/jobs/webstandard.sh ${{ matrix.test }} ${{ matrix.role }} - - name: Upload all logs/artifacts - if: ${{ !cancelled() }} - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.role }}-${{ matrix.test }}-${{ matrix.db }}-logs - path: | - /tmp/artifacts - /var/log/nginx - /opt/domjudge/domserver/webapp/var/log/*.log From b62a4511aa96663842705bcc544254a0f1b43284 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Mon, 10 Mar 2025 07:44:24 +0100 Subject: [PATCH 25/33] Update setup_configure_image.sh --- .github/jobs/configure-checks/setup_configure_image.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/jobs/configure-checks/setup_configure_image.sh b/.github/jobs/configure-checks/setup_configure_image.sh index 660a5c3878..be478b896c 100755 --- a/.github/jobs/configure-checks/setup_configure_image.sh +++ b/.github/jobs/configure-checks/setup_configure_image.sh @@ -9,7 +9,7 @@ case $distro_id in "ID=arch") pacman -Sy --noconfirm make bats autoconf automake tar ;; "ID=fedora") - dnf install make autoconf automake bats -y + dnf install make autoconf automake bats -y ;; 'ID="opensuse-leap"') zypper install -y make bats autoconf automake ;; *) From 5c09805589ea68337a9fa8e976aecc4092424e85 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Mon, 10 Mar 2025 07:45:56 +0100 Subject: [PATCH 26/33] Update setup_configure_image.sh --- .../jobs/configure-checks/setup_configure_image.sh | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/jobs/configure-checks/setup_configure_image.sh b/.github/jobs/configure-checks/setup_configure_image.sh index be478b896c..10e84b6ed9 100755 --- a/.github/jobs/configure-checks/setup_configure_image.sh +++ b/.github/jobs/configure-checks/setup_configure_image.sh @@ -7,19 +7,16 @@ distro_id=$(grep "^ID=" /etc/os-release) # Install everything for configure and testing case $distro_id in "ID=arch") - pacman -Sy --noconfirm make bats autoconf automake tar ;; + pacman -Sy --noconfirm make bats tar ;; "ID=fedora") - dnf install make autoconf automake bats -y ;; + dnf install make bats -y ;; 'ID="opensuse-leap"') - zypper install -y make bats autoconf automake ;; + zypper install -y make bats ;; *) apt-get update; apt-get full-upgrade -y - apt-get install make bats autoconf -y ;; + apt-get install make bats -y ;; esac -# Build the configure file -make configure - # Install extra assert statements for bots cp submit/assert.bash .github/jobs/configure-checks/ From 0366b5ada70435c3285c1628b53257c365307ec0 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Mon, 10 Mar 2025 08:16:52 +0100 Subject: [PATCH 27/33] Update all.bats --- .github/jobs/configure-checks/all.bats | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/jobs/configure-checks/all.bats b/.github/jobs/configure-checks/all.bats index 468c6e5596..8f5cf1b1fb 100755 --- a/.github/jobs/configure-checks/all.bats +++ b/.github/jobs/configure-checks/all.bats @@ -22,6 +22,9 @@ translate () { if [ "$distro_id" = "ID=fedora" ]; then args=${args/libcgroup-dev/libcgroup-devel} fi + if [ "$distro_id" = "ID=arch" ]; then + args=${args/libcgroup-dev/} + fi echo "$args" } @@ -130,7 +133,7 @@ compile_assertions_finished () { } @test "Install GNU C only" { - if [ "$distro_id" = "ID=fedora" ]; then + if [ "$distro_id" = "ID=fedora" ] || [ "$distro_id" = "ID=arch" ]; then # Fedora ships with a gcc with enough C++ support skip fi From 007f486f2c2f72eaf3d134cdaa27fb9e841034ab Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Mon, 10 Mar 2025 16:54:16 +0100 Subject: [PATCH 28/33] Update all.bats --- .github/jobs/configure-checks/all.bats | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/jobs/configure-checks/all.bats b/.github/jobs/configure-checks/all.bats index 8f5cf1b1fb..ddc88fb0d7 100755 --- a/.github/jobs/configure-checks/all.bats +++ b/.github/jobs/configure-checks/all.bats @@ -19,7 +19,7 @@ fi translate () { args="$@" - if [ "$distro_id" = "ID=fedora" ]; then + if [ "$distro_id" = "ID=fedora" ] || [ "$distro_id" = 'ID="opensuse-leap"' ]; then args=${args/libcgroup-dev/libcgroup-devel} fi if [ "$distro_id" = "ID=arch" ]; then From 49815826d7214b5b6a88185476920fe454584ee3 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Mon, 10 Mar 2025 16:55:01 +0100 Subject: [PATCH 29/33] Update all.bats --- .github/jobs/configure-checks/all.bats | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/jobs/configure-checks/all.bats b/.github/jobs/configure-checks/all.bats index ddc88fb0d7..543db78fca 100755 --- a/.github/jobs/configure-checks/all.bats +++ b/.github/jobs/configure-checks/all.bats @@ -14,7 +14,7 @@ if [ "$distro_id" = "ID=arch" ]; then cmd=pacman fi if [ "$distro_id" = 'ID="opensuse-leap"' ]; then - cmd=zypper + cmd=zypper --non-interactive fi translate () { From 01d116824cb5c0fac6c4ed5e2cfe0ae76f6cf30e Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Tue, 11 Mar 2025 21:02:34 +0100 Subject: [PATCH 30/33] Update all.bats --- .github/jobs/configure-checks/all.bats | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/jobs/configure-checks/all.bats b/.github/jobs/configure-checks/all.bats index 543db78fca..d0221c34d0 100755 --- a/.github/jobs/configure-checks/all.bats +++ b/.github/jobs/configure-checks/all.bats @@ -19,6 +19,9 @@ fi translate () { args="$@" + if [ "$distro_id" = 'ID="opensuse-leap"' ]; then + args=${args/g++/gcc-c++} + fi if [ "$distro_id" = "ID=fedora" ] || [ "$distro_id" = 'ID="opensuse-leap"' ]; then args=${args/libcgroup-dev/libcgroup-devel} fi @@ -46,6 +49,9 @@ setup() { if [ "$distro_id" = "ID=fedora" ]; then repo-install httpd fi + if [ "$distro_id" = 'ID="opensuse-leap"' ]; then + repo-install apache2 + fi repo-install gcc g++ libcgroup-dev composer } @@ -58,13 +64,19 @@ repo-install () { if [ "$distro_id" = "ID=arch" ]; then ${cmd} $args -Sy --noconfirm >/dev/null else - ${cmd} install $args -y >/dev/null + ${cmd} install -y $args >/dev/null fi } repo-remove () { args=$(translate $@) - ${cmd} remove $args -y #>/dev/null + if [ "$distro_id" = 'ID="opensuse-leap"' ]; then + ${cmd} remove -y $args >/dev/null || ret="$?" + if [ "$ret" -ne "104" ]; then + return $? + fi + else + ${cmd} remove -y $args #>/dev/null if [ "$distro_id" != "ID=fedora" ]; then apt-get autoremove -y 2>/dev/null fi From 11b263c5c79db8a05b445058426679f52ad2eaa7 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Tue, 11 Mar 2025 21:21:37 +0100 Subject: [PATCH 31/33] Update all.bats --- .github/jobs/configure-checks/all.bats | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/jobs/configure-checks/all.bats b/.github/jobs/configure-checks/all.bats index d0221c34d0..635cca42f3 100755 --- a/.github/jobs/configure-checks/all.bats +++ b/.github/jobs/configure-checks/all.bats @@ -11,10 +11,10 @@ if [ "$distro_id" = "ID=fedora" ]; then cmd=dnf fi if [ "$distro_id" = "ID=arch" ]; then - cmd=pacman + cmd=pacman --non-interactive fi if [ "$distro_id" = 'ID="opensuse-leap"' ]; then - cmd=zypper --non-interactive + cmd=zypper fi translate () { From 02080cfd608cd71033a523049362345ae6b88ea4 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Tue, 11 Mar 2025 21:26:21 +0100 Subject: [PATCH 32/33] Update all.bats --- .github/jobs/configure-checks/all.bats | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/jobs/configure-checks/all.bats b/.github/jobs/configure-checks/all.bats index 635cca42f3..ff1b85db91 100755 --- a/.github/jobs/configure-checks/all.bats +++ b/.github/jobs/configure-checks/all.bats @@ -77,6 +77,7 @@ repo-remove () { fi else ${cmd} remove -y $args #>/dev/null + fi if [ "$distro_id" != "ID=fedora" ]; then apt-get autoremove -y 2>/dev/null fi From ccdf41f8db025affcebc0174541cc11b7b1befc8 Mon Sep 17 00:00:00 2001 From: MCJ Vasseur <14887731+vmcj@users.noreply.github.com> Date: Fri, 4 Apr 2025 22:59:46 +0200 Subject: [PATCH 33/33] Update Makefile --- doc/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Makefile b/doc/Makefile index 5410e16de7..f86e10a5d4 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -9,6 +9,7 @@ include $(TOPDIR)/Makefile.global # Subdirectories to recurse into for REC_TARGETS SUBDIRS = manual examples inplace-install inplace-uninstall: SUBDIRS=manual +distclean: SUBDIRS=examples install-docs-l: $(INSTALL_DATA) -t $(DESTDIR)$(domjudge_docdir)/logos logos/DOMjudgelogo.pdf