Skip to content

Commit 6a2594f

Browse files
committed
no emulation
1 parent 47ac011 commit 6a2594f

4 files changed

Lines changed: 38 additions & 25 deletions

File tree

.github/workflows/ci.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,6 @@ jobs:
5959
- name: Build macOS
6060
if: runner.os == 'macOS'
6161
run: ./build.libgit2.sh
62-
- name: Setup QEMU
63-
if: startsWith(matrix.name, 'linux-musl-') || matrix.name == 'linux-riscv64'
64-
run: docker run --privileged --rm tonistiigi/binfmt --install all
6562
- name: Build Linux
6663
if: runner.os == 'Linux'
6764
run: ./dockerbuild.sh

docker/linux

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,36 @@
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
531

632
WORKDIR /nativebinaries
733
COPY . /nativebinaries/
834

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"]

docker/musl

Lines changed: 0 additions & 10 deletions
This file was deleted.

dockerbuild.sh

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
set -e
44
echo "building for $RID"
55

6-
alpineVersion=3.13
7-
86
if [[ $RID =~ arm64 ]]; then
97
arch="arm64"
108
elif [[ $RID =~ arm ]]; then
@@ -13,20 +11,21 @@ elif [[ $RID =~ ppc64le ]]; then
1311
arch="powerpc64le"
1412
elif [[ $RID =~ riscv64 ]]; then
1513
arch="riscv64"
16-
alpineVersion=3.20 # alpine 3.20 is the first version with official riscv64 support
1714
else
1815
arch="amd64"
1916
fi
2017

2118
if [[ $RID == linux-musl* ]]; then
22-
dockerfile="docker/musl"
19+
is_musl="true"
2320
else
24-
dockerfile="docker/linux"
21+
is_musl="false"
2522
fi
2623

27-
docker build --no-cache --platform linux/$arch -t $RID -f $dockerfile --build-arg ARCH=$arch --build-arg ALPINE_VERSION=$alpineVersion .
24+
docker build --no-cache -t $RID -f docker/linux \
25+
--build-arg ARCH=$arch \
26+
--build-arg IS_MUSL=$is_musl .
2827

29-
docker run -t --platform linux/$arch -e RID=$RID --name=$RID $RID
28+
docker run -t -e RID=$RID --name=$RID $RID
3029

3130
docker cp $RID:/nativebinaries/nuget.package/runtimes nuget.package
3231

0 commit comments

Comments
 (0)