mirror of
https://github.com/Z3Prover/z3
synced 2025-11-24 22:51:28 +00:00
* Initial plan * 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> * Add documentation and improve code comments - Added comprehensive README for NuGet build workflow - Added detailed comments explaining the replace() function fix - Verified all Python syntax is correct Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
256 lines
7.4 KiB
YAML
256 lines
7.4 KiB
YAML
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
|