|
1 | | -FROM kmturley/crossbuild |
2 | | -ARG ARCH='amd64' |
3 | | -ENV CROSS_TRIPLE=${ARCH} |
4 | | -RUN apt update && apt -y install pkg-config |
| 1 | +FROM ubuntu:24.04 |
| 2 | +ARG ARCH=amd64 |
| 3 | +ARG IS_MUSL=false |
| 4 | + |
| 5 | +# 1. Install common host utilities |
| 6 | +RUN apt-get update && apt-get install -y \ |
| 7 | + build-essential cmake git pkg-config wget xz-utils |
| 8 | + |
| 9 | +# 2. Setup GLIBC Cross-Compilers (if not musl) |
| 10 | +RUN if [ "$IS_MUSL" = "false" ]; then \ |
| 11 | + if [ "$ARCH" = "arm64" ]; then apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu && echo "CC=aarch64-linux-gnu-gcc\nCXX=aarch64-linux-gnu-g++" >> /env_vars; \ |
| 12 | + elif [ "$ARCH" = "armhf" ]; then apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf && echo "CC=arm-linux-gnueabihf-gcc\nCXX=arm-linux-gnueabihf-g++" >> /env_vars; \ |
| 13 | + elif [ "$ARCH" = "powerpc64le" ]; then apt-get install -y gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu && echo "CC=powerpc64le-linux-gnu-gcc\nCXX=powerpc64le-linux-gnu-g++" >> /env_vars; \ |
| 14 | + elif [ "$ARCH" = "riscv64" ]; then apt-get install -y gcc-riscv64-linux-gnu g++-riscv64-linux-gnu && echo "CC=riscv64-linux-gnu-gcc\nCXX=riscv64-linux-gnu-g++" >> /env_vars; \ |
| 15 | + else echo "CC=gcc\nCXX=g++" >> /env_vars; fi \ |
| 16 | + fi |
| 17 | + |
| 18 | +# 3. Setup MUSL Cross-Compilers via Dyne.org mirror (if musl) |
| 19 | +RUN if [ "$IS_MUSL" = "true" ]; then \ |
| 20 | + if [ "$ARCH" = "arm64" ]; then FILE_NAME="dyne-gcc-musl-arm_64.tar.xz" && BIN_PREFIX="aarch64-linux-musl"; \ |
| 21 | + elif [ "$ARCH" = "armhf" ]; then FILE_NAME="dyne-gcc-musl-arm_hf.tar.xz" && BIN_PREFIX="arm-linux-musleabihf"; \ |
| 22 | + elif [ "$ARCH" = "riscv64" ]; then FILE_NAME="dyne-gcc-musl-riscv_64.tar.xz" && BIN_PREFIX="riscv64-linux-musl"; \ |
| 23 | + else FILE_NAME="dyne-gcc-musl-x86_64.tar.xz" && BIN_PREFIX="x86_64-linux-musl"; fi && \ |
| 24 | + mkdir -p /opt/musl-cross && \ |
| 25 | + wget "https://files.dyne.org/musl/${FILE_NAME}" && \ |
| 26 | + tar -xJf ${FILE_NAME} -C /opt/musl-cross --strip-components=1 && \ |
| 27 | + rm ${FILE_NAME} && \ |
| 28 | + echo "PATH=/opt/musl-cross/gcc-musl/bin:$PATH" >> /env_vars && \ |
| 29 | + echo "CC=${BIN_PREFIX}-gcc\nCXX=${BIN_PREFIX}-g++" >> /env_vars; \ |
| 30 | + fi |
5 | 31 |
|
6 | 32 | WORKDIR /nativebinaries |
7 | 33 | COPY . /nativebinaries/ |
8 | 34 |
|
9 | | -CMD ["/bin/bash", "-c", "./build.libgit2.sh"] |
| 35 | +# Inject environmental paths dynamically to run the libgit2 build script natively |
| 36 | +CMD ["/bin/bash", "-c", "export $(cat /env_vars | xargs) && ./build.libgit2.sh"] |
0 commit comments