mikelo2 reported a new issue against the project: `go-rpm-macros` that you are
following:
``
Google Cloud's golang SDK used to be a large package, but now each module has
different lifecycle while still being a monorepo. This means that multiple
subpackages need to be created.
While creating these packages I found a strange behavior with doc files: doc
files are installed also in what it would be the original root goipath, causing
file conflicts between all submodules.
```
Error: Transaction test error:
file /usr/share/gocode/src/cloud.google.com/go/CHANGES.md conflicts between
attempted installs of
golang-cloud-google-compute-metadata-devel-0.2.3-1.fc40~bootstrap.noarch and
golang-cloud-google-devel-0.110.9-1.fc40~bootstrap.noarch
file /usr/share/gocode/src/cloud.google.com/go/CONTRIBUTING.md conflicts
between attempted installs of
golang-cloud-google-compute-metadata-devel-0.2.3-1.fc40~bootstrap.noarch and
golang-cloud-google-devel-0.110.9-1.fc40~bootstrap.noarch
file /usr/share/gocode/src/cloud.google.com/go/README.md conflicts between
attempted installs of
golang-cloud-google-compute-metadata-devel-0.2.3-1.fc40~bootstrap.noarch and
golang-cloud-google-devel-0.110.9-1.fc40~bootstrap.noarch
file /usr/share/gocode/src/cloud.google.com/go/compute/CHANGES.md conflicts
between attempted installs of
golang-cloud-google-compute-devel-1.23.2-1.fc40~bootstrap.noarch and
golang-cloud-google-compute-metadata-devel-0.2.3-1.fc40~bootstrap.noarch
```
Checking `compute/metadata` module, it can be seen that doc files are installed
in different paths (marked with `<--`):
```
(...)
/usr/share/gocode/src/cloud.google.com
/usr/share/gocode/src/cloud.google.com/go
/usr/share/gocode/src/cloud.google.com/go/CHANGES.md <--
/usr/share/gocode/src/cloud.google.com/go/CODE_OF_CONDUCT.md <--
/usr/share/gocode/src/cloud.google.com/go/CONTRIBUTING.md <--
/usr/share/gocode/src/cloud.google.com/go/README.md <--
/usr/share/gocode/src/cloud.google.com/go/RELEASING.md <--
/usr/share/gocode/src/cloud.google.com/go/SECURITY.md <--
/usr/share/gocode/src/cloud.google.com/go/compute
/usr/share/gocode/src/cloud.google.com/go/compute/CHANGES.md <--
/usr/share/gocode/src/cloud.google.com/go/compute/README.md <--
/usr/share/gocode/src/cloud.google.com/go/compute/metadata
/usr/share/gocode/src/cloud.google.com/go/compute/metadata/.goipath
/usr/share/gocode/src/cloud.google.com/go/compute/metadata/CHANGES.md <--
/usr/share/gocode/src/cloud.google.com/go/compute/metadata/CODE_OF_CONDUCT.md
<--
/usr/share/gocode/src/cloud.google.com/go/compute/metadata/CONTRIBUTING.md <--
/usr/share/gocode/src/cloud.google.com/go/compute/metadata/README.md <--
/usr/share/gocode/src/cloud.google.com/go/compute/metadata/RELEASING.md <--
/usr/share/gocode/src/cloud.google.com/go/compute/metadata/SECURITY.md <--
(...)
```
The spec has the following setting for goipath:
```
%global goipath cloud.google.com/go/%{module}
```
That means that files should be installed under the module path
`cloud.google.com/go/%{module}`, not in the root `cloud.google.com/go`
Checking one of the Azure's SDK spec files, that now has also subpackages as
Google's, I see "root" goipath doesn't have doc files installed, only in the
module goipath:
```
(...)
/usr/share/gocode/src/github.com
/usr/share/gocode/src/github.com/Azure
/usr/share/gocode/src/github.com/Azure/azure-sdk-for-go <-- no files
/usr/share/gocode/src/github.com/Azure/azure-sdk-for-go/sdk <-- no files
/usr/share/gocode/src/github.com/Azure/azure-sdk-for-go/sdk/storage <-- no
files
/usr/share/gocode/src/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
/usr/share/gocode/src/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/.goipath
/usr/share/gocode/src/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/CHANGELOG.md
/usr/share/gocode/src/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/CODE_OF_CONDUCT.md
/usr/share/gocode/src/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/CONTRIBUTING.md
/usr/share/gocode/src/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/README.md
/usr/share/gocode/src/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/SECURITY.md
/usr/share/gocode/src/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/SUPPORT.md
(...)
```
The spec file doesn't have anything special other than having to move the
module to the root of the builddir. This is also done in the Azure spec files.
- Google's `compute/metadata` spec:
https://raw.githubusercontent.com/mikelolasagasti/google-sdk-ng/main/golang-cloud-google-compute-metadata.spec
- Azure's `storage/azblob` spec:
https://src.fedoraproject.org/rpms/golang-github-azure-sdk-storage-azblob/raw/rawhide/f/golang-github-azure-sdk-storage-azblob.spec
Inspecting in a mock shell I see
`golang-cloud-google-compute-metadata-devel.file-list` includes all the correct
and wrong paths. Moving that file and running manually `go-rpm-integration` I
see less files being installed:
~~~
(...)
go-rpm-integration install -i cloud.google.com/go/compute/metadata -b
/builddir/build/BUILD/google-cloud-go-compute-metadata-v0.2.3/_build/bin -s
/builddir/build/BUILD/google-cloud-go-compute-metadata-v0.2.3/_build -o
golang-cloud-google-compute-metadata-devel.file-list -O
/builddir/build/BUILD/google-cloud-go-compute-metadata-v0.2.3 -V
0.2.3-1.fc40~bootstrap -T compute/metadata/v0.2.3 -p
/builddir/build/BUILDROOT/golang-cloud-google-compute-metadata-0.2.3-1.fc40~bootstrap.x86_64
-g /usr/share/gocode -r '.*example.*'
(...)
<mock-chroot> sh-5.2# diff -u
golang-cloud-google-compute-metadata-devel.file-list
golang-cloud-google-compute-metadata-devel.file-list.old
--- golang-cloud-google-compute-metadata-devel.file-list 2023-11-04
18:58:25.691910878 +0100
+++ golang-cloud-google-compute-metadata-devel.file-list.old 2023-11-04
18:53:36.369990645 +0100
@@ -10,8 +10,19 @@
"/usr/share/gocode/src/cloud.google.com/go/compute/metadata/retry_linux_test.go"
"/usr/share/gocode/src/cloud.google.com/go/compute/metadata/retry_test.go"
"/usr/share/gocode/src/cloud.google.com/go/compute/metadata/tidyfix.go"
+%dir "/usr/share/gocode/src/cloud.google.com"
+%dir "/usr/share/gocode/src/cloud.google.com/go"
+%dir "/usr/share/gocode/src/cloud.google.com/go/compute"
%dir "/usr/share/gocode/src/cloud.google.com/go/compute/metadata"
%dir "/usr/share/gocode/src/cloud.google.com/go/compute/metadata/internal"
+%doc "/usr/share/gocode/src/cloud.google.com/go/CHANGES.md"
+%doc "/usr/share/gocode/src/cloud.google.com/go/CODE_OF_CONDUCT.md"
+%doc "/usr/share/gocode/src/cloud.google.com/go/CONTRIBUTING.md"
+%doc "/usr/share/gocode/src/cloud.google.com/go/README.md"
+%doc "/usr/share/gocode/src/cloud.google.com/go/RELEASING.md"
+%doc "/usr/share/gocode/src/cloud.google.com/go/SECURITY.md"
+%doc "/usr/share/gocode/src/cloud.google.com/go/compute/CHANGES.md"
+%doc "/usr/share/gocode/src/cloud.google.com/go/compute/README.md"
%doc "/usr/share/gocode/src/cloud.google.com/go/compute/metadata/CHANGES.md"
%doc
"/usr/share/gocode/src/cloud.google.com/go/compute/metadata/CODE_OF_CONDUCT.md"
%doc
"/usr/share/gocode/src/cloud.google.com/go/compute/metadata/CONTRIBUTING.md"
@@ -20,3 +31,5 @@
%doc "/usr/share/gocode/src/cloud.google.com/go/compute/metadata/SECURITY.md"
%doc "/usr/share/gocode/src/cloud.google.com/go/compute/metadata/migration.md"
%doc "/usr/share/gocode/src/cloud.google.com/go/compute/metadata/testing.md"
+%doc "/usr/share/gocode/src/cloud.google.com/go/testing.md"
+%license "LICENSE"
~~~
I don't know when those other `%dir`, `%doc` and `%license%` are being added, I
guess it's part of `go-rpm-macros`'s job.
I modified spec's goipath from `cloud.google.com/go/%{module}` to
`github.com/GoogleCloudPlatform/google.com/go/%{module} ` just for testing
purposes and the package only includes the required `%docs`.
I tried removing `%global godocs` but didn't work. The only workaround I see
that may work is editing `.file-list` file to remove unneeded files.
``
To reply, visit the link below or just reply to this email
https://pagure.io/go-rpm-macros/issue/57
_______________________________________________
golang mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedoraproject.org/archives/list/[email protected]
Do not reply to spam, report it:
https://pagure.io/fedora-infrastructure/new_issue