diff options
author | Bryan Drewery <bryan@shatow.net> | 2021-05-07 00:36:53 +0300 |
---|---|---|
committer | Bryan Drewery <bryan@shatow.net> | 2021-05-07 00:37:27 +0300 |
commit | 15548b8a692af3c8ce1da5652feb2439709611f8 (patch) | |
tree | b9df5ba4943ade62cd0b6aa7238921063e1ae17f | |
parent | 5ce4843c50245c8117a841a66eed986ab40efd22 (diff) |
download_from_repo: Handle bootstrapping pkg and its symlink better
-rw-r--r-- | src/share/poudriere/common.sh | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/share/poudriere/common.sh b/src/share/poudriere/common.sh index 323f7a71..f2c924b5 100644 --- a/src/share/poudriere/common.sh +++ b/src/share/poudriere/common.sh @@ -2994,11 +2994,13 @@ jail_cleanup() { download_from_repo() { [ "${PWD}" = "${MASTERMNT}/.p" ] || \ err 1 "download_from_repo requires PWD=${MASTERMNT}/.p" - local pkgname originspec _ignored + local pkgname originspec _ignored pkg_bin pkgname - if ! ensure_pkg_installed; then - msg "pkg package missing, skipping fetching of packages" - return + if ensure_pkg_installed; then + pkg_bin="${PKG_BIN}" + else + # Will bootstrap + pkg_bin="pkg" fi msg "Prefetching missing packages from pkg+http://pkg.freebsd.org/\${ABI}/${PACKAGE_BRANCH}" cat >> "${MASTERMNT}/etc/pkg/poudriere.conf" <<-EOF @@ -3013,8 +3015,16 @@ download_from_repo() { [ -f "${MASTERMNT}/packages/All/${pkgname}.${PKG_EXT}" ] || \ echo "${pkgname}" done | JNETNAME="n" injail xargs \ - env -i ASSUME_ALWAYS_YES=yes pkg fetch -o /packages + env -i ASSUME_ALWAYS_YES=yes ${pkg_bin} fetch -o /packages + # Ensure pkg has a proper symlink remount_packages -o ro + # Bootstrapped. Need to setup symlinks. + if [ "${pkg_bin}" = "pkg" ]; then + pkgname=$(injail pkg query %n-%v pkg) + mkdir -p "${PACKAGES}/Latest" + ln -fhs "../All/${pkgname}.${PKG_EXT}" \ + "${PACKAGES}/Latest/pkg.${PKG_EXT}" + fi } # return 0 if the package dir exists and has packages, 0 otherwise |