mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-05 23:41:44 +00:00
5739a24808
Three related cleanups to how the bonsaiviewer-autodesk connector is built and shipped. build-bonsaiviewer-autodesk.yml no longer builds a bundle. Its four-runner matrix produced autodesk-<os>-<arch>.zip artifacts that nothing consumed — shipping happens in the platform pipelines, which each invoke packaging/build.py themselves. What is left is the crate's only lint and test coverage, so the workflow is renamed to match what it does and a header comment records where the shipped binary actually comes from. build_osx.yml now builds and bundles the connector, which it never did: macOS users have been getting a Bonsai Viewer with no Autodesk connector at all. ConnectorDiscovery resolves applicationDirPath()/connectors, which inside a bundle is Contents/MacOS, so that is where the folder lands. The tkinter probes in the Windows and Linux workflows are dropped. They guarded the old PyInstaller connector's Tk GUI (de7520418) and have been dead since the Rust rewrite (9d9f4054f); python3.11-tkinter goes with them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
128 lines
4.3 KiB
YAML
128 lines
4.3 KiB
YAML
name: Build IfcOpenShell Windows
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build_ifcopenshell:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- arch: x64
|
|
runs_on: windows-2022
|
|
deps_dir: _deps-vs2022-x64-installed
|
|
vcvars: '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"'
|
|
build_branch: windows-x64
|
|
zip_suffix: win64
|
|
|
|
- arch: ARM64
|
|
runs_on: windows-11-arm
|
|
deps_dir: _deps-vs2022-ARM64-installed
|
|
vcvars: '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsarm64.bat"'
|
|
build_branch: windows-arm64
|
|
zip_suffix: win-arm64
|
|
|
|
runs-on: ${{ matrix.runs_on }}
|
|
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v7
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Checkout Build Repository
|
|
uses: actions/checkout@v7
|
|
with:
|
|
repository: IfcOpenShell/build-outputs
|
|
path: ${{ matrix.deps_dir }}
|
|
ref: ${{ matrix.build_branch }}
|
|
lfs: true
|
|
token: ${{ secrets.BUILD_REPO_TOKEN }}
|
|
|
|
- name: Install Dependencies
|
|
run: |
|
|
choco install -y sed 7zip.install awscli
|
|
|
|
- name: Unpack Dependencies
|
|
run: |
|
|
cd ${{ matrix.deps_dir }}
|
|
Get-ChildItem -Path . -Filter 'cache-*.zip' | ForEach-Object {
|
|
Write-Host "Extracting $($_.Name)"
|
|
7z x -bso0 -bsp0 $_.FullName
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "Failed to extract $($_.Name) with 7z exit code $LASTEXITCODE."
|
|
}
|
|
}
|
|
|
|
- name: ccache
|
|
uses: hendrikmuhs/ccache-action@v1.2.23
|
|
with:
|
|
key: win-${{ matrix.arch }}
|
|
# Windows ccache needs ~1GB
|
|
# and with default 500MB some cache gets deleted, leading to misses.
|
|
max-size: 5000MB
|
|
|
|
- name: Set up Python for connector build
|
|
uses: actions/setup-python@v6
|
|
with:
|
|
python-version: '3.12'
|
|
|
|
# Build the Autodesk connector before the C++ build: build-all-win.py
|
|
# bundles it next to BonsaiViewer.exe while archiving the executables.
|
|
# bonsaiviewer-autodesk is a Rust connector; packaging/build.py runs
|
|
# `cargo build --release` and stages the binary + connector.json into
|
|
# dist/autodesk/.
|
|
- name: Build Autodesk connector
|
|
working-directory: src/bonsaiviewer-autodesk
|
|
run: python packaging/build.py
|
|
|
|
- name: Run Build Script And Pack .zip Archives
|
|
shell: cmd
|
|
env:
|
|
TARGET_ARCH: ${{ matrix.arch }} # lets the Python script know which arch to target (optional override)
|
|
run: |
|
|
call ${{ matrix.vcvars }}
|
|
cd win
|
|
python build-all-win.py
|
|
|
|
- name: Pack Dependencies
|
|
run: |
|
|
cd ${{ matrix.deps_dir }}
|
|
Get-ChildItem -Path . -Directory | ForEach-Object {
|
|
$cacheFile = "cache-$($_.Name).zip"
|
|
echo $cacheFile
|
|
if (!(Test-Path $cacheFile)) {
|
|
7z a $cacheFile $_.FullName
|
|
}
|
|
}
|
|
|
|
- name: Commit and Push Changes to Build Repository
|
|
run: |
|
|
cd ${{ matrix.deps_dir }}
|
|
git config user.name "IfcOpenBot"
|
|
git config user.email "ifcopenbot@ifcopenshell.org"
|
|
git checkout -B ${{ matrix.build_branch }}
|
|
git add *.zip
|
|
git commit -m "Update build artifacts [skip ci]" || echo "No changes to commit"
|
|
git push --set-upstream origin ${{ matrix.build_branch }} || echo "Push failed"
|
|
|
|
- name: Configure AWS Credentials
|
|
uses: aws-actions/configure-aws-credentials@v6
|
|
with:
|
|
aws-access-key-id: ${{ secrets.AWS_UPLOAD_ACCESS_KEY_ID }}
|
|
aws-secret-access-key: ${{ secrets.AWS_UPLOAD_SECRET_ACCESS_KEY }}
|
|
aws-region: us-east-1
|
|
|
|
- name: Upload .zip Archives to S3
|
|
env:
|
|
AWS_DEBUG: 1
|
|
AWS_RETRY_MODE: standard
|
|
AWS_MAX_ATTEMPTS: 3
|
|
run: |
|
|
dir "$env:USERPROFILE\output"
|
|
foreach ($zip in Get-ChildItem -Path "$env:USERPROFILE\output" -Filter *.zip) {
|
|
aws s3 cp "$($zip.FullName)" s3://ifcopenshell-builds/ --debug
|
|
Start-Sleep -Seconds 5
|
|
}
|