Skip to content

Commit c1b4b3e

Browse files
committed
curl's two cells have one cause, and it is not curl
Both targets fail because this graph supplies no TLS provider, and the member's own test refuses a curl without one — transfer.cpp:45 fails when CURL_VERSION_SSL is clear, on the stated reasoning that "a curl built with no SSL still links and still runs, it just silently cannot do https". Configuring the member without TLS would turn both cells green and measure a different library. On linux the provider is compat.openssl, which is built by an install() hook through OpenSSL's own Configure and is therefore a glibc artefact; it now declares `provides = ["platform-sdk"]` and fails this link at `setcontext` and `__isoc23_strtol`. On windows the provider is Schannel, selected together with the checked-in lib/config-win32.h by `_WIN32` — the macro a C library presenting POSIX on Windows does not define. With neither HAVE_CONFIG_H nor _WIN32 curl reads no configuration at all and stops at `curl_setup.h:591: "too small curl_off_t"`, which names a consequence 591 lines away from its cause. compat.openssl has no Windows build, so there is no second provider to fall back to. Declared rather than left unexplained, and the declaration is falsifiable: `compat.py check` fails if a declared cell builds, so an in-graph OpenSSL would force these lines to be removed rather than quietly keeping a stale excuse.
1 parent a11fd34 commit c1b4b3e

1 file changed

Lines changed: 8 additions & 0 deletions

File tree

‎tests/openkal/members.toml‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,14 @@ cmp-module = "coroutines, C++ modules"
5050
# `curl`'s `linux/tcp.h` is exactly that, `#define HAVE_LINUX_TCP_H 1` inside
5151
# `#if defined(__linux__)` in `pkgs/c/compat.curl.lua`. What qualifies is
5252
# upstream source that asks in the preprocessor where no key can answer.
53+
[not-portable.curl]
54+
# Both targets, one cause: this graph supplies no TLS provider, and the member's
55+
# own test refuses a curl without one -- transfer.cpp:45 fails when
56+
# CURL_VERSION_SSL is clear, because "a curl built with no SSL still links and
57+
# still runs, it just silently cannot do https".
58+
x86_64-linux-gnu = "curl's TLS backend here is compat.openssl, which builds through OpenSSL's own Configure from an install() hook and is therefore a glibc artefact: it declares provides = [\"platform-sdk\"] and fails this graph's link at setcontext and __isoc23_strtol, which musl does not have. Building OpenSSL inside the graph would change this cell."
59+
x86_64-windows-gnu = "curl's Windows configuration is Schannel plus the checked-in lib/config-win32.h, and both are selected by _WIN32, which a C library presenting POSIX on Windows does not define. With neither HAVE_CONFIG_H nor _WIN32, curl_setup.h reads no configuration at all and stops at curl_setup.h:591 'too small curl_off_t', which names a consequence and not the cause. compat.openssl has no Windows build, so there is no second TLS provider to fall back to."
60+
5361
[not-portable.cmp-module]
5462
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."
5563

0 commit comments

Comments
 (0)