Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Sep 2025 09:04:31 +0200
From:      Baptiste Daroussin <bapt@freebsd.org>
To:        Colin Percival <cperciva@freebsd.org>
Cc:        src-committers@freebsd.org, dev-commits-src-all@freebsd.org,  dev-commits-src-main@freebsd.org
Subject:   Re: git: 6b5adf33873a - main - Include a pkg package in the pkgbase repo
Message-ID:  <rcb7hnnxcifeiu2enjpvqoj5jatymne6etv6qqb5kve5ygkqqg@3jy4qwwhghir>
In-Reply-To: <202509172239.58HMdOK9055924@gitrepo.freebsd.org>
References:  <202509172239.58HMdOK9055924@gitrepo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed 17 Sep 22:39, Colin Percival wrote:
> The branch main has been updated by cperciva:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=6b5adf33873a309523dc4e585ff08d70bb6c6f2f
> 
> commit 6b5adf33873a309523dc4e585ff08d70bb6c6f2f
> Author:     Colin Percival <cperciva@FreeBSD.org>
> AuthorDate: 2025-09-17 22:34:25 +0000
> Commit:     Colin Percival <cperciva@FreeBSD.org>
> CommitDate: 2025-09-17 22:34:25 +0000
> 
>     Include a pkg package in the pkgbase repo
>     
>     It is essential that users be able to install the FreeBSD base system
>     from release media and have all the bits needed to update the FreeBSD
>     base system without touching the ports tree or pkg.freebsd.org.  To
>     that end, resurrect (and heavily rewrite) the make-pkg-package.sh
>     script and hook it into the create-packages target; if /usr/ports
>     exists when building pkgbase packages, we'll also (cross)build pkg
>     and include it in the repository.
>     
>     Scripting for actually installing this package as part of the FreeBSD
>     installation process to come later, but I wanted this in the tree in
>     time to test it in this week's snapshots.
>     
>     MFC after:      1 day
>     Sponsored by:   https://www.patreon.com/cperciva
> ---
>  Makefile.inc1                       |  6 ++++--
>  release/scripts/make-pkg-package.sh | 28 ++++++++++++----------------
>  2 files changed, 16 insertions(+), 18 deletions(-)
> 
> diff --git a/Makefile.inc1 b/Makefile.inc1
> index 97a0b00cc517..65631c2e8eb8 100644
> --- a/Makefile.inc1
> +++ b/Makefile.inc1
> @@ -2039,12 +2039,14 @@ update-packages: .PHONY
>  	${_+_}${MAKE} -C ${.CURDIR} ${PKGMAKEARGS} real-update-packages
>  
>  package-pkg: .PHONY
> +.if exists(${PORTSDIR})
>  	rm -rf /tmp/ports.${TARGET} || :
> -	env ${WMAKEENV:Q} SRCDIR=${.CURDIR} PORTSDIR=${PORTSDIR} REVISION=${_REVISION} \
> +	env ${WMAKEENV} SRCDIR=${.CURDIR} PORTSDIR=${PORTSDIR} REVISION=${_REVISION} \
>  		PKG_CMD=${PKG_CMD} PKG_VERSION=${PKG_VERSION} REPODIR=${REPODIR} \
>  		WSTAGEDIR=${WSTAGEDIR} \
>  		OSVERSION="${SRCRELDATE}" \
>  		sh ${.CURDIR}/release/scripts/make-pkg-package.sh
> +.endif
>  
>  real-packages:	stage-packages create-packages sign-packages .PHONY
>  
> @@ -2127,7 +2129,7 @@ create-packages-source:	_pkgbootstrap _repodir .PHONY
>  			SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH} \
>  			create-source-packages
>  
> -create-packages: .PHONY create-packages-world create-packages-kernel create-packages-source create-packages-sets
> +create-packages: .PHONY create-packages-world create-packages-kernel create-packages-source package-pkg create-packages-sets
>  
>  create-source-src-package: _pkgbootstrap .PHONY
>  	rm -f ${SSTAGEDIR}/src.plist 2>/dev/null || :
> diff --git a/release/scripts/make-pkg-package.sh b/release/scripts/make-pkg-package.sh
> index 68172c47f326..a0ac0fc16305 100755
> --- a/release/scripts/make-pkg-package.sh
> +++ b/release/scripts/make-pkg-package.sh
> @@ -1,26 +1,22 @@
>  #!/bin/sh
> -#
> -#
>  
> -# Simulate the build environment.
> -eval $(make -C ${SRCDIR} TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} buildenvvars)
> +# Simulate the build environment.  Note that we need to unset some variables
> +# which are set in the src tree since they have different (unwanted) effects
> +# in the ports tree.
> +SRC_PKG_VERSION=${PKG_VERSION}
> +PKG_ABI=$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)
> +unset PKG_VERSION
> +unset MAKEFLAGS
> +unset PKGBASE
>  export WRKDIRPREFIX=/tmp/ports.${TARGET}
> -export WSTAGEDIR=${WSTAGEDIR}
> -export REPODIR=${REPODIR}
> -export PKG_CMD=${PKG_CMD}
> -export PKG_VERSION=${PKG_VERSION}
> -export OSVERSION=${OSVERSION}
>  export WRKDIR=$(make -C ${PORTSDIR}/ports-mgmt/pkg -V WRKDIR)
>  
>  make -C ${PORTSDIR}/ports-mgmt/pkg TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \


I am not sure I got this properly, but You probably want to add --sysroot=${WSTAGEDIR}
to ensure pkg is linked to the proper libraries and use the right headers from the target?
in particular since pkg uses __FreeBSD_version in some places.

>  	CONFIGURE_ARGS="--host=$(uname -m)-portbld-freebsd${REVISION}" \


Best regards,
Bapt



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?rcb7hnnxcifeiu2enjpvqoj5jatymne6etv6qqb5kve5ygkqqg>