commit - d938d900f498a61d393c96bc79c0477cc5477209
commit + f3d1acfbd1e73e25b5c6dd5ac6e2e9c7c9ddfd35
blob - a51b8fb17ec60e7d0331f4e5096656af7857cc4a
blob + c6f964010afd0dda8561527770472213679fd99b
--- docs/openbsd-development.md
+++ docs/openbsd-development.md
then archives the exact `HEAD` commit with the computed `DISTNAME` prefix,
installs that archive in the computed distfile directory, and runs both
`makesum` and `checksum`. The old staged port is restored if validation fails.
+The target runs entirely as the ordinary ports user and never invokes `doas`;
+that user must be able to write the `mystuff` and computed distfile directories.
`git archive` deliberately excludes `.git`, build objects, untracked files,
and uncommitted changes. The generated `distinfo` belongs only to the
blob - e4fa9c1c953f75b146c202c66daef665238b5ee5
blob + a2551a99413cd3d754656a085ddc4f9fb6fb6877
--- regress/local_port/run.sh
+++ regress/local_port/run.sh
#!/bin/sh
set -eu
printf '%s\n' "$*" >>"$FUGU_TEST_DOAS_LOG"
-exec "$@"
+exit 99
EOF
chmod 0755 "$repo/scripts/local-port" "$bindir/port-make" "$bindir/doas"
export FUGU_LOCAL_PORTDIR="$portdir"
export FUGU_LOCAL_PORT_MAKE="$bindir/port-make"
-export FUGU_LOCAL_PORT_DOAS="$bindir/doas"
export FUGU_TEST_PORTDIR="$portdir"
export FUGU_TEST_PORTSDIR="$portsdir"
export FUGU_TEST_DISTDIR="$distdir"
export FUGU_TEST_FULLPKGPATH=productivity/fugu
export FUGU_TEST_MAKE_LOG="$dir/make.log"
export FUGU_TEST_DOAS_LOG="$dir/doas.log"
+PATH=$bindir:$PATH
+export PATH
make -s -C "$repo" local-port >"$dir/first.out" 2>"$dir/first.err"
rc=$?
grep -q '^.*checksum$' "$dir/make.log"
ok "framework: computed package path, makesum, and checksum are used" $?
-grep -Fq "install -m 0644" "$dir/doas.log" &&
- grep -Fq "$distdir/fugu-0.3.tar.gz" "$dir/doas.log"
-ok "privilege: only staging operations cross the doas adapter" $?
+test ! -e "$dir/doas.log"
+ok "privilege: port and distfile staging never invoke doas" $?
printf 'uncommitted\n' >"$repo/dirty.txt"
if make -s -C "$repo" local-port >"$dir/dirty.out" \
blob - 84bbe48767d5de1590a9b2ef217f1f31a0979b74
blob + 5e89f159ae1555784ddb6d408d2165b101b601e1
--- scripts/local-port
+++ scripts/local-port
port_source=$root/port/productivity/fugu
port_dir=${FUGU_LOCAL_PORTDIR:-/usr/ports/mystuff/productivity/fugu}
port_make=${FUGU_LOCAL_PORT_MAKE:-make}
-doas=${FUGU_LOCAL_PORT_DOAS:-doas}
expected_pkgpath=productivity/fugu
tmp=
trap cleanup EXIT
trap 'exit 1' HUP INT TERM
-run_privileged()
-{
- "$doas" "$@"
-}
-
port_value()
{
name=$1
command -v git >/dev/null 2>&1 || die "git is not installed"
command -v "$port_make" >/dev/null 2>&1 ||
die "$port_make is not executable"
-command -v "$doas" >/dev/null 2>&1 || die "$doas is not executable"
[ -d "$port_source" ] || die "$port_source is missing"
case "$port_dir" in
commit=$(git -C "$root" rev-parse --verify HEAD) ||
die "cannot resolve the current commit"
-owner=$(id -un)
-group=$(id -gn)
port_parent=${port_dir%/fugu}
-run_privileged install -d -o "$owner" -g "$group" "$port_parent" ||
+install -d "$port_parent" ||
die "cannot prepare $port_parent"
stage=${port_dir}.new.$$
digest=$(sha256 -q "$archive_tmp") || die "cannot checksum $archive_tmp"
if [ ! -d "$fulldistdir" ]; then
- run_privileged install -d -m 0755 "$fulldistdir" ||
+ install -d -m 0755 "$fulldistdir" ||
die "cannot create $fulldistdir"
fi
-run_privileged install -m 0644 "$archive_tmp" "$fulldistdir/$archive" ||
+install -m 0644 "$archive_tmp" "$fulldistdir/$archive" ||
die "cannot install $archive in $fulldistdir"
"$port_make" -C "$port_dir" makesum || die "make makesum failed"