fix: skip --assume-installed packages

This commit is contained in:
Jonas Bögle 2021-07-27 19:35:56 +02:00 committed by J Guerreiro
parent 1c96fd2d9d
commit 7dda0fa2f8
2 changed files with 17 additions and 5 deletions

View file

@ -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
}

View file

@ -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()