Skip to content
This repository was archived by the owner on Dec 16, 2022. It is now read-only.

Commit c4cd5ea

Browse files
author
Paulo Gomes
committed
Add native x86_64 musl toolchain
Allows local development without dependending on musl being installed on the development machine. Signed-off-by: Paulo Gomes <[email protected]>
1 parent 7a13fe3 commit c4cd5ea

File tree

3 files changed

+26
-12
lines changed

3 files changed

+26
-12
lines changed

Makefile

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,12 @@ else
2727
endif
2828

2929
ifeq ($(shell uname -s),Linux)
30-
ifneq ($(shell uname -m),x86_64)
31-
MUSL-PREFIX=$(REPOSITORY_ROOT)/build/musl/aarch64-linux-musl-native/bin/aarch64-linux-musl
30+
MUSL-PREFIX=$(REPOSITORY_ROOT)/build/musl/$(shell uname -m)-linux-musl-native/bin/$(shell uname -m)-linux-musl
3231
MUSL-CC=$(MUSL-PREFIX)-gcc
3332
export CC=$(MUSL-PREFIX)-gcc
3433
export CXX=$(MUSL-PREFIX)-g++
3534
export AR=$(MUSL-PREFIX)-ar
3635
endif
37-
endif
3836

3937
GO_STATIC_FLAGS=-tags 'netgo,osusergo,static_build'
4038

@@ -70,8 +68,6 @@ builder:
7068
# install qemu emulators
7169
docker run -it --rm --privileged tonistiigi/binfmt --install all
7270

73-
$(MUSL-CC):
74-
./hack/download-musl.sh
7571

7672
$(LIBGIT2): $(MUSL-CC)
7773
ifeq ($(shell uname -s),Darwin)
@@ -81,6 +77,12 @@ else
8177
IMG_TAG=$(IMG):$(TAG) ./hack/extract-libraries.sh
8278
endif
8379

80+
$(MUSL-CC):
81+
ifneq ($(shell uname -s),Darwin)
82+
./hack/download-musl.sh
83+
endif
84+
85+
8486
# dev-test is a smoke test for development environment
8587
# consuming the libraries generated by this project.
8688
dev-test: $(LIBGIT2)

hack/download-musl.sh

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,32 @@
11
#!/usr/bin/env bash
22

3+
set -eoux pipefail
4+
5+
MUSL_X86_64_FILENAME=x86_64-linux-musl-native.tgz
6+
MUSL_X86_64_SHA512=44d441ad9aa11a06feddf3daa4c9f53ad7d9ca37af1f5a61379aca07793703d179410cea723c1b7fca94c4de19a321228bdb3656bc5cbdb5e3bea8e2d6dac6c7
37
MUSL_AARCH64_FILENAME=aarch64-linux-musl-native.tgz
4-
MUSL_AARCH64_URL="https://more.musl.cc/11.2.1/x86_64-linux-musl/${MUSL_AARCH64_FILENAME}"
58
MUSL_AARCH64_SHA512=16d544e09845c9dbba50f29e0cb04dd661e17eb63c56acad6a67fd2a78aa7596b792477c7177d3cd56d408a27dc291a90507df882f2b099c0f25511ce08fd3b5
69

10+
MUSL_FILENAME="${MUSL_X86_64_FILENAME}"
11+
MUSL_SHA512="${MUSL_X86_64_SHA512}"
12+
if [ "$(uname -m)" = "arm64" ] || [ "$(uname -m)" = "aarch64" ]; then
13+
MUSL_FILENAME="${MUSL_AARCH64_FILENAME}"
14+
MUSL_SHA512="${MUSL_AARCH64_SHA512}"
15+
fi
16+
17+
MUSL_AARCH64_URL="https://more.musl.cc/11.2.1/x86_64-linux-musl/${MUSL_FILENAME}"
18+
719
ROOT_DIR="$(git rev-parse --show-toplevel)"
820
MUSL_DIR="${ROOT_DIR}/build/musl"
921

1022
if [ ! -f "${MUSL_DIR}/bin" ]; then
11-
TARGET_FILE="${MUSL_DIR}/${MUSL_AARCH64_FILENAME}"
23+
TARGET_FILE="${MUSL_DIR}/${MUSL_FILENAME}"
1224
mkdir -p "${MUSL_DIR}"
1325

14-
echo "${MUSL_AARCH64_SHA512} ${TARGET_FILE}"
26+
echo "${MUSL_SHA512} ${TARGET_FILE}"
1527
curl -o "${TARGET_FILE}" -LO "${MUSL_AARCH64_URL}"
16-
if ! echo "${MUSL_AARCH64_SHA512} ${TARGET_FILE}" | sha512sum --check; then
17-
echo "Checksum failed for ${MUSL_AARCH64_FILENAME}."
28+
if ! echo "${MUSL_SHA512} ${TARGET_FILE}" | sha512sum --check; then
29+
echo "Checksum failed for ${MUSL_FILENAME}."
1830
rm -rf "${MUSL_DIR}"
1931
exit 1
2032
fi

hack/extract-libraries.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
#!/usr/bin/env bash
22

3-
set -euxo pipefail
3+
set -eoux pipefail
44

55
IMG_TAG="${IMG_TAG:-.}"
66

77
function extract(){
88
PLATFORM=$1
99
DIR=$2
1010

11-
id=$(docker create --platform="${PLATFORM}" "${IMG_TAG}")
11+
id=$(docker create --platform="${PLATFORM}" "${IMG_TAG}" sh)
1212
docker cp "${id}":/usr/local - > output.tar.gz
1313
docker rm -v "${id}"
1414

0 commit comments

Comments
 (0)