FreeBSD/poudriere 2f81c1a — src/share/poudriere/include shared_hash.sh, test shash-basic.sh

shash_get: Remove globbing support.

This support is not needed to function and adds complexity for
alternative backends for shash.

Still allow _shash_unset() to use globbing as an implementation detail
of shash_remove_var().
DeltaFile
+44-61src/share/poudriere/include/shared_hash.sh
+9-9test/shash-basic.sh
+53-702 files

FreeBSD/poudriere af728a2 — src/share/poudriere/include shared_hash.sh

shash shm: Mark some functions unimplemented
DeltaFile
+12-0src/share/poudriere/include/shared_hash.sh
+12-01 files

FreeBSD/poudriere fe4bb5a — src/share/poudriere/include shared_hash.sh

shash_remove_var/unset: these must mark the data deleted
DeltaFile
+20-5src/share/poudriere/include/shared_hash.sh
+20-51 files

FreeBSD/poudriere 805b0e9 — src/poudriere-sh shm_hash.c

shm_hash_get: Trim trailing IFS chars to match file version
DeltaFile
+12-0src/poudriere-sh/shm_hash.c
+12-01 files

FreeBSD/poudriere 4d5fa12 — src/share/poudriere common.sh, src/share/poudriere/include shared_hash.sh

shash_init_shm sets prefix so shash interface should unset it
DeltaFile
+0-2src/share/poudriere/common.sh
+2-0src/share/poudriere/include/shared_hash.sh
+2-22 files

FreeBSD/poudriere e0eee07 — src/share/poudriere common.sh, src/share/poudriere/include shared_hash.sh

Move shash_init_shm/shash_cleanup_shm to shared_hash.sh

- Pass in prefix as well
DeltaFile
+1-40src/share/poudriere/common.sh
+40-0src/share/poudriere/include/shared_hash.sh
+41-402 files

FreeBSD/poudriere 4385980 — test runtest.sh

runtest: Allow SHASH_USE_SHM in env
DeltaFile
+1-0test/runtest.sh
+1-01 files

FreeBSD/poudriere f50947a — . Makefile.in, src/poudriere-sh builtins-poudriere.def shm_hash.c

shm: add new SHASH_USE_SHM, do use a shm instead of files

For 65k ports basically we go from 2.5GB to 160B used saving ~95% of
memory
DeltaFile
+677-0src/poudriere-sh/shm_hash.c
+45-0src/share/poudriere/common.sh
+40-0src/share/poudriere/include/shared_hash.sh
+25-2Makefile.in
+6-6src/share/poudriere/include/pkg.sh
+5-0src/poudriere-sh/builtins-poudriere.def
+798-82 files not shown
+800-98 files

FreeBSD/poudriere cb1df4b — src/share/poudriere/include shared_hash.sh

shash: some style changes

- Prefer "set" to match existing styles
- Add some :? to match existing assertions
- Use `|| return` to avoid, and not rely on, `set -e` handler
DeltaFile
+20-22src/share/poudriere/include/shared_hash.sh
+20-221 files

FreeBSD/poudriere 09d0273 — src/poudriere-sh shm_hash.c

shm builtin: Add some assertions for INTOFF and protect shm_unlink.

is_int_on() is misnamed. Any value >0 means int is suppressed.
DeltaFile
+5-0src/poudriere-sh/shm_hash.c
+5-01 files

FreeBSD/poudriere 407a365 — src/share/poudriere common.sh

shash_cleanup_shm: Avoid leaked error, and use mapfile_read_loop
DeltaFile
+4-3src/share/poudriere/common.sh
+4-31 files

FreeBSD/poudriere 928578b — src/share/poudriere/include shared_hash.sh

fixup! shm: add new SHASH_USE_SHM, do use a shm instead of files
DeltaFile
+7-6src/share/poudriere/include/shared_hash.sh
+7-61 files

FreeBSD/poudriere 6281053 — src/share/poudriere/include shared_hash.sh

shash_remove: Pass along shash_unset() error
DeltaFile
+1-1src/share/poudriere/include/shared_hash.sh
+1-11 files

FreeBSD/poudriere b000804 — src/share/poudriere/include shared_hash.sh

shash_get shm: Handle returning to stdout
DeltaFile
+12-1src/share/poudriere/include/shared_hash.sh
+12-11 files

FreeBSD/poudriere 121d3f6 — test shash-race-piped.sh shash-race-piped-noclobber.sh

shash tests: Add shm test support
DeltaFile
+14-0test/shash-race-piped.sh
+14-0test/shash-race-piped-noclobber.sh
+14-0test/shash-race-noclobber.sh
+14-0test/shash-noclobber.sh
+14-0test/shash-noclobber-piped.sh
+14-0test/shash-basic.sh
+84-01 files not shown
+98-07 files

FreeBSD/poudriere 8b41a68 — src/share/poudriere ports.sh jail.sh

jail, ports: Avoid set -e trap in quiet-mode "done" idiom

4cb78962 introduced `[ -n "${quiet}" ] && echo " done"` in the svn/git
checkout and update paths of install_from_vcs() (jail.sh) and ports.sh.
When quiet is unset the test is false, so the statement returns exit 1;
under set -e a bare call to the enclosing function/case arm would abort
the script right after that line runs, as seen with the identical
pattern in image.sh (PR #1378). None of these 8 occurrences are
currently a function's last statement, so they don't trip today, but
the pattern is fragile under refactoring. Use an if/fi block instead,
matching the idiom already used for the preceding header line, so the
statement always returns 0.

This closes #1387
DeltaFile
+12-4src/share/poudriere/ports.sh
+12-4src/share/poudriere/jail.sh
+24-82 files

FreeBSD/poudriere 9cc4067 — src/share/poudriere jail.sh

jail: Reject a period in the new name on rename

create_jail() rejects a period in JAILNAME since jail(8) names cannot
contain one, but rename_jail() never validated NEWJAILNAME at all, so
'poudriere jail -r' could rename a jail to a name jail(8) itself would
reject. Apply the same check used at creation.

This closes #1388
DeltaFile
+2-0src/share/poudriere/jail.sh
+2-01 files

FreeBSD/poudriere d504b2a — src/share/poudriere/include pkg.sh

pkg: Add trailing ellipsis to repository signing status messages

Each of these msg() calls is immediately followed by an unredirected
injail pkg-repo invocation whose own output streams directly to the
console right after the header, the same shape as other "action
followed by unbuffered command output" status lines that already use
a trailing "...". pkg repo has no quiet/verbose toggle in play here
(PKG_REPO_FLAGS only carries --hash/--symlink), so this is a plain
ellipsis fix, not an idiom conversion.

This closes #1381
DeltaFile
+3-3src/share/poudriere/include/pkg.sh
+3-31 files

FreeBSD/poudriere e0c11d8 — src/share/poudriere image.sh

image: Use quiet-aware msg idiom for pkgbase install status

install_world_from_pkgbase() always reported "Installing base
packages" / "Base packages installed" as two separate msg() lines,
regardless of PKG_QUIET. Under the default quiet pkg install
(-q, unless -v was passed), nothing prints between them, so treat it
like the other silent/slow operations with msg_n "...done". When -v
clears PKG_QUIET, pkg's own install output streams between the
header and completion, so keep the header on its own line via msg()
with a trailing "..." and skip the redundant "done", matching the
quiet-vs-verbose idiom already used for jail.sh's install_from_vcs().
DeltaFile
+8-2src/share/poudriere/image.sh
+8-21 files

FreeBSD/poudriere 809ac24 — src/share/poudriere ports.sh

Merge pull request #1385 from michael-o/fix-ports-name-period-check
DeltaFile
+1-1src/share/poudriere/ports.sh
+1-11 files

FreeBSD/poudriere 92ed04b — src/share/poudriere image_zfs.sh

image: Use msg_n/done idiom for ZFS image build status messages

zfs send/recv, zpool create, and zfs create/snapshot are all silent
on success and can take a noticeable amount of time (especially for
larger images), but were reported via standalone msg() calls with no
completion signal. Switch to the msg_n "...done" idiom used elsewhere
for silent, potentially slow operations.
DeltaFile
+10-5src/share/poudriere/image_zfs.sh
+10-51 files

FreeBSD/poudriere b22f1fb — src/share/poudriere image.sh

image: Use msg_n/done idiom for install_world tar status

install_world() reported "Installing world with tar" and "Installing
world done" as two separate msg() lines, even though both the tar
pipeline and make -s are always silent on success and the operation
(copying the full world plus delete-old) can take a while. Switch to
the msg_n "...done" idiom used elsewhere for silent, potentially slow
operations.
DeltaFile
+2-2src/share/poudriere/image.sh
+2-21 files

FreeBSD/poudriere 4257d54 — src/share/poudriere jail.sh

jail: Add trailing ellipsis to make/freebsd-update status messages

Each of these msg() calls is immediately followed by an unredirected
external command (make or freebsd-update) whose own real-time output
streams directly to the console right after the header, with no
paired completion message -- the command's own output, or the
err()/msg_warn() on failure, is what signals progress/completion.
Add a trailing "..." so the header reads as in-progress rather than
a standalone statement, consistent with msg_n() callers elsewhere.
DeltaFile
+8-8src/share/poudriere/jail.sh
+8-81 files

FreeBSD/poudriere 17a2953 — src/share/poudriere image.sh

image: Use msg_n/done idiom for miniroot creation status

mkminiroot() reported "Making miniroot" as a standalone msg() even
though the function is mostly silent and can take a noticeable
amount of time (copying files, resolving shared library deps, and
running makefs/gzip). Of its steps, only makefs writes unredirected
output to stdout; gzip -9 without -v is already silent. Redirect
makefs's output to /dev/null, matching the same treatment already
used for its sibling make_esp_file(), and switch to the msg_n
"...done" idiom used elsewhere for silent, potentially slow
operations so the whole function reports as one in-progress status
line instead of a header with no matching completion.
DeltaFile
+4-2src/share/poudriere/image.sh
+4-21 files

FreeBSD/poudriere 21d009a — src/share/poudriere common.sh

build_port: Add trailing ellipsis to shared library dependency check

The readelf/grep output for the NEEDED library list prints directly
after this status line, so it should read as in-progress like other
such messages instead of a standalone statement.
DeltaFile
+1-1src/share/poudriere/common.sh
+1-11 files

FreeBSD/poudriere d92fb7c — src/share/poudriere common.sh

Reject unsafe package names from ports metadata

PKGNAME is used to construct host-side package staging paths. A port
can supply traversal components and cause those paths to escape the
staging directory.

Validate package names when reading port metadata and before a build
worker uses one. This prevents path separators and dot traversal
components from reaching host filesystem operations.

(cherry picked from commit e90c7ba59dbb1b42b9e83029e88c570caf29d632)

Conflicts:
        src/share/poudriere/common.sh

Issue #1363
DeltaFile
+22-0src/share/poudriere/common.sh
+22-01 files

FreeBSD/poudriere eedb18a — . README.md

README: point the build badge at SourceHut

Cirrus CI stopped running jobs on 2026-06-01 when Cirrus Labs joined OpenAI,
so the badge no longer renders and its link is dead.  SourceHut has been
building poudriere since 2026-05-05 via .builds/freebsd.yml.

Fixes #1331
DeltaFile
+1-1README.md
+1-11 files

FreeBSD/poudriere 499ec8b — .builds freebsd.yml

CI: Fix path to the test-suite logfile
DeltaFile
+1-1.builds/freebsd.yml
+1-11 files

FreeBSD/poudriere 7c07ad7 — .builds freebsd.yml

CI: Archive the test log instead of cat'ing it since it is too long
DeltaFile
+3-1.builds/freebsd.yml
+3-11 files

FreeBSD/poudriere b4cb725 — src/share/poudriere ports.sh

ports: Fix period check in ports tree name validation

The create-time validation matched "*:*" (colon) but the error
message says "cannot contain a period (.)", citing jail(8)'s
hierarchical dot-separated naming. jail_start()'s equivalent checks
for jailname/ptname/setname (common.sh) correctly use "*.*" -- this
was the only place with the mismatched pattern, so a period in
PTNAME was silently accepted instead of being rejected as documented.
DeltaFile
+1-1src/share/poudriere/ports.sh
+1-11 files