From 3af0268fdbafbeb0a2e45d3555ef9d224d89c29d Mon Sep 17 00:00:00 2001 From: Andrew Gregory Date: Sat, 29 Nov 2014 18:02:56 -0500 Subject: remove.c: honor inverted patterns in noupgrade Signed-off-by: Andrew Gregory Signed-off-by: Allan McRae --- lib/libalpm/remove.c | 4 ++-- test/pacman/tests/TESTS | 1 + test/pacman/tests/noupgrade-inverted.py | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 test/pacman/tests/noupgrade-inverted.py diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c index dd061e5e..f9b24ef1 100644 --- a/lib/libalpm/remove.c +++ b/lib/libalpm/remove.c @@ -326,7 +326,7 @@ static int can_remove_file(alpm_handle_t *handle, const alpm_file_t *file, { char filepath[PATH_MAX]; - if(alpm_list_find(skip_remove, file->name, _alpm_fnmatch)) { + if(_alpm_fnmatch_patterns(skip_remove, file->name) == 0) { /* return success because we will never actually remove this file */ return 1; } @@ -451,7 +451,7 @@ static int unlink_file(alpm_handle_t *handle, alpm_pkg_t *oldpkg, /* check the remove skip list before removing the file. * see the big comment block in db_find_fileconflicts() for an * explanation. */ - if(alpm_list_find(skip_remove, fileobj->name, _alpm_fnmatch)) { + if(_alpm_fnmatch_patterns(skip_remove, fileobj->name) == 0) { _alpm_log(handle, ALPM_LOG_DEBUG, "%s is in skip_remove, skipping removal\n", file); return 1; diff --git a/test/pacman/tests/TESTS b/test/pacman/tests/TESTS index 052cf4b2..12adf6da 100644 --- a/test/pacman/tests/TESTS +++ b/test/pacman/tests/TESTS @@ -63,6 +63,7 @@ TESTS += test/pacman/tests/ldconfig003.py TESTS += test/pacman/tests/mode001.py TESTS += test/pacman/tests/mode002.py TESTS += test/pacman/tests/mode003.py +TESTS += test/pacman/tests/noupgrade-inverted.py TESTS += test/pacman/tests/pacman001.py TESTS += test/pacman/tests/pacman002.py TESTS += test/pacman/tests/pacman003.py diff --git a/test/pacman/tests/noupgrade-inverted.py b/test/pacman/tests/noupgrade-inverted.py new file mode 100644 index 00000000..8e7f1eaa --- /dev/null +++ b/test/pacman/tests/noupgrade-inverted.py @@ -0,0 +1,19 @@ +self.description = "Upgrade a package with files that match negated NoUpgrade patterns" + +lp = pmpkg("foobar") +lp.files = ["foo/bar", "foo/baz"] +self.addpkg2db("local", lp) + +p = pmpkg("foobar", "1.0-2") +p.files = ["foo/bar"] +self.addpkg(p) + +self.option["NoUpgrade"] = ["foo/*", "!foo/bar", "!foo/baz"] + +self.args = "-U %s" % p.filename() + +self.addrule("PKG_VERSION=foobar|1.0-2") +self.addrule("!FILE_EXIST=foo/baz") +self.addrule("FILE_MODIFIED=foo/bar") +self.addrule("!FILE_PACNEW=foo/bar") +self.addrule("!FILE_PACSAVE=foo/bar") -- cgit v1.2.3-54-g00ecf