From nobody Tue Sep 16 16:10:03 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cR6LM2cSdz67WqB; Tue, 16 Sep 2025 16:10:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cR6LM23m8z3vpS; Tue, 16 Sep 2025 16:10:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1758039003; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uyujhfx7C++/4nOgQZBVsCcxPILkQ6UAYnBKb2Fm7Cs=; b=tlsT+xcubPpSP/ZXGAvPcxtx6xlR9EeoDSYKBecyQFjgiVont/sDQRxMSYk8Rk2kUc3uxj 4HcUI3VuRhHTo2CX23iE6IS6/p0N2F0A+LCBw8r8UeWJC5rmGTgtrwguS8LPH6npLpp6aX WL18PT0TzgfGWIguz3F4H/Ei8VioTf/JQCGXQRtbbiBBl6a9/Mb8Zaf+V5oDAKw9/075vU yvrtjsrqjp8sIDzu8vcp4+erw7/tTGziyj1A23rMPl0d9Caxie1kxC+u0LVukUcUZnUeIH d2HT2qnP5aoD6iXfdiL5wbGGyfo+HAlGeoVPrDsS/YGyFs8knLzhE6/C6Uaq5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1758039003; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uyujhfx7C++/4nOgQZBVsCcxPILkQ6UAYnBKb2Fm7Cs=; b=ni9BLa5KlqaAOpkcL+38bT23tyjDreD3qe/UZGZvcFlhubqZpAanfYPJptCIHuX5KFPPqE 2W4ULHzv8J3GhZlBOB74Cxv71JuEYVDc2FZvMY6q+YPQ4L6Z9xRgd06MJSH+DIcVWUQfyp kBGQ1WmmtKINJLAJaFL/QmzZy0Wn5QvFhMjuSvd1FQz1Qzgjau84gEzN8Nwbt1aQyNP9XI m9vrwofMVwmnrwppns7EFi7R3Vuj7iwh+v3vy+LtnXTM155EkPLBLGsDk0ZSUO0Zf/3Gqb IQ9hx25X5yjJQfvGrSGCM3GyJk6cZyluG0LtYFq3MsEvlqqB1HbXOmboyrEjwQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1758039003; a=rsa-sha256; cv=none; b=Hw4bXgCTWh2v4RMNkIoadF2pUqTgmjXhQQknLxRP1C+eNPsO5KpjMWttZkzROYRBWY6gAx KFEX0JFVBjLjMuedw9lULQ80Lc0jgACXQls2jlD9R2cVySYsNOyNgWQfStqj9jzQuuVlay m8a9ofKwSshpCrer3R4smfv8u0miNdcdCtm/eScbJvyfw0Xr4gDjOZh4/QC27yV73QzwVT I+oGU3Dlq6ERQ5MGfiWeXmKQ49LyAabJDo7LGyUbfShkv8E08/nO5S9mBxPUHYeCj89jNG GaPEcFzMmb960YMplo4u+6bkxhYTMVwFizmvxyYJxP1ZXpN26MdW84uTR7w2gA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cR6LM1Z8cznkL; Tue, 16 Sep 2025 16:10:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 58GGA3eP013199; Tue, 16 Sep 2025 16:10:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 58GGA3Xe013194; Tue, 16 Sep 2025 16:10:03 GMT (envelope-from git) Date: Tue, 16 Sep 2025 16:10:03 GMT Message-Id: <202509161610.58GGA3Xe013194@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 5eb917426e0a - main - release: Enable installing packages as a non-root user List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5eb917426e0aab1e82c7b0e7239724d18bae206a Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=5eb917426e0aab1e82c7b0e7239724d18bae206a commit 5eb917426e0aab1e82c7b0e7239724d18bae206a Author: Mark Johnston AuthorDate: 2025-09-16 16:05:06 +0000 Commit: Mark Johnston CommitDate: 2025-09-16 16:09:55 +0000 release: Enable installing packages as a non-root user Provide variables, PKG_REPOS_DIR and PKG_REPO_NAME, to allow the user to configure the source package repository. Configure pkg to emit added files to a metalog which gets concatenated with the main metalog immediately before we build the root filesystem. Reviewed by: cperciva, emaste MFC after: 3 days Sponsored by: The FreeBSD Foundation Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D52453 --- release/Makefile.vm | 6 ++++++ release/tools/vmimage.subr | 35 ++++++++++++++++++++++++++--------- share/man/man7/release.7 | 15 ++++++++++++++- 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/release/Makefile.vm b/release/Makefile.vm index 8375650cd9aa..25c37ade1121 100644 --- a/release/Makefile.vm +++ b/release/Makefile.vm @@ -138,6 +138,9 @@ cw-${_CW:tl}-${_FS}-${_FMT}: ${QEMUTGT} EC2BASEIMG=${.OBJDIR}/${EC2-BASE${_FS:tu}${_FMT:tu}IMAGE} \ ${WITHOUT_QEMU:DWITHOUT_QEMU=true} \ ${NO_ROOT:DNO_ROOT=true} \ + PKG_CMD=${PKG_CMD:Upkg} \ + PKG_REPOS_DIR=${PKG_REPOS_DIR:U${.OBJDIR}/${.TARGET}/etc/pkg} \ + PKG_REPO_NAME=${PKG_REPO_NAME:UFreeBSD-ports} \ PKG_INSTALL_EPOCH=${PKG_INSTALL_EPOCH:U${GITEPOCH}} \ ${.CURDIR}/scripts/mk-vmimage.sh \ -C ${.CURDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} \ @@ -191,6 +194,9 @@ vm-image: ${QEMUTGT} QEMUSTATIC=${QEMUSTATIC} \ ${WITHOUT_QEMU:DWITHOUT_QEMU=true} \ ${NO_ROOT:DNO_ROOT=true} \ + PKG_CMD=${PKG_CMD:Upkg} \ + PKG_REPOS_DIR=${PKG_REPOS_DIR:U${.OBJDIR}/${.TARGET}-${FORMAT}-${FS}/etc/pkg} \ + PKG_REPO_NAME=${PKG_REPO_NAME:UFreeBSD-ports} \ PKG_INSTALL_EPOCH=${PKG_INSTALL_EPOCH:U${GITEPOCH}} \ ${.CURDIR}/scripts/mk-vmimage.sh \ -C ${.CURDIR}/tools/vmimage.subr \ diff --git a/release/tools/vmimage.subr b/release/tools/vmimage.subr index 41f889a1e665..b3187efd6526 100644 --- a/release/tools/vmimage.subr +++ b/release/tools/vmimage.subr @@ -163,19 +163,32 @@ vm_extra_enable_services() { } vm_extra_install_packages() { - if [ -n "${WITHOUT_QEMU}" ]; then - return 0 - fi - if [ -z "${VM_EXTRA_PACKAGES}" ]; then return 0 fi - chroot ${DESTDIR} ${EMULATOR} env ASSUME_ALWAYS_YES=yes \ - /usr/sbin/pkg bootstrap -y - for p in ${VM_EXTRA_PACKAGES}; do + if [ -n "${NO_ROOT}" ]; then + for pkg in ${VM_EXTRA_PACKAGES}; do + INSTALL_AS_USER=yes \ + ${PKG_CMD} \ + -o METALOG=${DESTDIR}/METALOG.pkg \ + -o REPOS_DIR=${PKG_REPOS_DIR} \ + -o PKG_DBDIR=${DESTDIR}/var/db/pkg \ + -r ${DESTDIR} \ + install -y -r ${PKG_REPO_NAME} $pkg + done + metalog_add_data ./var/db/pkg/local.sqlite + else + if [ -n "${WITHOUT_QEMU}" ]; then + return 0 + fi + chroot ${DESTDIR} ${EMULATOR} env ASSUME_ALWAYS_YES=yes \ - /usr/sbin/pkg install -y ${p} - done + /usr/sbin/pkg bootstrap -y + for p in ${VM_EXTRA_PACKAGES}; do + chroot ${DESTDIR} ${EMULATOR} env ASSUME_ALWAYS_YES=yes \ + /usr/sbin/pkg install -y ${p} + done + fi return 0 } @@ -219,6 +232,10 @@ vm_extra_pkg_rmcache() { buildfs() { local md tmppool + if [ -f ${DESTDIR}/METALOG.pkg ]; then + cat ${DESTDIR}/METALOG.pkg >> ${DESTDIR}/METALOG + fi + case "${VMFS}" in ufs) cd ${DESTDIR} && ${MAKEFS} ${MAKEFSARGS} -o label=rootfs -o version=2 -o softupdates=1 \ diff --git a/share/man/man7/release.7 b/share/man/man7/release.7 index 36c14afe0bf1..05f80374926f 100644 --- a/share/man/man7/release.7 +++ b/share/man/man7/release.7 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd May 20, 2025 +.Dd September 11, 2025 .Dt RELEASE 7 .Os .Sh NAME @@ -286,6 +286,19 @@ is expected to exist by alternative means. Include base system packages for use with .Xr pkg 8 on the install media, instead of legacy tarball distribution sets. +.It Va PKG_CMD +A path to the +.Xr pkg 8 +executable to use when installing packages in release images as a non-root user. +.It Va PKG_REPOS_DIR +An optional path to a directory containing +.Xr pkg 8 +repository configuration files. +These configuration files will be used when installing packages in release +images as a non-root user. +.It Va PKG_REPO_NAME +The name of the repository configuration to use when installing packages in +release images as a non-root user. .El .Sh EMBEDDED BUILDS The following