ci: build the Tcl auto-load modules and add a non-Tcl build job

Extend the Linux CI so consumers exercise more of what is buildable:

* In the Tcl job, after the default build, also build the per-module Tcl
  auto-load shared libraries (lef/plot/router/ext2spice/ext2sim
  tcl-main -> magiclef.so, tclplot.so, tclroute.so, exttospice.so,
  exttosim.so).  These are real products the default target never builds,
  so building them in CI keeps them from bit-rotting.

* Add a standard_build_linux job for the non-Tcl configuration
  (./configure --without-tcl): the native magic binary + bundled GNU
  readline -- code paths the Tcl build does not cover, and which only
  build now that the bundled-readline out-of-tree fixes landed.

NB: the standard job's apt package set is not validated on the runner;
adjust if a library is not found.  Docs remain best-effort in both jobs.

Not changed here: whether the five auto-load .so should also be shipped
by the default "make install" (they currently are not) -- left as a
separate decision.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Darryl L. Miles 2026-07-22 15:37:59 +00:00 committed by R. Timothy Edwards
parent 0a3b61dbdd
commit 955a61aeda
1 changed files with 29 additions and 0 deletions

View File

@ -24,3 +24,32 @@ jobs:
./configure
make database/database.h
make -j$(nproc)
- name: Build Tcl auto-load modules
# These per-module Tcl shared libraries are real products but are not
# part of the default target (their modules are not in PROGRAMS), so
# build them explicitly to keep them from bit-rotting.
run: |
for m in lef plot router ext2spice ext2sim; do
make -C "$m" tcl-main
done
standard_build_linux:
# Non-Tcl "standard" configuration: native magic binary + bundled GNU
# readline. Distinct code paths (MAGIC_WRAPPER off, bundled readline) that
# the Tcl build above does not exercise.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Get Dependencies
# X11 + cairo for graphics; ncurses for the bundled readline's configure;
# texlive for the docs. NB: package set not validated on the runner --
# adjust if the build cannot find a library.
run: |
sudo apt-get update
sudo apt-get install -y libx11-dev libcairo-dev libncurses-dev \
texlive-latex-base texlive-latex-recommended texlive-fonts-recommended
- name: Build (non-Tcl / standard)
run: |
./configure --without-tcl --without-opengl
make database/database.h
make -j$(nproc)