From 51c0bf0fe6a528ae550c1028cc31800a63e28226 Mon Sep 17 00:00:00 2001 From: Daniel Wagner-Hall Date: Tue, 10 Sep 2024 14:27:03 +0100 Subject: [PATCH] Build against glibc 2.26 Previously we were building against glibc 2.26. amazonlinux 2 has 2.26, and we have users wanting to use this, so let's jump back a couple of glibcs to support them. Another advantage here is that amazonlinux maintains `yum` working out of the box, rather than needing to configure mirrors. A down-side is that the `node` version used by the `checkout` action links a newer glibc than 2.26. For now we activate a hatch to revert to an older node, but in the future we may need to work around another way, e.g. by manually checking out the source ourselves instead of relying on the actions action which relies on node. We also now perform container set-up before the checkout action, so we can set up the tools it assumes (e.g. `tar`) --- .github/workflows/build.yaml | 113 ++++++++++++++--------- .github/workflows/release.yaml | 161 ++++++++++++++++++++------------- generate-actions.py | 44 +++++---- 3 files changed, 194 insertions(+), 124 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index ffe53f6..ee66dc1 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -7,16 +7,16 @@ name: PR jobs: unknown-linux-gnu-x86_64-x86_64: runs-on: ubuntu-latest - container: centos:centos8 + container: amazonlinux:2 + env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 steps: + - run: yum install -y bzip2 git gzip make patch tar wget which + - run: yum group install -y "Development Tools" + - run: ln -s /usr/bin/tar /usr/bin/gnutar - 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 @@ -27,10 +27,14 @@ jobs: if-no-files-found: error unknown-linux-gnu-x86_64-x86_64-test-build: runs-on: ubuntu-latest - container: centos:centos8 + container: amazonlinux:2 + env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 needs: - unknown-linux-gnu-x86_64-x86_64 steps: + - run: yum install -y gzip tar - 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 @@ -81,9 +85,9 @@ jobs: apple-darwin-x86_64-x86_64: runs-on: macos-12 steps: + - run: brew install wget md5sha1sum gnu-tar - 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 @@ -142,9 +146,9 @@ jobs: apple-darwin-aarch64-x86_64: runs-on: macos-14 steps: + - run: brew install wget md5sha1sum gnu-tar - 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 @@ -202,7 +206,10 @@ jobs: if-no-files-found: error test-x86_64: runs-on: ubuntu-latest - container: centos:centos8 + container: amazonlinux:2 + env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 needs: - unknown-linux-gnu-x86_64-x86_64-test-build - apple-darwin-x86_64-x86_64-test-build @@ -244,16 +251,16 @@ jobs: -- -//:run_built_binary_aarch64-unknown-linux-gnu_test unknown-linux-gnu-x86_64-aarch64: runs-on: ubuntu-latest - container: centos:centos8 + container: amazonlinux:2 + env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 steps: + - run: yum install -y bzip2 git gzip make patch tar wget which + - run: yum group install -y "Development Tools" + - run: ln -s /usr/bin/tar /usr/bin/gnutar - 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 @@ -264,10 +271,14 @@ jobs: if-no-files-found: error unknown-linux-gnu-x86_64-aarch64-test-build: runs-on: ubuntu-latest - container: centos:centos8 + container: amazonlinux:2 + env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 needs: - unknown-linux-gnu-x86_64-aarch64 steps: + - run: yum install -y gzip tar - 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 @@ -291,14 +302,18 @@ jobs: \ \"@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 + ,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\ntoolchain(\n\ + \ name = \"musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl_test_toolchain\"\ + ,\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-x86_64-unknown-linux-gnu-target-aarch64-linux-musl//:musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl_test_toolchain\"\ + ,\n toolchain_type = \"@bazel_tools//tools/cpp:test_runner_toolchain_type\"\ + ,\n)\n\nplatform(\n name = \"platform\",\n constraint_values = [\n \ + \ \"@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n \ + \ ],\n)\n\nEOF\n" + - name: Build with musl + run: cd test-workspaces/builder && bazel build //:binary - 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 @@ -310,9 +325,9 @@ jobs: apple-darwin-x86_64-aarch64: runs-on: macos-12 steps: + - run: brew install wget md5sha1sum gnu-tar - 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 @@ -348,14 +363,18 @@ jobs: \ \"@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 + ,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\ntoolchain(\n\ + \ name = \"musl-1_2_3-platform-x86_64-apple-darwin-target-aarch64-linux-musl_test_toolchain\"\ + ,\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-x86_64-apple-darwin-target-aarch64-linux-musl//:musl-1_2_3-platform-x86_64-apple-darwin-target-aarch64-linux-musl_test_toolchain\"\ + ,\n toolchain_type = \"@bazel_tools//tools/cpp:test_runner_toolchain_type\"\ + ,\n)\n\nplatform(\n name = \"platform\",\n constraint_values = [\n \ + \ \"@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n \ + \ ],\n)\n\nEOF\n" + - name: Build with musl + run: cd test-workspaces/builder && bazel build //:binary - 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 @@ -367,9 +386,9 @@ jobs: apple-darwin-aarch64-aarch64: runs-on: macos-14 steps: + - run: brew install wget md5sha1sum gnu-tar - 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 @@ -405,14 +424,18 @@ jobs: \ \"@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 + ,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\ntoolchain(\n\ + \ name = \"musl-1_2_3-platform-aarch64-apple-darwin-target-aarch64-linux-musl_test_toolchain\"\ + ,\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-apple-darwin-target-aarch64-linux-musl//:musl-1_2_3-platform-aarch64-apple-darwin-target-aarch64-linux-musl_test_toolchain\"\ + ,\n toolchain_type = \"@bazel_tools//tools/cpp:test_runner_toolchain_type\"\ + ,\n)\n\nplatform(\n name = \"platform\",\n constraint_values = [\n \ + \ \"@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n \ + \ ],\n)\n\nEOF\n" + - name: Build with musl + run: cd test-workspaces/builder && bazel build //:binary - 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 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index d6fee2b..b0c66ea 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -9,16 +9,16 @@ name: Release jobs: unknown-linux-gnu-x86_64-x86_64: runs-on: ubuntu-latest - container: centos:centos8 + container: amazonlinux:2 + env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 steps: + - run: yum install -y bzip2 git gzip make patch tar wget which + - run: yum group install -y "Development Tools" + - run: ln -s /usr/bin/tar /usr/bin/gnutar - 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 @@ -29,10 +29,14 @@ jobs: if-no-files-found: error unknown-linux-gnu-x86_64-x86_64-test-build: runs-on: ubuntu-latest - container: centos:centos8 + container: amazonlinux:2 + env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 needs: - unknown-linux-gnu-x86_64-x86_64 steps: + - run: yum install -y gzip tar - 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 @@ -83,9 +87,9 @@ jobs: apple-darwin-x86_64-x86_64: runs-on: macos-12 steps: + - run: brew install wget md5sha1sum gnu-tar - 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 @@ -144,9 +148,9 @@ jobs: apple-darwin-aarch64-x86_64: runs-on: macos-14 steps: + - run: brew install wget md5sha1sum gnu-tar - 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 @@ -205,9 +209,9 @@ jobs: unknown-linux-gnu-aarch64-x86_64: runs-on: buildjet-2vcpu-ubuntu-2204-arm steps: + - run: sudo ln -s /usr/bin/tar /usr/bin/gnutar - 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 @@ -244,14 +248,18 @@ jobs: \ \"@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 + ,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\ntoolchain(\n\ + \ name = \"musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl_test_toolchain\"\ + ,\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-aarch64-unknown-linux-gnu-target-x86_64-linux-musl//:musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-x86_64-linux-musl_test_toolchain\"\ + ,\n toolchain_type = \"@bazel_tools//tools/cpp:test_runner_toolchain_type\"\ + ,\n)\n\nplatform(\n name = \"platform\",\n constraint_values = [\n \ + \ \"@platforms//cpu:x86_64\",\n \"@platforms//os:linux\",\n \ + \ ],\n)\n\nEOF\n" + - name: Build with musl + run: cd test-workspaces/builder && bazel build //:binary - 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 @@ -262,7 +270,10 @@ jobs: if-no-files-found: error test-x86_64: runs-on: ubuntu-latest - container: centos:centos8 + container: amazonlinux:2 + env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 needs: - unknown-linux-gnu-x86_64-x86_64-test-build - apple-darwin-x86_64-x86_64-test-build @@ -313,16 +324,16 @@ jobs: -- ' unknown-linux-gnu-x86_64-aarch64: runs-on: ubuntu-latest - container: centos:centos8 + container: amazonlinux:2 + env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 steps: + - run: yum install -y bzip2 git gzip make patch tar wget which + - run: yum group install -y "Development Tools" + - run: ln -s /usr/bin/tar /usr/bin/gnutar - 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 @@ -333,10 +344,14 @@ jobs: if-no-files-found: error unknown-linux-gnu-x86_64-aarch64-test-build: runs-on: ubuntu-latest - container: centos:centos8 + container: amazonlinux:2 + env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 needs: - unknown-linux-gnu-x86_64-aarch64 steps: + - run: yum install -y gzip tar - 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 @@ -360,14 +375,18 @@ jobs: \ \"@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 + ,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\ntoolchain(\n\ + \ name = \"musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl_test_toolchain\"\ + ,\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-x86_64-unknown-linux-gnu-target-aarch64-linux-musl//:musl-1_2_3-platform-x86_64-unknown-linux-gnu-target-aarch64-linux-musl_test_toolchain\"\ + ,\n toolchain_type = \"@bazel_tools//tools/cpp:test_runner_toolchain_type\"\ + ,\n)\n\nplatform(\n name = \"platform\",\n constraint_values = [\n \ + \ \"@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n \ + \ ],\n)\n\nEOF\n" + - name: Build with musl + run: cd test-workspaces/builder && bazel build //:binary - 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 @@ -379,9 +398,9 @@ jobs: apple-darwin-x86_64-aarch64: runs-on: macos-12 steps: + - run: brew install wget md5sha1sum gnu-tar - 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 @@ -417,14 +436,18 @@ jobs: \ \"@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 + ,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\ntoolchain(\n\ + \ name = \"musl-1_2_3-platform-x86_64-apple-darwin-target-aarch64-linux-musl_test_toolchain\"\ + ,\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-x86_64-apple-darwin-target-aarch64-linux-musl//:musl-1_2_3-platform-x86_64-apple-darwin-target-aarch64-linux-musl_test_toolchain\"\ + ,\n toolchain_type = \"@bazel_tools//tools/cpp:test_runner_toolchain_type\"\ + ,\n)\n\nplatform(\n name = \"platform\",\n constraint_values = [\n \ + \ \"@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n \ + \ ],\n)\n\nEOF\n" + - name: Build with musl + run: cd test-workspaces/builder && bazel build //:binary - 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 @@ -436,9 +459,9 @@ jobs: apple-darwin-aarch64-aarch64: runs-on: macos-14 steps: + - run: brew install wget md5sha1sum gnu-tar - 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 @@ -474,14 +497,18 @@ jobs: \ \"@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 + ,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\ntoolchain(\n\ + \ name = \"musl-1_2_3-platform-aarch64-apple-darwin-target-aarch64-linux-musl_test_toolchain\"\ + ,\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-apple-darwin-target-aarch64-linux-musl//:musl-1_2_3-platform-aarch64-apple-darwin-target-aarch64-linux-musl_test_toolchain\"\ + ,\n toolchain_type = \"@bazel_tools//tools/cpp:test_runner_toolchain_type\"\ + ,\n)\n\nplatform(\n name = \"platform\",\n constraint_values = [\n \ + \ \"@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n \ + \ ],\n)\n\nEOF\n" + - name: Build with musl + run: cd test-workspaces/builder && bazel build //:binary - 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 @@ -493,9 +520,9 @@ jobs: unknown-linux-gnu-aarch64-aarch64: runs-on: buildjet-2vcpu-ubuntu-2204-arm steps: + - run: sudo ln -s /usr/bin/tar /usr/bin/gnutar - 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 @@ -532,14 +559,22 @@ jobs: \ \"@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 + ,\n toolchain_type = \"@bazel_tools//tools/cpp:toolchain_type\",\n)\ntoolchain(\n\ + \ name = \"musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl_test_toolchain\"\ + ,\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//:musl-1_2_3-platform-aarch64-unknown-linux-gnu-target-aarch64-linux-musl_test_toolchain\"\ + ,\n toolchain_type = \"@bazel_tools//tools/cpp:test_runner_toolchain_type\"\ + ,\n)\n\nplatform(\n name = \"platform\",\n constraint_values = [\n \ + \ \"@platforms//cpu:arm64\",\n \"@platforms//os:linux\",\n \ + \ ],\n)\n\nEOF\n" + - name: Test with musl + run: cd test-workspaces/builder && bazel test //:test + - name: Test with musl (static linking) + run: cd test-workspaces/builder && bazel test //:test --dynamic_mode=off + - name: Build with musl + run: cd test-workspaces/builder && bazel build //:binary - 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 diff --git a/generate-actions.py b/generate-actions.py index 192916d..51d7481 100644 --- a/generate-actions.py +++ b/generate-actions.py @@ -9,6 +9,8 @@ checkout = { "name": "Checkout repo", + # Pin to v3 not newer, because it uses a version of node which is compatible with amazonlinux2. + # See https://github.com/actions/runner/issues/2906 for more details. "uses": "actions/checkout@v3", } @@ -76,7 +78,8 @@ def for_bazel_download(self): @dataclass class BaseRunner: top_level_properties: Dict[str, Any] - setup_steps: List[Dict[str, Any]] + build_setup_steps: List[Dict[str, Any]] + test_setup_steps: List[Dict[str, Any]] def install_bazel(os: OS, arch: Architecture): @@ -96,23 +99,29 @@ def install_bazel(os: OS, arch: Architecture): linux_x86_64_runner = BaseRunner( top_level_properties={ "runs-on": "ubuntu-latest", - "container": "centos:centos8", - }, - setup_steps=[ - { - "run": "sed -i 's|mirrorlist|#mirrorlist|g' /etc/yum.repos.d/CentOS-*", + "container": "amazonlinux:2", + # Don't have GitHub Actions force a newer node which uses too new a glibc when checking out the repo. + # See https://github.com/actions/runner/issues/2906 for more details. + "env": { + "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION": True, + "ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION": "node16", }, + }, + build_setup_steps=[ { - "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 gzip make patch tar wget which", }, { - "run": "yum install -y bzip2 git make patch wget", + "run": 'yum group install -y "Development Tools"', }, { - "run": 'dnf group install -y "Development Tools"', + "run": "ln -s /usr/bin/tar /usr/bin/gnutar", }, + ], + test_setup_steps=[ { - "run": "ln -s /usr/bin/tar /usr/bin/gnutar", + # The checkout action assumes tar is present on $PATH. + "run": "yum install -y gzip tar", }, ], ) @@ -125,11 +134,12 @@ def install_bazel(os: OS, arch: Architecture): # https://app.buildjet.com/53858925 "runs-on": "buildjet-2vcpu-ubuntu-2204-arm", }, - setup_steps=[ + build_setup_steps=[ { "run": "sudo ln -s /usr/bin/tar /usr/bin/gnutar", }, ], + test_setup_steps=[], ) _setup_darwin_steps = [ @@ -142,14 +152,16 @@ def install_bazel(os: OS, arch: Architecture): top_level_properties={ "runs-on": "macos-12", }, - setup_steps=_setup_darwin_steps, + build_setup_steps=_setup_darwin_steps, + test_setup_steps=[], ) darwin_aarch64_runner = BaseRunner( top_level_properties={ "runs-on": "macos-14", }, - setup_steps=_setup_darwin_steps, + build_setup_steps=_setup_darwin_steps, + test_setup_steps=[], ) @@ -716,10 +728,10 @@ def make_jobs(release, version): ) musl_filename = musl_filename_without_extension(source_os, source_arch, target_arch) + ".tar.gz" jobs[build_job_name] = source_runner.top_level_properties | { - "steps": [ + "steps": source_runner.build_setup_steps + + [ checkout, ] - + source_runner.setup_steps + [ { "name": "Build musl", @@ -743,7 +755,7 @@ def make_jobs(release, version): test_build_filename = f"test-binary-platform-{source_arch.for_musl}-{source_os.for_musl}-target-{target_arch.for_musl}-linux-musl" jobs[test_build_job_name] = source_runner.top_level_properties | { "needs": [build_job_name], - "steps": [ + "steps": source_runner.test_setup_steps + [ checkout, download(musl_filename), install_bazel(source_os, source_arch),