|
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 (if musl) |
| 19 | +RUN if [ "$IS_MUSL" = "true" ]; then \ |
| 20 | + if [ "$ARCH" = "arm64" ]; then TARGET_TRIPLE="aarch64-linux-musl"; \ |
| 21 | + elif [ "$ARCH" = "armhf" ]; then TARGET_TRIPLE="armhf-linux-musl"; \ |
| 22 | + elif [ "$ARCH" = "powerpc64le" ]; then TARGET_TRIPLE="powerpc64le-linux-musl"; \ |
| 23 | + elif [ "$ARCH" = "riscv64" ]; then TARGET_TRIPLE="riscv64-linux-musl"; \ |
| 24 | + else TARGET_TRIPLE="x86_64-linux-musl"; fi && \ |
| 25 | + wget -q https://musl.cc/${TARGET_TRIPLE}-cross.tgz && \ |
| 26 | + tar -xf ${TARGET_TRIPLE}-cross.tgz -C /opt && \ |
| 27 | + rm ${TARGET_TRIPLE}-cross.tgz && \ |
| 28 | + echo "PATH=/opt/${TARGET_TRIPLE}-cross/bin:\$PATH" >> /env_vars && \ |
| 29 | + echo "CC=${TARGET_TRIPLE}-gcc\nCXX=${TARGET_TRIPLE}-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