diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 5482c7d4..ef4ad8e9 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -13,16 +13,17 @@ jobs:
runs-on: ${{ matrix.os }}
env:
RID: ${{ matrix.name }}
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
strategy:
matrix:
include:
- - os: windows-2019
+ - os: windows-2022
name: win-x86
param: -x86
- - os: windows-2019
+ - os: windows-2022
name: win-x64
param: -x64
- - os: windows-2019
+ - os: windows-2022
name: win-arm64
param: -arm64
- os: ubuntu-24.04
@@ -39,14 +40,14 @@ jobs:
name: linux-musl-arm
- os: ubuntu-24.04
name: linux-musl-arm64
- - os: macos-13
+ - os: macos-26-intel
name: osx-x64
- - os: macos-13
+ - os: macos-26
name: osx-arm64
fail-fast: false
steps:
- name: Checkout
- uses: actions/checkout@v4.2.2
+ uses: actions/checkout@v6.0.2
with:
submodules: true
- name: Build Windows
@@ -56,13 +57,16 @@ jobs:
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
+ if: runner.os == 'Linux' && (matrix.name == 'linux-arm' || matrix.name == 'linux-arm64' || matrix.name == 'linux-ppc64le' || matrix.name == 'linux-musl-arm' || matrix.name == 'linux-musl-arm64')
+ uses: docker/setup-qemu-action@v4
+ - name: Set up Docker Buildx
+ if: runner.os == 'Linux'
+ uses: docker/setup-buildx-action@v4
- name: Build Linux
if: runner.os == 'Linux'
run: ./dockerbuild.sh
- name: Upload artifacts
- uses: actions/upload-artifact@v4.4.3
+ uses: actions/upload-artifact@v7.0.0
with:
name: ${{ matrix.name }}
path: nuget.package/runtimes/${{ matrix.name }}
@@ -72,23 +76,24 @@ jobs:
runs-on: ubuntu-24.04
env:
DOTNET_NOLOGO: true
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
steps:
- name: Checkout
- uses: actions/checkout@v4.2.2
+ uses: actions/checkout@v6.0.2
with:
fetch-depth: 0
- name: Setup .NET SDK
- uses: actions/setup-dotnet@v4.1.0
+ uses: actions/setup-dotnet@v5.2.0
with:
dotnet-version: 9.0.x
- name: Download artifacts
- uses: actions/download-artifact@v4.1.8
+ uses: actions/download-artifact@v8.0.1
with:
path: nuget.package/runtimes/
- name: Create package
run: dotnet pack nuget.package
- name: Upload NuGet package
- uses: actions/upload-artifact@v4.4.3
+ uses: actions/upload-artifact@v7.0.0
with:
name: NuGet package
path: ./nuget.package/*.nupkg
diff --git a/Dockerfile.linux b/Dockerfile.linux
index 4421da3d..1f0feec4 100644
--- a/Dockerfile.linux
+++ b/Dockerfile.linux
@@ -1,9 +1,14 @@
-FROM bording/crossbuild
-ARG ARCH='amd64'
-ENV CROSS_TRIPLE=${ARCH}
-RUN apt update && apt -y install pkg-config
+FROM debian:bookworm-slim
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+ build-essential \
+ cmake \
+ pkg-config \
+ ca-certificates \
+ git \
+ && rm -rf /var/lib/apt/lists/*
WORKDIR /nativebinaries
COPY . /nativebinaries/
-CMD ["/bin/bash", "-c", "./build.libgit2.sh"]
\ No newline at end of file
+CMD ["/bin/bash", "-c", "./build.libgit2.sh"]
diff --git a/Dockerfile.linux-musl b/Dockerfile.linux-musl
index 1cfa1e4e..95876143 100644
--- a/Dockerfile.linux-musl
+++ b/Dockerfile.linux-musl
@@ -1,8 +1,8 @@
-ARG ARCH='amd64'
-FROM multiarch/alpine:${ARCH}-v3.13
+FROM alpine:3.19
+
RUN apk add --no-cache bash build-base cmake
WORKDIR /nativebinaries
COPY . /nativebinaries/
-CMD ["/bin/bash", "-c", "./build.libgit2.sh"]
\ No newline at end of file
+CMD ["/bin/bash", "-c", "./build.libgit2.sh"]
diff --git a/dockerbuild.sh b/dockerbuild.sh
index 4ee5a0a2..9240aef9 100755
--- a/dockerbuild.sh
+++ b/dockerbuild.sh
@@ -3,14 +3,15 @@
set -e
echo "building for $RID"
+# Map RID to Docker platform for native builds (no cross-compilation).
if [[ $RID =~ arm64 ]]; then
- arch="arm64"
+ platform="linux/arm64"
elif [[ $RID =~ arm ]]; then
- arch="armhf"
+ platform="linux/arm/v7"
elif [[ $RID =~ ppc64le ]]; then
- arch="powerpc64le"
+ platform="linux/ppc64le"
else
- arch="amd64"
+ platform="linux/amd64"
fi
if [[ $RID == linux-musl* ]]; then
@@ -19,9 +20,9 @@ else
dockerfile="Dockerfile.linux"
fi
-docker buildx build -t $RID -f $dockerfile --build-arg ARCH=$arch .
+docker buildx build --platform "$platform" --load -t $RID -f $dockerfile .
-docker run -t -e RID=$RID --name=$RID $RID
+docker run --platform "$platform" -t -e RID=$RID --name=$RID $RID
docker cp $RID:/nativebinaries/nuget.package/runtimes nuget.package
diff --git a/libgit2 b/libgit2
index 3f4182d1..ca225744 160000
--- a/libgit2
+++ b/libgit2
@@ -1 +1 @@
-Subproject commit 3f4182d15eab74a302718f2de454ffadb1995626
+Subproject commit ca225744b992bf2bf24e9a2eb357ddef78179667
diff --git a/nuget.package/build/LibGit2Sharp.NativeBinaries.props b/nuget.package/build/LibGit2Sharp.NativeBinaries.props
index 65110797..0dd5096b 100644
--- a/nuget.package/build/LibGit2Sharp.NativeBinaries.props
+++ b/nuget.package/build/LibGit2Sharp.NativeBinaries.props
@@ -1,7 +1,7 @@
$(MSBuildThisFileFullPath)
- 3f4182d15eab74a302718f2de454ffadb1995626
- git2-3f4182d
+ ca225744b992bf2bf24e9a2eb357ddef78179667
+ git2-ca22574
diff --git a/nuget.package/build/net46/LibGit2Sharp.NativeBinaries.props b/nuget.package/build/net46/LibGit2Sharp.NativeBinaries.props
index 46d2d754..0691ec98 100644
--- a/nuget.package/build/net46/LibGit2Sharp.NativeBinaries.props
+++ b/nuget.package/build/net46/LibGit2Sharp.NativeBinaries.props
@@ -1,8 +1,8 @@
$(MSBuildThisFileFullPath)
- 3f4182d15eab74a302718f2de454ffadb1995626
- git2-3f4182d
+ ca225744b992bf2bf24e9a2eb357ddef78179667
+ git2-ca22574
diff --git a/nuget.package/libgit2/LibGit2Sharp.dll.config b/nuget.package/libgit2/LibGit2Sharp.dll.config
index 95f4b0bc..6ba12666 100644
--- a/nuget.package/libgit2/LibGit2Sharp.dll.config
+++ b/nuget.package/libgit2/LibGit2Sharp.dll.config
@@ -1,8 +1,8 @@
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/nuget.package/libgit2/libgit2_hash.txt b/nuget.package/libgit2/libgit2_hash.txt
index e2370b1a..8eedcbb9 100644
--- a/nuget.package/libgit2/libgit2_hash.txt
+++ b/nuget.package/libgit2/libgit2_hash.txt
@@ -1 +1 @@
-3f4182d15eab74a302718f2de454ffadb1995626
+ca225744b992bf2bf24e9a2eb357ddef78179667