diff --git a/release/scripts/pkg-stage.sh b/release/scripts/pkg-stage.sh index e53bd72db249..bdfa3643bacb 100755 --- a/release/scripts/pkg-stage.sh +++ b/release/scripts/pkg-stage.sh @@ -1,95 +1,94 @@ #!/bin/sh # # set -e export ASSUME_ALWAYS_YES="YES" export PKG_DBDIR="/tmp/pkg" export PERMISSIVE="YES" export REPO_AUTOUPDATE="NO" -export PKGCMD="/usr/sbin/pkg -d" +export ROOTDIR="$PWD/dvd" +export PKGCMD="/usr/sbin/pkg -d --rootdir ${ROOTDIR}" export PORTSDIR="${PORTSDIR:-/usr/ports}" _DVD_PACKAGES="archivers/unzip devel/git emulators/linux_base-c7 graphics/drm-kmod graphics/drm-510-kmod graphics/drm-515-kmod misc/freebsd-doc-all net/mpd5 net/rsync ports-mgmt/pkg ports-mgmt/portmaster shells/bash shells/zsh security/sudo sysutils/screen sysutils/tmux www/firefox www/links x11-drivers/xf86-video-vmware x11/gnome x11/kde5 x11/xorg" # If NOPORTS is set for the release, do not attempt to build pkg(8). if [ ! -f ${PORTSDIR}/Makefile ]; then echo "*** ${PORTSDIR} is missing! ***" echo "*** Skipping pkg-stage.sh ***" echo "*** Unset NOPORTS to fix this ***" exit 0 fi if [ ! -x /usr/local/sbin/pkg ]; then /etc/rc.d/ldconfig restart /usr/bin/make -C ${PORTSDIR}/ports-mgmt/pkg install clean fi -export DVD_DIR="dvd/packages" -export PKG_ABI=$(pkg config ABI) -export PKG_ALTABI=$(pkg config ALTABI 2>/dev/null) -export PKG_REPODIR="${DVD_DIR}/${PKG_ABI}" +export PKG_ABI=$(pkg --rootdir ${ROOTDIR} config ABI) +export PKG_ALTABI=$(pkg --rootdir ${ROOTDIR} config ALTABI 2>/dev/null) +export PKG_REPODIR="packages/${PKG_ABI}" -/bin/mkdir -p ${PKG_REPODIR} +/bin/mkdir -p ${ROOTDIR}/${PKG_REPODIR} if [ ! -z "${PKG_ALTABI}" ]; then - (cd ${DVD_DIR} && ln -s ${PKG_ABI} ${PKG_ALTABI}) + ln -s ${PKG_ABI} ${ROOTDIR}/packages/${PKG_ALTABI} fi # Ensure the ports listed in _DVD_PACKAGES exist to sanitize the # final list. for _P in ${_DVD_PACKAGES}; do if [ -d "${PORTSDIR}/${_P}" ]; then DVD_PACKAGES="${DVD_PACKAGES} ${_P}" else echo "*** Skipping nonexistent port: ${_P}" fi done # Make sure the package list is not empty. if [ -z "${DVD_PACKAGES}" ]; then echo "*** The package list is empty." echo "*** Something is very wrong." # Exit '0' so the rest of the build process continues # so other issues (if any) can be addressed as well. exit 0 fi # Print pkg(8) information to make debugging easier. ${PKGCMD} -vv ${PKGCMD} update -f ${PKGCMD} fetch -o ${PKG_REPODIR} -d ${DVD_PACKAGES} # Create the 'Latest/pkg.txz' symlink so 'pkg bootstrap' works # using the on-disc packages. -mkdir -p ${PKG_REPODIR}/Latest -(cd ${PKG_REPODIR}/Latest && \ - ln -s ../All/$(${PKGCMD} rquery %n-%v pkg).pkg pkg.pkg) -(cd ${PKG_REPODIR}/Latest && \ - rm -f pkg.txz && ln -s pkg.pkg pkg.txz) +export LATEST_DIR="${ROOTDIR}/${PKG_REPODIR}/Latest" +mkdir -p ${LATEST_DIR} +ln -s ../All/$(${PKGCMD} rquery %n-%v pkg).pkg ${LATEST_DIR}/pkg.pkg +ln -sf pkg.pkg ${LATEST_DIR}/pkg.txz ${PKGCMD} repo ${PKG_REPODIR} # Always exit '0', even if pkg(8) complains about conflicts. exit 0