OBS Source Service to download, verify and vendor Go module dependency sources

Edit Package obs-service-go_modules

Using go.mod and go.sum distributed with a Go application, the obs-service-go_modules service calls go mod download, go mod verify and go mod vendor. The service then creates vendor.tar.gz containing the vendor/ directory populated by go mod vendor, allowing Go application package builds without network access during the build stage.

Refresh
Refresh
Source Files
Filename Size Changed
_service 0000000681 681 Bytes
_servicedata 0000000248 248 Bytes
obs-service-go_modules-0.6.4.tar.gz 0000015874 15.5 KB
obs-service-go_modules.changes 0000007052 6.89 KB
obs-service-go_modules.spec 0000002931 2.86 KB
Revision 23 (latest revision is 26)
Jeff Kowalczyk's avatar Jeff Kowalczyk (jfkw) accepted request 1116358 from Jeff Kowalczyk's avatar Jeff Kowalczyk (jfkw) (revision 23)
- Require go1.21 to make sure it works with go.mod files that contain a three-digit-version (e.g. 1.21.1)
- Use BuildRequires: golang(API) >= 1.21 instead of go >= 1.21
  * The recommended Go toolchain dependency expression is
    BuildRequires: golang(API) >= 1.x or optionally the metapackage
    BuildRequires: go
  * The go metapackage points to a single go version that
    increments at a date TBD after each go1.x major release. The
    expression golang(API) is available immediately upon each go1.x
    major release and is stable for expressing the minimum version
    or a temporarily pinned version.
  * Refs boo#1214933
  * Refs https://github.com/openSUSE/obs-service-go_modules/issues/33 (forwarded request 1116356 from jfkw)
Comments 2

Jordi Massaguer's avatar

SUPER!!! Thanks for this package!

Which "dependency resolution softwares" "supports"? I mean, if I use go get, do this work? Or how do you get the list of the modules that need to go into the vendor directory?


Jeff Kowalczyk's avatar

The service extracts the full application source to read go.mod and go.sum contained in the application root. It then uses the online source service phase to download all Go modules in the transitive set of dependencies. Finally it creates a vendor.tar.gz containing all dependencies imported by the Go application and its test code.

During the offline build phase the Go application .spec references vendor.tar.gz as a source, and go build and related commands pass argument go build -mod=vendor or set environment variable GOFLAGS=-mod=vendor. Other Go tools to explore or graph dependencies in the offline build phase should be usable with these vendored dependencies.

There is documentation in the README and manpage that covers the above in more detail. Issues and feature requests welcome at https://github.com/openSUSE/obs-service-go_modules.

openSUSE Build Service is sponsored by