You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
openkal measurement selects by change and names the Windows target x86_64-windows-musl; a CN mirror may be the maintainer's own
compat.py select: a change measured every member whenever anything under
tests/openkal/ moved, so adding one member cost the whole list. It now
measures every member only when the graph or the harness changes (an openkal
family descriptor, pins.toml, compat.py); a members.toml edit measures the
entries added or changed against the merge base (--base), a member's own
test project measures that member, and a descriptor measures the members
that depend on it, as before. The workflow passes the merge base and now
also triggers on tests/examples/**. selftest pins each rule.
The Windows target is x86_64-windows-musl. The graph presents musl's C
environment there, and x86_64-windows-gnu read as a mingw-w64 build, which
it never was. Measured locally with the pins (mcpp 2026.9.21.3, runtime
0.15.1): cli11, zlib and cmp-module run; curl stops at the same
curl_setup.h:591; yaml-cpp and yaml-cpp-v080 run. Renaming the target moves
the harness, so this pull request measures every member once, and that
measurement becomes the published baseline.
check_mirror_urls.lua required every CN url to live under gitcode
mcpp-res. A library's maintainer may host the mirror instead; the rule is
now a gitcode release asset under any owner. ZheFeng7110.boost's mirror
(#463), which has kept lint red on main since, passes unchanged.
Copy file name to clipboardExpand all lines: docs/openkal-compat.md
+19-6Lines changed: 19 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -122,7 +122,7 @@ fails is measured and published, not excluded.
122
122
123
123
`[not-portable.<member>]` declares one TARGET of one member unbuildable by
124
124
construction, with the reason. It exists because `[excluded]` is whole-member
125
-
and some members are neither: `cmp-module` runs on `x86_64-windows-gnu` and
125
+
and some members are neither: `cmp-module` runs on `x86_64-windows-musl` and
126
126
cannot build on `x86_64-linux-gnu`, because asio's `detail/config.hpp`
127
127
includes `<linux/version.h>` whenever `__linux__` is defined, outside every
128
128
`ASIO_DISABLE_*` guard. Excluding the member outright would discard a result
@@ -148,7 +148,7 @@ Both are recipe defects, and neither is the same defect:
148
148
| target | first diagnostic | cause |
149
149
| --- | --- | --- |
150
150
|`x86_64-linux-gnu`|`lib/setopt.c:31: 'linux/tcp.h' file not found`|`#define HAVE_LINUX_TCP_H 1` inside `#if defined(__linux__)`. The kernel IS Linux, so the predicate is right; what is wrong is reading it as "glibc's userspace headers are installed". The honest test is `__has_include(<linux/tcp.h>)`. The same block also asserts `HAVE_GLIBC_STRERROR_R`, which is false over musl. |
151
-
|`x86_64-windows-gnu`|`curl_setup.h:591: "too small curl_off_t"`| The recipe's `windows` branch omits `HAVE_CONFIG_H` so that `curl_setup.h` reaches the checked-in `lib/config-win32.h`, and links `-lws2_32` with Schannel. Over openkal that target presents POSIX and is **LP64**, while `config-win32.h` is written for LLP64 and the Win32 API. |
151
+
|`x86_64-windows-musl`|`curl_setup.h:591: "too small curl_off_t"`| The recipe's `windows` branch omits `HAVE_CONFIG_H` so that `curl_setup.h` reaches the checked-in `lib/config-win32.h`, and links `-lws2_32` with Schannel. Over openkal that target presents POSIX and is **LP64**, while `config-win32.h` is written for LLP64 and the Win32 API. |
152
152
153
153
**The second is the interesting one: the recipe branches on the PLATFORM where
154
154
the question is about the C ENVIRONMENT.** Those two agreed on every target
@@ -162,10 +162,23 @@ it is a larger change than the first and is not folded into it.
162
162
## 3. When it runs
163
163
164
164
`.github/workflows/openkal-compat.yml` runs weekly and on demand, measuring every
165
-
listed member. For a pull request it measures every member when the openkal
166
-
family or `tests/openkal` changes, and otherwise the members whose test projects
167
-
depend on a changed descriptor. It does not block a merge unless the comparison
168
-
below is enabled.
165
+
listed member. For a pull request, `compat.py select` measures only what the
166
+
change can affect:
167
+
168
+
| The pull request changes | Members measured |
169
+
| --- | --- |
170
+
| an openkal family descriptor, `pins.toml`, `compat.py`, or anything else under `tests/openkal/` except `members.toml`| every listed member: the graph or the harness changed |
171
+
|`members.toml`| the members whose entry was added or changed, compared with the base branch; a `[not-portable]` declaration counts for the member it names, and `[excluded]` selects nothing |
172
+
|`tests/examples/<member>/`| that member, if it is listed |
173
+
| a descriptor under `pkgs/`| the listed members whose test projects depend on it |
174
+
175
+
Adding a member therefore measures that member, not the whole list. The
176
+
workflow does not block a merge unless the comparison below is enabled.
177
+
178
+
The targets are `x86_64-linux-gnu` and `x86_64-windows-musl`. The Windows
179
+
target is named for the C environment the graph presents there, which is
180
+
musl's, not MinGW's. Results measured before 2026-09-23 are recorded as
181
+
`x86_64-windows-gnu`, the name that target had then.
169
182
170
183
It installs the Windows cross toolchain's host headers on purpose. A build that
171
184
reached the host's headers would change its result when they are present, so a
0 commit comments