1
0
mirror of https://github.com/open-simh/simh.git synced 2026-02-03 15:23:28 +00:00
Files
open-simh.simh/.github/workflows/cmake-builds.yml
B. Scott Michel c77bb2ea71 Github CI/CD: checkout@v4, macos matrix updates
- Per Github messages, upgrade checkout@v3 to checkout@v4 due to an
  upgrade to Node.js.

- macos-11 is now a defunct image runner. Homebrew packages either have
  to compile from source or no longer install correctly.

- Update the macos compile matrix. Set CPACK_SUFFIX environment variable
  to indicate macOS hardware platform: macos-14 is M1, whereas macos-12
  and macos-13 are x86_64.

- Added notes with respect to the matrix.strategy runner images. The
  makefile builds use "-latest" because they don't produce artifacts,
  while (*) the CMake builds enumerate the images for which artifacts (+)
  are produced and the runner image's name is part of the artifact.

(*) "Whilst" for the rest of the Anglosphere.
(+) "Artefact" for the rest of the Anglosphere.
2024-05-21 15:59:01 -04:00

240 lines
8.7 KiB
YAML

name: CMake build workflows
on:
workflow_call:
jobs:
cmake-unix:
name: Ubuntu
runs-on: ${{ matrix.os }}
strategy:
#-
# The CMake builds produce artifacts (*) and the runner image's name is
# used in the artifact's name, simh-4.1.0-x86_64-ubuntu-20.04.deb.
# Consequently, each runner image is enumerated for each artifact (*)
# that the build produces.
#
# (*) "artefact" for the rest of the Anglosphere
#-
matrix:
os: [ubuntu-20.04, ubuntu-22.04]
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sh -ex .travis/deps.sh linux
sudo apt install -ym ninja-build
- name: cmake-builder.sh
run: |
cmake/cmake-builder.sh --config Release --flavor ninja --lto --notest --parallel --verbose --cpack_suffix x86_64-${{matrix.os}}
- name: SIMH simulator suite test
run: |
cmake/cmake-builder.sh --config Release --flavor ninja --testonly
## Install isn't strictly necessary, but it's a good way to see what dependencies
## (IMPORTED_RUNTIME_ARTIFACTS) get installed.
- name: Install
run: |
cmake/cmake-builder.sh --config Release --flavor ninja --installonly
- name: SIMH packaging
run: |
cd cmake/build-ninja
cpack -G DEB -C Release
- name: Upload DEB
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-x86_64-${{matrix.os}}.deb
path: cmake/build-ninja/simh-4.1.0-x86_64-${{matrix.os}}.deb
cmake-macOS:
name: macOS 12+
runs-on: ${{ matrix.os }}
strategy:
#-
# The CMake builds produce artifacts (*) and the runner image's name is
# used in the artifact's name, e.g., simh-4.1.0-m1.macos-14.dmg.
# Consequently, each runner image is enumerated for each artifact (*)
# that the build produces.
#
# (*) "artefact" for the rest of the Anglosphere -
matrix:
os: [macos-12, macos-13, macos-14]
env:
CPACK_SUFFIX: ${{matrix.os != 'macos-14' && 'x86_64' || 'm1'}}.${{matrix.os}}
steps:
- uses: actions/checkout@v4
## Workaround for remnant symlinks in /usr/local pointing back to
## macOS frameworks.
##
## Future: Will have to keep an eye on SDL_ttf's Python dependency
## so that the correct/appropriate Python version is removed.
- name: Remnant symlink cleanup
run: |
brew unlink python@3 || true
brew uninstall --ignore-dependencies python@3 || true
brew unlink python@3.12 || true
brew uninstall --ignore-dependencies python@3.12 || true
for f in $(find /usr/local/bin -type l -print); do \
(readlink $f | grep -q -s "/Library") && echo Removing "$f" && rm -f "$f"; \
done || exit 0
- name: Install dependencies
run: sh -ex .travis/deps.sh osx
- name: cmake-builder.sh
run: |
cmake/cmake-builder.sh --config Release --flavor xcode --notest --cpack_suffix ${{env.CPACK_SUFFIX}}
- name: SIMH simulator suite test
run: |
cmake/cmake-builder.sh --config Release --flavor xcode --testonly
## Install isn't strictly necessary, but it's a good way to see what dependencies
## (IMPORTED_RUNTIME_ARTIFACTS) get installed.
- name: Install
run: |
cmake/cmake-builder.sh --config Release --flavor xcode --installonly
- name: SIMH packaging
run: |
cd cmake/build-xcode
cpack -G "ZIP;TGZ" -C Release
cpack -G DragNDrop -C Release
- name: Upload ZIP
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-${{env.CPACK_SUFFIX}}.zip
path: cmake/build-xcode/simh-4.1.0-${{env.CPACK_SUFFIX}}.zip
- name: Upload DMG
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-${{env.CPACK_SUFFIX}}.dmg
path: cmake/build-xcode/simh-4.1.0-${{env.CPACK_SUFFIX}}.dmg
cmake-vs2022xp:
name: VS 2022 XP-compatible LEGACY
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Install v141_xp (XP toolkit) and build SIMH
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
$WarningPreference = "Continue"
$DebugPreference = "Continue"
# Fix PATH so that "C:\Strawberry" (Strawberry Perl) doesn't mess with the build
# CMake WILL find incompatible libraries within Strawberry.
$fixPATH = (${env:PATH}.Split(';') | `
Where-Object { $_ -notlike "*\Strawberry\*" -and $_ -notlike "*/Strawberry/*" }) -join ';'
$env:Path = $fixPATH
## Install the XP toolkit, aka v141_xp. This script is specific to the Github environment.
./cmake/github_v141_xp.ps1
#+
# The GH Windows runner image documentation says that the VSSetup module is installed, from
# whence Get-VSSetupInstance and Select-VSSetupInstance are imported. This step is pure
# paranoia, ensuring that we really, truly and honestly have WinXP support.
#-
Write-Debug "Get-VSSetupInstance/Select-VSSetupInstance"
$instances=$(Get-VSSetupInstance -All | Select-VSSetupInstance -Require 'Microsoft.VisualStudio.Component.WinXP' -Latest)
if ($null -eq $instances)
{
throw "v141_xp didn't install correctly or incomplete install."
}
else
{
$instances | Write-Output
}
## Don't use LTO for XP. XP compatibility comes from VS2017 -- MS is
## at VS2022. There are likely legacy bugs that have been fixed.
./cmake/cmake-builder.ps1 -flavor vs2022-xp -config Release -clean -verbose -notest -cpack_suffix win32-xp
- name: SIMH simulator suite test
shell: pwsh
run: |
./cmake/cmake-builder.ps1 -flavor vs2022-xp -config Release -testOnly
## Install isn't strictly necessary, but it's a good way to see what dependencies
## (IMPORTED_RUNTIME_ARTIFACTS) get installed.
- name: Install
shell: pwsh
run: |
cmake/cmake-builder.ps1 -config Release -flavor vs2022-xp -installOnly
- name: SIMH packaging
shell: pwsh
run: |
cd cmake\build-vs2022-xp
cpack -G "ZIP;WIX" -C Release
- name: Upload ZIP
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-win32-vs2022xp.zip
path: cmake/build-vs2022-xp/simh-4.1.0-win32-xp.zip
- name: Upload MSI
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-win32-vs2022xp.msi
path: cmake/build-vs2022-xp/simh-4.1.0-win32-xp.msi
cmake-vs2022:
name: VS 2022 Win10 native VCPKG
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: vs2022 build
shell: pwsh
run: |
$ErrorActionPreference="Stop"
$WarningPreference="Continue"
# Fix PATH so that "C:\Strawberry" (Strawberry Perl) doesn't mess with the build
# CMake WILL find incompatible libraries within Strawberry.
$fixPATH = (${env:PATH}.Split(';') | `
Where-Object { $_ -notlike "*\Strawberry\*" -and $_ -notlike "*/Strawberry/*" }) -join ';'
$env:PATH = $fixPATH
# Make this a vcpkg build:
$env:VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT
Push-Location $env:VCPKG_ROOT
git pull
Pop-Location
./cmake/cmake-builder.ps1 -flavor vs2022 -config Release -clean -lto -verbose -notest -cpack_suffix win32-native
- name: SIMH simulator suite test
shell: pwsh
run: |
./cmake/cmake-builder.ps1 -flavor vs2022 -config Release -testOnly
## Install isn't strictly necessary, but it's a good way to see what dependencies
## (IMPORTED_RUNTIME_ARTIFACTS) get installed.
- name: Install
shell: pwsh
run: |
cmake/cmake-builder.ps1 -config Release -flavor vs2022 -installOnly
- name: SIMH packaging
shell: pwsh
run: |
cd cmake\build-vs2022
cpack -G "NSIS;WIX;ZIP" -C Release
- name: Upload ZIP
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-win32-vs2022.zip
path: cmake/build-vs2022/simh-4.1.0-win32-native.zip
- name: Upload EXE installer
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-win32-vs2022.exe
path: cmake/build-vs2022/simh-4.1.0-win32-native.exe
- name: Upload MSI installer
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-win32-vs2022.msi
path: cmake/build-vs2022/simh-4.1.0-win32-native.msi