mirror of
https://github.com/containers/youki
synced 2026-07-25 13:04:50 +02:00
e8c6ad21de
Signed-off-by: Yusuke Sakurai <yusuke.sakurai@3-shake.com>
60 lines
2.3 KiB
Docker
60 lines
2.3 KiB
Docker
ARG CROSS_BASE_IMAGE
|
|
|
|
FROM alpine:3.18 AS apk-anywhere
|
|
RUN mkdir -p /alpine/lib /alpine/sbin /alpine/etc/apk && \
|
|
cp /sbin/apk /alpine/sbin/apk && \
|
|
cp /lib/libcrypto.so.3 /alpine/lib/ && \
|
|
cp /lib/libz.so.1 /alpine/lib/ && \
|
|
cp /lib/libapk.so.* /alpine/lib/ && \
|
|
cp /lib/libssl.so.3 /alpine/lib/ && \
|
|
cp /lib/ld-musl-* /alpine/lib/ && \
|
|
cp /etc/apk/repositories /alpine/etc/apk/
|
|
|
|
FROM $CROSS_BASE_IMAGE
|
|
|
|
COPY --from=apk-anywhere /alpine/ /alpine/
|
|
COPY --from=apk-anywhere /etc/ssl /etc/ssl
|
|
|
|
# Use CROSS_CMAKE_SYSTEM_PROCESSOR (provided by cross-rs base image) to
|
|
# initialize apk for the target architecture, then install musl static
|
|
# libraries into CROSS_SYSROOT.
|
|
RUN MARCH="${CROSS_CMAKE_SYSTEM_PROCESSOR}" && \
|
|
LOADER=$(find /alpine/lib/ -name 'ld-musl-*') && \
|
|
ROOT="/apk-${MARCH}" && \
|
|
mkdir -p "${ROOT}/etc/apk/keys" "${ROOT}/etc/apk/protected_paths.d" \
|
|
"${CROSS_SYSROOT}/lib" "${CROSS_SYSROOT}/include" "${ROOT}/usr" && \
|
|
echo "${MARCH}" > "${ROOT}/etc/apk/arch" && \
|
|
cp /alpine/etc/apk/repositories "${ROOT}/etc/apk/" && \
|
|
ln -s "${CROSS_SYSROOT}/lib" "${ROOT}/usr/lib" && \
|
|
ln -s "${CROSS_SYSROOT}/lib" "${ROOT}/lib" && \
|
|
ln -s "${CROSS_SYSROOT}/include" "${ROOT}/usr/include" && \
|
|
LD_LIBRARY_PATH="/alpine/lib/" "${LOADER}" -- /alpine/sbin/apk \
|
|
add --no-cache --initdb -p "${ROOT}" --allow-untrusted alpine-keys && \
|
|
LD_LIBRARY_PATH="/alpine/lib/" "${LOADER}" -- /alpine/sbin/apk \
|
|
--root "${ROOT}" add --no-cache \
|
|
libseccomp-static libseccomp-dev \
|
|
libelf-static elfutils-dev \
|
|
zlib-dev zlib-static \
|
|
g++ zstd-static && \
|
|
rm -rf /alpine "${ROOT}"
|
|
|
|
# configure libseccomp-rs to use static linking
|
|
ENV LIBSECCOMP_LINK_TYPE="static"
|
|
ENV LIBSECCOMP_LIB_PATH="${CROSS_SYSROOT}/lib"
|
|
|
|
# configure wasmedge-sys to link stdc++ statically
|
|
ENV WASMEDGE_DEP_STDCXX_LINK_TYPE="static"
|
|
ENV WASMEDGE_DEP_STDCXX_LIB_PATH="${CROSS_SYSROOT}/lib"
|
|
|
|
COPY --chmod=755 hack/busctl.sh /bin/busctl
|
|
|
|
# wasmedge-sys (through llvm) needs some symbols defined in libgcc
|
|
RUN mkdir /.cargo && cat <<'EOF' > /.cargo/config.toml
|
|
[target.'cfg(target_env = "musl")']
|
|
rustflags = ["-Clink-arg=-lgcc"]
|
|
EOF
|
|
|
|
RUN apt-get -y update && \
|
|
apt-get install -y pkg-config && \
|
|
rm -rf /var/lib/apt/lists/*
|