Skip to content

Commit f12faf3

Browse files
authored
Merge pull request #1135 from lkollar/musl
Add image for musllinux_1_1
2 parents 394dcce + 5633492 commit f12faf3

16 files changed

+126
-39
lines changed

.github/workflows/build.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ jobs:
3434
platform: "i686"
3535
- policy: "manylinux_2_24"
3636
platform: "x86_64"
37+
- policy: "musllinux_1_1"
38+
platform: "x86_64"
39+
- policy: "musllinux_1_1"
40+
platform: "i686"
3741

3842
env:
3943
POLICY: ${{ matrix.policy }}

.travis.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ jobs:
3838
env: POLICY="manylinux_2_24" PLATFORM="s390x"
3939
- arch: ppc64le
4040
env: POLICY="manylinux_2_24" PLATFORM="ppc64le" MANYLINUX_BUILD_FRONTEND="buildkit"
41+
- arch: arm64-graviton2
42+
virt: vm
43+
group: edge
44+
env: POLICY="musllinux_1_1" PLATFORM="aarch64"
45+
- arch: s390x
46+
env: POLICY="musllinux_1_1" PLATFORM="s390x"
47+
- arch: ppc64le
48+
env: POLICY="musllinux_1_1" PLATFORM="ppc64le" MANYLINUX_BUILD_FRONTEND="buildkit"
4149

4250
before_install:
4351
- if [ -d "${HOME}/buildx-cache/.buildx-cache-${POLICY}_${PLATFORM}" ]; then cp -rlf ${HOME}/buildx-cache/.buildx-cache-${POLICY}_${PLATFORM} ./; fi

build.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ elif [ "${POLICY}" == "manylinux_2_24" ]; then
6262
DEVTOOLSET_ROOTPATH=
6363
PREPEND_PATH=
6464
LD_LIBRARY_PATH_ARG=
65+
elif [ "${POLICY}" == "musllinux_1_1" ]; then
66+
BASEIMAGE="${MULTIARCH_PREFIX}alpine:3.12"
67+
DEVTOOLSET_ROOTPATH=
68+
PREPEND_PATH=
69+
LD_LIBRARY_PATH_ARG=
6570
else
6671
echo "Unsupported policy: '${POLICY}'"
6772
exit 1

docker/Dockerfile

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,19 @@ ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
2525
COPY build_scripts/fixup-mirrors.sh /usr/local/sbin/fixup-mirrors
2626

2727
# setup entrypoint, this will wrap commands with `linux32` with i686 images
28-
COPY build_scripts/install-entrypoint.sh build_scripts/update-system-packages.sh /build_scripts/
29-
RUN bash /build_scripts/install-entrypoint.sh && rm -rf /build_scripts
28+
COPY build_scripts/install-entrypoint.sh \
29+
build_scripts/update-system-packages.sh \
30+
build_scripts/build_utils.sh \
31+
/build_scripts/
32+
33+
RUN /build_scripts/install-entrypoint.sh && rm -rf /build_scripts
3034
COPY manylinux-entrypoint /usr/local/bin/manylinux-entrypoint
3135
ENTRYPOINT ["manylinux-entrypoint"]
3236

33-
COPY build_scripts/install-runtime-packages.sh build_scripts/update-system-packages.sh /build_scripts/
37+
COPY build_scripts/install-runtime-packages.sh \
38+
build_scripts/update-system-packages.sh \
39+
build_scripts/build_utils.sh \
40+
/build_scripts/
3441
RUN manylinux-entrypoint /build_scripts/install-runtime-packages.sh && rm -rf /build_scripts/
3542

3643
COPY build_scripts/build_utils.sh /build_scripts/
@@ -68,7 +75,6 @@ RUN export LIBXCRYPT_VERSION=4.4.26 && \
6875
export PERL_DOWNLOAD_URL=https://www.cpan.org/src/5.0 && \
6976
manylinux-entrypoint /build_scripts/install-libxcrypt.sh
7077

71-
7278
FROM runtime_base AS build_base
7379
COPY build_scripts/install-build-packages.sh /build_scripts/
7480
RUN manylinux-entrypoint /build_scripts/install-build-packages.sh

docker/build_scripts/build-git.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ set -exuo pipefail
77
# Get script directory
88
MY_DIR=$(dirname "${BASH_SOURCE[0]}")
99

10+
if [ "${POLICY}" == "musllinux_1_1" ]; then
11+
export NO_REGEX=NeedsStartEnd
12+
fi
13+
1014
# Get build utilities
1115
source $MY_DIR/build_utils.sh
1216

docker/build_scripts/build-openssl.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ fi
2727

2828
if which yum; then
2929
yum erase -y openssl-devel
30+
elif which apk; then
31+
apk del openssl-dev
3032
else
3133
apt-get remove -y libssl-dev
3234
fi

docker/build_scripts/build-sqlite3.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ strip_ /manylinux-rootfs
3030

3131
# Install
3232
cp -rlf /manylinux-rootfs/* /
33-
ldconfig
33+
ldconfig /
3434

3535
# Clean-up for runtime
3636
rm -rf /manylinux-rootfs/usr/local/share

docker/build_scripts/build_utils.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ MANYLINUX_CFLAGS="-g -O2 -Wall -fdebug-prefix-map=/=. -fstack-protector-strong -
1010
MANYLINUX_CXXFLAGS="-g -O2 -Wall -fdebug-prefix-map=/=. -fstack-protector-strong -Wformat -Werror=format-security"
1111
MANYLINUX_LDFLAGS="-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now"
1212

13+
export BASE_POLICY=manylinux
14+
if [ "${POLICY:0:9}" == "musllinux" ]; then
15+
export BASE_POLICY=musllinux
16+
fi
1317

1418
function check_var {
1519
if [ -z "$1" ]; then

docker/build_scripts/finalize.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,13 @@ deactivate
7575
pushd $MY_DIR/requirements-tools
7676
for TOOL_PATH in $(find . -type f); do
7777
TOOL=$(basename ${TOOL_PATH})
78-
pipx install --pip-args="--require-hashes -r" ${TOOL}
78+
if [ "${TOOL}" == "cmake" ] && [ "${POLICY}" == "musllinux_1_1" ]; then
79+
# TODO remove this exception once https://github.com/scikit-build/cmake-python-distributions
80+
# provides a musllinux wheel
81+
apk add --no-cache cmake
82+
else
83+
pipx install --pip-args="--require-hashes -r" ${TOOL}
84+
fi
7985
done
8086
popd
8187

docker/build_scripts/install-build-packages.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ if [ "${AUDITWHEEL_POLICY}" == "manylinux2010" ] || [ "${AUDITWHEEL_POLICY}" ==
1919
elif [ "${AUDITWHEEL_POLICY}" == "manylinux_2_24" ]; then
2020
PACKAGE_MANAGER=apt
2121
COMPILE_DEPS="libz-dev libbz2-dev libexpat1-dev libncurses5-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev liblzma-dev openssl libssl-dev libkeyutils-dev libkrb5-dev comerr-dev libidn2-0-dev libcurl4-openssl-dev uuid-dev libffi-dev linux-kernel-headers"
22+
elif [ "${AUDITWHEEL_POLICY}" == "musllinux_1_1" ]; then
23+
PACKAGE_MANAGER=apk
24+
COMPILE_DEPS="zlib-dev bzip2-dev expat-dev ncurses-dev readline-dev tk-dev gdbm-dev libpcap-dev xz-dev openssl openssl-dev keyutils-dev krb5-dev libcom_err libidn-dev curl-dev util-linux-dev libffi-dev linux-headers"
2225
else
2326
echo "Unsupported policy: '${AUDITWHEEL_POLICY}'"
2427
exit 1
@@ -35,6 +38,8 @@ elif [ "${PACKAGE_MANAGER}" == "apt" ]; then
3538
apt-get install -qq -y --no-install-recommends ${COMPILE_DEPS}
3639
apt-get clean -qq
3740
rm -rf /var/lib/apt/lists/*
41+
elif [ "${PACKAGE_MANAGER}" == "apk" ]; then
42+
apk add --no-cache ${COMPILE_DEPS}
3843
else
3944
echo "Not implemented"
4045
exit 1

0 commit comments

Comments
 (0)