Browse Source
The decision (per the acceptance, recorded in the goal detail): derived projects obtain library binaries via the SAME fetch entrypoint by default - generated projects receive make.tcl (libfetch + the PACKAGES phase) through the established layout-sync/G-027 channels and declare their artifacts in their own src/runtime/libpackages.toml; the copy-and-tweak in-project suite build per G-104's self-description contract remains the documented alternative (a tcllib/tcllibc-only suite needs no Tcl source tree - critcl bundles its headers). The pre-G-096 samplesuite1 sketch in the project-0.1 layout (download_and_build.config, mingw64/gcc-era, self-described as SKETCH ONLY) is removed and replaced by src/buildsuites/README.md in the layout, documenting both routes for generated projects - the disposition the goal Approach named. Goal Progress also records the r1 publication (punkbin ee571ed, pushed) and the live canonical-origin libfetch verification. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.commaster
5 changed files with 78 additions and 72 deletions
@ -0,0 +1,36 @@ |
|||||||
|
# src/buildsuites - building binary components for this project |
||||||
|
|
||||||
|
This folder is where a project keeps BUILDSUITES: self-describing recipes that |
||||||
|
build Tcl runtimes and binary library packages from external upstream sources |
||||||
|
with a pinned zig toolchain. Most projects never need one - the default ways to |
||||||
|
obtain binary components are lighter: |
||||||
|
|
||||||
|
## Route 1 (default): fetch published artifacts |
||||||
|
|
||||||
|
`tclsh src/make.tcl libfetch` fetches library packages (e.g. tcllib + the |
||||||
|
tcllibc critcl accelerators) as verified zip artifacts from the punkbin |
||||||
|
artifact server's lib tier into the untracked `bin/packages/<target>/` input |
||||||
|
tier, sha1-verified, and materializes them for the libs build. Declare the |
||||||
|
artifacts your project consumes in `src/runtime/libpackages.toml` |
||||||
|
([artifact.<name>] entries with `name` = the immutable |
||||||
|
`<pkgfolder>-<tcl8|tcl9>-r<N>.zip` artifact filename and `target` = |
||||||
|
`allplatforms` or a platform-dir name - see the punkshell repo's copy for a |
||||||
|
worked example). Runtimes are fetched the same spirit via |
||||||
|
`bin/punk-runtime.cmd`. The canonical punkbin origin is trusted by default; |
||||||
|
other servers require the explicit `-trust-server` flag. |
||||||
|
|
||||||
|
## Route 2 (alternative): build in-project with a copied suite |
||||||
|
|
||||||
|
Copy a real suite tree from the punkshell repo's `src/buildsuites/` (e.g. |
||||||
|
`suite_tcl90`) into this folder and retarget it: every suite is |
||||||
|
COPY-AND-TWEAK by contract - its `sources.config` declares its sources, |
||||||
|
products and pinned toolchain, and `tclsh src/make.tcl buildsuite |
||||||
|
list|info|build <name>` discovers and drives it with no make.tcl edits |
||||||
|
(the G-104 self-description contract). Note a tcllib/tcllibc-only suite is |
||||||
|
genuinely light: critcl bundles its own Tcl headers, so building the |
||||||
|
accelerators needs only a driving tclsh + zig + the tcllib/critcl checkouts - |
||||||
|
no Tcl source tree. |
||||||
|
|
||||||
|
The pre-2026 `samplesuite1` sketch that used to live here (a mingw64/gcc-era |
||||||
|
download_and_build.config outline) predated these mechanisms and was removed |
||||||
|
when the fetch route landed (punkshell goal G-139). |
||||||
@ -1,57 +0,0 @@ |
|||||||
#======================================================= |
|
||||||
#configuration data for download and build of buildsuite |
|
||||||
#======================================================= |
|
||||||
#windows build mechanism: mingw64 -ucrt64 gcc |
|
||||||
#other platforms build mechanism: gcc |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#------------------------------------------------------- |
|
||||||
set buildprefix <PROJECTDIR>/vendorbuild/samplesuite1 |
|
||||||
set basemakeflags [list -j 2] |
|
||||||
set baseconfigflags [list --enable-64bit --prefix=$buildprefix] |
|
||||||
set repofolder ~/.fossils |
|
||||||
#------------------------------------------------------- |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SOURCEDOWNLOAD -project tcl\ |
|
||||||
-mechanism fossil\ |
|
||||||
-localrepo tcl.fossil\ |
|
||||||
-branch core-8\ |
|
||||||
-remote https://core.tcl-lang.org/tcl |
|
||||||
|
|
||||||
#etc. |
|
||||||
#SOURCEDOWNLOAD tk... |
|
||||||
#SOURCEDOWNLOAD thread... |
|
||||||
|
|
||||||
#SOURCEDOWNLOAD -project critcl\ |
|
||||||
-mechanism git\ |
|
||||||
-branch master\ |
|
||||||
-remote http://github.com/andreas-kupries/critcl |
|
||||||
|
|
||||||
#SOURCEDOWNLOAD -project tclbench\ |
|
||||||
-mechanism fossil\ |
|
||||||
-remote https://core.tcl-lang.org/tclbench |
|
||||||
|
|
||||||
#CONFIGSTART tcl <SOURCEBASE>/win |
|
||||||
|
|
||||||
#CONFIGSTART tk <SOURCEBASE>/win |
|
||||||
#EXTRACONFIG tk --with-tcl=$buildprefix/lib --with-tclinclude=$buildprefix/include |
|
||||||
|
|
||||||
|
|
||||||
#CONFIGSTART thread ??? |
|
||||||
#EXTRACONFIG thread --with-tcl=$buildprefix/lib --with-tclinclude=$buildprefix/include |
|
||||||
|
|
||||||
|
|
||||||
#SOURCEDOWNLOAD -project zint\ |
|
||||||
-mechanism git\ |
|
||||||
-branch master\ |
|
||||||
-remote https://git.code.sf.net/p/zint/code |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
Reference in new issue