Skip to content

@multitool//tools/<tool> can resolve host arch instead of target arch in packaging (rules_oci) use cases #124

@hunshcn

Description

@hunshcn

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions