Subject: Re: [Question] How to fix 'static-analysis' build on Ubuntu 20.04

From: SZEDER Gábor <[email-masked]>
Date: Tue, 23 Aug 2022 00:26:01 +0200

On Mon, Aug 22, 2022 at 11:19:11AM -0400, Derrick Stolee wrote:
> While preparing my latest series, I noticed that the GitHub Actions CI
> builds were cancelling the 'static-analysis' job because of a brownout of
> Ubuntu 18.04. We are recommended to upgrade to 20.04.
> 
> However, we explicitly chose 18.04 in d051ed77ee6
> (.github/workflows/main.yml: run static-analysis on bionic, 2021-02-08)
> because coccinelle was not available in 20.04. It still isn't available
> since I tried the basic update and it failed [1]
> 
> [1] https://github.com/gitgitgadget/git/runs/7955077955?check_suite_focus=true#step:3:98
> 
> Does anyone have an idea of how to install coccinelle on this newer
> version? 

Containers?  I've built Docker containers from most recent Coccinelle
versions and used to use them in my custom Travis CI build jobs; the
version included in Ubuntu 18.04 is rather old, and apparently it
doesn't catch some transformations that later versions do [1].  I'm
sure it's somehow possible to use such containers in GitHub Actions as
well.

> Should we try compiling it from source for this job?

It's not that difficult to build Coccinelle from source once you
figure out its OCaml dependencies...  And luckily those dependencies
seem to be rather stable: we can pass the same dozen or so package
names to 'apt-get' to install all its build dependencies both on
ubuntu:18.04 and :20.04 base images.

However, installing dependencies and building Coccinelle takes almost
5 minutes on my machine; I don't think we'd want to add that much
overhead to every CI build.

> Should we
> consider moving off of coccinelle and onto a different tool?

Is there any other comparable tool out there?!

[1] https://public-inbox.org/git/[email-masked]/
    a6a01e7d8a (promisor-remote: fix xcalloc() argument order, 2022-08-22)
    d2c4e6292a (builtin rebase: use oideq(), 2019-04-06)
    7762f44ee0 (builtin rebase: use FREE_AND_NULL, 2019-04-06)
[2] In a sequential build; alas parallel builds always fail.