Re: [PATCH v4 0/5] meson: add corresponding target for Makefile's hdr-check

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Phillip Wood <phillip.wood123@xxxxxxxxx> writes:

> On 21/04/2025 08:48, Junio C Hamano wrote:
>> Karthik Nayak <karthik.188@xxxxxxxxx> writes:
>>
>>> This is based on master 9d22ac5122 (The third batch, 2025-04-07) with
>>> 'es/meson-build-skip-coccinelle' merged in.
>>>
>>
>> Like the previous round, this round also seems to break linux.meson
>> job at GitHub Actions CI when merged to 'seen'.  It may be quite
>> possible that it is caused by some semantic conflicts, and help to
>> find where the merged result is wrong is very much appreciated.
>>
>> For now, I've ejected the topic out of 'seen' again.
>>
>> Failing CI run:
>>
>> https://github.com/git/git/actions/runs/14563669225/job/40850047961
>>
>
> "git ls-files" is complaining that there isn't a git repository. Looking
> at the output of the checkout action (reproduced below) it appears it is
> extracting a tarball rather than using "git clone" because git is not
> available. I don't know what the best way to fix that is - I guess we
> could run "apt-get install git" before calling the checkout action.
>
> Best Wishes
>
> Phillip
>
>
> Run actions/checkout@v4
> /usr/bin/docker exec
> 6334961fdc01ddadb7a7af1fadd8ae33a6fce79b7428255d2231145f5e09f51d sh -c
> "cat /etc/*release | grep ^ID"
> Syncing repository: git/git
> Getting Git version info
>    Working directory is '/__w/git/git'
> Deleting the contents of '/__w/git/git'
> The repository will be downloaded using the GitHub REST API
> To create a local Git repository instead, add Git 2.18 or higher to the PATH
> Downloading the archive
> Writing archive to disk
> Extracting the archive
> /usr/bin/tar xz --warning=no-unknown-keyword --overwrite -C
> /__w/git/git/23521f8f-82bd-4a9b-994a-cacfd7101756 -f
> /__w/git/git/23521f8f-82bd-4a9b-994a-cacfd7101756.tar.gz
> Resolved version git-git-c9e21a0

Yup, this seems to be the reason, I was primarily using GitLab CI for
ensuring everything was working, apart from locally testing it. Seems
like there is no issues on GitLab CI:

  https://gitlab.com/gitlab-org/git/-/pipelines/1777164771

So the only difference, is that, like you mentioned, GitHub strips the
repository information by downloading a tar file using the REST API. The
reason seems to be due to missing the 'git' executable:

  https://github.com/actions/checkout/issues/363

I tested this with the following patch, which seems to fix the issue at
hand. Will send in a new version with this patch, once I validate all
the tests.

-- >8 --

commit b4567cac2b5eb5e9b50b468a85854bad66a9f445
Author: Karthik Nayak <karthik.188@xxxxxxxxx>
Date:   Mon Apr 21 13:06:45 2025 +0200

    ci/github: install git before checking out the repository

    The GitHub CI workflow uses 'actions/checkout@v4' to checkout the
    repository. This action defaults to using the GitHub REST API to obtain
    the repository if Git isn't present. The REST API downloads a tar of the
    repository sans the Git information. Since we don't install Git before
    this step, using the REST API is the current behavior.

    The following commits will add the 'hdr-check' static check to meson.
    The check will use 'git ls-files' to obtain the set of header files.
    This will fail if the repository doesn't contain the Git directory. So
    install Git before running the 'actions/checkout@v4' action.

    Signed-off-by: Karthik Nayak <karthik.188@xxxxxxxxx>

diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 37541f3d10..a09fcf4d72 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -414,6 +414,16 @@ jobs:
     - name: prepare libc6 for actions
       if: matrix.vector.jobname == 'linux32'
       run: apt -q update && apt -q -y install libc6-amd64 lib64stdc++6
+    - name: install git in container
+      run: |
+        if [ -f /etc/alpine-release ]; then
+          apk update && apk add --no-cache git
+        elif [ -f /etc/almalinux-release ] || [ -f /etc/redhat-release ]; then
+           dnf -y install git
+        else
+          apt -q update && apt -q -y install git
+        fi
+        git config --global --add safe.directory "$GITHUB_WORKSPACE"
     - uses: actions/checkout@v4
     - run: ci/install-dependencies.sh
     - run: useradd builder --create-home

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux