mirror of
https://github.com/Jguer/yay
synced 2024-09-14 13:51:12 +00:00
Use new dependency code in install()
The old depTree and depCatagories has been changed to depPool and depOrder in the install function.
This commit is contained in:
parent
b585cec123
commit
2e7a022b7c
18
depOrder.go
18
depOrder.go
|
@ -133,3 +133,21 @@ func (do *depOrder) getBases() {
|
||||||
do.Bases[pkg.PackageBase] = append(do.Bases[pkg.PackageBase], pkg)
|
do.Bases[pkg.PackageBase] = append(do.Bases[pkg.PackageBase], pkg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (do *depOrder) HasMake() bool {
|
||||||
|
return len(do.Runtime) != len(do.Aur)+len(do.Repo)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (do *depOrder) getMake() []string {
|
||||||
|
makeOnly := make([]string, 0, len(do.Aur)+len(do.Repo)-len(do.Runtime))
|
||||||
|
|
||||||
|
for _, pkg := range do.Aur {
|
||||||
|
makeOnly = append(makeOnly, pkg.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, pkg := range do.Repo {
|
||||||
|
makeOnly = append(makeOnly, pkg.Name())
|
||||||
|
}
|
||||||
|
|
||||||
|
return makeOnly
|
||||||
|
}
|
||||||
|
|
73
install.go
73
install.go
|
@ -18,7 +18,7 @@ func install(parser *arguments) error {
|
||||||
requestTargets := parser.targets.toSlice()
|
requestTargets := parser.targets.toSlice()
|
||||||
var err error
|
var err error
|
||||||
var incompatible stringSet
|
var incompatible stringSet
|
||||||
var dc *depCatagories
|
var do *depOrder
|
||||||
var toClean []*rpc.Pkg
|
var toClean []*rpc.Pkg
|
||||||
var toEdit []*rpc.Pkg
|
var toEdit []*rpc.Pkg
|
||||||
|
|
||||||
|
@ -61,7 +61,17 @@ func install(parser *arguments) error {
|
||||||
//if len(aurTargets) > 0 || parser.existsArg("u", "sysupgrade") && len(remoteNames) > 0 {
|
//if len(aurTargets) > 0 || parser.existsArg("u", "sysupgrade") && len(remoteNames) > 0 {
|
||||||
// fmt.Println(bold(cyan("::") + " Querying AUR..."))
|
// fmt.Println(bold(cyan("::") + " Querying AUR..."))
|
||||||
//}
|
//}
|
||||||
dt, err := getDepTree(requestTargets, warnings)
|
dp, err := getDepPool(cmdArgs.targets.toSlice())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = dp.CheckMissing()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = dp.CheckConflicts()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -79,16 +89,6 @@ func install(parser *arguments) error {
|
||||||
requestTargets[i] = name
|
requestTargets[i] = name
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(dt.Missing) > 0 {
|
|
||||||
str := bold(red(arrow+" Error: ")) + "Could not find all required packages:"
|
|
||||||
|
|
||||||
for name := range dt.Missing {
|
|
||||||
str += "\n " + name
|
|
||||||
}
|
|
||||||
|
|
||||||
return fmt.Errorf("%s", str)
|
|
||||||
}
|
|
||||||
|
|
||||||
//create the arguments to pass for the repo install
|
//create the arguments to pass for the repo install
|
||||||
arguments := parser.copy()
|
arguments := parser.copy()
|
||||||
arguments.delArg("y", "refresh")
|
arguments.delArg("y", "refresh")
|
||||||
|
@ -131,61 +131,50 @@ func install(parser *arguments) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hasAur := false
|
hasAur := len(dp.Aur) > 0
|
||||||
for pkg := range parser.targets {
|
|
||||||
_, ok := dt.Aur[pkg]
|
|
||||||
if ok {
|
|
||||||
hasAur = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if hasAur && 0 == os.Geteuid() {
|
if hasAur && 0 == os.Geteuid() {
|
||||||
return fmt.Errorf(bold(red(arrow)) + " Refusing to install AUR Packages as root, Aborting.")
|
return fmt.Errorf(bold(red(arrow)) + " Refusing to install AUR Packages as root, Aborting.")
|
||||||
}
|
}
|
||||||
|
|
||||||
dc, err = getDepCatagories(requestTargets, dt)
|
do = getDepOrder(dp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, pkg := range dc.Repo {
|
for _, pkg := range do.Repo {
|
||||||
arguments.addTarget(pkg.DB().Name() + "/" + pkg.Name())
|
arguments.addTarget(pkg.DB().Name() + "/" + pkg.Name())
|
||||||
}
|
}
|
||||||
|
|
||||||
for pkg := range dt.Groups {
|
for _, pkg := range dp.Groups {
|
||||||
arguments.addTarget(pkg)
|
arguments.addTarget(pkg)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(dc.Aur) == 0 && len(arguments.targets) == 0 && !parser.existsArg("u", "sysupgrade") {
|
if len(do.Aur) == 0 && len(arguments.targets) == 0 && !parser.existsArg("u", "sysupgrade") {
|
||||||
fmt.Println("There is nothing to do")
|
fmt.Println("There is nothing to do")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if hasAur {
|
if hasAur {
|
||||||
hasAur = len(dc.Aur) != 0
|
hasAur = len(do.Aur) != 0
|
||||||
|
|
||||||
err = checkForAllConflicts(dc)
|
do.Print()
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
printDepCatagories(dc)
|
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
|
|
||||||
if len(dc.MakeOnly) > 0 {
|
if do.HasMake() {
|
||||||
if !continueTask("Remove make dependencies after install?", "yY") {
|
if !continueTask("Remove make dependencies after install?", "yY") {
|
||||||
removeMake = true
|
removeMake = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
toClean, toEdit, err = cleanEditNumberMenu(dc.Aur, dc.Bases, remoteNamesCache)
|
toClean, toEdit, err = cleanEditNumberMenu(do.Aur, do.Bases, remoteNamesCache)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanBuilds(toClean)
|
cleanBuilds(toClean)
|
||||||
|
|
||||||
err = downloadPkgBuilds(dc.Aur, parser.targets, dc.Bases)
|
err = downloadPkgBuilds(do.Aur, parser.targets, do.Bases)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -205,17 +194,17 @@ func install(parser *arguments) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
//initial srcinfo parse before pkgver() bump
|
//initial srcinfo parse before pkgver() bump
|
||||||
err = parseSRCINFOFiles(dc.Aur, srcinfosStale, dc.Bases)
|
err = parseSRCINFOFiles(do.Aur, srcinfosStale, do.Bases)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
incompatible, err = getIncompatible(dc.Aur, srcinfosStale, dc.Bases)
|
incompatible, err = getIncompatible(do.Aur, srcinfosStale, do.Bases)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = checkPgpKeys(dc.Aur, dc.Bases, srcinfosStale)
|
err = checkPgpKeys(do.Aur, do.Bases, srcinfosStale)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -230,7 +219,7 @@ func install(parser *arguments) error {
|
||||||
depArguments := makeArguments()
|
depArguments := makeArguments()
|
||||||
depArguments.addArg("D", "asdeps")
|
depArguments.addArg("D", "asdeps")
|
||||||
|
|
||||||
for _, pkg := range dc.Repo {
|
for _, pkg := range do.Repo {
|
||||||
if !parser.targets.get(pkg.Name()) && !localNamesCache.get(pkg.Name()) && !remoteNamesCache.get(pkg.Name()) {
|
if !parser.targets.get(pkg.Name()) && !localNamesCache.get(pkg.Name()) && !remoteNamesCache.get(pkg.Name()) {
|
||||||
depArguments.addTarget(pkg.Name())
|
depArguments.addTarget(pkg.Name())
|
||||||
}
|
}
|
||||||
|
@ -250,17 +239,17 @@ func install(parser *arguments) error {
|
||||||
uask := alpm.QuestionType(ask) | alpm.QuestionTypeConflictPkg
|
uask := alpm.QuestionType(ask) | alpm.QuestionTypeConflictPkg
|
||||||
cmdArgs.globals["ask"] = fmt.Sprint(uask)
|
cmdArgs.globals["ask"] = fmt.Sprint(uask)
|
||||||
|
|
||||||
err = downloadPkgBuildsSources(dc.Aur, dc.Bases, incompatible)
|
err = downloadPkgBuildsSources(do.Aur, do.Bases, incompatible)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = buildInstallPkgBuilds(dc.Aur, srcinfosStale, parser.targets, parser, dc.Bases, incompatible)
|
err = buildInstallPkgBuilds(do.Aur, srcinfosStale, parser.targets, parser, do.Bases, incompatible)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(dc.MakeOnly) > 0 {
|
if do.HasMake() {
|
||||||
if !removeMake {
|
if !removeMake {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -268,7 +257,7 @@ func install(parser *arguments) error {
|
||||||
removeArguments := makeArguments()
|
removeArguments := makeArguments()
|
||||||
removeArguments.addArg("R", "u")
|
removeArguments.addArg("R", "u")
|
||||||
|
|
||||||
for pkg := range dc.MakeOnly {
|
for _, pkg := range do.getMake() {
|
||||||
removeArguments.addTarget(pkg)
|
removeArguments.addTarget(pkg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -283,7 +272,7 @@ func install(parser *arguments) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.CleanAfter {
|
if config.CleanAfter {
|
||||||
clean(dc.Aur)
|
clean(do.Aur)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
36
print.go
36
print.go
|
@ -189,7 +189,7 @@ func (u upSlice) print() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// printDownloadsFromRepo prints repository packages to be downloaded
|
// printDownloadsFromRepo prints repository packages to be downloaded
|
||||||
func printDepCatagories(dc *depCatagories) {
|
func (do *depOrder) Print() {
|
||||||
repo := ""
|
repo := ""
|
||||||
repoMake := ""
|
repoMake := ""
|
||||||
aur := ""
|
aur := ""
|
||||||
|
@ -200,47 +200,47 @@ func printDepCatagories(dc *depCatagories) {
|
||||||
aurLen := 0
|
aurLen := 0
|
||||||
aurMakeLen := 0
|
aurMakeLen := 0
|
||||||
|
|
||||||
for _, pkg := range dc.Repo {
|
for _, pkg := range do.Repo {
|
||||||
if dc.MakeOnly.get(pkg.Name()) {
|
if do.Runtime.get(pkg.Name()) {
|
||||||
repoMake += " " + pkg.Name() + "-" + pkg.Version()
|
|
||||||
repoMakeLen++
|
|
||||||
} else {
|
|
||||||
repo += " " + pkg.Name() + "-" + pkg.Version()
|
repo += " " + pkg.Name() + "-" + pkg.Version()
|
||||||
repoLen++
|
repoLen++
|
||||||
|
} else {
|
||||||
|
repoMake += " " + pkg.Name() + "-" + pkg.Version()
|
||||||
|
repoMakeLen++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, pkg := range dc.Aur {
|
for _, pkg := range do.Aur {
|
||||||
pkgStr := " " + pkg.PackageBase + "-" + pkg.Version
|
pkgStr := " " + pkg.PackageBase + "-" + pkg.Version
|
||||||
pkgStrMake := pkgStr
|
pkgStrMake := pkgStr
|
||||||
|
|
||||||
push := false
|
push := false
|
||||||
pushMake := false
|
pushMake := false
|
||||||
|
|
||||||
if len(dc.Bases[pkg.PackageBase]) > 1 || pkg.PackageBase != pkg.Name {
|
if len(do.Bases[pkg.PackageBase]) > 1 || pkg.PackageBase != pkg.Name {
|
||||||
pkgStr += " ("
|
pkgStr += " ("
|
||||||
pkgStrMake += " ("
|
pkgStrMake += " ("
|
||||||
|
|
||||||
for _, split := range dc.Bases[pkg.PackageBase] {
|
for _, split := range do.Bases[pkg.PackageBase] {
|
||||||
if dc.MakeOnly.get(split.Name) {
|
if do.Runtime.get(split.Name) {
|
||||||
pkgStrMake += split.Name + " "
|
|
||||||
aurMakeLen++
|
|
||||||
pushMake = true
|
|
||||||
} else {
|
|
||||||
pkgStr += split.Name + " "
|
pkgStr += split.Name + " "
|
||||||
aurLen++
|
aurLen++
|
||||||
push = true
|
push = true
|
||||||
|
} else {
|
||||||
|
pkgStrMake += split.Name + " "
|
||||||
|
aurMakeLen++
|
||||||
|
pushMake = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pkgStr = pkgStr[:len(pkgStr)-1] + ")"
|
pkgStr = pkgStr[:len(pkgStr)-1] + ")"
|
||||||
pkgStrMake = pkgStrMake[:len(pkgStrMake)-1] + ")"
|
pkgStrMake = pkgStrMake[:len(pkgStrMake)-1] + ")"
|
||||||
} else if dc.MakeOnly.get(pkg.Name) {
|
} else if do.Runtime.get(pkg.Name) {
|
||||||
aurMakeLen++
|
|
||||||
pushMake = true
|
|
||||||
} else {
|
|
||||||
aurLen++
|
aurLen++
|
||||||
push = true
|
push = true
|
||||||
|
} else {
|
||||||
|
aurMakeLen++
|
||||||
|
pushMake = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if push {
|
if push {
|
||||||
|
|
Loading…
Reference in a new issue