Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,16 @@ jobs:
name: linux-arm64
- os: ubuntu-24.04
name: linux-ppc64le
- os: ubuntu-24.04
name: linux-riscv64
- os: ubuntu-24.04
name: linux-musl-x64
- os: ubuntu-24.04
name: linux-musl-arm
- os: ubuntu-24.04
name: linux-musl-arm64
- os: ubuntu-24.04
name: linux-musl-riscv64
- os: macos-14
name: osx-x64
- os: macos-14
Expand All @@ -55,9 +59,6 @@ jobs:
- name: Build macOS
if: runner.os == 'macOS'
run: ./build.libgit2.sh
- name: Setup QEMU
if: matrix.name == 'linux-musl-arm' || matrix.name == 'linux-musl-arm64'
run: docker run --rm --privileged multiarch/qemu-user-static:register --reset
- name: Build Linux
if: runner.os == 'Linux'
run: ./dockerbuild.sh
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ the following platforms:
- Windows (x86, x64, arm64)
- macOS (x64, arm64)
- Linux
- glibc: (x64, arm, arm64, ppc64le)
- musl: (x64, arm, arm64)
- glibc: (x64, arm, arm64, ppc64le, riscv64)
- musl: (x64, arm, arm64, riscv64)

[lg2s-nb]: https://www.nuget.org/packages/LibGit2Sharp.NativeBinaries
[lg2]: https://libgit2.github.com/
Expand Down
1 change: 1 addition & 0 deletions UpdateLibgit2ToSha.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ Push-Location $libgit2Directory
<dllmap os="linux" cpu="arm" wordsize="32" dll="$binaryFilename" target="lib/linux-arm/lib$binaryFilename.so" />
<dllmap os="linux" cpu="armv8" wordsize="64" dll="$binaryFilename" target="lib/linux-arm64/lib$binaryFilename.so" />
<dllmap os="linux" cpu="ppc64le" wordsize="64" dll="$binaryFilename" target="lib/linux-ppc64le/lib$binaryFilename.so" />
<dllmap os="linux" cpu="riscv64" wordsize="64" dll="$binaryFilename" target="lib/linux-riscv64/lib$binaryFilename.so" />
<dllmap os="osx" cpu="x86-64" wordsize="64" dll="$binaryFilename" target="lib/osx-x64/lib$binaryFilename.dylib" />
<dllmap os="osx" cpu="armv8" wordsize="64" dll="$binaryFilename" target="lib/osx-arm64/lib$binaryFilename.dylib" />
</configuration>
Expand Down
43 changes: 38 additions & 5 deletions docker/linux
Original file line number Diff line number Diff line change
@@ -1,9 +1,42 @@
FROM kmturley/crossbuild
ARG ARCH='amd64'
ENV CROSS_TRIPLE=${ARCH}
RUN apt update && apt -y install pkg-config
FROM ubuntu:24.04
ARG ARCH=amd64
ARG IS_MUSL=false

# 1. Install common host utilities
RUN apt-get update && apt-get install -y \
build-essential cmake git pkg-config wget xz-utils

# 2. Setup GLIBC Cross-Compilers (if not musl)
RUN if [ "$IS_MUSL" = "false" ]; then \
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; \
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; \
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; \
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; \
else echo "CC=gcc\nCXX=g++" >> /env_vars; fi \
fi

# 3. Setup MUSL Cross-Compilers via Dyne.org mirror (if musl)
RUN if [ "$IS_MUSL" = "true" ]; then \
if [ "$ARCH" = "arm64" ]; then FILE_NAME="dyne-gcc-musl-arm_64.tar.xz" && BIN_PREFIX="aarch64-linux-musl"; \
elif [ "$ARCH" = "armhf" ]; then FILE_NAME="dyne-gcc-musl-arm_hf.tar.xz" && BIN_PREFIX="arm-linux-musleabihf"; \
elif [ "$ARCH" = "riscv64" ]; then FILE_NAME="dyne-gcc-musl-riscv_64.tar.xz" && BIN_PREFIX="riscv64-linux-musl"; \
else FILE_NAME="dyne-gcc-musl-x86_64.tar.xz" && BIN_PREFIX="x86_64-linux-musl"; fi && \
mkdir -p /opt/musl-cross && \
wget "https://files.dyne.org/musl/${FILE_NAME}" && \
tar -xJf ${FILE_NAME} -C /opt/musl-cross --strip-components=1 && \
rm ${FILE_NAME} && \
echo "CC=/opt/musl-cross/gcc-musl/bin/${BIN_PREFIX}-gcc" >> /env_vars && \
echo "CXX=/opt/musl-cross/gcc-musl/bin/${BIN_PREFIX}-g++" >> /env_vars && \
echo "AR=/opt/musl-cross/gcc-musl/bin/${BIN_PREFIX}-ar" >> /env_vars && \
echo "AS=/opt/musl-cross/gcc-musl/bin/${BIN_PREFIX}-as" >> /env_vars && \
echo "CFLAGS=-I/opt/musl-cross/gcc-musl/${BIN_PREFIX}/include" >> /env_vars && \
echo "CXXFLAGS=-I/opt/musl-cross/gcc-musl/${BIN_PREFIX}/include" >> /env_vars && \
echo "LDFLAGS=-L/opt/musl-cross/gcc-musl/${BIN_PREFIX}/lib" >> /env_vars && \
echo "PKG_CONFIG_PATH=/opt/musl-cross/gcc-musl/${BIN_PREFIX}/lib/pkgconfig" >> /env_vars; \
fi

WORKDIR /nativebinaries
COPY . /nativebinaries/

CMD ["/bin/bash", "-c", "./build.libgit2.sh"]
# Inject environmental paths dynamically to run the libgit2 build script natively
CMD ["/bin/bash", "-c", "export $(cat /env_vars | xargs) && ./build.libgit2.sh"]
8 changes: 0 additions & 8 deletions docker/musl

This file was deleted.

10 changes: 7 additions & 3 deletions dockerbuild.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,21 @@ elif [[ $RID =~ arm ]]; then
arch="armhf"
elif [[ $RID =~ ppc64le ]]; then
arch="powerpc64le"
elif [[ $RID =~ riscv64 ]]; then
arch="riscv64"
else
arch="amd64"
fi

if [[ $RID == linux-musl* ]]; then
dockerfile="docker/musl"
is_musl="true"
else
dockerfile="docker/linux"
is_musl="false"
fi

docker buildx build -t $RID -f $dockerfile --build-arg ARCH=$arch .
docker build -t $RID -f docker/linux \
--build-arg ARCH=$arch \
--build-arg IS_MUSL=$is_musl .

docker run -t -e RID=$RID --name=$RID $RID

Expand Down
1 change: 1 addition & 0 deletions nuget.package/libgit2/LibGit2Sharp.dll.config
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
<dllmap os="linux" cpu="arm" wordsize="32" dll="git2-3f4182d" target="lib/linux-arm/libgit2-3f4182d.so" />
<dllmap os="linux" cpu="armv8" wordsize="64" dll="git2-3f4182d" target="lib/linux-arm64/libgit2-3f4182d.so" />
<dllmap os="linux" cpu="ppc64le" wordsize="64" dll="git2-3f4182d" target="lib/linux-ppc64le/libgit2-3f4182d.so" />
<dllmap os="linux" cpu="riscv64" wordsize="64" dll="git2-3f4182d" target="lib/linux-riscv64/libgit2-3f4182d.so" />
<dllmap os="osx" cpu="x86-64" wordsize="64" dll="git2-3f4182d" target="lib/osx-x64/libgit2-3f4182d.dylib" />
<dllmap os="osx" cpu="armv8" wordsize="64" dll="git2-3f4182d" target="lib/osx-arm64/libgit2-3f4182d.dylib" />
</configuration>
Loading