From 7dda0fa2f84cd1e32568ec583c3dca4502f0f8df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20B=C3=B6gle?= Date: Tue, 27 Jul 2021 19:35:56 +0200 Subject: [PATCH] fix: skip --assume-installed packages --- install.go | 3 ++- pkg/dep/depPool.go | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/install.go b/install.go index d6e629c2..0f43556e 100644 --- a/install.go +++ b/install.go @@ -69,6 +69,7 @@ func install(cmdArgs *settings.Arguments, dbExecutor db.Executor, ignoreProvider var srcinfos map[string]*gosrc.Srcinfo noDeps := cmdArgs.ExistsDouble("d", "nodeps") noCheck := strings.Contains(config.MFlags, "--nocheck") + assumeInstalled := cmdArgs.GetArgs("assume-installed") sysupgradeArg := cmdArgs.ExistsArg("u", "sysupgrade") refreshArg := cmdArgs.ExistsArg("y", "refresh") warnings := query.NewWarnings() @@ -142,7 +143,7 @@ func install(cmdArgs *settings.Arguments, dbExecutor db.Executor, ignoreProvider dp, err := dep.GetPool(requestTargets, warnings, dbExecutor, config.Runtime.AURClient, config.Runtime.Mode, - ignoreProviders, settings.NoConfirm, config.Provides, config.ReBuild, config.RequestSplitN, noDeps, noCheck) + ignoreProviders, settings.NoConfirm, config.Provides, config.ReBuild, config.RequestSplitN, noDeps, noCheck, assumeInstalled) if err != nil { return err } diff --git a/pkg/dep/depPool.go b/pkg/dep/depPool.go index 4a02b17d..94c39acd 100644 --- a/pkg/dep/depPool.go +++ b/pkg/dep/depPool.go @@ -83,7 +83,7 @@ func makePool(dbExecutor db.Executor, aurClient *aur.Client) *Pool { // Includes db/ prefixes and group installs func (dp *Pool) ResolveTargets(pkgs []string, mode settings.TargetMode, - ignoreProviders, noConfirm, provides bool, rebuild string, splitN int, noDeps, noCheckDeps bool) error { + ignoreProviders, noConfirm, provides bool, rebuild string, splitN int, noDeps, noCheckDeps bool, assumeInstalled []string) error { // RPC requests are slow // Combine as many AUR package requests as possible into a single RPC call aurTargets := make(stringset.StringSet) @@ -98,7 +98,7 @@ func (dp *Pool) ResolveTargets(pkgs []string, // still get skipped even if it's from a different database to // the one specified // this is how pacman behaves - if dp.hasPackage(target.DepString()) { + if dp.hasPackage(target.DepString()) || isInAssumeInstalled(target.DepString(), assumeInstalled) { continue } @@ -376,11 +376,11 @@ func GetPool(pkgs []string, aurClient *aur.Client, mode settings.TargetMode, ignoreProviders, noConfirm, provides bool, - rebuild string, splitN int, noDeps bool, noCheckDeps bool) (*Pool, error) { + rebuild string, splitN int, noDeps bool, noCheckDeps bool, assumeInstalled []string) (*Pool, error) { dp := makePool(dbExecutor, aurClient) dp.Warnings = warnings - err := dp.ResolveTargets(pkgs, mode, ignoreProviders, noConfirm, provides, rebuild, splitN, noDeps, noCheckDeps) + err := dp.ResolveTargets(pkgs, mode, ignoreProviders, noConfirm, provides, rebuild, splitN, noDeps, noCheckDeps, assumeInstalled) return dp, err } @@ -500,6 +500,17 @@ func (dp *Pool) hasPackage(name string) bool { return false } +func isInAssumeInstalled(name string, assumeInstalled []string) bool { + for _, pkgAndVersion := range assumeInstalled { + parts := strings.SplitN(pkgAndVersion, "=", 2) + if parts[0] == name { + return true + } + } + + return false +} + func providerMenu(dep string, providers providers, noConfirm bool) *query.Pkg { size := providers.Len()