feat(install): implement support for -dd

This commit is contained in:
jguer 2021-03-15 23:23:23 +01:00 committed by J Guerreiro
parent 5da8161328
commit d7424b1b28
2 changed files with 22 additions and 12 deletions

View file

@ -136,7 +136,7 @@ func install(cmdArgs *settings.Arguments, dbExecutor db.Executor, ignoreProvider
dp, err := dep.GetPool(requestTargets,
warnings, dbExecutor, config.Runtime.Mode,
ignoreProviders, settings.NoConfirm, config.Provides, config.ReBuild, config.RequestSplitN)
ignoreProviders, settings.NoConfirm, config.Provides, config.ReBuild, config.RequestSplitN, noDeps)
if err != nil {
return err
}

View file

@ -78,7 +78,7 @@ func makePool(dbExecutor db.Executor) *Pool {
// Includes db/ prefixes and group installs
func (dp *Pool) ResolveTargets(pkgs []string,
mode settings.TargetMode,
ignoreProviders, noConfirm, provides bool, rebuild string, splitN int) error {
ignoreProviders, noConfirm, provides bool, rebuild string, splitN int, noDeps bool) error {
// RPC requests are slow
// Combine as many AUR package requests as possible into a single RPC
// call
@ -118,7 +118,7 @@ func (dp *Pool) ResolveTargets(pkgs []string,
if foundPkg != nil {
dp.Targets = append(dp.Targets, target)
dp.Explicit.Set(foundPkg.Name())
dp.ResolveRepoDependency(foundPkg)
dp.ResolveRepoDependency(foundPkg, noDeps)
continue
} else {
// check for groups
@ -147,7 +147,7 @@ func (dp *Pool) ResolveTargets(pkgs []string,
}
if len(aurTargets) > 0 && (mode == settings.ModeAny || mode == settings.ModeAUR) {
return dp.resolveAURPackages(aurTargets, true, ignoreProviders, noConfirm, provides, rebuild, splitN)
return dp.resolveAURPackages(aurTargets, true, ignoreProviders, noConfirm, provides, rebuild, splitN, noDeps)
}
return nil
@ -260,7 +260,7 @@ func (dp *Pool) cacheAURPackages(_pkgs stringset.StringSet, provides bool, split
func (dp *Pool) resolveAURPackages(pkgs stringset.StringSet,
explicit, ignoreProviders, noConfirm, provides bool,
rebuild string, splitN int) error {
rebuild string, splitN int, noDeps bool) error {
newPackages := make(stringset.StringSet)
newAURPackages := make(stringset.StringSet)
@ -289,7 +289,14 @@ func (dp *Pool) resolveAURPackages(pkgs stringset.StringSet,
}
dp.Aur[pkg.Name] = pkg
for _, deps := range [3][]string{pkg.Depends, pkg.MakeDepends, pkg.CheckDepends} {
var combinedDepList [][]string
if noDeps {
combinedDepList = [][]string{pkg.MakeDepends, pkg.CheckDepends}
} else {
combinedDepList = [][]string{pkg.Depends, pkg.MakeDepends, pkg.CheckDepends}
}
for _, deps := range combinedDepList {
for _, dep := range deps {
newPackages.Set(dep)
}
@ -311,7 +318,7 @@ func (dp *Pool) resolveAURPackages(pkgs stringset.StringSet,
}
if repoPkg != nil {
dp.ResolveRepoDependency(repoPkg)
dp.ResolveRepoDependency(repoPkg, false)
continue
}
@ -320,12 +327,15 @@ func (dp *Pool) resolveAURPackages(pkgs stringset.StringSet,
newAURPackages.Set(dep)
}
err = dp.resolveAURPackages(newAURPackages, false, ignoreProviders, noConfirm, provides, rebuild, splitN)
err = dp.resolveAURPackages(newAURPackages, false, ignoreProviders, noConfirm, provides, rebuild, splitN, noDeps)
return err
}
func (dp *Pool) ResolveRepoDependency(pkg db.IPackage) {
func (dp *Pool) ResolveRepoDependency(pkg db.IPackage, noDeps bool) {
dp.Repo[pkg.Name()] = pkg
if noDeps {
return
}
for _, dep := range dp.AlpmExecutor.PackageDepends(pkg) {
if dp.hasSatisfier(dep.String()) {
@ -340,7 +350,7 @@ func (dp *Pool) ResolveRepoDependency(pkg db.IPackage) {
// has satisfier in repo: fetch it
repoPkg := dp.AlpmExecutor.SyncSatisfier(dep.String())
if repoPkg != nil {
dp.ResolveRepoDependency(repoPkg)
dp.ResolveRepoDependency(repoPkg, noDeps)
}
}
}
@ -350,11 +360,11 @@ func GetPool(pkgs []string,
dbExecutor db.Executor,
mode settings.TargetMode,
ignoreProviders, noConfirm, provides bool,
rebuild string, splitN int) (*Pool, error) {
rebuild string, splitN int, noDeps bool) (*Pool, error) {
dp := makePool(dbExecutor)
dp.Warnings = warnings
err := dp.ResolveTargets(pkgs, mode, ignoreProviders, noConfirm, provides, rebuild, splitN)
err := dp.ResolveTargets(pkgs, mode, ignoreProviders, noConfirm, provides, rebuild, splitN, noDeps)
return dp, err
}