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