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