From b01a5cb91b3675cd85142788b5a20bc09dab8c47 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 8 Apr 2025 21:02:58 +0200 Subject: [PATCH 1/3] ci: upgrade `sparse` to supported build agents The `sparse` job still uses the `ubuntu-20.04` runner pool, but that pool is about to go away, so let's stop using it. There is no `sparse-22.04` artifact provided by the "Build sparse for Ubuntu" Azure Pipeline, but that is not necessary anyway because Ubuntu 22.04 has the `sparse` package: https://packages.ubuntu.com/jammy/sparse Signed-off-by: Johannes Schindelin --- .github/workflows/main.yml | 11 +---------- ci/install-dependencies.sh | 2 +- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ff44c0a8c0673a..c9455246269d2d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -449,20 +449,11 @@ jobs: if: needs.ci-config.outputs.enabled == 'yes' env: jobname: sparse - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 concurrency: group: sparse-${{ github.ref }} cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }} steps: - - name: Download a current `sparse` package - # Ubuntu's `sparse` version is too old for us - uses: git-for-windows/get-azure-pipelines-artifact@v0 - with: - repository: git/git - definitionId: 10 - artifact: sparse-20.04 - - name: Install the current `sparse` package - run: sudo dpkg -i sparse-20.04/sparse_*.deb - uses: actions/checkout@v4 - name: Install other dependencies run: ci/install-dependencies.sh diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh index 0df74610d063fb..8700c0f2924d7f 100755 --- a/ci/install-dependencies.sh +++ b/ci/install-dependencies.sh @@ -119,7 +119,7 @@ StaticAnalysis) sparse) sudo apt-get -q update -q sudo apt-get -q -y install libssl-dev libcurl4-openssl-dev \ - libexpat-dev gettext zlib1g-dev + libexpat-dev gettext zlib1g-dev sparse ;; Documentation) sudo apt-get -q update From cbfd8c03aa20d9e37630a1b219069f73bf17d5bb Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 8 Apr 2025 22:00:15 +0200 Subject: [PATCH 2/3] fixup! ci: run Scalar's Functional Tests The `ubuntu-20.04` pool is going away, let's not use it anymore. Signed-off-by: Johannes Schindelin --- .github/workflows/scalar-functional-tests.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/scalar-functional-tests.yml b/.github/workflows/scalar-functional-tests.yml index 4886c20450f726..6bf972709ab031 100644 --- a/.github/workflows/scalar-functional-tests.yml +++ b/.github/workflows/scalar-functional-tests.yml @@ -20,15 +20,13 @@ jobs: fail-fast: false matrix: # Order by runtime (in descending order) - os: [windows-2019, macos-13, ubuntu-20.04, ubuntu-22.04] + os: [windows-2019, macos-13, ubuntu-22.04] # Scalar.NET used to be tested using `features: [false, experimental]` # But currently, Scalar/C ignores `feature.scalar` altogether, so let's # save some electrons and run only one of them... features: [ignored] exclude: # The built-in FSMonitor is not (yet) supported on Linux - - os: ubuntu-20.04 - features: experimental - os: ubuntu-22.04 features: experimental runs-on: ${{ matrix.os }} From d63df299ee37ac7c76bfc7d4c54a23433e985404 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Wed, 17 Jul 2024 06:17:41 +0700 Subject: [PATCH 3/3] sparse: ignore warning from new glibc headers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With at least glibc 2.39, glibc provides a function declaration that matches with this POSIX interface: int regexec(const regex_t *restrict preg, const char *restrict string, size_t nmatch, regmatch_t pmatch[restrict], int eflags); such prototype requires variable-length-array for `pmatch'. Thus, sparse reports this error: > ../add-patch.c: note: in included file (through ../git-compat-util.h): > /usr/include/regex.h:682:41: error: undefined identifier '__nmatch' > /usr/include/regex.h:682:41: error: bad constant expression type > /usr/include/regex.h:682:41: error: Variable length array is used. Note: `__nmatch' is POSIX's nmatch. The glibc's intention is informing their users to provides a large enough buffer to hold `__nmatch' results and provides diagnosis if necessary. It's merely a glibc' implementation detail. Hide that usage from sparse by using standard C11's macro: __STDC_NO_VLA__ Signed-off-by: Đoàn Trần Công Danh Signed-off-by: Johannes Schindelin --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6fefa3d8db3a40..898a2fa5dd99d0 100644 --- a/Makefile +++ b/Makefile @@ -1424,7 +1424,7 @@ ARFLAGS = rcs PTHREAD_CFLAGS = # For the 'sparse' target -SPARSE_FLAGS ?= -std=gnu99 +SPARSE_FLAGS ?= -std=gnu99 -D__STDC_NO_VLA__ SP_EXTRA_FLAGS = # For informing GIT-BUILD-OPTIONS of the SANITIZE=leak,address targets