From 03c4d8e2ebc376484a730b7c1d3c44551d33c57f Mon Sep 17 00:00:00 2001 From: speak-agent <248744407+speak-agent@users.noreply.github.com> Date: Fri, 4 Sep 2026 16:40:26 +0800 Subject: [PATCH] =?UTF-8?q?picolibc=201.8.12.3=20=E2=80=94=20the=20depende?= =?UTF-8?q?ncy=20pinned=20a=20version=20that=20does=20not=20exist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A BARE REQUIREMENT IN mcpp IS AN EXACT PIN, NOT A CARET. `1.8.12.2` depended on `llvm.compiler-rt-builtins = "22.1.8"`, written on the belief that a bare requirement is a caret and would match the published `22.1.8.2`. That is true of the matching grammar in `mcpp.version_req` and false of the resolution path: `mcpp::pm::is_version_constraint` returns false for a bare number, so no resolution runs and the literal becomes the wire address. Measured: `Downloading v22.1.8`, then `install path missing after fetch` — xlings resolved and installed the real version while mcpp looked for a directory named after the requirement. Both entries' notes carried the same wrong claim and are corrected. VERIFIED AGAINST THE PUBLISHED INDEX BEFORE TAGGING, which is the step whose absence produced two broken releases today: a consumer built with the new manifest as a path dependency, so that its own edge resolved from the index and nothing else did, reported `compiler-rt-builtins@22.1.8.2, graph` and produced an image that printed through `printf` and exited 0. --- pkgs/l/llvm.compiler-rt-builtins.lua | 4 ++-- pkgs/p/picolibc.picolibc.lua | 28 ++++++++++++++-------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/pkgs/l/llvm.compiler-rt-builtins.lua b/pkgs/l/llvm.compiler-rt-builtins.lua index 8a918c1..b340f78 100644 --- a/pkgs/l/llvm.compiler-rt-builtins.lua +++ b/pkgs/l/llvm.compiler-rt-builtins.lua @@ -26,8 +26,8 @@ -- information no independent one could: these routines are an ABI contract with -- a COMPILER, and "the builtins that ship with the clang in this toolchain" is -- the question a consumer is asking. A change to the PACKAGING moves the fourth --- segment, which orders above the bare number and satisfies the same --- requirements. +-- segment, which must be written out in full: a bare requirement in mcpp is an +-- EXACT PIN, not a caret. -- package = { spec = "1", diff --git a/pkgs/p/picolibc.picolibc.lua b/pkgs/p/picolibc.picolibc.lua index 821e2eb..b82e48f 100644 --- a/pkgs/p/picolibc.picolibc.lua +++ b/pkgs/p/picolibc.picolibc.lua @@ -38,8 +38,8 @@ -- files was compared against, byte for byte. A change to the PACKAGING moves -- the fourth segment: `1.8.12.1` orders strictly above `1.8.12`, because mcpp -- compares an arbitrary-length dot list with absent segments as zero, and --- satisfies every requirement `1.8.12` satisfies, because a bare requirement is --- a caret. A consumer therefore writes the number upstream released. +-- must be written out in full: a bare requirement in mcpp is an EXACT PIN, not a +-- caret, so `"1.8.12"` names a version that does not exist and fails at fetch. -- package = { spec = "1", @@ -57,30 +57,30 @@ package = { xpm = { linux = { - ["1.8.12.2"] = { + ["1.8.12.3"] = { url = { - GLOBAL = "https://github.com/mcpplibs/picolibc/archive/refs/tags/1.8.12.2.tar.gz", - CN = "https://gitcode.com/mcpp-res/picolibc/releases/download/1.8.12.2/picolibc-1.8.12.2.tar.gz", + GLOBAL = "https://github.com/mcpplibs/picolibc/archive/refs/tags/1.8.12.3.tar.gz", + CN = "https://gitcode.com/mcpp-res/picolibc/releases/download/1.8.12.3/picolibc-1.8.12.3.tar.gz", }, - sha256 = "29045a2eed39a421353dec6f7763f3d78eda88d0957f9eec6833143d92b2e2fd", + sha256 = "b0c772f8e4ab76728960f60df993b843e3f697ae8ba96554cf0948dd2e567f22", }, }, macosx = { - ["1.8.12.2"] = { + ["1.8.12.3"] = { url = { - GLOBAL = "https://github.com/mcpplibs/picolibc/archive/refs/tags/1.8.12.2.tar.gz", - CN = "https://gitcode.com/mcpp-res/picolibc/releases/download/1.8.12.2/picolibc-1.8.12.2.tar.gz", + GLOBAL = "https://github.com/mcpplibs/picolibc/archive/refs/tags/1.8.12.3.tar.gz", + CN = "https://gitcode.com/mcpp-res/picolibc/releases/download/1.8.12.3/picolibc-1.8.12.3.tar.gz", }, - sha256 = "29045a2eed39a421353dec6f7763f3d78eda88d0957f9eec6833143d92b2e2fd", + sha256 = "b0c772f8e4ab76728960f60df993b843e3f697ae8ba96554cf0948dd2e567f22", }, }, windows = { - ["1.8.12.2"] = { + ["1.8.12.3"] = { url = { - GLOBAL = "https://github.com/mcpplibs/picolibc/archive/refs/tags/1.8.12.2.tar.gz", - CN = "https://gitcode.com/mcpp-res/picolibc/releases/download/1.8.12.2/picolibc-1.8.12.2.tar.gz", + GLOBAL = "https://github.com/mcpplibs/picolibc/archive/refs/tags/1.8.12.3.tar.gz", + CN = "https://gitcode.com/mcpp-res/picolibc/releases/download/1.8.12.3/picolibc-1.8.12.3.tar.gz", }, - sha256 = "29045a2eed39a421353dec6f7763f3d78eda88d0957f9eec6833143d92b2e2fd", + sha256 = "b0c772f8e4ab76728960f60df993b843e3f697ae8ba96554cf0948dd2e567f22", }, }, },