From 3c88eb66f152cf7f58e6098d384006c565c3c7ad Mon Sep 17 00:00:00 2001 From: tannevaled Date: Fri, 29 May 2026 16:47:47 +0200 Subject: [PATCH 1/5] new(tcl-lang.org/v8 + /tk/v8): Tcl/Tk 8.6 legacy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tcl 9.0 changed major API; many Tk-based GUIs (git-gui, python-tk, BWidget) still pin to 8.6. Tk 9.0 also has a broken minizip Makefile target that prevents from-source build — Tk 8.6 stays buildable. Adding these unblocks #13057 (Tk via 9.0 → switch to v8) and #13060 (git-gui) once the bottles are available. --- projects/tcl-lang.org/tk/v8/package.yml | 63 +++++++++++++++++++++++++ projects/tcl-lang.org/v8/package.yml | 54 +++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 projects/tcl-lang.org/tk/v8/package.yml create mode 100644 projects/tcl-lang.org/v8/package.yml diff --git a/projects/tcl-lang.org/tk/v8/package.yml b/projects/tcl-lang.org/tk/v8/package.yml new file mode 100644 index 0000000000..6da702dea6 --- /dev/null +++ b/projects/tcl-lang.org/tk/v8/package.yml @@ -0,0 +1,63 @@ +# Tk 8.6 — legacy GUI toolkit. +# +# Companion to tcl-lang.org/v8. Tk 9.0 has a broken `minizip` target +# in its Makefile that fails build; 8.6.x stays buildable. Required +# by git-gui, python-tk@3.9, and other legacy Tcl GUIs. + +distributable: + url: https://downloads.sourceforge.net/project/tcl/Tcl/{{version}}/tk{{version}}-src.tar.gz + strip-components: 1 + +versions: + url: https://www.tcl-lang.org/software/tcltk/download.html + match: /tk8\.6\.\d+-src\.tar\.gz/ + strip: + - /^tk/ + - /-src\.tar\.gz/ + +platforms: + - linux/x86-64 + - linux/aarch64 + - darwin/x86-64 + - darwin/aarch64 + +dependencies: + tcl-lang.org/v8: '*' + freedesktop.org/pkg-config: '*' + linux: + x.org/x11: '*' + x.org/exts: '*' + freetype.org: '*' + +build: + working-directory: unix + darwin: + working-directory: macosx + + script: + - ./configure $ARGS + - make --jobs {{ hw.concurrency }} + - make install + - run: | + cd "{{prefix}}/bin" + [ ! -e wish ] && ln -sf "wish{{version.major}}.{{version.minor}}" wish || true + + env: + CPPFLAGS: -I{{deps.tcl-lang.org/v8.prefix}}/include + ARGS: + - --prefix={{prefix}} + - --exec-prefix={{prefix}} + - --with-tcl={{deps.tcl-lang.org/v8.prefix}}/lib + - --enable-shared + - --enable-threads + - --enable-64bit + darwin: + ARGS: + - --enable-aqua + +test: + - test -f "{{prefix}}/lib/libtk{{version.major}}.{{version.minor}}.dylib" -o -f "{{prefix}}/lib/libtk{{version.major}}.{{version.minor}}.so" + +provides: + - bin/wish + - bin/wish{{version.major}}.{{version.minor}} diff --git a/projects/tcl-lang.org/v8/package.yml b/projects/tcl-lang.org/v8/package.yml new file mode 100644 index 0000000000..413f50d670 --- /dev/null +++ b/projects/tcl-lang.org/v8/package.yml @@ -0,0 +1,54 @@ +# Tcl 8.6 — legacy line. +# +# The main tcl-lang.org recipe tracks 9.0.x which made backward- +# incompatible API changes. Many extensions and Tk-based GUIs (git-gui, +# python-tk, BWidget, expect-derived tools) still pin to 8.6. + +distributable: + url: https://downloads.sourceforge.net/project/tcl/Tcl/{{version}}/tcl{{version}}-src.tar.gz + strip-components: 1 + +versions: + url: https://www.tcl-lang.org/software/tcltk/download.html + match: /tcl8\.6\.\d+-src\.tar\.gz/ + strip: + - /^tcl/ + - /-src\.tar\.gz/ + +platforms: + - linux/x86-64 + - linux/aarch64 + - darwin/x86-64 + - darwin/aarch64 + +dependencies: + openssl.org: ^1.1 + zlib.net: ^1.3 + +build: + dependencies: + gnu.org/patch: '*' + info-zip.org/zip: '*' + + working-directory: unix + script: + - ./configure $ARGS + - make --jobs {{ hw.concurrency }} + - make install + - make install-private-headers + - run: | + cd "{{prefix}}/bin" + ln -sf "tclsh{{version.major}}.{{version.minor}}" tclsh + env: + ARGS: + - --prefix={{prefix}} + - --enable-shared + - --enable-threads + - --enable-64bit + +test: + - echo 'puts "ok"' | tclsh + +provides: + - bin/tclsh + - bin/tclsh{{version.major}}.{{version.minor}} From d147f5b52c9f7e6d21dc500a6aa9cc19576b6e7b Mon Sep 17 00:00:00 2001 From: tannevaled Date: Sun, 14 Jun 2026 14:14:35 +0200 Subject: [PATCH 2/5] =?UTF-8?q?tcl-lang.org/v8:=20split=20=E2=80=94=20move?= =?UTF-8?q?=20tk/v8=20to=20its=20own=20PR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tk depends on tcl-lang.org/v8 (same PR), so its CI couldn't resolve Tcl's not-yet-published bottle (404). Ship Tcl alone here (it's self-contained + green); Tk follows in a separate PR once this merges and Tcl's bottle is published. Co-Authored-By: Claude Opus 4.8 (1M context) --- projects/tcl-lang.org/tk/v8/package.yml | 63 ------------------------- 1 file changed, 63 deletions(-) delete mode 100644 projects/tcl-lang.org/tk/v8/package.yml diff --git a/projects/tcl-lang.org/tk/v8/package.yml b/projects/tcl-lang.org/tk/v8/package.yml deleted file mode 100644 index 6da702dea6..0000000000 --- a/projects/tcl-lang.org/tk/v8/package.yml +++ /dev/null @@ -1,63 +0,0 @@ -# Tk 8.6 — legacy GUI toolkit. -# -# Companion to tcl-lang.org/v8. Tk 9.0 has a broken `minizip` target -# in its Makefile that fails build; 8.6.x stays buildable. Required -# by git-gui, python-tk@3.9, and other legacy Tcl GUIs. - -distributable: - url: https://downloads.sourceforge.net/project/tcl/Tcl/{{version}}/tk{{version}}-src.tar.gz - strip-components: 1 - -versions: - url: https://www.tcl-lang.org/software/tcltk/download.html - match: /tk8\.6\.\d+-src\.tar\.gz/ - strip: - - /^tk/ - - /-src\.tar\.gz/ - -platforms: - - linux/x86-64 - - linux/aarch64 - - darwin/x86-64 - - darwin/aarch64 - -dependencies: - tcl-lang.org/v8: '*' - freedesktop.org/pkg-config: '*' - linux: - x.org/x11: '*' - x.org/exts: '*' - freetype.org: '*' - -build: - working-directory: unix - darwin: - working-directory: macosx - - script: - - ./configure $ARGS - - make --jobs {{ hw.concurrency }} - - make install - - run: | - cd "{{prefix}}/bin" - [ ! -e wish ] && ln -sf "wish{{version.major}}.{{version.minor}}" wish || true - - env: - CPPFLAGS: -I{{deps.tcl-lang.org/v8.prefix}}/include - ARGS: - - --prefix={{prefix}} - - --exec-prefix={{prefix}} - - --with-tcl={{deps.tcl-lang.org/v8.prefix}}/lib - - --enable-shared - - --enable-threads - - --enable-64bit - darwin: - ARGS: - - --enable-aqua - -test: - - test -f "{{prefix}}/lib/libtk{{version.major}}.{{version.minor}}.dylib" -o -f "{{prefix}}/lib/libtk{{version.major}}.{{version.minor}}.so" - -provides: - - bin/wish - - bin/wish{{version.major}}.{{version.minor}} From 02f6611910addef4b0f6d88ccabe363d517ecbcb Mon Sep 17 00:00:00 2001 From: tannevaled Date: Mon, 27 Jul 2026 15:56:51 +0200 Subject: [PATCH 3/5] new(tcl-lang.org): serve legacy 8.6 from the main recipe, not a new /v8 package MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per review: Tcl/Tk 8.6 doesn't need a separate package. The main recipe's build script already guards every 9.x-only step (`if: ">=9.0.4"` staging, `if: <8.6.14` Tk patches) and templates the rest by version, and the versions matcher already includes 8.6.x — so `tcl-lang.org^8` resolves to 8.6.x and builds the full stack (Tk/critcl/tcllib/tcltls/itk4), inheriting the darwin dylib-relocation fix (the "dylib issues" flagged for tclsh^8). Two edits instead of a new package: - constrain the versions matcher to the 8.6 and 9.x lines (drop 8.4/8.5, too old for the bundled critcl/tcllib/itk versions) - publish versioned bin names (tclsh8.6/tclsh9.0, wish8.6/wish9.0) so `pkgx tclsh^8` resolves exactly Removes the separate projects/tcl-lang.org/v8 recipe. Co-Authored-By: Claude Opus 4.8 (1M context) --- projects/tcl-lang.org/package.yml | 7 +++- projects/tcl-lang.org/v8/package.yml | 54 ---------------------------- 2 files changed, 6 insertions(+), 55 deletions(-) delete mode 100644 projects/tcl-lang.org/v8/package.yml diff --git a/projects/tcl-lang.org/package.yml b/projects/tcl-lang.org/package.yml index bcde671172..e1e050bba7 100644 --- a/projects/tcl-lang.org/package.yml +++ b/projects/tcl-lang.org/package.yml @@ -4,7 +4,10 @@ distributable: versions: url: https://www.tcl-lang.org/software/tcltk/download.html - match: /tcl\d+\.\d+\.\d+-src\.tar\.gz/ + # Serve both the current 9.x line and the legacy 8.6 line (so + # `tcl-lang.org^8` / `pkgx tclsh^8` resolve to 8.6.x). 8.4/8.5 are too + # old to build against the bundled critcl/tcllib/itk versions below. + match: /tcl(?:8\.6\.\d+|9\.\d+\.\d+)-src\.tar\.gz/ strip: - /^tcl/ - /-src\.tar\.gz/ @@ -186,7 +189,9 @@ build: provides: - bin/tclsh + - bin/tclsh{{version.marketing}} # tclsh8.6 / tclsh9.0 - bin/wish + - bin/wish{{version.marketing}} # wish8.6 / wish9.0 - bin/critcl test: diff --git a/projects/tcl-lang.org/v8/package.yml b/projects/tcl-lang.org/v8/package.yml deleted file mode 100644 index 413f50d670..0000000000 --- a/projects/tcl-lang.org/v8/package.yml +++ /dev/null @@ -1,54 +0,0 @@ -# Tcl 8.6 — legacy line. -# -# The main tcl-lang.org recipe tracks 9.0.x which made backward- -# incompatible API changes. Many extensions and Tk-based GUIs (git-gui, -# python-tk, BWidget, expect-derived tools) still pin to 8.6. - -distributable: - url: https://downloads.sourceforge.net/project/tcl/Tcl/{{version}}/tcl{{version}}-src.tar.gz - strip-components: 1 - -versions: - url: https://www.tcl-lang.org/software/tcltk/download.html - match: /tcl8\.6\.\d+-src\.tar\.gz/ - strip: - - /^tcl/ - - /-src\.tar\.gz/ - -platforms: - - linux/x86-64 - - linux/aarch64 - - darwin/x86-64 - - darwin/aarch64 - -dependencies: - openssl.org: ^1.1 - zlib.net: ^1.3 - -build: - dependencies: - gnu.org/patch: '*' - info-zip.org/zip: '*' - - working-directory: unix - script: - - ./configure $ARGS - - make --jobs {{ hw.concurrency }} - - make install - - make install-private-headers - - run: | - cd "{{prefix}}/bin" - ln -sf "tclsh{{version.major}}.{{version.minor}}" tclsh - env: - ARGS: - - --prefix={{prefix}} - - --enable-shared - - --enable-threads - - --enable-64bit - -test: - - echo 'puts "ok"' | tclsh - -provides: - - bin/tclsh - - bin/tclsh{{version.major}}.{{version.minor}} From c24d15dcb593b1a9a132c0f7ad892eb3184db49f Mon Sep 17 00:00:00 2001 From: tannevaled Date: Mon, 27 Jul 2026 16:06:13 +0200 Subject: [PATCH 4/5] ci: re-trigger (transient SourceForge mirror failure on tcl9.0.4 tarball) Co-Authored-By: Claude Opus 4.8 (1M context) From 7c2a95902788f398693b79647de7c33ddfb054b2 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Tue, 28 Jul 2026 11:56:32 +0200 Subject: [PATCH 5/5] ci: re-trigger (transient sourceforge download flake on ARM64 runner) Co-Authored-By: Claude Opus 4.8