Skip to content

Fix tester arch for Linux aarch64 (#40) #24

Fix tester arch for Linux aarch64 (#40)

Fix tester arch for Linux aarch64 (#40) #24

Workflow file for this run

# This file was generated by running ./generate-actions.py - it should not be manually modified
name: Release
'on':
workflow_dispatch: null
push:
tags:
- '*'
jobs:
unknown-linux-gnu-x86_64-x86_64:
runs-on: ubuntu-latest
container: centos:centos8
steps:
- name: Checkout repo
uses: actions/checkout@v3
- run: sed -i 's|mirrorlist|#mirrorlist|g' /etc/yum.repos.d/CentOS-*
- run: sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g'
/etc/yum.repos.d/CentOS-*
- run: yum install -y bzip2 git make patch wget
- run: dnf group install -y "Development Tools"
- run: ln -s /usr/bin/tar /usr/bin/gnutar
- name: Build musl
run: ./build.sh x86_64
- name: Upload musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
uses: actions/upload-artifact@v3
with:
name: musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
path: output/musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
if-no-files-found: error
unknown-linux-gnu-x86_64-x86_64-test-build:
runs-on: ubuntu-latest
container: centos:centos8
needs:
- unknown-linux-gnu-x86_64-x86_64
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Download musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
path: .
- name: Download bazelisk as bazel
run: curl --fail -L -o /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/download/v1.18.0/bazelisk-linux-amd64
&& chmod 0755 /usr/local/bin/bazel
- name: Generate builder workspace file
run: "cat >test-workspaces/builder/WORKSPACE.bazel <<EOF\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\"\
, \"http_archive\")\n\nhttp_archive(\n name = \"musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl\"\
,\n sha256 = \"$(sha256sum musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz\"\
,\n)\n\nEOF\n"
- name: Generate builder workspace config BUILD.bazel file
run: "mkdir -p test-workspaces/builder/config && cat >test-workspaces/builder/config/BUILD.bazel\
\ <<EOF\ntoolchain(\n name = \"musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:x86_64\",\n \
\ \"@platforms//os:linux\",\n ],\n target_compatible_with = [\n\
\ \"@platforms//cpu:x86_64\",\n \"@platforms//os:linux\",\n\
\ ],\n toolchain = \"@musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\n\
platform(\n name = \"platform\",\n constraint_values = [\n \"\
@platforms//cpu:x86_64\",\n \"@platforms//os:linux\",\n ],\n)\n\n\
EOF\n"
- name: Build test binary and test with musl
run: cd test-workspaces/builder && BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 bazel
build //:binary //:test --platforms=//config:platform --extra_toolchains=//config:musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl
--incompatible_enable_cc_toolchain_resolution
- name: Move test binary
run: mkdir output && cp test-workspaces/builder/bazel-bin/binary output/test-binary-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl
- name: Upload test-binary-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl
uses: actions/upload-artifact@v3
with:
name: test-binary-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl
path: output/test-binary-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl
if-no-files-found: error
apple-darwin-x86_64-x86_64:
runs-on: macos-12
steps:
- name: Checkout repo
uses: actions/checkout@v3
- run: brew install wget md5sha1sum gnu-tar
- name: Build musl
run: ./build.sh x86_64
- name: Upload musl-1.2.3-platform-x86_64-apple-darwin-target-x86_64-linux-musl.tar.gz
uses: actions/upload-artifact@v3
with:
name: musl-1.2.3-platform-x86_64-apple-darwin-target-x86_64-linux-musl.tar.gz
path: output/musl-1.2.3-platform-x86_64-apple-darwin-target-x86_64-linux-musl.tar.gz
if-no-files-found: error
apple-darwin-x86_64-x86_64-test-build:
runs-on: macos-12
needs:
- apple-darwin-x86_64-x86_64
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Download musl-1.2.3-platform-x86_64-apple-darwin-target-x86_64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-x86_64-apple-darwin-target-x86_64-linux-musl.tar.gz
path: .
- name: Skipping downloading bazelisk - already installed
run: bazel --version
- name: Generate builder workspace file
run: "cat >test-workspaces/builder/WORKSPACE.bazel <<EOF\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\"\
, \"http_archive\")\n\nhttp_archive(\n name = \"musl-1_2_3-platform-x86_64-apple-darwin-target-x86_64-linux-musl\"\
,\n sha256 = \"$(shasum -a 256 musl-1.2.3-platform-x86_64-apple-darwin-target-x86_64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/musl-1.2.3-platform-x86_64-apple-darwin-target-x86_64-linux-musl.tar.gz\"\
,\n)\n\nEOF\n"
- name: Generate builder workspace config BUILD.bazel file
run: "mkdir -p test-workspaces/builder/config && cat >test-workspaces/builder/config/BUILD.bazel\
\ <<EOF\ntoolchain(\n name = \"musl-1_2_3-platform-x86_64-apple-darwin-target-x86_64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:x86_64\",\n \
\ \"@platforms//os:osx\",\n ],\n target_compatible_with = [\n \
\ \"@platforms//cpu:x86_64\",\n \"@platforms//os:linux\",\n \
\ ],\n toolchain = \"@musl-1_2_3-platform-x86_64-apple-darwin-target-x86_64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\n\
platform(\n name = \"platform\",\n constraint_values = [\n \"\
@platforms//cpu:x86_64\",\n \"@platforms//os:linux\",\n ],\n)\n\n\
EOF\n"
- name: Build test binary and test with musl
run: cd test-workspaces/builder && BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 bazel
build //:binary //:test --platforms=//config:platform --extra_toolchains=//config:musl-1_2_3-platform-x86_64-apple-darwin-target-x86_64-linux-musl
--incompatible_enable_cc_toolchain_resolution
- name: Move test binary
run: mkdir output && cp test-workspaces/builder/bazel-bin/binary output/test-binary-platform-x86_64-apple-darwin-target-x86_64-linux-musl
- name: Upload test-binary-platform-x86_64-apple-darwin-target-x86_64-linux-musl
uses: actions/upload-artifact@v3
with:
name: test-binary-platform-x86_64-apple-darwin-target-x86_64-linux-musl
path: output/test-binary-platform-x86_64-apple-darwin-target-x86_64-linux-musl
if-no-files-found: error
apple-darwin-aarch64-x86_64:
runs-on: macos-14
steps:
- name: Checkout repo
uses: actions/checkout@v3
- run: brew install wget md5sha1sum gnu-tar
- name: Build musl
run: ./build.sh x86_64
- name: Upload musl-1.2.3-platform-aarch64-apple-darwin-target-x86_64-linux-musl.tar.gz
uses: actions/upload-artifact@v3
with:
name: musl-1.2.3-platform-aarch64-apple-darwin-target-x86_64-linux-musl.tar.gz
path: output/musl-1.2.3-platform-aarch64-apple-darwin-target-x86_64-linux-musl.tar.gz
if-no-files-found: error
apple-darwin-aarch64-x86_64-test-build:
runs-on: macos-14
needs:
- apple-darwin-aarch64-x86_64
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Download musl-1.2.3-platform-aarch64-apple-darwin-target-x86_64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-aarch64-apple-darwin-target-x86_64-linux-musl.tar.gz
path: .
- name: Skipping downloading bazelisk - already installed
run: bazel --version
- name: Generate builder workspace file
run: "cat >test-workspaces/builder/WORKSPACE.bazel <<EOF\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\"\
, \"http_archive\")\n\nhttp_archive(\n name = \"musl-1_2_3-platform-aarch64-apple-darwin-target-x86_64-linux-musl\"\
,\n sha256 = \"$(shasum -a 256 musl-1.2.3-platform-aarch64-apple-darwin-target-x86_64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/musl-1.2.3-platform-aarch64-apple-darwin-target-x86_64-linux-musl.tar.gz\"\
,\n)\n\nEOF\n"
- name: Generate builder workspace config BUILD.bazel file
run: "mkdir -p test-workspaces/builder/config && cat >test-workspaces/builder/config/BUILD.bazel\
\ <<EOF\ntoolchain(\n name = \"musl-1_2_3-platform-aarch64-apple-darwin-target-x86_64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:arm64\",\n \
\ \"@platforms//os:osx\",\n ],\n target_compatible_with = [\n \
\ \"@platforms//cpu:x86_64\",\n \"@platforms//os:linux\",\n \
\ ],\n toolchain = \"@musl-1_2_3-platform-aarch64-apple-darwin-target-x86_64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\n\
platform(\n name = \"platform\",\n constraint_values = [\n \"\
@platforms//cpu:x86_64\",\n \"@platforms//os:linux\",\n ],\n)\n\n\
EOF\n"
- name: Build test binary and test with musl
run: cd test-workspaces/builder && BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 bazel
build //:binary //:test --platforms=//config:platform --extra_toolchains=//config:musl-1_2_3-platform-aarch64-apple-darwin-target-x86_64-linux-musl
--incompatible_enable_cc_toolchain_resolution
- name: Move test binary
run: mkdir output && cp test-workspaces/builder/bazel-bin/binary output/test-binary-platform-aarch64-apple-darwin-target-x86_64-linux-musl
- name: Upload test-binary-platform-aarch64-apple-darwin-target-x86_64-linux-musl
uses: actions/upload-artifact@v3
with:
name: test-binary-platform-aarch64-apple-darwin-target-x86_64-linux-musl
path: output/test-binary-platform-aarch64-apple-darwin-target-x86_64-linux-musl
if-no-files-found: error
unknown-linux-gnu-aarch64-x86_64:
runs-on: buildjet-2vcpu-ubuntu-2204-arm
steps:
- name: Checkout repo
uses: actions/checkout@v3
- run: sudo ln -s /usr/bin/tar /usr/bin/gnutar
- name: Build musl
run: ./build.sh x86_64
- name: Upload musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
uses: actions/upload-artifact@v3
with:
name: musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
path: output/musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
if-no-files-found: error
unknown-linux-gnu-aarch64-x86_64-test-build:
runs-on: buildjet-2vcpu-ubuntu-2204-arm
needs:
- unknown-linux-gnu-aarch64-x86_64
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Download musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
path: .
- name: Download bazelisk as bazel
run: curl --fail -L -o /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/download/v1.18.0/bazelisk-linux-arm64
&& chmod 0755 /usr/local/bin/bazel
- name: Generate builder workspace file
run: "cat >test-workspaces/builder/WORKSPACE.bazel <<EOF\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\"\
, \"http_archive\")\n\nhttp_archive(\n name = \"musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl\"\
,\n sha256 = \"$(sha256sum musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz\"\
,\n)\n\nEOF\n"
- name: Generate builder workspace config BUILD.bazel file
run: "mkdir -p test-workspaces/builder/config && cat >test-workspaces/builder/config/BUILD.bazel\
\ <<EOF\ntoolchain(\n name = \"musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:arm64\",\n \
\ \"@platforms//os:linux\",\n ],\n target_compatible_with = [\n \
\ \"@platforms//cpu:x86_64\",\n \"@platforms//os:linux\",\n \
\ ],\n toolchain = \"@musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\n\
platform(\n name = \"platform\",\n constraint_values = [\n \"\
@platforms//cpu:x86_64\",\n \"@platforms//os:linux\",\n ],\n)\n\n\
EOF\n"
- name: Build test binary and test with musl
run: cd test-workspaces/builder && BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 bazel
build //:binary //:test --platforms=//config:platform --extra_toolchains=//config:musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl
--incompatible_enable_cc_toolchain_resolution
- name: Move test binary
run: mkdir output && cp test-workspaces/builder/bazel-bin/binary output/test-binary-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl
- name: Upload test-binary-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl
uses: actions/upload-artifact@v3
with:
name: test-binary-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl
path: output/test-binary-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl
if-no-files-found: error
test-x86_64:
runs-on: ubuntu-latest
container: centos:centos8
needs:
- unknown-linux-gnu-x86_64-x86_64-test-build
- apple-darwin-x86_64-x86_64-test-build
- apple-darwin-aarch64-x86_64-test-build
- unknown-linux-gnu-aarch64-x86_64-test-build
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Download test-binary-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl
uses: actions/download-artifact@v3
with:
name: test-binary-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl
path: .
- name: Download test-binary-platform-x86_64-apple-darwin-target-x86_64-linux-musl
uses: actions/download-artifact@v3
with:
name: test-binary-platform-x86_64-apple-darwin-target-x86_64-linux-musl
path: .
- name: Download test-binary-platform-aarch64-apple-darwin-target-x86_64-linux-musl
uses: actions/download-artifact@v3
with:
name: test-binary-platform-aarch64-apple-darwin-target-x86_64-linux-musl
path: .
- name: Download test-binary-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl
uses: actions/download-artifact@v3
with:
name: test-binary-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl
path: .
- name: Download bazelisk as bazel
run: curl --fail -L -o /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/download/v1.18.0/bazelisk-linux-amd64
&& chmod 0755 /usr/local/bin/bazel
- name: Generate tester workspace file
run: "cat >test-workspaces/tester/WORKSPACE.bazel <<EOF\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\"\
, \"http_file\")\n\nhttp_file(\n name = \"built_binary_x86_64-unknown-linux-gnu\"\
,\n executable = True,\n sha256 = \"$(sha256sum test-binary-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/test-binary-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl\"\
,\n)\n\nhttp_file(\n name = \"built_binary_x86_64-apple-darwin\",\n \
\ executable = True,\n sha256 = \"$(sha256sum test-binary-platform-x86_64-apple-darwin-target-x86_64-linux-musl\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/test-binary-platform-x86_64-apple-darwin-target-x86_64-linux-musl\"\
,\n)\n\nhttp_file(\n name = \"built_binary_aarch64-apple-darwin\",\n \
\ executable = True,\n sha256 = \"$(sha256sum test-binary-platform-aarch64-apple-darwin-target-x86_64-linux-musl\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/test-binary-platform-aarch64-apple-darwin-target-x86_64-linux-musl\"\
,\n)\n\nhttp_file(\n name = \"built_binary_aarch64-unknown-linux-gnu\"\
,\n executable = True,\n sha256 = \"$(sha256sum test-binary-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/test-binary-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl\"\
,\n)\n\nEOF\n"
- run: 'cd test-workspaces/tester && CC=/bin/false bazel test ... --test_output=all
-- '
unknown-linux-gnu-x86_64-aarch64:
runs-on: ubuntu-latest
container: centos:centos8
steps:
- name: Checkout repo
uses: actions/checkout@v3
- run: sed -i 's|mirrorlist|#mirrorlist|g' /etc/yum.repos.d/CentOS-*
- run: sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g'
/etc/yum.repos.d/CentOS-*
- run: yum install -y bzip2 git make patch wget
- run: dnf group install -y "Development Tools"
- run: ln -s /usr/bin/tar /usr/bin/gnutar
- name: Build musl
run: ./build.sh aarch64
- name: Upload musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
uses: actions/upload-artifact@v3
with:
name: musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
path: output/musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
if-no-files-found: error
unknown-linux-gnu-x86_64-aarch64-test-build:
runs-on: ubuntu-latest
container: centos:centos8
needs:
- unknown-linux-gnu-x86_64-aarch64
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Download musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
path: .
- name: Download bazelisk as bazel
run: curl --fail -L -o /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/download/v1.18.0/bazelisk-linux-amd64
&& chmod 0755 /usr/local/bin/bazel
- name: Generate builder workspace file
run: "cat >test-workspaces/builder/WORKSPACE.bazel <<EOF\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\"\
, \"http_archive\")\n\nhttp_archive(\n name = \"musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl\"\
,\n sha256 = \"$(sha256sum musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz\"\
,\n)\n\nEOF\n"
- name: Generate builder workspace config BUILD.bazel file
run: "mkdir -p test-workspaces/builder/config && cat >test-workspaces/builder/config/BUILD.bazel\
\ <<EOF\ntoolchain(\n name = \"musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:x86_64\",\n \
\ \"@platforms//os:linux\",\n ],\n target_compatible_with = [\n\
\ \"@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n \
\ ],\n toolchain = \"@musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\n\
platform(\n name = \"platform\",\n constraint_values = [\n \"\
@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n ],\n)\n\n\
EOF\n"
- name: Build test binary and test with musl
run: cd test-workspaces/builder && BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 bazel
build //:binary //:test --platforms=//config:platform --extra_toolchains=//config:musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl
--incompatible_enable_cc_toolchain_resolution
- name: Move test binary
run: mkdir output && cp test-workspaces/builder/bazel-bin/binary output/test-binary-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl
- name: Upload test-binary-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl
uses: actions/upload-artifact@v3
with:
name: test-binary-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl
path: output/test-binary-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl
if-no-files-found: error
apple-darwin-x86_64-aarch64:
runs-on: macos-12
steps:
- name: Checkout repo
uses: actions/checkout@v3
- run: brew install wget md5sha1sum gnu-tar
- name: Build musl
run: ./build.sh aarch64
- name: Upload musl-1.2.3-platform-x86_64-apple-darwin-target-aarch64-linux-musl.tar.gz
uses: actions/upload-artifact@v3
with:
name: musl-1.2.3-platform-x86_64-apple-darwin-target-aarch64-linux-musl.tar.gz
path: output/musl-1.2.3-platform-x86_64-apple-darwin-target-aarch64-linux-musl.tar.gz
if-no-files-found: error
apple-darwin-x86_64-aarch64-test-build:
runs-on: macos-12
needs:
- apple-darwin-x86_64-aarch64
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Download musl-1.2.3-platform-x86_64-apple-darwin-target-aarch64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-x86_64-apple-darwin-target-aarch64-linux-musl.tar.gz
path: .
- name: Skipping downloading bazelisk - already installed
run: bazel --version
- name: Generate builder workspace file
run: "cat >test-workspaces/builder/WORKSPACE.bazel <<EOF\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\"\
, \"http_archive\")\n\nhttp_archive(\n name = \"musl-1_2_3-platform-x86_64-apple-darwin-target-aarch64-linux-musl\"\
,\n sha256 = \"$(shasum -a 256 musl-1.2.3-platform-x86_64-apple-darwin-target-aarch64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/musl-1.2.3-platform-x86_64-apple-darwin-target-aarch64-linux-musl.tar.gz\"\
,\n)\n\nEOF\n"
- name: Generate builder workspace config BUILD.bazel file
run: "mkdir -p test-workspaces/builder/config && cat >test-workspaces/builder/config/BUILD.bazel\
\ <<EOF\ntoolchain(\n name = \"musl-1_2_3-platform-x86_64-apple-darwin-target-aarch64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:x86_64\",\n \
\ \"@platforms//os:osx\",\n ],\n target_compatible_with = [\n \
\ \"@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n \
\ ],\n toolchain = \"@musl-1_2_3-platform-x86_64-apple-darwin-target-aarch64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\n\
platform(\n name = \"platform\",\n constraint_values = [\n \"\
@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n ],\n)\n\n\
EOF\n"
- name: Build test binary and test with musl
run: cd test-workspaces/builder && BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 bazel
build //:binary //:test --platforms=//config:platform --extra_toolchains=//config:musl-1_2_3-platform-x86_64-apple-darwin-target-aarch64-linux-musl
--incompatible_enable_cc_toolchain_resolution
- name: Move test binary
run: mkdir output && cp test-workspaces/builder/bazel-bin/binary output/test-binary-platform-x86_64-apple-darwin-target-aarch64-linux-musl
- name: Upload test-binary-platform-x86_64-apple-darwin-target-aarch64-linux-musl
uses: actions/upload-artifact@v3
with:
name: test-binary-platform-x86_64-apple-darwin-target-aarch64-linux-musl
path: output/test-binary-platform-x86_64-apple-darwin-target-aarch64-linux-musl
if-no-files-found: error
apple-darwin-aarch64-aarch64:
runs-on: macos-14
steps:
- name: Checkout repo
uses: actions/checkout@v3
- run: brew install wget md5sha1sum gnu-tar
- name: Build musl
run: ./build.sh aarch64
- name: Upload musl-1.2.3-platform-aarch64-apple-darwin-target-aarch64-linux-musl.tar.gz
uses: actions/upload-artifact@v3
with:
name: musl-1.2.3-platform-aarch64-apple-darwin-target-aarch64-linux-musl.tar.gz
path: output/musl-1.2.3-platform-aarch64-apple-darwin-target-aarch64-linux-musl.tar.gz
if-no-files-found: error
apple-darwin-aarch64-aarch64-test-build:
runs-on: macos-14
needs:
- apple-darwin-aarch64-aarch64
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Download musl-1.2.3-platform-aarch64-apple-darwin-target-aarch64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-aarch64-apple-darwin-target-aarch64-linux-musl.tar.gz
path: .
- name: Skipping downloading bazelisk - already installed
run: bazel --version
- name: Generate builder workspace file
run: "cat >test-workspaces/builder/WORKSPACE.bazel <<EOF\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\"\
, \"http_archive\")\n\nhttp_archive(\n name = \"musl-1_2_3-platform-aarch64-apple-darwin-target-aarch64-linux-musl\"\
,\n sha256 = \"$(shasum -a 256 musl-1.2.3-platform-aarch64-apple-darwin-target-aarch64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/musl-1.2.3-platform-aarch64-apple-darwin-target-aarch64-linux-musl.tar.gz\"\
,\n)\n\nEOF\n"
- name: Generate builder workspace config BUILD.bazel file
run: "mkdir -p test-workspaces/builder/config && cat >test-workspaces/builder/config/BUILD.bazel\
\ <<EOF\ntoolchain(\n name = \"musl-1_2_3-platform-aarch64-apple-darwin-target-aarch64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:arm64\",\n \
\ \"@platforms//os:osx\",\n ],\n target_compatible_with = [\n \
\ \"@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n ],\n\
\ toolchain = \"@musl-1_2_3-platform-aarch64-apple-darwin-target-aarch64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\n\
platform(\n name = \"platform\",\n constraint_values = [\n \"\
@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n ],\n)\n\n\
EOF\n"
- name: Build test binary and test with musl
run: cd test-workspaces/builder && BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 bazel
build //:binary //:test --platforms=//config:platform --extra_toolchains=//config:musl-1_2_3-platform-aarch64-apple-darwin-target-aarch64-linux-musl
--incompatible_enable_cc_toolchain_resolution
- name: Move test binary
run: mkdir output && cp test-workspaces/builder/bazel-bin/binary output/test-binary-platform-aarch64-apple-darwin-target-aarch64-linux-musl
- name: Upload test-binary-platform-aarch64-apple-darwin-target-aarch64-linux-musl
uses: actions/upload-artifact@v3
with:
name: test-binary-platform-aarch64-apple-darwin-target-aarch64-linux-musl
path: output/test-binary-platform-aarch64-apple-darwin-target-aarch64-linux-musl
if-no-files-found: error
unknown-linux-gnu-aarch64-aarch64:
runs-on: buildjet-2vcpu-ubuntu-2204-arm
steps:
- name: Checkout repo
uses: actions/checkout@v3
- run: sudo ln -s /usr/bin/tar /usr/bin/gnutar
- name: Build musl
run: ./build.sh aarch64
- name: Upload musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
uses: actions/upload-artifact@v3
with:
name: musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
path: output/musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
if-no-files-found: error
unknown-linux-gnu-aarch64-aarch64-test-build:
runs-on: buildjet-2vcpu-ubuntu-2204-arm
needs:
- unknown-linux-gnu-aarch64-aarch64
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Download musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
path: .
- name: Download bazelisk as bazel
run: curl --fail -L -o /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/download/v1.18.0/bazelisk-linux-arm64
&& chmod 0755 /usr/local/bin/bazel
- name: Generate builder workspace file
run: "cat >test-workspaces/builder/WORKSPACE.bazel <<EOF\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\"\
, \"http_archive\")\n\nhttp_archive(\n name = \"musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl\"\
,\n sha256 = \"$(sha256sum musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz\"\
,\n)\n\nEOF\n"
- name: Generate builder workspace config BUILD.bazel file
run: "mkdir -p test-workspaces/builder/config && cat >test-workspaces/builder/config/BUILD.bazel\
\ <<EOF\ntoolchain(\n name = \"musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:arm64\",\n \
\ \"@platforms//os:linux\",\n ],\n target_compatible_with = [\n \
\ \"@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n \
\ ],\n toolchain = \"@musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\n\
platform(\n name = \"platform\",\n constraint_values = [\n \"\
@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n ],\n)\n\n\
EOF\n"
- name: Build test binary and test with musl
run: cd test-workspaces/builder && BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 bazel
build //:binary //:test --platforms=//config:platform --extra_toolchains=//config:musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl
--incompatible_enable_cc_toolchain_resolution
- name: Move test binary
run: mkdir output && cp test-workspaces/builder/bazel-bin/binary output/test-binary-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl
- name: Upload test-binary-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl
uses: actions/upload-artifact@v3
with:
name: test-binary-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl
path: output/test-binary-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl
if-no-files-found: error
test-aarch64:
runs-on: buildjet-2vcpu-ubuntu-2204-arm
needs:
- unknown-linux-gnu-x86_64-aarch64-test-build
- apple-darwin-x86_64-aarch64-test-build
- apple-darwin-aarch64-aarch64-test-build
- unknown-linux-gnu-aarch64-aarch64-test-build
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Download test-binary-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl
uses: actions/download-artifact@v3
with:
name: test-binary-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl
path: .
- name: Download test-binary-platform-x86_64-apple-darwin-target-aarch64-linux-musl
uses: actions/download-artifact@v3
with:
name: test-binary-platform-x86_64-apple-darwin-target-aarch64-linux-musl
path: .
- name: Download test-binary-platform-aarch64-apple-darwin-target-aarch64-linux-musl
uses: actions/download-artifact@v3
with:
name: test-binary-platform-aarch64-apple-darwin-target-aarch64-linux-musl
path: .
- name: Download test-binary-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl
uses: actions/download-artifact@v3
with:
name: test-binary-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl
path: .
- name: Download bazelisk as bazel
run: curl --fail -L -o /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/download/v1.18.0/bazelisk-linux-arm64
&& chmod 0755 /usr/local/bin/bazel
- name: Generate tester workspace file
run: "cat >test-workspaces/tester/WORKSPACE.bazel <<EOF\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\"\
, \"http_file\")\n\nhttp_file(\n name = \"built_binary_x86_64-unknown-linux-gnu\"\
,\n executable = True,\n sha256 = \"$(sha256sum test-binary-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/test-binary-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl\"\
,\n)\n\nhttp_file(\n name = \"built_binary_x86_64-apple-darwin\",\n \
\ executable = True,\n sha256 = \"$(sha256sum test-binary-platform-x86_64-apple-darwin-target-aarch64-linux-musl\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/test-binary-platform-x86_64-apple-darwin-target-aarch64-linux-musl\"\
,\n)\n\nhttp_file(\n name = \"built_binary_aarch64-apple-darwin\",\n \
\ executable = True,\n sha256 = \"$(sha256sum test-binary-platform-aarch64-apple-darwin-target-aarch64-linux-musl\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/test-binary-platform-aarch64-apple-darwin-target-aarch64-linux-musl\"\
,\n)\n\nhttp_file(\n name = \"built_binary_aarch64-unknown-linux-gnu\"\
,\n executable = True,\n sha256 = \"$(sha256sum test-binary-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl\
\ | awk '{print $1}')\",\n url = \"file://$(pwd)/test-binary-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl\"\
,\n)\n\nEOF\n"
- run: 'cd test-workspaces/tester && CC=/bin/false bazel test ... --test_output=all
-- '
release:
runs-on: ubuntu-latest
needs:
- unknown-linux-gnu-x86_64-x86_64
- apple-darwin-x86_64-x86_64
- apple-darwin-aarch64-x86_64
- unknown-linux-gnu-aarch64-x86_64
- unknown-linux-gnu-x86_64-aarch64
- apple-darwin-x86_64-aarch64
- apple-darwin-aarch64-aarch64
- unknown-linux-gnu-aarch64-aarch64
- test-x86_64
- test-aarch64
steps:
- name: Checkout repo
uses: actions/checkout@v3
- run: sudo ln -s /usr/bin/tar /usr/bin/gnutar
- name: Download musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
path: .
- name: Download musl-1.2.3-platform-x86_64-apple-darwin-target-x86_64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-x86_64-apple-darwin-target-x86_64-linux-musl.tar.gz
path: .
- name: Download musl-1.2.3-platform-aarch64-apple-darwin-target-x86_64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-aarch64-apple-darwin-target-x86_64-linux-musl.tar.gz
path: .
- name: Download musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
path: .
- name: Download musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
path: .
- name: Download musl-1.2.3-platform-x86_64-apple-darwin-target-aarch64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-x86_64-apple-darwin-target-aarch64-linux-musl.tar.gz
path: .
- name: Download musl-1.2.3-platform-aarch64-apple-darwin-target-aarch64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-aarch64-apple-darwin-target-aarch64-linux-musl.tar.gz
path: .
- name: Download musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
uses: actions/download-artifact@v3
with:
name: musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
path: .
- name: Generate MODULE.bazel
run: "touch MODULE.bazel\n\nversion=\"${{github.ref_name}}\"\n\ncat >MODULE.bazel\
\ <<EOF\nmodule(\n name = \"toolchains_musl\",\n version = \"${version#v}\"\
,\n)\n\nbazel_dep(name = \"bazel_features\", version = \"1.9.0\")\nbazel_dep(name\
\ = \"platforms\", version = \"0.0.9\")\n\ntoolchains_musl = use_extension(\"\
//:toolchains_musl.bzl\", \"toolchains_musl\")\nuse_repo(toolchains_musl,\
\ \"musl_toolchains_hub\")\n\nregister_toolchains(\"@musl_toolchains_hub//:all\"\
)\nEOF\n"
- name: Generate WORKSPACE
run: 'touch WORKSPACE
'
- name: Generate extensions.bzl
run: "touch toolchains_musl.bzl\n\ncat >toolchains_musl.bzl <<'EOF'\nload(\"\
@bazel_features//:features.bzl\", \"bazel_features\")\nload(\":repositories.bzl\"\
, \"load_musl_toolchains\")\n\ndef _toolchains_musl(module_ctx):\n extra_exec_compatible_with\
\ = []\n extra_target_compatible_with = []\n for module in module_ctx.modules:\n\
\ if not module.tags.config:\n continue\n if not\
\ module.is_root:\n fail(\"musl_toolchains.config can only be used\
\ from the root module. Add 'dev_dependency = True' to 'use_extension' to\
\ ignore it in non-root modules.\")\n if len(module.tags.config) >\
\ 1:\n fail(\n \"Only one musl_toolchains.config\
\ tag is allowed, got\",\n module.tags.config[0],\n \
\ \"and\",\n module.tags.config[1],\n )\n\
\ config = module.tags.config[0]\n extra_exec_compatible_with\
\ = config.extra_exec_compatible_with\n extra_target_compatible_with\
\ = config.extra_target_compatible_with\n\n load_musl_toolchains(\n \
\ extra_exec_compatible_with = [str(label) for label in extra_exec_compatible_with],\n\
\ extra_target_compatible_with = [str(label) for label in extra_target_compatible_with],\n\
\ )\n\n if bazel_features.external_deps.extension_metadata_has_reproducible:\n\
\ return module_ctx.extension_metadata(reproducible = True)\n else:\n\
\ return None\n\n_config = tag_class(\n attrs = {\n \"extra_exec_compatible_with\"\
: attr.label_list(),\n \"extra_target_compatible_with\": attr.label_list(),\n\
\ },\n)\n\ntoolchains_musl = module_extension(\n implementation = _toolchains_musl,\n\
\ tag_classes = {\n \"config\": _config,\n },\n)\nEOF\n"
- name: Generate toolchains.bzl
run: "touch BUILD.bazel\n\ncat >toolchains.bzl <<EOF\ndef register_musl_toolchains():\n\
\ native.register_toolchains(\"@musl_toolchains_hub//:all\")\nEOF\n"
- name: Generate repositories.bzl
run: "cat >repositories.bzl <<EOF\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\"\
, \"http_archive\")\n\ndef _toolchain_repo(rctx):\n rctx.file(\n \
\ \"BUILD.bazel\",\n \"\"\"toolchain(\n name = \"musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:x86_64\",\n \
\ \"@platforms//os:linux\",\n ] + \"\"\" + repr(rctx.attr.extra_exec_compatible_with)\
\ + \"\"\",\n target_compatible_with = [\n \"@platforms//cpu:x86_64\"\
,\n \"@platforms//os:linux\",\n ] + \"\"\" + repr(rctx.attr.extra_target_compatible_with)\
\ + \"\"\",\n toolchain = \"@musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\"\
\"\" + \"\"\"toolchain(\n name = \"musl-1_2_3-platform-x86_64-apple-darwin-target-x86_64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:x86_64\",\n \
\ \"@platforms//os:osx\",\n ] + \"\"\" + repr(rctx.attr.extra_exec_compatible_with)\
\ + \"\"\",\n target_compatible_with = [\n \"@platforms//cpu:x86_64\"\
,\n \"@platforms//os:linux\",\n ] + \"\"\" + repr(rctx.attr.extra_target_compatible_with)\
\ + \"\"\",\n toolchain = \"@musl-1_2_3-platform-x86_64-apple-darwin-target-x86_64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\"\
\"\" + \"\"\"toolchain(\n name = \"musl-1_2_3-platform-aarch64-apple-darwin-target-x86_64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:arm64\",\n \
\ \"@platforms//os:osx\",\n ] + \"\"\" + repr(rctx.attr.extra_exec_compatible_with)\
\ + \"\"\",\n target_compatible_with = [\n \"@platforms//cpu:x86_64\"\
,\n \"@platforms//os:linux\",\n ] + \"\"\" + repr(rctx.attr.extra_target_compatible_with)\
\ + \"\"\",\n toolchain = \"@musl-1_2_3-platform-aarch64-apple-darwin-target-x86_64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\"\
\"\" + \"\"\"toolchain(\n name = \"musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:arm64\",\n \
\ \"@platforms//os:linux\",\n ] + \"\"\" + repr(rctx.attr.extra_exec_compatible_with)\
\ + \"\"\",\n target_compatible_with = [\n \"@platforms//cpu:x86_64\"\
,\n \"@platforms//os:linux\",\n ] + \"\"\" + repr(rctx.attr.extra_target_compatible_with)\
\ + \"\"\",\n toolchain = \"@musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\"\
\"\" + \"\"\"toolchain(\n name = \"musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:x86_64\",\n \
\ \"@platforms//os:linux\",\n ] + \"\"\" + repr(rctx.attr.extra_exec_compatible_with)\
\ + \"\"\",\n target_compatible_with = [\n \"@platforms//cpu:arm64\"\
,\n \"@platforms//os:linux\",\n ] + \"\"\" + repr(rctx.attr.extra_target_compatible_with)\
\ + \"\"\",\n toolchain = \"@musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\"\
\"\" + \"\"\"toolchain(\n name = \"musl-1_2_3-platform-x86_64-apple-darwin-target-aarch64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:x86_64\",\n \
\ \"@platforms//os:osx\",\n ] + \"\"\" + repr(rctx.attr.extra_exec_compatible_with)\
\ + \"\"\",\n target_compatible_with = [\n \"@platforms//cpu:arm64\"\
,\n \"@platforms//os:linux\",\n ] + \"\"\" + repr(rctx.attr.extra_target_compatible_with)\
\ + \"\"\",\n toolchain = \"@musl-1_2_3-platform-x86_64-apple-darwin-target-aarch64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\"\
\"\" + \"\"\"toolchain(\n name = \"musl-1_2_3-platform-aarch64-apple-darwin-target-aarch64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:arm64\",\n \
\ \"@platforms//os:osx\",\n ] + \"\"\" + repr(rctx.attr.extra_exec_compatible_with)\
\ + \"\"\",\n target_compatible_with = [\n \"@platforms//cpu:arm64\"\
,\n \"@platforms//os:linux\",\n ] + \"\"\" + repr(rctx.attr.extra_target_compatible_with)\
\ + \"\"\",\n toolchain = \"@musl-1_2_3-platform-aarch64-apple-darwin-target-aarch64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\"\
\"\" + \"\"\"toolchain(\n name = \"musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl\"\
,\n exec_compatible_with = [\n \"@platforms//cpu:arm64\",\n \
\ \"@platforms//os:linux\",\n ] + \"\"\" + repr(rctx.attr.extra_exec_compatible_with)\
\ + \"\"\",\n target_compatible_with = [\n \"@platforms//cpu:arm64\"\
,\n \"@platforms//os:linux\",\n ] + \"\"\" + repr(rctx.attr.extra_target_compatible_with)\
\ + \"\"\",\n toolchain = \"@musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl\"\
,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\n\"\
\"\",\n )\n\ntoolchain_repo = repository_rule(\n implementation = _toolchain_repo,\n\
\ attrs = {\n \"extra_exec_compatible_with\": attr.string_list(),\n\
\ \"extra_target_compatible_with\": attr.string_list(),\n },\n)\n\
\ndef load_musl_toolchains(extra_exec_compatible_with=[], extra_target_compatible_with=[]):\n\
\ http_archive(\n name = \"musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl\"\
,\n sha256 = \"$(sha256sum musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"https://github.com/bazel-contrib/musl-toolchain/releases/download/${{github.ref_name}}/musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz\"\
,\n )\n\n http_archive(\n name = \"musl-1_2_3-platform-x86_64-apple-darwin-target-x86_64-linux-musl\"\
,\n sha256 = \"$(sha256sum musl-1.2.3-platform-x86_64-apple-darwin-target-x86_64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"https://github.com/bazel-contrib/musl-toolchain/releases/download/${{github.ref_name}}/musl-1.2.3-platform-x86_64-apple-darwin-target-x86_64-linux-musl.tar.gz\"\
,\n )\n\n http_archive(\n name = \"musl-1_2_3-platform-aarch64-apple-darwin-target-x86_64-linux-musl\"\
,\n sha256 = \"$(sha256sum musl-1.2.3-platform-aarch64-apple-darwin-target-x86_64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"https://github.com/bazel-contrib/musl-toolchain/releases/download/${{github.ref_name}}/musl-1.2.3-platform-aarch64-apple-darwin-target-x86_64-linux-musl.tar.gz\"\
,\n )\n\n http_archive(\n name = \"musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl\"\
,\n sha256 = \"$(sha256sum musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"https://github.com/bazel-contrib/musl-toolchain/releases/download/${{github.ref_name}}/musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz\"\
,\n )\n\n http_archive(\n name = \"musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl\"\
,\n sha256 = \"$(sha256sum musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"https://github.com/bazel-contrib/musl-toolchain/releases/download/${{github.ref_name}}/musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz\"\
,\n )\n\n http_archive(\n name = \"musl-1_2_3-platform-x86_64-apple-darwin-target-aarch64-linux-musl\"\
,\n sha256 = \"$(sha256sum musl-1.2.3-platform-x86_64-apple-darwin-target-aarch64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"https://github.com/bazel-contrib/musl-toolchain/releases/download/${{github.ref_name}}/musl-1.2.3-platform-x86_64-apple-darwin-target-aarch64-linux-musl.tar.gz\"\
,\n )\n\n http_archive(\n name = \"musl-1_2_3-platform-aarch64-apple-darwin-target-aarch64-linux-musl\"\
,\n sha256 = \"$(sha256sum musl-1.2.3-platform-aarch64-apple-darwin-target-aarch64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"https://github.com/bazel-contrib/musl-toolchain/releases/download/${{github.ref_name}}/musl-1.2.3-platform-aarch64-apple-darwin-target-aarch64-linux-musl.tar.gz\"\
,\n )\n\n http_archive(\n name = \"musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl\"\
,\n sha256 = \"$(sha256sum musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz\
\ | awk '{print $1}')\",\n url = \"https://github.com/bazel-contrib/musl-toolchain/releases/download/${{github.ref_name}}/musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz\"\
,\n )\n\n\n toolchain_repo(\n name = \"musl_toolchains_hub\"\
,\n extra_exec_compatible_with = extra_exec_compatible_with,\n \
\ extra_target_compatible_with = extra_target_compatible_with,\n )\n\
EOF\n"
- name: Generate bcr_test/MODULE.bazel
run: "mkdir -p bcr_test\ntouch bcr_test/MODULE.bazel\n\ncat >bcr_test/MODULE.bazel\
\ <<'EOF'\nbazel_dep(name = \"toolchains_musl\")\nlocal_path_override(\n \
\ module_name = \"toolchains_musl\",\n path = \"..\",\n)\n\nbazel_dep(name\
\ = \"aspect_bazel_lib\", version = \"2.7.7\")\n\ntoolchains_musl = use_extension(\"\
@toolchains_musl//:toolchains_musl.bzl\", \"toolchains_musl\", dev_dependency\
\ = True)\ntoolchains_musl.config(\n extra_target_compatible_with = [\"\
//:musl_on\"],\n)\nEOF\n"
- name: Generate bcr_test/BUILD.bazel
run: "mkdir -p bcr_test\ntouch bcr_test/BUILD.bazel\n\ncat >bcr_test/BUILD.bazel\
\ <<'EOF2'\nload(\"@aspect_bazel_lib//lib:transitions.bzl\", \"platform_transition_binary\"\
)\n\npackage(default_visibility = [\"//visibility:public\"])\n\ngenrule(\n\
\ name = \"generate_source\",\n outs = [\"main.cc\"],\n cmd = \"\"\
\"cat >$@ <<EOF\n#include <stdio.h>\n\nint main(void) {\n printf(\"Built\
\ on $$(uname) $$(uname -m)\\\\n\");\n return 0;\n}\nEOF\n\"\"\",\n)\n\n\
cc_binary(\n name = \"binary\",\n srcs = [\"main.cc\"],\n tags =\
\ [\"manual\"],\n)\n\nplatform_transition_binary(\n name = \"binary_linux_x86_64\"\
,\n binary = \":binary\",\n target_platform = \":linux_x86_64\",\n)\n\
\nplatform_transition_binary(\n name = \"binary_linux_aarch64\",\n binary\
\ = \":binary\",\n target_platform = \":linux_aarch64\",\n)\n\nsh_test(\n\
\ name = \"binary_test\",\n srcs = [\"binary_test.sh\"],\n data =\
\ [\n \":binary_linux_x86_64\",\n \":binary_linux_aarch64\"\
,\n ],\n env = {\n \"BINARY_LINUX_X86_64\": \"$(rootpath :binary_linux_x86_64)\"\
,\n \"BINARY_LINUX_AARCH64\": \"$(rootpath :binary_linux_aarch64)\"\
,\n },\n)\n\nplatform(\n name = \"linux_x86_64\",\n constraint_values\
\ = [\n \"@platforms//cpu:x86_64\",\n \"@platforms//os:linux\"\
,\n \":musl_on\",\n ],\n)\n\nplatform(\n name = \"linux_aarch64\"\
,\n constraint_values = [\n \"@platforms//cpu:aarch64\",\n \
\ \"@platforms//os:linux\",\n \":musl_on\",\n ],\n)\n\nconstraint_setting(\n\
\ name = \"musl\",\n default_constraint_value = \":musl_off\",\n)\n\
constraint_value(\n name = \"musl_on\",\n constraint_setting = \":musl\"\
,\n)\nconstraint_value(\n name = \"musl_off\",\n constraint_setting\
\ = \":musl\",\n)\nEOF2\n"
- name: Generate bcr_test/binary_test.sh
run: 'mkdir -p bcr_test
touch bcr_test/binary_test.sh
chmod +x bcr_test/binary_test.sh
cat >bcr_test/binary_test.sh <<''EOF''
#!/usr/bin/env bash
set -euo pipefail
file -L "$BINARY_LINUX_X86_64" | grep ''statically linked'' || (echo "Binary
$BINARY_LINUX_X86_64 is not statically linked: $(file -L "$BINARY_LINUX_X86_64")"
&& exit 1)
file -L "$BINARY_LINUX_X86_64" | grep ''x86-64'' || (echo "Binary $BINARY_LINUX_X86_64
is not x86-64: $(file -L "$BINARY_LINUX_X86_64")" && exit 1)
file -L "$BINARY_LINUX_AARCH64" | grep ''statically linked'' || (echo "Binary
$BINARY_LINUX_AARCH64 is not statically linked: $(file -L "$BINARY_LINUX_AARCH64")"
&& exit 1)
file -L "$BINARY_LINUX_AARCH64" | grep ''aarch64'' || (echo "Binary $BINARY_LINUX_AARCH64
is not aarch64: $(file -L "$BINARY_LINUX_AARCH64")" && exit 1)
echo "All tests passed"
EOF
'
- name: Generate release archive
run: ./deterministic-tar.sh musl_toolchain-${{github.ref_name}}.tar.gz WORKSPACE
MODULE.bazel toolchains_musl.bzl toolchains.bzl repositories.bzl BUILD.bazel
bcr_test/MODULE.bazel bcr_test/BUILD.bazel bcr_test/binary_test.sh
- name: Generate release body
run: sha256=$(sha256sum musl_toolchain-${{github.ref_name}}.tar.gz | awk '{print
$1}') ; url='https://github.com/bazel-contrib/musl-toolchain/releases/download/${{github.ref_name}}/musl_toolchain-${{github.ref_name}}.tar.gz'
; version='${{github.ref_name}}'; sed -e "s#{sha256}#${sha256}#g" -e "s#{url}#${url}#g"
-e "s|{version}|${version#v}|g" release.txt.template > release-notes.txt
- id: create_release
name: Create release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
generate_release_notes: true
tag_name: ${{github.ref_name}}
body_path: release-notes.txt
target_commitish: ${{ github.base_ref }}
- name: Upload release archive
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: musl_toolchain-${{github.ref_name}}.tar.gz
asset_path: musl_toolchain-${{github.ref_name}}.tar.gz
asset_content_type: application/gzip
- name: Upload release archive
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
asset_path: musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
asset_content_type: application/gzip
- name: Upload release archive
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: musl-1.2.3-platform-x86_64-apple-darwin-target-x86_64-linux-musl.tar.gz
asset_path: musl-1.2.3-platform-x86_64-apple-darwin-target-x86_64-linux-musl.tar.gz
asset_content_type: application/gzip
- name: Upload release archive
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: musl-1.2.3-platform-aarch64-apple-darwin-target-x86_64-linux-musl.tar.gz
asset_path: musl-1.2.3-platform-aarch64-apple-darwin-target-x86_64-linux-musl.tar.gz
asset_content_type: application/gzip
- name: Upload release archive
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
asset_path: musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl.tar.gz
asset_content_type: application/gzip
- name: Upload release archive
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
asset_path: musl-1.2.3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
asset_content_type: application/gzip
- name: Upload release archive
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: musl-1.2.3-platform-x86_64-apple-darwin-target-aarch64-linux-musl.tar.gz
asset_path: musl-1.2.3-platform-x86_64-apple-darwin-target-aarch64-linux-musl.tar.gz
asset_content_type: application/gzip
- name: Upload release archive
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: musl-1.2.3-platform-aarch64-apple-darwin-target-aarch64-linux-musl.tar.gz
asset_path: musl-1.2.3-platform-aarch64-apple-darwin-target-aarch64-linux-musl.tar.gz
asset_content_type: application/gzip
- name: Upload release archive
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
asset_path: musl-1.2.3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl.tar.gz
asset_content_type: application/gzip