summaryrefslogtreecommitdiff
path: root/src/pacman/conf.c
diff options
context:
space:
mode:
authorFlorian Pritz <bluewind@xinu.at>2014-07-04 23:12:01 +0200
committerAllan McRae <allan@archlinux.org>2014-09-30 22:33:26 +1000
commit04e8048725441465788a6c76a326ff252c2fd815 (patch)
tree22ce157e65f1eae5e1f11357adee781b10fb1246 /src/pacman/conf.c
parent4e263f24c6ed1cc710b7873b9ea37534117247ea (diff)
downloadpacman-04e8048725441465788a6c76a326ff252c2fd815.tar.xz
Add --assume-installed option
This allows to ignore specific dependencies. Signed-off-by: Florian Pritz <bluewind@xinu.at>
Diffstat (limited to 'src/pacman/conf.c')
-rw-r--r--src/pacman/conf.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/pacman/conf.c b/src/pacman/conf.c
index 8b298ccf..5028284d 100644
--- a/src/pacman/conf.c
+++ b/src/pacman/conf.c
@@ -134,6 +134,7 @@ int config_free(config_t *oldconfig)
FREELIST(oldconfig->holdpkg);
FREELIST(oldconfig->ignorepkg);
FREELIST(oldconfig->ignoregrp);
+ FREELIST(oldconfig->assumeinstalled);
FREELIST(oldconfig->noupgrade);
FREELIST(oldconfig->noextract);
free(oldconfig->configfile);
@@ -650,6 +651,7 @@ static int setup_libalpm(void)
int ret = 0;
alpm_errno_t err;
alpm_handle_t *handle;
+ alpm_list_t *i;
pm_printf(ALPM_LOG_DEBUG, "setup_libalpm called\n");
@@ -742,6 +744,22 @@ static int setup_libalpm(void)
alpm_option_set_noupgrades(handle, config->noupgrade);
alpm_option_set_noextracts(handle, config->noextract);
+ for(i = config->assumeinstalled; i; i = i->next) {
+ char *entry = i->data;
+ alpm_depend_t *dep = alpm_dep_from_string(entry);
+ if(!dep) {
+ return 1;
+ }
+ pm_printf(ALPM_LOG_DEBUG, "parsed assume installed: %s %s\n", dep->name, dep->version);
+
+ ret = alpm_option_add_assumeinstalled(handle, dep);
+ if(ret) {
+ pm_printf(ALPM_LOG_ERROR, _("Failed to pass assume installed entry to libalpm"));
+ alpm_dep_free(dep);
+ return ret;
+ }
+ }
+
return 0;
}