mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-13 02:47:48 +00:00
45e9f763c8
Bundles four portability fixes uncovered by manually firing the platform workflows against this branch: - WgpuOverlayRenderer.cpp: GCC 11 (Rocky manylinux runner) does not parse a multi-line raw string inside `#define`. Converted THICK_LINE_HELPERS_WGSL from a `#define` to a `static const char*` and switched AXIS_WGSL / SECTION_WGSL / MARQUEE_WGSL to `std::string` so they can concatenate at static-init time. Three call sites now pass `.c_str()` to svFromCStr. - bonsaiviewer/CMakeLists.txt: added BUNDLE DESTINATION to the install rule (same fix already applied to IfcViewerWgpuMinimal). MACOSX_BUNDLE targets fail at configure on macOS without it even when nobody runs `make install`. - build_osx.yml: dropped the x64 (Intel cross-compile) matrix row. The runner is arm64 so `brew --prefix qt` returns the arm64 prefix; we'd need a separate x86_64 Qt install under /usr/local to cross-build BonsaiViewer. Revisit if Intel-Mac demand resurfaces. - build_win.yml: dropped the ARM64 matrix row. wgpu-native does not ship a Windows-ARM64 binary, so IfcViewerWgpu's link step fails with ~60 unresolved wgpu* externs. Re-enable when upstream publishes that target. Cherry-pick this commit to v0.8.0 so the workflow_dispatch buttons see the dropped rows. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
131 lines
4.4 KiB
YAML
131 lines
4.4 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
|
|
|
|
# ARM64 dropped while BonsaiViewer is on: wgpu-native does not
|
|
# ship a Windows-ARM64 binary, so IfcViewerWgpu's link step fails
|
|
# with ~60 unresolved wgpu* externs. Re-enable when upstream
|
|
# publishes that target (or when we add ARM64 to the wgpu-native
|
|
# FetchContent URL allowlist).
|
|
|
|
runs-on: ${{ matrix.runs_on }}
|
|
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Checkout Build Repository
|
|
uses: actions/checkout@v6
|
|
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.22
|
|
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'
|
|
|
|
# The connector's PyInstaller bundle embeds a tkinter GUI; verify Tk is
|
|
# present so a missing-tk regression fails here, not inside the build.
|
|
- name: Verify tkinter is available
|
|
run: python -c "import tkinter; print('Tk', tkinter.TkVersion)"
|
|
|
|
# Build the Autodesk connector before the C++ build: build-all-win.py
|
|
# bundles it next to BonsaiViewer.exe while archiving the executables.
|
|
- name: Build Autodesk connector
|
|
working-directory: src/bonsaiviewer-autodesk
|
|
run: |
|
|
python -m pip install ".[build]"
|
|
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
|
|
}
|