[pacman-dev] [PATCH] Remove the IgnorePkg handling from alpm_pkg_compare_version.

Chantry Xavier shiningxc at gmail.com
Fri Nov 16 10:22:16 EST 2007


And check the IgnorePkg handling is done correctly in the other places.
For example, -Qu and -Su will automatically skip the ignored packages (-Su will print a warning),
but -S will install ignored packages anyway, because it was asked explicitly.

Signed-off-by: Chantry Xavier <shiningxc at gmail.com>
---
 lib/libalpm/db.c      |    6 +++++-
 lib/libalpm/package.c |   10 ----------
 lib/libalpm/sync.c    |   29 +++++++++++------------------
 3 files changed, 16 insertions(+), 29 deletions(-)

diff --git a/lib/libalpm/db.c b/lib/libalpm/db.c
index 150b365..e6f8d97 100644
--- a/lib/libalpm/db.c
+++ b/lib/libalpm/db.c
@@ -463,7 +463,7 @@ alpm_list_t SYMEXPORT *alpm_db_get_upgrades(void)
 					if(strcmp(k->data, alpm_pkg_get_name(lpkg)) == 0) {
 						_alpm_log(PM_LOG_DEBUG, "checking replacement '%s' for package '%s'\n",
 								(char *)k->data, alpm_pkg_get_name(spkg));
-						if(_alpm_pkg_should_ignore(lpkg)) {
+						if(_alpm_pkg_should_ignore(spkg) || _alpm_pkg_should_ignore(lpkg)) {
 							_alpm_log(PM_LOG_WARNING, _("%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"),
 												alpm_pkg_get_name(lpkg), alpm_pkg_get_version(lpkg),
 												alpm_pkg_get_name(spkg), alpm_pkg_get_version(spkg));
@@ -544,6 +544,10 @@ alpm_list_t SYMEXPORT *alpm_db_get_upgrades(void)
 			syncpkg	= _alpm_sync_find(syncpkgs, alpm_pkg_get_name(local));
 
 			if(!syncpkg) {
+				/* If package is in the ignorepkg list, skip it */
+				if(_alpm_pkg_should_ignore(spkg)) {
+					continue;
+				}
 				pmpkg_t *dummy = _alpm_pkg_new(alpm_pkg_get_name(local),
 																			 alpm_pkg_get_version(local));
 				if(dummy == NULL) {
diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
index d992766..b9e2f94 100644
--- a/lib/libalpm/package.c
+++ b/lib/libalpm/package.c
@@ -732,16 +732,6 @@ int alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg)
 	/* compare versions and see if we need to upgrade */
 	cmp = _alpm_versioncmp(alpm_pkg_get_version(pkg), alpm_pkg_get_version(local_pkg));
 
-	if(_alpm_pkg_should_ignore(pkg)) {
-		/* package should be ignored (IgnorePkg) */
-		if(cmp > 0) {
-			_alpm_log(PM_LOG_WARNING, _("%s-%s: ignoring package upgrade (%s)\n"),
-								alpm_pkg_get_name(local_pkg), alpm_pkg_get_version(local_pkg),
-								alpm_pkg_get_version(pkg));
-		}
-		return(0);
-	}
-
 	if(cmp != 0 && pkg->force) {
 		cmp = 1;
 		_alpm_log(PM_LOG_WARNING, _("%s: forcing upgrade to version %s\n"),
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c
index e5748e6..f6d8688 100644
--- a/lib/libalpm/sync.c
+++ b/lib/libalpm/sync.c
@@ -209,18 +209,16 @@ int _alpm_sync_sysupgrade(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_s
 
 			/* compare versions and see if we need to upgrade */
 			if(alpm_pkg_compare_versions(local, spkg)) {
-				_alpm_log(PM_LOG_DEBUG, "%s-%s elected for upgrade (%s => %s)\n",
+				_alpm_log(PM_LOG_DEBUG, "%s elected for upgrade (%s => %s)\n",
 									alpm_pkg_get_name(local), alpm_pkg_get_version(local),
-									alpm_pkg_get_name(spkg), alpm_pkg_get_version(spkg));
+									alpm_pkg_get_version(spkg));
 				if(!_alpm_sync_find(trans->packages, alpm_pkg_get_name(spkg))) {
-					/* If package is in the ignorepkg list, ask before we add it to
-					 * the transaction */
-					if(_alpm_pkg_should_ignore(local)) {
-						int resp = 0;
-						QUESTION(trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, local, NULL, NULL, &resp);
-						if(!resp) {
-							continue;
-						}
+					/* If package is in the ignorepkg list, skip it */
+					if(_alpm_pkg_should_ignore(spkg)) {
+						_alpm_log(PM_LOG_WARNING, _("%s: ignoring package upgrade (%s => %s)\n"),
+								alpm_pkg_get_name(local), alpm_pkg_get_version(local),
+								alpm_pkg_get_version(spkg));
+						continue;
 					}
 					pmpkg_t *tmp = _alpm_pkg_dup(local);
 					if(tmp == NULL) {
@@ -319,17 +317,12 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sy
 	if(local) {
 		if(alpm_pkg_compare_versions(local, spkg) == 0) {
 			/* spkg is NOT an upgrade, get confirmation before adding */
-			int resp = 0;
-			if(_alpm_pkg_should_ignore(local)) {
-				QUESTION(trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, local, NULL, NULL, &resp);
-				if(!resp) {
-					return(0);
-				}
-			} else if(!(trans->flags & PM_TRANS_FLAG_PRINTURIS)) {
+			if(!(trans->flags & PM_TRANS_FLAG_PRINTURIS)) {
+				int resp = 0;
 				QUESTION(trans, PM_TRANS_CONV_LOCAL_UPTODATE, local, NULL, NULL, &resp);
 				if(!resp) {
 					_alpm_log(PM_LOG_WARNING, _("%s-%s is up to date -- skipping\n"),
-										alpm_pkg_get_name(local), alpm_pkg_get_version(local));
+							alpm_pkg_get_name(local), alpm_pkg_get_version(local));
 					return(0);
 				}
 			}
-- 
1.5.3.5





More information about the pacman-dev mailing list