Bug 2100618 - %go_generate_buildrequires can't work in current c9s because of golist is not in the PATH when bundled
Summary: %go_generate_buildrequires can't work in current c9s because of golist is not...
Keywords:
Status: NEW
Alias: None
Product: Red Hat Enterprise Linux 9
Classification: Red Hat
Component: go-rpm-macros
Version: CentOS Stream
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: 9.2
Assignee: David Benoit
QA Contact: Edjunior Barbosa Machado
URL:
Whiteboard:
Depends On:
Blocks: 2095050
TreeView+ depends on / blocked
 
Reported: 2022-06-23 19:33 UTC by Robert-André Mauchin 🐧
Modified: 2022-07-19 07:50 UTC (History)
9 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Type: Bug
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker RHELPLAN-126171 0 None None None 2022-06-23 19:47:53 UTC

Description Robert-André Mauchin 🐧 2022-06-23 19:33:56 UTC
So, if we want to build a package on C9S which uses %go_generate_buildrequires it fails because of missing golist.

This is because when it was decided to bundle golist in go-rpm-macros, the location of the golist binary was not fixed in all files, it is missing from rpm/gosymlink.deps and rpm/macros.d/macros.go-rpm.

Comment 1 Robert-André Mauchin 🐧 2022-06-23 19:35:00 UTC
MR: https://gitlab.com/redhat/centos-stream/rpms/go-rpm-macros/-/merge_requests/9

Comment 2 Robert-André Mauchin 🐧 2022-06-23 19:57:41 UTC
It also seems to impact the generated Provides for compat/symlinked packages, here with golang-gopkg-logex-1 with a compat golang-github-chzyer-logex:


Provides: golang(gopkg.in/logex.v1) = 1.1.10-16.el9 golang-gopkg-logex-1-devel = 1.1.10-16.el9 golang-ipath(gopkg.in/logex.v1) = 1.1.10-16.el9
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: go-filesystem
Obsoletes: golang-github-chzyer-logex-devel < 1.1.10-9
Processing files: compat-golang-github-chzyer-logex-devel-1.1.10-16.el9.noarch

/usr/lib/rpm/gosymlink.deps: line 127: golist: command not found <---------------------
Provides: compat-golang-github-chzyer-logex-devel = 1.1.10-16.el9 golang-symlink(github.com/chzyer/logex) = 1.1.10-16.el9


Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: go-filesystem golang-ipath(gopkg.in/logex.v1) = 1.1.10-16.el9
Obsoletes: golang-github-chzyer-logex-devel < 1.1.10-16.el9 


On Fedora Rawhide we have:


Provides: golang(gopkg.in/logex.v1) = 1.1.10-16.fc37 golang-gopkg-logex-1-devel = 1.1.10-16.fc37 golang-ipath(gopkg.in/logex.v1) = 1.1.10-16.fc37
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: go-filesystem
Obsoletes: golang-github-chzyer-logex-devel < 1.1.10-9
Processing files: compat-golang-github-chzyer-logex-devel-1.1.10-16.fc37.noarch

Provides: compat-golang-github-chzyer-logex-devel = 1.1.10-16.fc37 golang(github.com/chzyer/logex) = 1.1.10-16.fc37 golang-symlink(github.com/chzyer/logex) = 1.1.10-16.fc37


Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: go-filesystem golang-ipath(gopkg.in/logex.v1) = 1.1.10-16.fc37
Obsoletes: golang-github-chzyer-logex-devel < 1.1.10-16.fc37


You can see here in EL9, we have the compat- Provides, the golang-symlink Provides, but not the golang(github.com/chzyer/logex), which prevents other packages to depend on the old golang import path.

Comment 3 Maxwell G 2022-06-25 01:42:57 UTC
golist does not exist as a standalone package in el9, so your patch won't work. It's bundled as part of go-rpm-macros itself and located in %{_libexecdir}/go-rpm-macros/golist. If the macros or go-rpm-integration cannot find the bundled golist (presumably because it's not in $PATH), they need to be patched to do so.

<After some more digging...>

It looks like the maintainers patched go-rpm-integration to use the correct path[1], but not the other invocations[2].


[1]: https://gitlab.com/redhat/centos-stream/rpms/go-rpm-macros/-/blob/c9s/go-rpm-macros.spec#L208
[2]:
```
$ 
rg golist -g '!README.md' -g '!LICENSE*'       ±[●●][c9s]
bin/go-rpm-integration:
388:  /usr/libexec/go-rpm-macros//golist --to-install --package-path ${goipath} $(expandflags)
394:  /usr/libexec/go-rpm-macros//golist --provided --tests --package-path ${goipath} $(expandflags) |\
411:    /usr/libexec/go-rpm-macros//golist --provided --package-path "${goipath}" $(expandflags) \
425:  /usr/libexec/go-rpm-macros//golist --imported  --package-path "${1}" $(expandflags) \

rpm/gosymlink.deps:
128:    golist --provided --package-path "${goipath}" $(expandflags) \

rpm/macros.d/macros.go-rpm:
(This is part of the definition of %go_generate_buildrequires)
176:local    golistargs = ""
179:    golistargs = golistargs .. " --package-path %{goipath" .. s .. "}"
181:  golistargs   = string.gsub(golistargs, "^ ", "")
183:  golistargs   = "--package-path " .. forcedgoipath
185:  golistargs   = "--package-path %{goipath" .. rpm.expand("%{?-z*}") .. "}"
(This is the relevant line)
189:                 "golist --imported " .. golistargs ..
```

Comment 4 Robert-André Mauchin 🐧 2022-06-25 10:28:53 UTC
Ha yes, I though the golist was still a separate subpackage and I didn't check the spec for how it was incorporated.

Anyhow I've created a MR thanks to your explaination:
https://gitlab.com/redhat/centos-stream/rpms/go-rpm-macros/-/merge_requests/10

Thanks a lot!


Note You need to log in before you can comment on or make changes to this bug.