aspect-build / aspect-build/rules_buildx

[Bug]: The buildx_rule generate a lockfile that has a platform specific dependency

Open
#4 3 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Starlark
Stars
19
Forks
4
PR merge metrics
No merged PRs in 30d

Description

### What happened?

I have tested this PR merged https://github.com/aspect-build/rules_buildx/pull/1 and the issue persists.
If we generate MODULE.bazel.lock on one platform, it will not work on another.
```
INFO: Repository aspect_rules_buildx++buildx+buildx_configuration instantiated at:
: in
Repository rule configure_buildx defined at:
/private/var/tmp/_bazel_farcop/e66529431dbede3bc951f821053136ab/external/aspect_rules_buildx+/buildx/repositories.bzl:80:35: in
ERROR: /private/var/tmp/_bazel_farcop/e66529431dbede3bc951f821053136ab/external/aspect_rules_buildx+/buildx/repositories.bzl:65:21: An error occurred during the fetch of repository 'aspect_rules_buildx++buildx+buildx_configuration':
Traceback (most recent call last):
File "/private/var/tmp/_bazel_farcop/e66529431dbede3bc951f821053136ab/external/aspect_rules_buildx+/buildx/repositories.bzl", line 65, column 21, in _impl_configure_buildx
fail("Failed to create buildx driver %s: \nSTDERR:\n%s\nsSTDOUT:\n%s" % (builder_name, r.stderr, r.stdout))
Error in fail: Failed to create buildx driver rules_buildx_builder:
STDERR:
/private/var/tmp/_bazel_farcop/e66529431dbede3bc951f821053136ab/external/aspect_rules_buildx++buildx+buildx_linux-amd64/buildx: /private/var/tmp/_bazel_farcop/e66529431dbede3bc951f821053136ab/external/aspect_rules_buildx++buildx+buildx_linux-amd64/buildx: cannot execute binary file

sSTDOUT:
ERROR: no such package '@@aspect_rules_buildx++buildx+buildx_configuration//': Failed to create buildx driver rules_buildx_builder:
STDERR:
/private/var/tmp/_bazel_farcop/e66529431dbede3bc951f821053136ab/external/aspect_rules_buildx++buildx+buildx_linux-amd64/buildx: /private/var/tmp/_bazel_farcop/e66529431dbede3bc951f821053136ab/external/aspect_rules_buildx++buildx+buildx_linux-amd64/buildx: cannot execute binary file

sSTDOUT:
ERROR: /private/var/tmp/_bazel_farcop/e66529431dbede3bc951f821053136ab/external/aspect_rules_buildx+/buildx/BUILD.bazel:15:19: @@aspect_rules_buildx+//buildx:resolved_toolchain depends on @@aspect_rules_buildx++buildx+buildx_darwin-arm64//:buildx_toolchain in repository @@aspect_rules_buildx++buildx+buildx_darwin-arm64 which failed to fetch. no such package '@@aspect_rules_buildx++buildx+buildx_configuration//': Failed to create buildx driver rules_buildx_builder:
STDERR:
/private/var/tmp/_bazel_farcop/e66529431dbede3bc951f821053136ab/external/aspect_rules_buildx++buildx+buildx_linux-amd64/buildx: /private/var/tmp/_bazel_farcop/e66529431dbede3bc951f821053136ab/external/aspect_rules_buildx++buildx+buildx_linux-amd64/buildx: cannot execute binary file

sSTDOUT:
ERROR: Analysis of target '//nonhermetic/os-cert-generator:image' failed; build aborted: Analysis failed
INFO: Elapsed time: 1.691s, Critical Path: 0.82s
INFO: 1 process: 1 internal.
```

### Version

Development (host) and target OS/architectures:

Output of `bazel --version`: 8.3.1

Version of the Aspect rules, or other relevant rules from your
`WORKSPACE` or `MODULE.bazel` file: 0.0.1

Language(s) and/or frameworks involved:

### How to reproduce

1. Using aspect_rules_buildx generate MODULE.bazel.lock on darwin_arm64
2. Try to build target on the linux_amd64 PC.

### Any other information?

MODULE.bazel.lock still contains that platform specific block:
```
"buildx_configuration": {
"repoRuleId": "@@aspect_rules_buildx+//buildx:repositories.bzl%configure_buildx",
"attributes": {
"buildx": "@@aspect_rules_buildx++buildx+buildx_linux-amd64//:buildx"
}
},
```

Contributor guide

Open the contributing guide

Research direction

Reproduce the two-step case using aspect_rules_buildx with Bazel 8.3.1, generating MODULE.bazel.lock on darwin_arm64 and building on linux_amd64. Read buildx/repositories.bzl around _impl_configure_buildx and inspect the buildx_configuration entry in MODULE.bazel.lock, along with buildx/BUILD.bazel. Done means the cross-platform build no longer tries to execute the wrong platform's buildx binary.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.