From a7a06ec88f7183953499456afc4c41aee6bd7c14 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Fri, 24 Aug 2012 13:36:52 +0300 Subject: Detect attempts to replace directory symlink to directory in package - Rpm cannot currently *correctly* deal with directory symlink changing to a directory through updates, detect early and abort with conflicts instead of proceeding with known-broken results: previously these would seemingly succeed but without actually doing the requested changes, and leaving orphans on the disk. Far less evil than the directory replacement failure but incorrect anyway. - Same %pretrans wackiness as with directory replacements applies here. - Adjust test-suite to match the new behavior. - It's possible there are packages that have been relying on the former broken "success" results, so this might need further fine-tuning... --- tests/rpmconflict.at | 9 ++++----- tests/rpmreplace.at | 7 +++---- 2 files changed, 7 insertions(+), 9 deletions(-) (limited to 'tests') diff --git a/tests/rpmconflict.at b/tests/rpmconflict.at index 5058c58c6..692e294c9 100644 --- a/tests/rpmconflict.at +++ b/tests/rpmconflict.at @@ -259,9 +259,7 @@ runroot rpm -U "${TOPDIR}"/RPMS/noarch/symlinktest-1.0-2.noarch.rpm AT_CLEANUP # ------------------------------ -# Replace symlink with a directory - the upgrade succeeds but leaves an -# orphan directory that the symlink now points to. Should verify the -# result more carefully... +# Replace symlink with a directory AT_SETUP([rpm -U replacing symlink with directory]) AT_KEYWORDS([install]) AT_CHECK([ @@ -278,7 +276,8 @@ runroot rpmbuild --quiet -bb \ runroot rpm -U "${TOPDIR}"/RPMS/noarch/symlinktest-1.0-1.noarch.rpm runroot rpm -U "${TOPDIR}"/RPMS/noarch/symlinktest-1.0-2.noarch.rpm ], -[0], +[2], [], -[]) +[ file /usr/share/symlinktest from install of symlinktest-1.0-2.noarch conflicts with file from package symlinktest-1.0-1.noarch +]) AT_CLEANUP diff --git a/tests/rpmreplace.at b/tests/rpmreplace.at index 97707a65f..cdc8d03d9 100644 --- a/tests/rpmreplace.at +++ b/tests/rpmreplace.at @@ -301,7 +301,6 @@ test -d "${tf}" []) AT_CLEANUP -# XXX: this "succeeds" but with bogus results AT_SETUP([upgrade directory link to directory]) AT_KEYWORDS([install]) AT_CHECK([ @@ -325,12 +324,12 @@ runroot rpmbuild --quiet -bb \ runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm readlink "${tf}" runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm -test -d "${tf}" ], -[0], +[2], [zoo ], -[]) +[ file /opt/foo from install of replacetest-2.0-1.noarch conflicts with file from package replacetest-1.0-1.noarch +]) AT_CLEANUP AT_SETUP([upgrade empty directory to empty directory]) -- cgit v1.2.3