From nobody Tue Sep 30 15:23:31 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 4cbhfC6lD9z69F04; Tue, 30 Sep 2025 15:23:31 +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 4cbhfC4zBTz3LTG; Tue, 30 Sep 2025 15:23:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1759245811; 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=VnNznOW9jsuZMbFgIonOvNCB9fpjL3PGzEBzSim9+DU=; b=A7E2J/RxrJiYlX+brZRJreq1Ufpd2wG3UG3MwcLE+2zNlYjOHi8/Cz8SDV6vuxPV5J4DX1 LGXBoQxoS7HDRVFijt7/uRblxMlUcevrEuG57o1d1kMJGy5N+3BfJT/sranBMHRGmU2gNl 4W1elQnqdvnbJn03UICrhLPJWw6/AvdcLN5GoXQW7D4C/nk65jPpkPTe6FgPjdyx5kDCQx AIybkfXin1qrU3ExGuGOzEvRIqMZKw/qXf9/u+IqpwgnVViCmneCHKCL83loy9V2nyrNyF EdwBs6k2JJM3OnAF4bvsHgvLrkl86ATg/McRVSZ7lXlPsBOW6cKV65w9u74Mkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1759245811; 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=VnNznOW9jsuZMbFgIonOvNCB9fpjL3PGzEBzSim9+DU=; b=L9Wa797aTbC8mdeMVqAVJTF55P3WfcJSntIL4VrRIf9K5fgSgH1eypsKBbb+hLwgaVHpzv ZKzZ3zhgNuiB+kqBSM7tgrFYp+imnpLGn2aB3hACLvRR0GZ7GS8n+lAgrorjmO8WGgn8hR nZz4i1PtnAemv5/uM+5yvOTyS9+FTKn8SPvBjhMqm1vZPMMzI42A6va+Hf5Z56SjlK6hP9 qcT6U7OSkn0DPPIq070GRtzxAOl5piv0CpoCWxFlpHh7QckXsi8lwaBnn+Coy1E+J12mEs SOTtZ+eM2fO2avoTPgS5UrPjq6Z/2TL4F7ETm73jX56WD6nW66em2n0fDhGidA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1759245811; a=rsa-sha256; cv=none; b=jXq2n2Y22zM6Bj+dIMvCH0zazuyczBwQQlTdowRLjxtVmNtrR4eZYxvTaf4hi834iSxAt+ jsstp3idC3j3m9DFDbjMWvNjNOhMJYpNvfKIuR/nHxb60NipVm9pSiHHgOd+On1BZOqDo+ 4vY0uVUG7wtzKzguvlTGqMsJWI/CxHyPZRCnVxgYMVb3ywo/At2VWmmko7/Hhh9htQXEl0 B7ZdC4xkOPhCx9b9A4RUqHgBGr8x+x/mhynh3R7Ok73rQHmICxTv/8lZxwcDBdJGs3KIZM /YTfNNOP09IvM5i0SdNdr/3yi5N0mT2vhyQelTKpVpsoDeJtP+CCS/tUxzGjrA== 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 4cbhfC4GyPzjf6; Tue, 30 Sep 2025 15:23:31 +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 58UFNV4l045474; Tue, 30 Sep 2025 15:23:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 58UFNVAu045471; Tue, 30 Sep 2025 15:23:31 GMT (envelope-from git) Date: Tue, 30 Sep 2025 15:23:31 GMT Message-Id: <202509301523.58UFNVAu045471@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: de79f47a408b - stable/15 - 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/stable/15 X-Git-Reftype: branch X-Git-Commit: de79f47a408b29c9b594e250ce49656b49c597e5 Auto-Submitted: auto-generated The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=de79f47a408b29c9b594e250ce49656b49c597e5 commit de79f47a408b29c9b594e250ce49656b49c597e5 Author: Mark Johnston AuthorDate: 2025-09-16 16:05:06 +0000 Commit: Mark Johnston CommitDate: 2025-09-30 09:43:07 +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 (cherry picked from commit 5eb917426e0aab1e82c7b0e7239724d18bae206a) --- 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 156987e33457..33a87eb55f53 100644 --- a/release/tools/vmimage.subr +++ b/release/tools/vmimage.subr @@ -151,19 +151,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 } @@ -207,6 +220,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