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.
This commit is contained in:
B. Scott Michel 2024-03-30 18:49:36 -07:00 committed by Paul Koning
parent 8c1fb2ea3a
commit c77bb2ea71
2 changed files with 59 additions and 52 deletions

View file

@ -19,11 +19,16 @@ jobs:
makefile: makefile:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
#-
# The makefile builds DO NOT produce artifacts (*). Using the "-latest"
# runner images is sufficient.
#
# (*) "artefact" for the rest of the Anglosphere
#-
matrix: matrix:
## macos-10.15: Runner seems to be officially disabled, results in canceled os: [macos-latest, ubuntu-latest]
## builds. Leaving this "as-is".
##
os: [macos-12, ubuntu-20.04]
simulators: simulators:
# These are supposed to match ALL in makefile. # These are supposed to match ALL in makefile.
# Each job builds ~15 simulators. # Each job builds ~15 simulators.
@ -34,7 +39,7 @@ jobs:
- besm6 imlac tt2500 microvax3900 microvax1 rtvax1000 vaxstation3100m76 vaxstation4000m60 - besm6 imlac tt2500 microvax3900 microvax1 rtvax1000 vaxstation3100m76 vaxstation4000m60
- scelbi 3b2 i701 i704 i7010 i7070 i7080 i7090 sigma uc15 i650 sel32 intel-mds ibm1130 - scelbi 3b2 i701 i704 i7010 i7070 i7080 i7090 sigma uc15 i650 sel32 intel-mds ibm1130
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
## Workaround for remnant symlinks in /usr/local pointing back to ## Workaround for remnant symlinks in /usr/local pointing back to
## macOS frameworks. ## macOS frameworks.
## ##

View file

@ -8,10 +8,18 @@ jobs:
name: Ubuntu name: Ubuntu
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: 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: matrix:
os: [ubuntu-20.04, ubuntu-22.04] os: [ubuntu-20.04, ubuntu-22.04]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Install dependencies - name: Install dependencies
run: | run: |
sh -ex .travis/deps.sh linux sh -ex .travis/deps.sh linux
@ -32,20 +40,32 @@ jobs:
cd cmake/build-ninja cd cmake/build-ninja
cpack -G DEB -C Release cpack -G DEB -C Release
- name: Upload DEB - name: Upload DEB
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: simh-4.1.0-x86_64-${{matrix.os}}.deb name: simh-4.1.0-x86_64-${{matrix.os}}.deb
path: cmake/build-ninja/simh-4.1.0-x86_64-${{matrix.os}}.deb path: cmake/build-ninja/simh-4.1.0-x86_64-${{matrix.os}}.deb
cmake-macOS: cmake-macOS:
name: macOS name: macOS 12+
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: 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: matrix:
os: [macos-12, macos-11] os: [macos-12, macos-13, macos-14]
env:
CPACK_SUFFIX: ${{matrix.os != 'macos-14' && 'x86_64' || 'm1'}}.${{matrix.os}}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
## Workaround for remnant symlinks in /usr/local pointing back to ## Workaround for remnant symlinks in /usr/local pointing back to
## macOS frameworks. ## macOS frameworks.
## ##
@ -60,67 +80,49 @@ jobs:
for f in $(find /usr/local/bin -type l -print); do \ for f in $(find /usr/local/bin -type l -print); do \
(readlink $f | grep -q -s "/Library") && echo Removing "$f" && rm -f "$f"; \ (readlink $f | grep -q -s "/Library") && echo Removing "$f" && rm -f "$f"; \
done || exit 0 done || exit 0
- name: Install dependencies - name: Install dependencies
run: sh -ex .travis/deps.sh osx run: sh -ex .travis/deps.sh osx
- name: cmake-builder.sh - name: cmake-builder.sh
run: | run: |
cmake/cmake-builder.sh --config Release --flavor xcode --lto --notest --cpack_suffix x86_64.${{matrix.os}} cmake/cmake-builder.sh --config Release --flavor xcode --notest --cpack_suffix ${{env.CPACK_SUFFIX}}
- name: SIMH simulator suite test - name: SIMH simulator suite test
run: | run: |
cmake/cmake-builder.sh --config Release --flavor xcode --testonly cmake/cmake-builder.sh --config Release --flavor xcode --testonly
## Install isn't strictly necessary, but it's a good way to see what dependencies ## Install isn't strictly necessary, but it's a good way to see what dependencies
## (IMPORTED_RUNTIME_ARTIFACTS) get installed. ## (IMPORTED_RUNTIME_ARTIFACTS) get installed.
- name: Install - name: Install
run: | run: |
cmake/cmake-builder.sh --config Release --flavor xcode --installonly cmake/cmake-builder.sh --config Release --flavor xcode --installonly
- name: SIMH packaging - name: SIMH packaging
run: | run: |
cd cmake/build-xcode cd cmake/build-xcode
cpack -G "ZIP;TGZ" -C Release cpack -G "ZIP;TGZ" -C Release
cpack -G DragNDrop -C Release cpack -G DragNDrop -C Release
- name: Upload ZIP - name: Upload ZIP
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: simh-4.1.0-x86_64.${{matrix.os}}.zip name: simh-4.1.0-${{env.CPACK_SUFFIX}}.zip
path: cmake/build-xcode/simh-4.1.0-x86_64.${{matrix.os}}.zip path: cmake/build-xcode/simh-4.1.0-${{env.CPACK_SUFFIX}}.zip
- name: Upload DMG - name: Upload DMG
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: simh-4.1.0-x86_64.${{matrix.os}}.dmg name: simh-4.1.0-${{env.CPACK_SUFFIX}}.dmg
path: cmake/build-xcode/simh-4.1.0-x86_64.${{matrix.os}}.dmg path: cmake/build-xcode/simh-4.1.0-${{env.CPACK_SUFFIX}}.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: cmake-vs2022xp:
name: VS 2022 XP-compatible LEGACY name: VS 2022 XP-compatible LEGACY
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Install v141_xp (XP toolkit) and build SIMH - name: Install v141_xp (XP toolkit) and build SIMH
shell: pwsh shell: pwsh
run: | run: |
@ -174,21 +176,21 @@ jobs:
cd cmake\build-vs2022-xp cd cmake\build-vs2022-xp
cpack -G "ZIP;WIX" -C Release cpack -G "ZIP;WIX" -C Release
- name: Upload ZIP - name: Upload ZIP
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: simh-4.1.0-win32-vs2022xp.zip name: simh-4.1.0-win32-vs2022xp.zip
path: cmake/build-vs2022-xp/simh-4.1.0-win32-xp.zip path: cmake/build-vs2022-xp/simh-4.1.0-win32-xp.zip
- name: Upload MSI - name: Upload MSI
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: simh-4.1.0-win32-vs2022xp.zip name: simh-4.1.0-win32-vs2022xp.msi
path: cmake/build-vs2022-xp/simh-4.1.0-win32-xp.msi path: cmake/build-vs2022-xp/simh-4.1.0-win32-xp.msi
cmake-vs2022: cmake-vs2022:
name: VS 2022 Win10 native VCPKG name: VS 2022 Win10 native VCPKG
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: vs2022 build - name: vs2022 build
shell: pwsh shell: pwsh
run: | run: |
@ -221,17 +223,17 @@ jobs:
cd cmake\build-vs2022 cd cmake\build-vs2022
cpack -G "NSIS;WIX;ZIP" -C Release cpack -G "NSIS;WIX;ZIP" -C Release
- name: Upload ZIP - name: Upload ZIP
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: simh-4.1.0-win32-vs2022.zip name: simh-4.1.0-win32-vs2022.zip
path: cmake/build-vs2022/simh-4.1.0-win32-native.zip path: cmake/build-vs2022/simh-4.1.0-win32-native.zip
- name: Upload EXE installer - name: Upload EXE installer
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: simh-4.1.0-win32-vs2022.exe name: simh-4.1.0-win32-vs2022.exe
path: cmake/build-vs2022/simh-4.1.0-win32-native.exe path: cmake/build-vs2022/simh-4.1.0-win32-native.exe
- name: Upload MSI installer - name: Upload MSI installer
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: simh-4.1.0-win32-vs2022.msi name: simh-4.1.0-win32-vs2022.msi
path: cmake/build-vs2022/simh-4.1.0-win32-native.msi path: cmake/build-vs2022/simh-4.1.0-win32-native.msi