Hi, thanks for rules_multitool.
We found that when @multitool//tools/tini:tini is used as an artifact input (e.g. pkg_tar / rules_oci image contents), resolution may pick host-arch binary instead of target-arch binary.
On an arm64 host:
- building for
linux_amd64 may still pick linux_arm64 tini
- building for
linux_arm64 picks linux_arm64 (expected)
This makes multi-arch image contents non-deterministic for target platform.
Debug example:
bazel aquery \
--platforms=@rules_go//go/toolchain:linux_amd64_cgo \
'--toolchain_resolution_debug=.*' \
@multitool//tools/tini:tini
In our case it selects:
- ...:tini_linux_arm64_toolchain_info
- input ...multitool.tini.linux_arm64/.../linux_arm64_executable
Could you provide a target-arch-stable path for packaging scenarios?
For example:
- separate labels/APIs for exec vs target resolution, or
- an option to generate/register target-only toolchains for specific tools.
Hi, thanks for
rules_multitool.We found that when
@multitool//tools/tini:tiniis used as an artifact input (e.g.pkg_tar/rules_ociimage contents), resolution may pick host-arch binary instead of target-arch binary.On an arm64 host:
linux_amd64may still picklinux_arm64tinilinux_arm64pickslinux_arm64(expected)This makes multi-arch image contents non-deterministic for target platform.
Debug example:
bazel aquery \ --platforms=@rules_go//go/toolchain:linux_amd64_cgo \ '--toolchain_resolution_debug=.*' \ @multitool//tools/tini:tiniIn our case it selects:
Could you provide a target-arch-stable path for packaging scenarios?
For example: