Message ID | pull.994.v3.git.1627331236817.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3] ci: run `make sparse` as part of the GitHub workflow | expand |
"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com> writes: > From: Johannes Schindelin <johannes.schindelin@gmx.de> > > Occasionally we receive reviews after patches were integrated, where > `sparse` (https://sparse.docs.kernel.org/en/latest/ has more information > on that project) identified problems such as file-local variables or > functions being declared as global. > > By running `sparse` as part of our Continuous Integration, we can catch > such things much earlier. Even better: developers who activated GitHub > Actions on their forks can catch such issues before even sending their > patches to the Git mailing list. > > This addresses https://github.com/gitgitgadget/git/issues/345 > > Note: Not even Ubuntu 20.04 ships with a new enough version of `sparse` > to accommodate Git's needs. The symptom looks like this: > > add-interactive.c:537:51: error: Using plain integer as NULL pointer > > To counter that, we download and install the custom-built `sparse` > package from the Azure Pipeline that we specifically created to address > this issue. > > Helped-by: Jeff King <peff@peff.net> > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> > --- OK, this is with Peff's "oh, we need 'apt-get update' to avoid stale package list" fix already rolled in? It seems you took both of them, and they look good to me, too. Unfortunately, ci-make-sparse has already been in 'next' for the past week or so, so incrementals are vastly preferred. Let me squish in your "Acked-by" to both of Peff's patches and queue them on top of js/ci-make-sparse topic. Thanks.
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 73856bafc9d..224c46b6d6a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -350,6 +350,26 @@ jobs: - uses: actions/checkout@v1 - run: ci/install-dependencies.sh - run: ci/run-static-analysis.sh + sparse: + needs: ci-config + if: needs.ci-config.outputs.enabled == 'yes' + env: + jobname: sparse + runs-on: ubuntu-20.04 + 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@v2 + - name: Install other dependencies + run: ci/install-dependencies.sh + - run: make sparse documentation: needs: ci-config if: needs.ci-config.outputs.enabled == 'yes' diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh index 67852d0d37f..5772081b6e5 100755 --- a/ci/install-dependencies.sh +++ b/ci/install-dependencies.sh @@ -65,6 +65,11 @@ StaticAnalysis) sudo apt-get -q -y install coccinelle libcurl4-openssl-dev libssl-dev \ libexpat-dev gettext make ;; +sparse) + sudo apt-get -q update -q + sudo apt-get -q -y install libssl-dev libcurl4-openssl-dev \ + libexpat-dev gettext zlib1g-dev + ;; Documentation) sudo apt-get -q update sudo apt-get -q -y install asciidoc xmlto docbook-xsl-ns make