Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Only allow builds when go build also works #110

Merged
merged 14 commits into from
Feb 24, 2024
Merged

Only allow builds when go build also works #110

merged 14 commits into from
Feb 24, 2024

Conversation

hugelgupf
Copy link
Member

@hugelgupf hugelgupf commented Feb 24, 2024

This PR adds support for Go workspaces, including vendored workspaces, as well as support for offline builds in all cases -- vendored workspaces, vendored command modules, and GOPATH.

This removes support for "synthesized" go.mod files, in which stuff like

git clone https://github.com/u-root/u-root
git clone https://github.com/u-root/cpu
makebb ./u-root/cmds/core/init ./cpu/cmds/cpud

used to work. In the same situation, go build ./u-root/cmds/core/init ./cpu/cmds/cpud would not have worked.

makebb ./u-root/cmds/core/init ./cpu/cmds/cpud
...
Preserving bb generated source directory at /tmp/bb-3596733969 due to error: finding packages failed: err: exit status 1: stderr: go: go.mod file not found in current directory or any parent directory; see 'go help modules'
: gobusybox has removed previous multi-module functionality in favor of Go workspaces -- read https://github.com/u-root/gobusybox#path-resolution--multi-module-builds for more

go build doesn't work in the same situation. We now require that go build work.

For the same situation, Go workspaces exist:

mkdir workspace
cd workspace
git clone https://github.com/u-root/u-root
git clone https://github.com/u-root/cpu
go work init ./u-root
go work use ./cpu
makebb ...

For more information, read the new README.

Closes #109
Closes #35
Closes #64
Closes #24
Closes #14
Closes #8
Updates #104.

Signed-off-by: Chris Koch <chrisko@google.com>
Copy link

codecov bot commented Feb 24, 2024

Welcome to Codecov 🎉

Once merged to your default branch, Codecov will compare your coverage reports and display the results in this comment.

Thanks for integrating Codecov - We've got you covered ☂️

Now that findpkg has dropped support for finding packages that are not
also found by `go list`, we can simplify busybox module resolution as
well.

To support workspaces, modules, and no-module compilation, we query `go
list` for all dependencies, write them to the temporary directory, and
build with `GO111MODULE=off`. This means we will always support offline
compilation (E.g. a vendored workspace or a vendored module will remain
offline.)

Signed-off-by: Chris Koch <chrisko@google.com>
@hugelgupf hugelgupf changed the title gobb: only build when go build also works Only allow builds when go build also works Feb 24, 2024
Signed-off-by: Chris Koch <chrisko@google.com>
Signed-off-by: Chris Koch <chrisko@google.com>
Signed-off-by: Chris Koch <chrisko@google.com>
Signed-off-by: Chris Koch <chrisko@google.com>
Signed-off-by: Chris Koch <chrisko@google.com>
Signed-off-by: Chris Koch <chrisko@google.com>
Signed-off-by: Chris Koch <chrisko@google.com>
Signed-off-by: Chris Koch <chrisko@google.com>
Signed-off-by: Chris Koch <chrisko@google.com>
Signed-off-by: Chris Koch <chrisko@google.com>
Signed-off-by: Chris Koch <chrisko@google.com>
Signed-off-by: Chris Koch <chrisko@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment