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:
|
try:
|
||||||
os.remove(dst)
|
os.remove(dst)
|
||||||
except:
|
except:
|
||||||
shutil.move(src, dst)
|
pass
|
||||||
|
shutil.move(src, dst)
|
||||||
|
|
||||||
def unpack(packages, symbols, arch):
|
def unpack(packages, symbols, arch):
|
||||||
# unzip files in packages
|
# unzip files in packages
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue