mirror of
https://github.com/Z3Prover/z3
synced 2025-11-23 06:01:26 +00:00
Fix NuGet packaging and add GitHub Actions workflow
- Fixed critical bug in mk_nuget_task.py replace() function - Created comprehensive GitHub Actions workflow for building NuGet packages Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
This commit is contained in:
parent
9521872daf
commit
9419c9a897
2 changed files with 258 additions and 1 deletions
256
.github/workflows/nuget-build.yml
vendored
Normal file
256
.github/workflows/nuget-build.yml
vendored
Normal file
|
|
@ -0,0 +1,256 @@
|
|||
name: Build NuGet Package
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: 'Version number for the NuGet package (e.g., 4.15.5)'
|
||||
required: true
|
||||
default: '4.15.5'
|
||||
push:
|
||||
tags:
|
||||
- 'z3-*'
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
# Build Windows binaries
|
||||
build-windows-x64:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Build Windows x64
|
||||
shell: cmd
|
||||
run: |
|
||||
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
|
||||
python scripts\mk_win_dist.py --x64-only --dotnet-key=%GITHUB_WORKSPACE%\resources\z3.snk --assembly-version=${{ github.event.inputs.version || '4.15.5' }} --zip
|
||||
|
||||
- name: Upload Windows x64 artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: windows-x64
|
||||
path: dist/*.zip
|
||||
retention-days: 1
|
||||
|
||||
build-windows-x86:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Build Windows x86
|
||||
shell: cmd
|
||||
run: |
|
||||
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86
|
||||
python scripts\mk_win_dist.py --x86-only --dotnet-key=%GITHUB_WORKSPACE%\resources\z3.snk --assembly-version=${{ github.event.inputs.version || '4.15.5' }} --zip
|
||||
|
||||
- name: Upload Windows x86 artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: windows-x86
|
||||
path: dist/*.zip
|
||||
retention-days: 1
|
||||
|
||||
build-windows-arm64:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Build Windows ARM64
|
||||
shell: cmd
|
||||
run: |
|
||||
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm64
|
||||
python scripts\mk_win_dist_cmake.py --arm64-only --dotnet-key=%GITHUB_WORKSPACE%\resources\z3.snk --assembly-version=${{ github.event.inputs.version || '4.15.5' }} --zip
|
||||
|
||||
- name: Upload Windows ARM64 artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: windows-arm64
|
||||
path: build-dist\arm64\dist\*.zip
|
||||
retention-days: 1
|
||||
|
||||
build-ubuntu:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Build Ubuntu
|
||||
run: python scripts/mk_unix_dist.py --dotnet-key=$GITHUB_WORKSPACE/resources/z3.snk
|
||||
|
||||
- name: Upload Ubuntu artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ubuntu
|
||||
path: dist/*.zip
|
||||
retention-days: 1
|
||||
|
||||
build-macos-x64:
|
||||
runs-on: macos-13
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Build macOS x64
|
||||
run: python scripts/mk_unix_dist.py --dotnet-key=$GITHUB_WORKSPACE/resources/z3.snk
|
||||
|
||||
- name: Upload macOS x64 artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: macos-x64
|
||||
path: dist/*.zip
|
||||
retention-days: 1
|
||||
|
||||
build-macos-arm64:
|
||||
runs-on: macos-13
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Build macOS ARM64
|
||||
run: python scripts/mk_unix_dist.py --dotnet-key=$GITHUB_WORKSPACE/resources/z3.snk --arch=arm64
|
||||
|
||||
- name: Upload macOS ARM64 artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: macos-arm64
|
||||
path: dist/*.zip
|
||||
retention-days: 1
|
||||
|
||||
# Package NuGet x64 (includes all platforms except x86)
|
||||
package-nuget-x64:
|
||||
needs: [build-windows-x64, build-windows-arm64, build-ubuntu, build-macos-x64, build-macos-arm64]
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Download all artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: packages
|
||||
|
||||
- name: List downloaded artifacts
|
||||
shell: bash
|
||||
run: find packages -type f
|
||||
|
||||
- name: Move artifacts to flat directory
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p package-files
|
||||
find packages -name "*.zip" -exec cp {} package-files/ \;
|
||||
ls -la package-files/
|
||||
|
||||
- name: Setup NuGet
|
||||
uses: nuget/setup-nuget@v2
|
||||
with:
|
||||
nuget-version: 'latest'
|
||||
|
||||
- name: Assemble NuGet package
|
||||
shell: cmd
|
||||
run: |
|
||||
cd package-files
|
||||
python ..\scripts\mk_nuget_task.py . ${{ github.event.inputs.version || '4.15.5' }} https://github.com/Z3Prover/z3 ${{ github.ref_name }} ${{ github.sha }} ${{ github.workspace }} symbols
|
||||
|
||||
- name: Pack NuGet package
|
||||
shell: cmd
|
||||
run: |
|
||||
cd package-files
|
||||
nuget pack out\Microsoft.Z3.sym.nuspec -OutputDirectory . -Verbosity detailed -Symbols -SymbolPackageFormat snupkg -BasePath out
|
||||
|
||||
- name: Upload NuGet package
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: nuget-x64
|
||||
path: |
|
||||
package-files/*.nupkg
|
||||
package-files/*.snupkg
|
||||
retention-days: 30
|
||||
|
||||
# Package NuGet x86
|
||||
package-nuget-x86:
|
||||
needs: [build-windows-x86]
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Download x86 artifact
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: windows-x86
|
||||
path: packages
|
||||
|
||||
- name: List downloaded artifacts
|
||||
shell: bash
|
||||
run: find packages -type f
|
||||
|
||||
- name: Setup NuGet
|
||||
uses: nuget/setup-nuget@v2
|
||||
with:
|
||||
nuget-version: 'latest'
|
||||
|
||||
- name: Assemble NuGet package
|
||||
shell: cmd
|
||||
run: |
|
||||
cd packages
|
||||
python ..\scripts\mk_nuget_task.py . ${{ github.event.inputs.version || '4.15.5' }} https://github.com/Z3Prover/z3 ${{ github.ref_name }} ${{ github.sha }} ${{ github.workspace }} symbols x86
|
||||
|
||||
- name: Pack NuGet package
|
||||
shell: cmd
|
||||
run: |
|
||||
cd packages
|
||||
nuget pack out\Microsoft.Z3.x86.sym.nuspec -OutputDirectory . -Verbosity detailed -Symbols -SymbolPackageFormat snupkg -BasePath out
|
||||
|
||||
- name: Upload NuGet package
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: nuget-x86
|
||||
path: |
|
||||
packages/*.nupkg
|
||||
packages/*.snupkg
|
||||
retention-days: 30
|
||||
|
|
@ -47,7 +47,8 @@ def replace(src, dst):
|
|||
try:
|
||||
os.remove(dst)
|
||||
except:
|
||||
shutil.move(src, dst)
|
||||
pass
|
||||
shutil.move(src, dst)
|
||||
|
||||
def unpack(packages, symbols, arch):
|
||||
# unzip files in packages
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue