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 82b0097.builds freebsd.yml

CI: Add shellcheck and remove the kyua report on failure and cat the log instead
DeltaFile
+2-1.builds/freebsd.yml
+2-11 files

FreeBSD/poudriere 4c66122.builds freebsd.yml

CI: remove kyua dep since it is now part of the base system
DeltaFile
+0-1.builds/freebsd.yml
+0-11 files

FreeBSD/poudriere f853411src/share/poudriere image.sh

image: Use msg_n/done idiom for ESP image creation status

make_esp_file() reported "Creating ESP image" and "ESP Image created"
as two separate complete lines via msg(), even though makefs's own
output is redirected to /dev/null and the operation can take a
noticeable amount of time. Use the msg_n "...done" idiom used
elsewhere for silent, potentially slow operations (e.g. jail removal)
so it reads as a single in-progress status line instead of two
disconnected facts.
DeltaFile
+2-2src/share/poudriere/image.sh
+2-21 files

FreeBSD/poudriere 8aafac8src/share/poudriere common.sh

Add missing FLAVOR to stage-qa and check-plist calls

For example, `poudriere testport -NNi devel/freebsd-gcc15 at amd64`
will correctly build the amd64 flavor, but will attempt to
stage-qa and check-plist for the aarch64 flavor because it
becomes the default flavor through alphabetic sorting.
DeltaFile
+2-2src/share/poudriere/common.sh
+2-21 files

FreeBSD/poudriere 2eb8e1asrc/share/poudriere common.sh

testport/bulk -i: Pass FLAVOR when looking up WRKDIR in interactive motd

The WRKDIR line queried `make -V WRKDIR` without FLAVOR, so a flavored
port always reported its default flavor's work directory instead of
the one actually built and installed -- e.g. audio/baresip built with
FLAVOR=nox11 showed work-default. run-depends and install-package
already pass ${flavor:+FLAVOR=${flavor}} a few lines above; do the
same here.

Reproduced on misc/py-polars-runtime (FLAVOR=64 showing work-compat)
and audio/baresip (FLAVOR=nox11 showing work-default); a port whose
single auto-generated flavor happens to match the default (e.g.
security/py-biscuit-python) masks the bug, which is likely why it
went unnoticed.

Co-Authored-By: Claude Sonnet 5 <noreply at anthropic.com>
DeltaFile
+1-1src/share/poudriere/common.sh
+1-11 files

FreeBSD/poudriere 4cb7896src/share/poudriere ports.sh jail.sh

jail, ports: Fix garbled output when checking out/updating with -v

The svn/git checkout and update paths in both ports.sh and jail.sh's
install_from_vcs() used msg_n() followed by the raw command's own
output and a glued-on " done", relying on the command producing no
output of its own. With -v that assumption is wrong: quiet mode is
disabled, so svn/git's own progress output gets appended directly
onto the unterminated header line, and " done" gets glued onto the
tool's own last output line instead of starting a new one.

Use msg() instead of msg_n() when not running quiet, so the header
gets its own line before the command's output, and drop the redundant
trailing "done" for that case since the tool's own output already
signals completion. Apply the same fix to jail.sh, which had the
identical pattern for fetching/updating jail sources, and add the
existing "!! Any changes here should be considered for ... too."
cross-reference comment to the svn cases in both files so the two
code paths stay in sync going forward.


    [3 lines not shown]
DeltaFile
+26-8src/share/poudriere/ports.sh
+26-8src/share/poudriere/jail.sh
+52-162 files

FreeBSD/poudriere 2e891d4src/poudriered poudriered.c

poudriered: retain queue while listing it

The list operation passes the global queue to send_object(), which
consumes its argument. A subsequent list request can then release the
stale queue again and terminate the daemon.

Take a temporary queue reference for the response so the global queue
remains valid.

(cherry picked from commit dbabedc99030f7d13696a8dd4382c4756c31fb9d)
DeltaFile
+1-1src/poudriered/poudriered.c
+1-11 files

FreeBSD/poudriere 8a640dbsrc/poudriered poudriered.c

Merge pull request #1369 from acts-1631/fix/poudriered-list-queue

poudriered: retain queue while listing it
DeltaFile
+1-1src/poudriered/poudriered.c
+1-11 files

FreeBSD/poudriere dbabedcsrc/poudriered poudriered.c

poudriered: retain queue while listing it

The list operation passes the global queue to send_object(), which
consumes its argument. A subsequent list request can then release the
stale queue again and terminate the daemon.

Take a temporary queue reference for the response so the global queue
remains valid.
DeltaFile
+1-1src/poudriered/poudriered.c
+1-11 files

FreeBSD/poudriere 940eb10src/share/poudriere common.sh

Merge pull request #1366 from acts-1631/fix/package-output-symlink

Constrain package-output symlinks before host import
DeltaFile
+32-4src/share/poudriere/common.sh
+32-41 files

FreeBSD/poudriere d558fcasrc/share/poudriere common.sh

Do not import symlinks from non-pkg package builds

The package phase lets the jail build user write to a host-backed
/.npkg directory. build_port() imported every file and symlink from
that directory into the host package repository. An absolute symlink
changes meaning at this boundary: it points inside the jail while
mounted but at the host after import.

Only the pkg bootstrap variants need package-manager compatibility
links. Process those links before their targets and reject any that
resolve outside staging. Import only regular files for other ports,
preventing their build output from introducing host-resolved symlinks
into the repository.
DeltaFile
+32-4src/share/poudriere/common.sh
+32-41 files

FreeBSD/poudriere 8f99bacsrc/poudriered poudriered.c

Reject untrusted poudriered log paths

Poudriered allowed any client-authorized command to specify a log
path. The root daemon created its parent directories and opened the
path with O_TRUNC.

Reject log fields on client requests. Preserve configured schedule
logs, use a root-owned /var/log fallback, and refuse to follow final
symlinks when opening logs.

(cherry picked from commit 01d5de2876a23701e41957826cd8115702c41684)
DeltaFile
+15-7src/poudriered/poudriered.c
+15-71 files

FreeBSD/poudriere ef94a32src/poudriered poudriered.c

Merge pull request #1365 from acts-1631/fix/poudriered-log-confinement

Reject client-supplied poudriered log paths
DeltaFile
+15-7src/poudriered/poudriered.c
+15-71 files

FreeBSD/poudriere 9f20e06src/share/poudriere/html build.html

build.html: update "Failed Ports" title bar to match others

a63486e introduced a new title bar style, but failed_div seems to have have been missed. This brings failed_div into line with the others.
DeltaFile
+3-1src/share/poudriere/html/build.html
+3-11 files

FreeBSD/poudriere 121d9e8src/share/poudriere common.sh

Merge pull request #1363 from acts-1631/fix/pkgname-staging-validation

Reject unsafe PKGNAME values before package staging
DeltaFile
+22-0src/share/poudriere/common.sh
+22-01 files

FreeBSD/poudriere 01d5de2src/poudriered poudriered.c

Reject untrusted poudriered log paths

Poudriered allowed any client-authorized command to specify a log
path. The root daemon created its parent directories and opened the
path with O_TRUNC.

Reject log fields on client requests. Preserve configured schedule
logs, use a root-owned /var/log fallback, and refuse to follow final
symlinks when opening logs.
DeltaFile
+15-7src/poudriered/poudriered.c
+15-71 files

FreeBSD/poudriere e90c7basrc/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.
DeltaFile
+22-0src/share/poudriere/common.sh
+22-01 files

FreeBSD/poudriere cf9a6a9src/share/poudriere common.sh

Merge pull request #1362 from SuperScript/fetch-fix

Fix remote deps name adjustment to allow pkg fetch
DeltaFile
+1-1src/share/poudriere/common.sh
+1-11 files

FreeBSD/poudriere db0c8b4src/share/poudriere common.sh

Fix remote deps name adjustment to allow pkg fetch

Commit c51fe16 mishandled sub quoting and args, preventing name match
required for pkg fetch.
DeltaFile
+1-1src/share/poudriere/common.sh
+1-11 files

FreeBSD/poudriere 61fa530. 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 5c16065src/man poudriere-ports.8, src/share/poudriere ports.sh

ports: Support branchless Subversion checkouts

This fixes #1352
DeltaFile
+4-0src/man/poudriere-ports.8
+2-1src/share/poudriere/ports.sh
+6-12 files

FreeBSD/poudriere 3785e9asrc/man poudriere-ports.8

poudriere-ports.8: Use consistent style for default values
DeltaFile
+7-3src/man/poudriere-ports.8
+7-31 files

FreeBSD/poudriere 169bdf0.builds freebsd.yml

Add sourcehut CI config
DeltaFile
+16-0.builds/freebsd.yml
+16-01 files

FreeBSD/poudriere ace1d19src/man poudriere-status.8 poudriere-image.8, src/share/poudriere common.sh

Merge pull request #1341 from fematarazzo/fix/typos

fix: correct typos in comments and man pages
DeltaFile
+1-1src/share/poudriere/include/pkgqueue.sh
+1-1src/share/poudriere/common.sh
+1-1src/man/poudriere-status.8
+1-1src/man/poudriere-image.8
+4-44 files

FreeBSD/poudriere abc3404src/share/poudriere common.sh

fix: 'will will' -> 'we will' in common.sh
DeltaFile
+1-1src/share/poudriere/common.sh
+1-11 files

FreeBSD/poudriere 01f3e3bsrc/man poudriere-status.8

fix: remove duplicate 'by' in poudriere-status.8
DeltaFile
+1-1src/man/poudriere-status.8
+1-11 files

FreeBSD/poudriere 247b477src/man poudriere-image.8

fix: remove duplicate 'that' in poudriere-image.8
DeltaFile
+1-1src/man/poudriere-image.8
+1-11 files