Skip to content

Commit c5086b8

Browse files
committed
ci: the build tool has no release for the other architecture, so reach it another way
Every job that asked for an Intel runner failed at the first step: the installer answers "Unsupported release target: macosx-x86_64", so the suite cannot be built there at all. That is a property of the tooling and not of this implementation, and a row that always fails says nothing about either. What can be done there is done instead. The `numbers' workflow reads that kernel's own table on both architectures and issues every call this implementation makes on both, and the conformance job now compiles every source for the other architecture with the system's own compiler. The three things that differ between the two --- the calling convention, the register the current context is reached through, and one field of a signal context --- are all in src/sys.h, and all three are compiled.
1 parent 47ce0c6 commit c5086b8

1 file changed

Lines changed: 23 additions & 4 deletions

File tree

.github/workflows/ci.yml

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,14 @@ jobs:
3535
fail-fast: false
3636
matrix:
3737
include:
38-
# arm64 and x86_64. The system-call numbers agree; the calling
39-
# convention, the register the current context is reached through and
40-
# one field of a signal context do not, so both are built.
38+
# arm64 only, and not because the other architecture is unsupported.
39+
# The build tool has no release for x86_64 on this system --- its
40+
# installer answers "Unsupported release target: macosx-x86_64" --- so
41+
# the suite cannot be built there at all. What can be done there is
42+
# done: the `numbers' workflow measures that kernel's own table on
43+
# both architectures, and the step below compiles every source for the
44+
# other one with the system's compiler.
4145
- { os: macos-14, toolchain: 'llvm@20.1.7' }
42-
- { os: macos-15-intel, toolchain: 'llvm@20.1.7' }
4346
steps:
4447
- uses: actions/checkout@v4
4548

@@ -88,6 +91,22 @@ jobs:
8891
run: |
8992
bash .spec/tools/run-conformance.sh openkal-macos . full
9093
94+
# The other architecture, as far as this system allows it to be reached.
95+
#
96+
# The system-call numbers agree between the two --- measured, in the
97+
# `numbers' workflow --- and three things do not: the calling convention,
98+
# the register the current context is reached through, and one field of a
99+
# signal context. All three are in src/sys.h and all three are compiled
100+
# here, with the system's own compiler rather than the build tool's,
101+
# because the build tool has no release for that architecture.
102+
- name: Every source compiles for the other architecture
103+
run: |
104+
for f in src/*.cpp; do
105+
clang++ -std=c++2b -c -o /dev/null --target=x86_64-apple-macos13 \
106+
-fno-exceptions -fno-rtti -DOKM_STANDALONE -I .spec/include "$f"
107+
done
108+
echo "every source compiles for x86_64"
109+
91110
- name: The exported surface is complete and contains nothing else
92111
run: |
93112
# Clause 9.3. The list and the checker come from the specification

0 commit comments

Comments
 (0)