Commit Graph

2686 Commits

Author SHA1 Message Date
Darryl L. Miles b0ba9db6a4 Add SBOM license enrichment for AppImage variants
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles 298f19ce31 Item 10: Add SBOM generation step to all appimage workflows
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles 51c36bcf19 Add AppStream metadata license and developer info
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles d5d5ea363f Item 6 + 7: add metainfo.xml, --updateinformation, validate target, Validate AppImage step
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles f5ff38ff2f Fix STEP_SUMMARY: use TCL/TK BUILD INFO heading, table format only in all 4 appimage workflows
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles f34fa0778e Fix tcl_ref description example for appimage9/10 (use core-9-0-4 not core-8-6-18)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles d7071b65d4 Fix AppImage Tcl/Tk tag resolution and summary metadata
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles d9ce60c773 Improve Tcl/Tk source output: show tarball/SHA details and git clone info
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>
2026-07-23 16:09:35 -04:00
Darryl L. Miles 265fbb05ed Improve resolver error clarity and trap cleanup ordering
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles a5aa32883c Use trap-based Tcl metadata tmpdir cleanup in appimage workflows
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles a365d5a5c1 Apply final readability and wording polish for appimage Tcl flow
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles 0b51864ab4 Finalize resolver cleanup handling and EL7 git dependency note
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles 5c83dc7bc3 Fix resolver function structure in appimage workflows
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles 4b74c6df8e Harden Tcl tag resolution retries and Makefile Tcl ABI checks
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles e28c93bb90 Polish Tcl/Tk workflow and Dockerfile review nits
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles a05dd555a9 Address review feedback for Tcl/Tk appimage workflow changes
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles 58d47312c1 Implement per-variant Tcl/Tk source and SHA strategy for appimage builds
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-23 16:09:35 -04:00
Darryl L. Miles 23ab0ff2a0 toolchains/emscripten/defs.mak LINK with LD LDFLAGS 2026-07-23 16:09:35 -04:00
Darryl L. Miles 1bd1daf73a toolchains/emscripten/defs.mak LINK with LD 2026-07-23 16:09:35 -04:00
Darryl L. Miles adf5457eca wasm: emit debugging symbol source-map by default 2026-07-23 16:09:35 -04:00
Darryl L. Miles 665f65d61f configure: autoconf regen (2.69) LDFLAGS/CXXFLAGS/CXX/CC propagation fix 2026-07-23 16:09:35 -04:00
Darryl L. Miles dc31c1f6f6 Makefile: LDFLAGS autoconf propagation
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.
2026-07-23 16:09:35 -04:00
Darryl L. Miles b6429a3b0b configure: autoconf regen (2.69) ld_first_libs 2026-07-23 16:09:35 -04:00
Darryl L. Miles 12c7927e88 Makefile: LD_FIRST_LIBS high-priority lib order conf control point 2026-07-23 16:09:35 -04:00
Darryl L. Miles 2bcf9637cb GHA: appimage*.yml: fetch-tags: true workaround (see actions/checkout~issue#1471)
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.
2026-07-23 16:09:35 -04:00
Darryl L. Miles 17e3ff0058 GHA: main-wasm.yml: fixup the artifact download naming and contents
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).
2026-07-23 16:09:35 -04:00
Darryl L. Miles b48ede74f3 GHA: main-wasm.yml: build with stable Tcl core-9-0-\d+ releases
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.
2026-07-23 16:09:35 -04:00
Darryl L. Miles cb446b7ada GHA: main-wasm.yml: use newer node by default (v24 LTS)
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).
2026-07-23 16:09:35 -04:00
Darryl L. Miles 433f43accf GHA: uses actions/* softprops/* version bumps
uses: actions/checkout@v4 => actions/checkout@v7
uses: actions/checkout@v5 => actions/checkout@v7

uses: actions/upload-artifact@v4 => actions/upload-artifact@v7
uses: actions/upload-artifact@v5 => actions/upload-artifact@v7

uses: softprops/action-gh-release@v2 => softprops/action-gh-release@v3
2026-07-23 16:09:35 -04:00
Darryl L. Miles 3fb47d9668 GHA: canary-matrix.yml maintenance +ubuntu-26.04 +gcc-16 +clang22 2026-07-23 16:09:35 -04:00
R. Timothy Edwards 86fbd2b50f Corrected a subtle error in "def read" in which if a net declares a
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.
2026-07-23 15:57:28 -04:00
R. Timothy Edwards a22b7508ac Moved the freeMagic() of the labelList created for isolated substrate
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.
2026-07-17 13:39:51 -04:00
R. Timothy Edwards 42b346e318 Extended the function of the "findlabel" command; previously, the
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>.
2026-07-17 12:07:25 -04:00
R. Timothy Edwards cc4da9a05f Corrected a subtle error in substrate extraction: In extHierSubstrate(),
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).
2026-07-11 17:09:26 -04:00
R. Timothy Edwards 17ac06a24a Fixed the handling of printed units when "units grid" is used. The
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.
2026-07-10 19:59:05 -04:00
R. Timothy Edwards 23a1c501ff Updated the version to go along with the merge of pull request #540
from Darryl Miles (makes some updates to the code in the oa/
directory so that it at least will compile, even if it is not
usable).
2026-07-09 10:41:44 -04:00
Darryl L. Miles c6896e2a74 oa: apply code-review feedback — strcpy_s link fallback + argv cleanup
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.
2026-07-09 10:41:12 -04:00
Darryl L. Miles f3f824a6bb magicOA.c: strcpy_s declaration (FIXME remove/move this) 2026-07-09 10:41:12 -04:00
Darryl L. Miles dfa28d1cd3 oa: replace strcpy() with strcpy_s() 2026-07-09 10:41:12 -04:00
Darryl L. Miles e5d6d3f429 oa/fake_oa_stub (header file oaDB.h) 2026-07-09 10:41:12 -04:00
Darryl L. Miles 9ae91bb4c9 oa: make it build (against stub) 2026-07-09 10:41:12 -04:00
Darryl L. Miles d9e76f372b .gitignore: add .deps/ 2026-07-09 10:41:12 -04:00
Darryl L. Miles fd676c5b10 git rm -rf oa/.deps/* 2026-07-09 10:41:12 -04:00
R. Timothy Edwards 767cde0efc Two fixes: One by Claude Fable 5 which identified the two possible
degenerate cases when attempting to find resistors in triangle
topologies in ResMerge, which fixes the segfault in github issue
diagnostic message.  The other fix is part of github issue #538,
which found an error in the check for tied transistor sources and
drains.  However, the other part of that issue, having to do with
nondeterminism in the "extresist" output, has not yet been addressed.
2026-07-08 13:25:01 -04:00
R. Timothy Edwards 07d98a33c2 Fixed a negative tile width calculation in ResMakeRes.c, as
pointed out by github user "LegumeEmittingDiode".  I agree with
the suggested fix and have implemented it exactly as suggested
in github issue #537.
2026-07-08 09:51:37 -04:00
Intubun d6438387ad Fixed a second emscripten 6.0.2 regression in the WASM build, this one at runtime rather than at compile time. emscripten 6.0.2 removed wasmBinary (along with a batch of GL/SDL members) from the default INCOMING_MODULE_JS_API list. The JS loaders in npm/examples pass Module.wasmBinary to embed the .wasm binary, and because the WASM build links with -sASSERTIONS=1, the now-unrecognized member triggers a hard runtime abort: "`Module.wasmBinary` was supplied but `wasmBinary` not included in INCOMING_MODULE_JS_API", failing every example test. Fixed by explicitly setting -sINCOMING_MODULE_JS_API in toolchains/emscripten/defs.mak to emscripten's full default list plus wasmBinary. Spelling out the whole default (rather than only the members our own loaders use) keeps external consumers of the npm package working if they supply locateFile, arguments, and similar Module options. 2026-07-08 09:48:10 -04:00
Intubun 28483435f1 Fixed the WASM (emscripten) build, which broke starting with emscripten 6.0.2. The failure is not in magic itself but in the TCL dependency build: emscripten 6.0.2 began shipping a <sys/epoll.h> stub in its sysroot (6.0.1 did not), so TCL's configure now detects epoll on the Linux CI host via AC_CHECK_HEADERS([sys/epoll.h]), defines NOTIFIER_EPOLL, and compiles tclEpollNotfy.c. That file also requires <sys/queue.h>, which emscripten does not provide, so the build died with "fatal error: 'sys/queue.h' file not found". Fixed by passing ac_cv_header_sys_epoll_h=no to TCL's configure in toolchains/emscripten/build-tcl-wasm.sh, which forces the select()-based notifier. That notifier is the correct choice for single-threaded WASM anyway (emscripten's epoll is only a stub), and overriding the autoconf cache variable avoids patching the read-only TCL source tree and keeps the build working across future emscripten versions. 2026-07-08 09:48:10 -04:00
R. Timothy Edwards 718e02ec3f Claude Fable 5 implemented capacitance checking at shape corners,
after much discussion about the implementation.  Since it is not
exactly clear what the field lines do at corners, the implementation
depends largely on an unknown and presumably global constant
multiplier;  this has provisionally been set to 1 but needs to be
determined empirically with a field equation solver.  At least one
rational approximation suggests a value of pi/2 instead of 1.  The
corner capacitance can be considered a refinement of existing
parasitic capacitance extraction, and since it takes a non-trivial
additional amount of computation, it is left as an option to
"extract" that can be turned on when a more accurate result is
preferred at the expense of a longer extraction time.
2026-07-08 09:13:07 -04:00
R. Timothy Edwards 443045b331 Fixed a known issue in which the output of "vendor" (read-only) GDS
can become corrupted if the name of the cell in magic changes from
the name of the structure in GDS pointed to by the GDS_FILE property,
and the new name is a different length from the original name.
Fixed by Claude Fable 5 and checked for all name-change scenarios
for both compressed and uncompressed output.
2026-07-06 16:06:07 -04:00
R. Timothy Edwards 4b39363a3b Adding some standard files and paths used by Claude Code so that
AI metadata doesn't end up in the repository.
2026-07-06 11:14:19 -04:00