commit: 51f3566606aeecc98c019a327c5847b3d5739609 Author: Fabian Groffen <grobian <AT> gentoo <DOT> org> AuthorDate: Fri Jan 2 19:48:25 2026 +0000 Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org> CommitDate: Fri Jan 2 19:52:23 2026 +0000 URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=51f35666
qmerge: use ROOT with PKGDIR as it should This explains why 419b78c837ff3355e0e1d0652a56678e303bcf6b once made qlist use fixed / as ROOT with PKGDIR, to pair it up with qmerge doing the same. After c0aeba8091d4d08745593100d0951dcac878c600 corrected that, this change corrects it for qmerge too. At the time I was probably thinking one should be able to install a package from the live FS into a ROOT, however that seems easily achieved using a symlink or something, and if the ROOT actually is another arch or target it makes even less sense. So, just treat the PKGDIR under the ROOT, and adapt the test for that to make it work again. Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org> qmerge.c | 4 ++-- tests/qmerge/dotest | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/qmerge.c b/qmerge.c index 6fe6e07..c431550 100644 --- a/qmerge.c +++ b/qmerge.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2025 Gentoo Authors + * Copyright 2005-2026 Gentoo Authors * Distributed under the terms of the GNU General Public License v2 * * Copyright 2005-2010 Ned Ludd - <[email protected]> @@ -334,7 +334,7 @@ best_version(const depend_atom *atom, int mode) if (mode & BV_BINPKG) { if (binpkg == NULL) { - binpkg = tree_open_binpkg("/", pkgdir); + binpkg = tree_open_binpkg(portroot, pkgdir); if (binpkg == NULL) { if (tmv != NULL) tree_match_close(tmv); diff --git a/tests/qmerge/dotest b/tests/qmerge/dotest index be91d8f..c73231d 100755 --- a/tests/qmerge/dotest +++ b/tests/qmerge/dotest @@ -7,7 +7,6 @@ set -e unset CONFIG_PROTECT CONFIG_PROTECT_MASK EPREFIX export QMERGE=1 -export PKGDIR=${as}/packages export FEATURES='config-protect-if-modified' mktmpdir @@ -15,9 +14,13 @@ mktmpdir export ROOT=${PWD}/root export PORTAGE_TMPDIR=${PWD} export Q_VDB=/var/db/pkg +export PKGDIR=/packages mkdir -p "${ROOT}/var/db/pkg" +# copy packages into the ROOT +cp -a "${as}/packages" "${ROOT}/" + set +e # sanity check on environment @@ -45,7 +48,6 @@ tend $? "qmerge-test: [N] vdb installed" tend $? "qmerge-test: [N] installed expected files" || die "$(treedir "${ROOT}")" # Now do a re-emerge. - out=$(yes | qmerge -F "<qmerge-test-2") tend $? "qmerge-test: [R] re-emerge" || die "${out}" @@ -149,9 +151,9 @@ tend $? "qmerge-test: [U] /usr/bin/qmerge-test2 removed" || die "$(treedir "${RO # try all compressions we know to see if we handle them properly pkgver=qmerge-test-1.3 rev=0 -mkdir -p pkgs/sys-devel -qtbz2 -s ${PKGDIR}/sys-devel/${pkgver}.tbz2 -export PKGDIR=${PWD}/pkgs +mkdir -p "${ROOT}"/pkgs/sys-devel +qtbz2 -s "${ROOT}${PKGDIR}"/sys-devel/${pkgver}.tbz2 +export PKGDIR=/pkgs bzip2 -dc < ${pkgver}.tar.bz2 > ${pkgver}.tar for compr in "" brotli gzip bzip2 xz lz4 zstd lzip lzop ; do if [[ ${compr} != "" ]] ; then @@ -165,8 +167,8 @@ for compr in "" brotli gzip bzip2 xz lz4 zstd lzip lzop ; do f=${pkgver}.tar fi : $((rev++)) - qtbz2 -j ${f} ${pkgver}.xpak pkgs/sys-devel/${pkgver}-r${rev}.tbz2 - ls -l pkgs/sys-devel/${pkgver}-r${rev}.tbz2 + qtbz2 -j ${f} ${pkgver}.xpak "${ROOT}"/pkgs/sys-devel/${pkgver}-r${rev}.tbz2 + ls -l "${ROOT}"/pkgs/sys-devel/${pkgver}-r${rev}.tbz2 qlist -kIv | tee /dev/stderr | wc -l # see if we can install this package @@ -176,7 +178,7 @@ for compr in "" brotli gzip bzip2 xz lz4 zstd lzip lzop ; do out=$(yes | qmerge -FU qmerge-test) tend $? "qmerge-test: [X] uninstall ${pkgver}-r${rev}" || die "${out}" - rm pkgs/sys-devel/${pkgver}-r${rev}.tbz2 + rm "${ROOT}"/pkgs/sys-devel/${pkgver}-r${rev}.tbz2 done cleantmpdir
