For tarball source: show tarball filename, download URL, and actual
SHA256 values with "(SHA matches expected value)" suffix, or
"expected SHA not known, please update workflow .yml" when no SHA is
known. The Tcl ref is omitted since it is derived and not user-supplied.
For github source: show clone URL, ref, and resolved commit-id/date.
Tarball and SHA rows are omitted as they are not relevant.
The TCL/TK BUILD INFO section in Create RELEASE-NOTES.txt is updated
with the same conditional logic using the exported env vars.
The TCL_SHA_STATUS env var is removed (replaced by per-SHA display
logic and the new TCL_TARBALL_FILENAME / TK_TARBALL_FILENAME vars).
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Also fixed up CC/CXX/CXXFLAGS in the same way.
Main notable concern the tclmagic.so now has reordered position of
$LDFLAGS (was start AND end of list, now start of list only),
$LDDL_FLAGS would have already provided it start of list, so it
would be duplicated set of options.
@LDDL_FLAGS@ no longer prepend $LDFLAGS which is now explicit in the
Makefile to allow specific target control.
The purpose of all this is the toplevel ./configure now has LDFLAGS
control passed down to linker command lines as configure --help
indicates.
CoPilot analysis
Bonus: fetch-tags workaround may be removable
The appimage workflows have this comment throughout:
#fetch-tags: true # this should work see actions/checkout~issue#1471
...and then manually run git fetch --tags as a workaround. The fetch-tags input bug referenced
in issue #1471 was fixed in a v4.x patch release. After upgrading to v7, it would be worth
testing fetch-tags: true directly and removing the manual git fetch --tags workaround in the
appimage "Create RELEASE-NOTES.txt" steps — though this is independent of the version upgrade
itself.
Previously it was an archive of an archive (of the 'npm pack' output)
published under the same artifict filename (which becomes the default
download filenmame) which is a headache when you start to download more
than one (like when testing between versions).
Now the 'npm pack' output is attached as-is using its original filename,
but also the extracted contents are attached as standard GitHub
artifact ZIP, using a unique filename (based on the unique build version).
Filter out unwanted tag version as candiates to build with:
refs/tags/core-9-0-b3 UNWANTED
refs/tags/core-9-0-b2 UNWANTED
refs/tags/core-9-0-b1-rc4 UNWANTED
refs/tags/core-9-0-b1 UNWANTED
refs/tags/core-9-0-a3 UNWANTED
refs/tags/core-9-0-a1 UNWANTED
refs/tags/core-9-0-4
refs/tags/core-9-0-3
refs/tags/core-9-0-2
refs/tags/core-9-0-1
refs/tags/core-9-0-0
Previously the lexical order would result in alpha/beta/rc
matching in preference to the stable Tcl version IDs. So our WASM
build would not be against the upstream stable release which is
the intention.
previously node20 was the default, with override to force node22 but
node24 has been out since May 2025 and is current LTS, with node26
out since May 2026 and current stable (but non-LTS).
non-default rule, but then does not contain any routed nets, the
non-default rule gets accidentally applied to the next routed net,
ignoring the end-of-statement in between.
regions into extHardFreeAll(), where it is easy to detect if it has
already been freed along with the rest of the labeled regions, to avoid
a double free() call.
documentation implied that "findlabel -glob <pattern> <n>" is a
meaningful set of command options, but in fact was not implemented
and did not raise an error for wrong number of arguments. Instead,
this has now been implemented to mean find (and set the box position
to) the <n>th label containing <pattern>.
extFindNodes() is called to find just the substrate node, then
ExtLabelRegions() is called to label the substrate node if such a label
exists. The ExtLabelRegions() routine has a section at line 344 in which
if it finds a label on the substrate plane that is over space, then it
attaches the label to the default substrate region. However, if the
label is inside an isolated substrate region, then it passes this check,
which never actually detects whether or not the label is over space.
Doing so is actually simple, since the preceding code detected connecting
tiles under the label, and that fact just needed to be carried forward
and checked. The upshot of the error was that if an isolated substrate
region like a pwell inside deep nwell was *labeled*, then it would
mysteriously get shorted to the global substrate, which is clearly wrong.
Thanks to Mark Martin for providing the failing example (and apologies to
Mark Martin for spending time trying to debug a very obscure problem).
original implementation (which was added recently) used an inverted
output scale and multiplied by it instead of dividing by it,
resulting in incorrect units. However, it was not even getting to
that point due to the use of uninitialized variable "crec", which
should have been set from the window pointer but was missing.
Follow-up to review-master-upstream-20249999-oa-dcff2f64-6535a4e1.md:
- strcpy_s: add an inline fallback implementation right after the declaration,
guarded by #ifndef __STDC_LIB_EXT1__. glibc never defines that macro and does
not provide the C11 Annex K interfaces, so the bare declaration was an
unresolved symbol at link time; the fallback makes magicOA.o self-contained
(strcpy_s becomes a defined symbol) while a real Annex K libc still wins.
- magicInit.cpp / magicOA.cpp: use `char argvbuf[] = "tclsh"` for the mutable
argv string instead of `char[32]` + snprintf.