FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > ArchLinux > ArchLinux Pacman Development

 
 
LinkBack Thread Tools
 
Old 08-18-2011, 12:48 PM
Dan McGee
 
Default Convert resolvedep() to use _alpm_depcmp_literal()

The whole first loop is trying to check literals only, so teach it to do
so. Also, reorder operations to make more sense by putting the strcmp()
first in the literal loop, and using a very cheap name_hash check first
in the second loop.

Signed-off-by: Dan McGee <dan@archlinux.org>
---
lib/libalpm/deps.c | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c
index 48e8e77..704a904 100644
--- a/lib/libalpm/deps.c
+++ b/lib/libalpm/deps.c
@@ -561,14 +561,16 @@ static alpm_pkg_t *resolvedep(alpm_handle_t *handle, alpm_depend_t *dep,
/* 1. literals */
for(i = dbs; i; i = i->next) {
alpm_pkg_t *pkg = _alpm_db_get_pkgfromcache(i->data, dep->name);
- if(pkg && _alpm_depcmp(pkg, dep) && !_alpm_pkg_find(excluding, pkg->name)) {
+ if(pkg && _alpm_depcmp_literal(pkg, dep)
+ && !_alpm_pkg_find(excluding, pkg->name)) {
if(_alpm_pkg_should_ignore(handle, pkg)) {
int install = 0;
if(prompt) {
QUESTION(handle->trans, ALPM_TRANS_CONV_INSTALL_IGNOREPKG, pkg,
NULL, NULL, &install);
} else {
- _alpm_log(handle, ALPM_LOG_WARNING, _("ignoring package %s-%s
"), pkg->name, pkg->version);
+ _alpm_log(handle, ALPM_LOG_WARNING, _("ignoring package %s-%s
"),
+ pkg->name, pkg->version);
}
if(!install) {
ignored = 1;
@@ -582,15 +584,18 @@ static alpm_pkg_t *resolvedep(alpm_handle_t *handle, alpm_depend_t *dep,
for(i = dbs; i; i = i->next) {
for(j = _alpm_db_get_pkgcache(i->data); j; j = j->next) {
alpm_pkg_t *pkg = j->data;
- if(_alpm_depcmp(pkg, dep) && strcmp(pkg->name, dep->name) != 0 &&
- !_alpm_pkg_find(excluding, pkg->name)) {
+ /* with hash != hash, we can even skip the strcmp() as we know they can't
+ * possibly be the same string */
+ if(pkg->name_hash != dep->name_hash && _alpm_depcmp(pkg, dep)
+ && !_alpm_pkg_find(excluding, pkg->name)) {
if(_alpm_pkg_should_ignore(handle, pkg)) {
int install = 0;
if(prompt) {
QUESTION(handle->trans, ALPM_TRANS_CONV_INSTALL_IGNOREPKG,
pkg, NULL, NULL, &install);
} else {
- _alpm_log(handle, ALPM_LOG_WARNING, _("ignoring package %s-%s
"), pkg->name, pkg->version);
+ _alpm_log(handle, ALPM_LOG_WARNING, _("ignoring package %s-%s
"),
+ pkg->name, pkg->version);
}
if(!install) {
ignored = 1;
--
1.7.6
 

Thread Tools




All times are GMT. The time now is 09:37 PM.

VBulletin, Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright ©2007 - 2008, www.linux-archive.org