build: fix v3 bundle for SBCL 2.6.5; add bundle CI; fix smoke-test trigger#1752
Merged
Conversation
The 2022-02-20 Quicklisp dist snapshot shipped named-readtables-20220220-git, which is incompatible with SBCL 2.6.5: the readtable iterator yielded entries where the char-macro function is 0 (SBCL 2.6.5 changed from NIL to 0 for absent macro characters), causing an assertion failure in check-reader-macro-conflict. The 2026-01-01 dist ships named-readtables-20260101-git which contains the upstream fix (melisgl/named-readtables commit 6eea566744, 2025-11-09): the grovel-base-chars iterator now checks (and reader-fn (not (eql reader-fn 0))) before yielding, correctly skipping absent entries under both old and new SBCL. This is also the most recent Quicklisp dist available, picking up ~4 years of other dependency updates. Closes #1703.
0340a16 to
09c392b
Compare
help2man was called with 'pgloader' relying on a PATH prefix to locate the binary at debian/pgloader/usr/bin/. This intermittently failed on push-event CI runs (exit 127 — binary not found via PATH lookup). Pass the full path directly so help2man always finds the binary regardless of how PATH is inherited by its subprocess.
bundle-ci.yml: New workflow that builds pgloader from the Quicklisp bundle and runs the full regression suite. Triggers on pull_request and push to main when Makefile, bundle/, or src/ change — exactly the files that affect the v3 bundle output. Uses pg_virtualenv (from postgresql-common) to spin up a throwaway PostgreSQL cluster for the regress tests, mirroring what debian/tests/testsuite does for autopkgtest. bundle/Makefile: Add 'prepare' before 'regress' in the test target. The prepare step creates the pgloader/stocks/ip4r databases and extensions; without it the regress targets fail immediately because the databases don't exist. smoke-test.yml: The previous trigger (release: prereleased) never fired because softprops/action-gh-release updates an existing pre-release rather than re-creating it, and GitHub only fires the prereleased event on initial publication. Switch to workflow_run so the smoke test runs automatically after every successful integration-tests run on main (which is when the v4-dev JAR is actually updated). Add an if condition so the job is skipped on workflow failure, not just on success.
'git archive ... main' fails in CI where the checkout is a detached HEAD with no local 'main' ref. HEAD always resolves correctly whether building on main, a PR branch, or a detached HEAD.
pg_virtualenv creates the cluster with the current OS user as superuser, not 'postgres'. The test Makefile defaults to PGSUPERUSER=postgres, so createdb -U postgres fails immediately. Pass PGSUPERUSER=$(id -un) to match what debian/tests/testsuite does.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The bundle has been pinned to Quicklisp dist
2022-02-20since pgloader 3.6.8. That snapshot shipsnamed-readtables-20220220-git, which fails to build under SBCL 2.6.5 (#1703).Root cause: SBCL 2.6.5 changed the internal char-macro array to store
0instead ofNILfor absent macro characters. The oldnamed-readtablesiterator tested(if reader-fn ...)— truthy for0— so it yielded characters with no real macro function attached.check-reader-macro-conflictthen found a0where it expected a function and signalled an assertion error.Changes
Makefile— bumpBUNDLEDISTfrom2022-02-20to2026-01-01, the most recent available Quicklisp dist. That dist shipsnamed-readtables-20260101-git(upstream fix by melisgl, 2025-11-09): thegrovel-base-charsiterator now tests(and reader-fn (not (eql reader-fn 0)))before yielding. Also picks up ~4 years of other dependency updates.debian/rules— fix intermittenthelp2manfailure (exit 127) in the Debian package build. Theoverride_dh_installman-archrecipe was callinghelp2man pgloaderand relying on aPATH=prefix to locate the binary; that PATH wasn't consistently inherited by help2man's subprocess. Pass the full path directly instead..github/workflows/bundle-ci.yml— new CI workflow that builds pgloader from the Quicklisp bundle and runs the full regression suite. Triggers onMakefile,bundle/**, orsrc/**changes. Usespg_virtualenvto spin up a throwaway PostgreSQL cluster, mirroring howdebian/tests/testsuiteruns autopkgtest.bundle/Makefile— addpreparebeforeregressin thetesttarget. Without itmake test-bundlecalledmake regressdirectly against databases that hadn't been created yet..github/workflows/smoke-test.yml— fix smoke-test trigger. The previousrelease: prereleasedevent never fired becausesoftprops/action-gh-releaseupdates an existing pre-release rather than re-creating it, and GitHub only firesprereleasedon initial publication. Switch toworkflow_runtriggered afterpgloader v4 Integration Testscompletes successfully on main — i.e. exactly when the JAR is actually updated.Validation
The new
bundle-ci.ymlworkflow runsmake bundle(downloads pinned dist, compiles, checks--version) followed bymake test-bundle(full regression suite against the bundle binary).Closes #1703.