Subject: [bug#65351] [PATCH v2 1/7] gnu: cgit: Make git-source a native input.

From: Arun Isaac <[email-masked]>
Date: Wed, 04 Oct 2023 00:27:01 +0100

Hi Liliana,

>> > This patch is broken and it doesn't appear to get fixed in 4/7.  If
>> > you want git-source to be in native-inputs, you need to use (or
>> > native-inputs inputs).
>> 
>> I'm not sure what you mean. I am able to build both cgit and cgit-
>> pink on my machine. The QA system also agrees with
>> me. https://qa.guix.gnu.org/issue/65351
> CI doesn't do cross-builds, it does simulated native builds, so you
> won't see the issue.

Ah, I see what you mean now. I have deleted the patch making git-source a
native input. I guess it's ok to leave it as an input since it doesn't
really matter in this case.

> Indeed, there is precedent.  However, when moving stuff around, such as
> in 1, you also need to update the dependent stuff, which you haven't
> done and which also causes more noise along the line.  In this series,
> you need three commits to basically get input handling "correct".  The
> intermediate commits are duds in terms of guix time-machine, which
> isn't great.

I have reworked the patchset into only 3 patches now. Let me know if
this is ok.

>> > In 7, you might want to use /bin/sh if the compatibility is meant
>> > for stuff that actually lands in the store.
>> 
>> /bin/sh doesn't work. I have tried. If I remember correctly, this is
>> to do with how the SHELL_PATH gets substituted into generated
>> scripts.
> For the record, what kind of generated scripts are we talking here? 
> Invoked at build time or sent to the store?

The cgit Makefiles are tightly coupled with git source code and the git
Makefiles. The generated scripts are wrapper scripts for git binaries
like git-shell, git-upload-archive, git-upload-pack, etc. As far as I
can tell, cgit does not use them at all. They are neither invoked at
build time nor are they sent to the store. They are only invoked at test
time, and that fails if you have SHELL_PATH=sh. This specifically
bothers only cgit-pink and not cgit since cgit does not run the test
suite.

SHELL_PATH is also directly executed as a shell in some parts of the
Makefile. For example,

--8<---------------cut here---------------start------------->8---
GIT-VERSION-FILE: FORCE
	@$(SHELL_PATH) ./GIT-VERSION-GEN
--8<---------------cut here---------------end--------------->8---

and

--8<---------------cut here---------------start------------->8---
config-list.h: Documentation/*config.txt Documentation/config/*.txt
	$(QUIET_GEN)$(SHELL_PATH) ./generate-configlist.sh >$@
--8<---------------cut here---------------end--------------->8---

That's why SHELL_PATH=/bin/sh fails since /bin/sh does not exist in the
build environment.

A v3 patchset follows.

Cheers!