build(release): ship the sources the build system requires

The 2.14.0.10 source distributions do not build.  mux2.14/lib/Makefile.am
names 24 sources; three are absent from the tarball:

    mux_nls.cpp     LIBMUX_SRC
    mux_table.c     LIBMUX_C_SRC
    shacrypt.cpp    LIBMUX_SRC

Their headers are missing too, and mux_table.h is #included by eleven
shipped files, so the build fails at the first compile rather than the
link.  Both platforms are affected: unix .tar.gz/.bz2 and win32
.src.zip/.7z.

Cause is the packaging model.  dounix.sh and dowin32.sh start from the
PREVIOUS release tree and overlay only what the TOC lists name, so the
lists are an allowlist: a file added to the repo since 2.14.0.9 that
nobody adds to a TOC simply never ships, silently, and every integrity
check still passes.  Checksums and all 13 GPG signatures verify on the
current artifacts -- they prove the tarball is intact, not complete.

Adds the seven to unix/TOC.patchable and win32/TOC.src.patchable:
include/mux_format.h, include/mux_nls.h, include/mux_table.h,
include/shacrypt.h, lib/mux_nls.cpp, lib/mux_table.c, lib/shacrypt.cpp.
That is the internationalization, table-formatting and sha-crypt work --
three of this cycle's headline features, named in the build and not
shipped.

The removal lists have the mirror defect.  TOC.removed:172 lists
src/timeparser.cpp, but the file sits at lib/timeparser.cpp in the
distribution: it was deleted from the repo in 4884ba3db and the entry
kept the pre-move path, so it has never matched and 56 KB of orphaned
source has propagated forward since.  src/modules/Makefile is the same
shape -- the .am and .in are removed, the generated artifact is not.
Both are dead weight rather than build breaks; the stale
src/timeparser.cpp entry is left in place because it costs nothing and
records the pre-move path.

Verified: every build-referenced file that exists now resolves to a TOC
entry, and every TOC entry resolves to a real file.  The one remaining
unlisted subsystem is proxy/, which is consistently absent -- no proxy
file ships, none is in any list, and proxy/Makefile.am is not shipped
either, so nothing dangles.  Whether that exclusion is intended is a
separate question.

Not verified by rebuilding: producing a corrected tarball needs the
2.14.0.9 reference tree.  The lists are correct by construction; the
proof is re-running the audit against freshly built artifacts.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Stephen Dennis 2026-08-02 20:29:46 -06:00
parent 8e15458384
commit ac6c24fef5
4 changed files with 19 additions and 0 deletions

View file

@ -145,10 +145,14 @@ include/mguests.h
include/misc.h
include/modules.h
include/mudconf.h
include/mux_format.h
include/mux_nls.h
include/mux_table.h
include/muxcli.h
include/powers.h
include/routing.h
include/sha1.h
include/shacrypt.h
include/walk.h
include/sql.h
include/sqlite_backend.h
@ -174,7 +178,10 @@ lib/libmux.cpp
lib/Makefile.am
lib/Makefile.in
lib/mathutil.cpp
lib/mux_nls.cpp
lib/mux_table.c
lib/sha1.cpp
lib/shacrypt.cpp
lib/stringutil.cpp
lib/strtod.cpp
lib/svdhash.cpp

View file

@ -190,3 +190,6 @@ src/wild.cpp
src/wiz.cpp
src/.depend
src/modules/.depend
lib/timeparser.cpp
src/modules/Makefile

View file

@ -129,10 +129,14 @@ include/mguests.h
include/misc.h
include/modules.h
include/mudconf.h
include/mux_format.h
include/mux_nls.h
include/mux_table.h
include/muxcli.h
include/powers.h
include/routing.h
include/sha1.h
include/shacrypt.h
include/walk.h
include/sql.h
include/sqlite_backend.h
@ -156,7 +160,10 @@ lib/dtoa.c
lib/libmux.cpp
lib/Makefile.am
lib/mathutil.cpp
lib/mux_nls.cpp
lib/mux_table.c
lib/sha1.cpp
lib/shacrypt.cpp
lib/stringutil.cpp
lib/strtod.cpp
lib/svdhash.cpp

View file

@ -185,3 +185,5 @@ src/version.cpp
src/walkdb.cpp
src/wild.cpp
src/wiz.cpp
lib/timeparser.cpp