Commit 15da11a
authored
a per-target declaration that stays falsifiable (#454)
* a per-target declaration that stays falsifiable
`[excluded]` is whole-member, and some members are neither measured-and-broken
nor excludable. `cmp-module` RUNS on `x86_64-windows-gnu` and cannot build on
`x86_64-linux-gnu`: asio's `detail/config.hpp:899` includes
`<linux/version.h>` whenever `__linux__` is defined, OUTSIDE every
`ASIO_DISABLE_*` guard, so no configuration macro prevents it. openkal runs on
the Linux kernel, so `__linux__` is correct; the uapi headers glibc's
userspace installs beside it are not part of what openkal presents. Excluding
the member outright would discard a result that is true in order to hide one
that is also true.
`[not-portable.<member>]` declares one target of one member, with the reason
and the evidence.
THE BAR IS THAT NO MANIFEST KEY REACHES IT. Upstream source asking in the
preprocessor qualifies. A generated configuration header this index writes
does not: `curl`'s `linux/tcp.h` is `#define HAVE_LINUX_TCP_H 1` inside
`#if defined(__linux__)` in `pkgs/c/compat.curl.lua`, which reads a correct
fact about the kernel as a claim about which userspace headers are installed.
That is a recipe defect, the same shape as expat's `arc4random_buf`, and it
belongs in the recipe. The two were one item in the plan; they are not one
thing.
THE DECLARATION STAYS FALSIFIABLE. The cell is measured anyway and
`compat.py check` FAILS when a declared cell builds:
contradicted declaration: cmp-module on x86_64-linux-gnu:
declared not-portable and recorded runs -- remove the declaration
Measured both ways before it was committed: red on a synthetic result
recording `runs`, green on one recording `fails`. A declaration that removes a
cell from the figure on the strength of a sentence, and that nothing can
contradict, is a permanent excuse; the cost of keeping it honest is a build
that was already being paid for.
`selftest` gains three legs pinning that the table is read per (member,
target) and not per member --- reading it per member is exactly the mistake
that would take `cmp-module`'s working Windows cell out of the figure.
* curl's two failures have two different causes, and neither is unportability
Both are recipe defects.
linux `#define HAVE_LINUX_TCP_H 1` inside `#if defined(__linux__)`.
The kernel IS Linux, so the predicate is right; reading it as
"glibc's userspace headers are installed" is not. The honest test
is `__has_include(<linux/tcp.h>)`. The same block also asserts
`HAVE_GLIBC_STRERROR_R`, false over musl.
windows the recipe's `windows` branch omits HAVE_CONFIG_H so 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; config-win32.h is written for LLP64 and the Win32 API.
THE SECOND IS THE INTERESTING ONE: the recipe branches on the PLATFORM where
the question is about the C ENVIRONMENT. Those two agreed on every target this
index had until openkal presented POSIX on Windows, and mcpp has the predicate
for the question actually being asked --- `cfg(c-abi = "musl")`. Recorded
rather than fixed here: it also needs this index's OpenSSL over the same
environment, so it is a larger change than the first.1 parent 5198b69 commit 15da11a
4 files changed
Lines changed: 130 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
101 | 101 | | |
102 | 102 | | |
103 | 103 | | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
104 | 143 | | |
105 | 144 | | |
106 | 145 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
38 | 55 | | |
39 | 56 | | |
40 | 57 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
48 | | - | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
49 | 52 | | |
50 | 53 | | |
51 | 54 | | |
| |||
126 | 129 | | |
127 | 130 | | |
128 | 131 | | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
129 | 143 | | |
130 | 144 | | |
131 | 145 | | |
| |||
269 | 283 | | |
270 | 284 | | |
271 | 285 | | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
272 | 290 | | |
| 291 | + | |
273 | 292 | | |
274 | 293 | | |
275 | 294 | | |
| |||
284 | 303 | | |
285 | 304 | | |
286 | 305 | | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
287 | 313 | | |
288 | 314 | | |
289 | 315 | | |
| |||
312 | 338 | | |
313 | 339 | | |
314 | 340 | | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
315 | 357 | | |
316 | 358 | | |
317 | | - | |
318 | | - | |
319 | | - | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
320 | 364 | | |
321 | 365 | | |
322 | 366 | | |
| |||
381 | 425 | | |
382 | 426 | | |
383 | 427 | | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
384 | 437 | | |
385 | 438 | | |
386 | 439 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
39 | 56 | | |
40 | 57 | | |
41 | 58 | | |
| |||
0 commit comments