Commit69a3730aRecorded30 Jul 2026Repositorycore-channel
Port hello to src/ so the documented onboarding path can resolve
Message
demo/env.sgl, the README's first-run instructions and scripts/gate-crosscheckout.sh all build core/hello, but no such catalogue binding existed: production-resolve only resolves names the signed catalogue carries, and the legacy recipes/hello.sgl is invisible to it. The documented command failed with "catalogue has no binding core/hello".
No dependencies, so this is a straight translation and carries none of the store-local (core outputs) baggage that a dependency-bearing package would.
recipes/hello.sgl stays where it is. It is not redundant: external-resolve reads recipes/ exclusively, so it remains the only form of hello that sigil external-build challenge can reach.
Changed
channel.catalogue.sgl | 3 ++-
channel.catalogue.sgl.minisig | 6 +++---
channel.sgl | 2 ++
objects/350a3b31937cea8b40e29b10c3120b70c646f2c4dc1507b33ab870f532ab7265.sgl | 1 +
snapshot.sgl | 4 ++--
snapshot.sgl.minisig | 6 +++---
src/core/packages/demo.sgl | 30 ++++++++++++++++++++++++++++++
7 files changed, 43 insertions(+), 9 deletions(-)Diff
channel.catalogue.sglmodified
@@ -1,6 +1,7 @@
−1
(catalogue schema: 1 sequence: 6 snapshot: "core-stable@6:sha256:1ee737116d9669fa8d503baf5a275a12ccac79e2b7e1722ebd8260c6367ad963" channel-source: "sha256:30966b33315bb8383158afe41fb25a98790def2192caebb682be8b896acb0423" content-hash: "sha256:e96d244ea805692c9d018ac1c0ea041a9d36c57d84e1904e1814ba5fa269d982")+1
(catalogue schema: 1 sequence: 7 snapshot: "core-stable@7:sha256:294dc1ea624fa9b017ab7c772736dce8637392a09424a29a6624c459c7d1afe7" channel-source: "sha256:1a799a581d3b1bf8ccb767af93363b454086ca31ca06d03e215f5655da31de8c" content-hash: "sha256:5f0d2783911a04630d731168206062742139b4d058e4355cc9d8e30f1d4981d7") 2
(binding name: "core/binaryen" package: "sha256:014baf016eec17892f30a30847b070ffb09e397182d2ef50eda2ceb3fded2a58") 3
(binding name: "core/emacs" package: "sha256:90fc3c5e9b0c35deada7f219417fb5d64f27d2cf88564c46ede646a7a3721a7e")+4
(binding name: "core/hello" package: "sha256:350a3b31937cea8b40e29b10c3120b70c646f2c4dc1507b33ab870f532ab7265") 5
(binding name: "core/libxml2" package: "sha256:cc4c7518170d4f5db3c72025a429c57c83e8d07244c06f922a0e2af3ffd9120c") 6
(binding name: "core/ncurses" package: "sha256:e803a7f68e4a55eac49be30b3dc84855749037be91aa48ec7315f73dd5c0d1b3") 7
(binding name: "core/sqlite" package: "sha256:39a80e18e85b9f228b147d47a3243c0276f639e30f72d841320abbeedc28900a")channel.catalogue.sgl.minisigmodified
@@ -1,4 +1,4 @@
1
untrusted comment: signature from minisign secret key−2
RUQ0HOFEHrNeROHLSvMWtPQg4Lud+wHtDX/JNqsScgfMfXJBPt6oW9F+lVUZ0DLPxk1iGKI+fnePKp95Ge+CvlaDwOg3CiZuFAc=−3
trusted comment: registry=pkg.usesigil.org path=/v1/channels/core-stable/channel.catalogue.sgl seq=512 ts=2026-07-30T20:10:00Z−4
P5MBxqiLIfOxfjcU9I0+U8qNoIur5RNCXcOad5vU+nBo4tmuAB3QV8p9qiylihk3ZgbxUxGRuw66KMbrM6JrBw==+2
RUQ0HOFEHrNeRG0BDlMF6stQEny2YvB1bPIhzuImESNglLsM1uW8mcnrFMR+HgkxxDSO3CF553EUvJfIQA3vUbcFXLmj0TizlQQ=+3
trusted comment: registry=pkg.usesigil.org path=/v1/channels/core-stable/channel.catalogue.sgl seq=514 ts=2026-07-30T22:45:00Z+4
oYopFaBMOojOiXVf4f+sPNCCTW6QBb9nEnE8fAW2uQEITD5SNCFiGzg7aCfMtJ8H4tVHSS9L1oyFWMPctI2ZAA==channel.sglmodified
@@ -1,4 +1,5 @@
1
(import (core packages wasm)+2
(core packages demo) 3
(core packages compression) 4
(core packages terminal) 5
(core packages xml)@@ -10,6 +11,7 @@
11
stream: "core-stable" 12
bindings: (list 13
(channel-binding name: "core/binaryen" value: binaryen)+14
(channel-binding name: "core/hello" value: hello) 15
(channel-binding name: "core/zlib" value: zlib) 16
(channel-binding name: "core/ncurses" value: ncurses) 17
(channel-binding name: "core/libxml2" value: libxml2)objects/350a3b31937cea8b40e29b10c3120b70c646f2c4dc1507b33ab870f532ab7265.sgladded
@@ -0,0 +1 @@
+1
(package-v1 name: "hello" version: "2.12.2" source: (source location: "https://ftp.gnu.org/gnu/hello/hello-2.12.2.tar.gz" sha256: "5a9a996dc292cc24dcf411cee87e92f6aae5b8d13bd9c6819b4c7a9dce0818ab") buildenv: "894ca74bdb03c25d79f00ce915bbe25c56eba192334963c69e1846e6c84526cb" dependencies: () phases: ((phase kind: configure args: ("--prefix=/out") patches: ()) (phase kind: make args: () patches: ()) (phase kind: install args: () patches: ())) divergences: ())snapshot.sglmodified
@@ -1,3 +1,3 @@
−1
(snapshot schema: 1 id: "core-stable" sequence: 6 content-hash: "sha256:1ee737116d9669fa8d503baf5a275a12ccac79e2b7e1722ebd8260c6367ad963")+1
(snapshot schema: 1 id: "core-stable" sequence: 7 content-hash: "sha256:294dc1ea624fa9b017ab7c772736dce8637392a09424a29a6624c459c7d1afe7") 2
(toolchain id: "toolchain/zig" version: "0.16.0" recipe: "sha256:5bc02f4c7abc6055b1f5fc37c57c4b063c18f9e3431ba2cab0cc9f30f313e33b" output: "sha256:70e49664a74374b48b51e6f3fdfbf437f6395d42509050588bd49abe52ba3d00")−3
(pkg id: "core/packages/wasm" version: "0.1.0" recipe: "sha256:30966b33315bb8383158afe41fb25a98790def2192caebb682be8b896acb0423")+3
(pkg id: "core/packages/wasm" version: "0.1.0" recipe: "sha256:1a799a581d3b1bf8ccb767af93363b454086ca31ca06d03e215f5655da31de8c")snapshot.sgl.minisigmodified
@@ -1,4 +1,4 @@
1
untrusted comment: signature from minisign secret key−2
RUQ0HOFEHrNeREBz+oIIg15i/NHOqkih6ueihHoLK+0wbkvxG5HEnsw7Ae9qSoydHTi2Co3NfHoOCIMQhm4GcdmHXmJVOvicMAQ=−3
trusted comment: registry=pkg.usesigil.org path=/v1/channels/core-stable/snapshot.sgl seq=511 ts=2026-07-30T20:10:00Z−4
UwGJgmu86V+AU1hucEoCHoQCwoG8vTdcEbOLpLoCujv2mWMFD94xY5W1nU02PoRo9YJoFhMOdb90LDupgnPTBQ==+2
RUQ0HOFEHrNeROhyRbNt5daUpkpKype+BfkS5FBg6xhpm1Jthyzv2m3LtE00tC16bsyDSXiXpbi+4zoBDzTjn1wxF40iedBBUQw=+3
trusted comment: registry=pkg.usesigil.org path=/v1/channels/core-stable/snapshot.sgl seq=513 ts=2026-07-30T22:45:00Z+4
pleqaNbjD3BA+FmxtJxZazwn9wt1BeAnMdaTJcgPut+rEUFPre5KEaDymDXHakea58T1KdqnECs/SxDYtlSYBw==src/core/packages/demo.sgladded
@@ -0,0 +1,30 @@
+1
;;; Smoke-test packages.+2
;;;+3
;;; GNU hello exists to be the smallest thing that can go wrong. It is what+4
;;; `demo/env.sgl` builds, what the README's first-run instructions tell a new+5
;;; user to run, and what `scripts/gate-crosscheckout.sh` uses to prove that a+6
;;; bare clone of this repository can bootstrap and produce a running program.+7
;;;+8
;;; It therefore needs a `core/hello` catalogue binding. Without one the+9
;;; documented onboarding path fails with "catalogue has no binding core/hello",+10
;;; because `production-resolve` only resolves names the signed catalogue+11
;;; carries -- the legacy `recipes/hello.sgl` is invisible to it.+12
(define-library (core packages demo)+13
(import (sigil core)+14
(core build-environments)+15
(sigil env package)+16
(sigil build external))+17
(export hello)+18
(begin+19
(define hello+20
(package+21
name: "hello"+22
version: "2.12.2"+23
source: (external-source+24
location: "https://ftp.gnu.org/gnu/hello/hello-2.12.2.tar.gz"+25
sha256: "5a9a996dc292cc24dcf411cee87e92f6aae5b8d13bd9c6819b4c7a9dce0818ab")+26
buildenv: core-buildenv+27
phases: (list+28
(external-phase kind: 'configure args: (list "--prefix=/out"))+29
(external-phase kind: 'make)+30
(external-phase kind: 'install))))))