mirror of
https://github.com/open-simh/simh.git
synced 2026-01-25 19:57:36 +00:00
- Fix comma separator code segmentation fault: "ndigit - 3" can become a very large unsigned number for ndigit < 3. - dir_cmd: Allocate WildName from heap to reduce stack pressure. - Github CI/CD: Remnant symlink issue reappeared, afflicting the makefile-based build. For better or worse, the workaround is now dependent on specific Python versions that must be removed, unlinked and any remnant symlinks that HomeBrew decided it needed to install in /usr/local/bin. The Python upgrade is triggered by the sdl2_ttf package. According to the Github image maintainers, this is an old, known issue in macOS images that originates inside of Homebrew.
238 lines
8.9 KiB
YAML
238 lines
8.9 KiB
YAML
name: CMake build workflows
|
|
|
|
on:
|
|
workflow_call:
|
|
|
|
jobs:
|
|
cmake-unix:
|
|
name: Ubuntu
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-20.04, ubuntu-22.04]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- 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@v3
|
|
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
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [macos-12, macos-11]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
## 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 --lto --notest --cpack_suffix x86_64.${{matrix.os}}
|
|
- 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@v3
|
|
with:
|
|
name: simh-4.1.0-x86_64.${{matrix.os}}.zip
|
|
path: cmake/build-xcode/simh-4.1.0-x86_64.${{matrix.os}}.zip
|
|
- name: Upload DMG
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: simh-4.1.0-x86_64.${{matrix.os}}.dmg
|
|
path: cmake/build-xcode/simh-4.1.0-x86_64.${{matrix.os}}.dmg
|
|
|
|
|
|
## This looks like it's doing the right thing on the Github CI/CD pipeline because
|
|
## the output contains references to x86_64 and arm64 targets for Mac OS 12.
|
|
##
|
|
## However, need to figure out how to concurrently install BOTH arm64 and intel
|
|
## Homebrews AND how to tell SDL2 which set of header files it should use for
|
|
## platform-specific assembly (/usr/local vs. /opt/local.)
|
|
##
|
|
# cmake-macOS-universal:
|
|
# name: macOS universal
|
|
# runs-on: ${{ matrix.os }}
|
|
# strategy:
|
|
# matrix:
|
|
# os: [macos-12]
|
|
# steps:
|
|
# - uses: actions/checkout@v3
|
|
# - name: Install dependencies
|
|
# run: |
|
|
# sh -ex .travis/deps.sh osx
|
|
# - name: cmake-builder.sh
|
|
# run: |
|
|
# cmake/cmake-builder.sh --config Release --flavor xcode-universal --lto --notest
|
|
# - name: SIMH simulator suite test
|
|
# run: |
|
|
# cmake/cmake-builder.sh --config Release --flavor xcode-universal --testonly
|
|
|
|
|
|
cmake-vs2022xp:
|
|
name: VS 2022 XP-compatible LEGACY
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- 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@v3
|
|
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@v3
|
|
with:
|
|
name: simh-4.1.0-win32-vs2022xp.zip
|
|
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@v3
|
|
- 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@v3
|
|
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@v3
|
|
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@v3
|
|
with:
|
|
name: simh-4.1.0-win32-vs2022.msi
|
|
path: cmake/build-vs2022/simh-4.1.0-win32-native.msi
|