From 58ee249c86d0f4ac1dfef9ca242d44d89044cb88 Mon Sep 17 00:00:00 2001 From: Jakob Gruber Date: Fri, 24 Sep 2010 14:22:35 +0200 Subject: Tests: Sync group which includes ignored pkgs * FS#19854 (--ignore is ignored with groups) * http://www.archlinux.org/pipermail/pacman-dev/2009-June/008847.html (operation aborts when a package from a group is ignored/and user chooses not to install it) If a group member is ignored, we expect a) a question whether to install b) after saying 'no' to a), the ignored member not to be installed c) all other group members to be installed d) pacman to execute successfully Signed-off-by: Dan McGee (cherry picked from commit 9d0b33fd3327ae6d2b15f50870c0885a2068d492) --- test/pacman/tests/ignore007.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 test/pacman/tests/ignore007.py (limited to 'test') diff --git a/test/pacman/tests/ignore007.py b/test/pacman/tests/ignore007.py new file mode 100644 index 00000000..e4be40a1 --- /dev/null +++ b/test/pacman/tests/ignore007.py @@ -0,0 +1,23 @@ +self.description = "Sync group with ignored packages" + +pkg1 = pmpkg("package1") +pkg1.groups = ["grp"] +self.addpkg2db("sync", pkg1) + +pkg2 = pmpkg("package2") +pkg2.groups = ["grp"] +self.addpkg2db("sync", pkg2) + +pkg3 = pmpkg("package3") +pkg3.groups = ["grp"] +self.addpkg2db("sync", pkg3) + +self.option["IgnorePkg"] = ["package1"] +self.args = "--ask=1 -S grp" + +self.addrule("PACMAN_RETCODE=0") +self.addrule("!PKG_EXIST=%s" % pkg1.name) +self.addrule("PKG_EXIST=%s" % pkg2.name) +self.addrule("PACMAN_OUTPUT=IgnorePkg") + +self.expectfailure = True -- cgit v1.2.3-70-g09d2 From 6ddc115c7f52d6d172ca3879f96cc782bb526313 Mon Sep 17 00:00:00 2001 From: Jakob Gruber Date: Sat, 2 Oct 2010 20:51:37 +0200 Subject: Respect Ignore{Pkg,Group} for group members Fixes FS#19854. Signed-off-by: Dan McGee --- lib/libalpm/sync.c | 12 ++++++++++++ test/pacman/tests/ignore007.py | 2 -- 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index a8bb4733..4cbaf0cb 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -265,6 +265,18 @@ static int sync_group(alpm_list_t *dbs_sync, const char *target) found = 1; for(j = alpm_grp_get_pkgs(grp); j; j = j->next) { pmpkg_t *pkg = j->data; + + /* check if group member is ignored */ + if(_alpm_pkg_should_ignore(pkg)) { + int install = 0; + QUESTION(handle->trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, pkg, + NULL, NULL, &install); + if(install == 0) { + _alpm_log(PM_LOG_WARNING, _("skipping target: %s\n"), alpm_pkg_get_name(pkg)); + continue; + } + } + if(sync_pkg(pkg, known_pkgs) == -1) { if(pm_errno == PM_ERR_TRANS_DUP_TARGET || pm_errno == PM_ERR_PKG_IGNORED) { /* just skip duplicate or ignored targets */ diff --git a/test/pacman/tests/ignore007.py b/test/pacman/tests/ignore007.py index e4be40a1..bb5efdc9 100644 --- a/test/pacman/tests/ignore007.py +++ b/test/pacman/tests/ignore007.py @@ -19,5 +19,3 @@ self.addrule("PACMAN_RETCODE=0") self.addrule("!PKG_EXIST=%s" % pkg1.name) self.addrule("PKG_EXIST=%s" % pkg2.name) self.addrule("PACMAN_OUTPUT=IgnorePkg") - -self.expectfailure = True -- cgit v1.2.3-70-g09d2