diff --git a/install.go b/install.go index d22045e1..21928b49 100644 --- a/install.go +++ b/install.go @@ -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 } diff --git a/pkg/dep/depPool.go b/pkg/dep/depPool.go index 2e21f984..098f3b1e 100644 --- a/pkg/dep/depPool.go +++ b/pkg/dep/depPool.go @@ -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 }