mirror of
https://github.com/Jguer/yay.git
synced 2025-10-05 00:08:30 -04:00
Merge pull request #277 from Morganamilo/gendb
Separate gendb from install
This commit is contained in:
commit
85238c2a93
3
cmd.go
3
cmd.go
@ -288,9 +288,6 @@ func handleYay() (err error) {
|
||||
usage()
|
||||
} else if cmdArgs.existsArg("gendb") {
|
||||
err = createDevelDB()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
} else if cmdArgs.existsArg("c", "clean") {
|
||||
err = cleanDependencies()
|
||||
} else if len(cmdArgs.targets) > 0 {
|
||||
|
@ -70,6 +70,20 @@ func splitDbFromName(pkg string) (string, string) {
|
||||
return "", split[0]
|
||||
}
|
||||
|
||||
func getBases(pkgs map[string]*rpc.Pkg) map[string][]*rpc.Pkg {
|
||||
bases := make(map[string][]*rpc.Pkg)
|
||||
|
||||
for _, pkg := range pkgs {
|
||||
_, ok := bases[pkg.PackageBase]
|
||||
if !ok {
|
||||
bases[pkg.PackageBase] = make([]*rpc.Pkg, 0)
|
||||
}
|
||||
bases[pkg.PackageBase] = append(bases[pkg.PackageBase], pkg)
|
||||
}
|
||||
|
||||
return bases
|
||||
}
|
||||
|
||||
// Step two of dependency resolving. We already have all the information on the
|
||||
// packages we need, now it's just about ordering them correctly.
|
||||
// pkgs is a list of targets, the packages we want to install. Dependencies are
|
||||
@ -105,13 +119,7 @@ func getDepCatagories(pkgs []string, dt *depTree) (*depCatagories, error) {
|
||||
dc := makeDependCatagories()
|
||||
seen := make(stringSet)
|
||||
|
||||
for _, pkg := range dt.Aur {
|
||||
_, ok := dc.Bases[pkg.PackageBase]
|
||||
if !ok {
|
||||
dc.Bases[pkg.PackageBase] = make([]*rpc.Pkg, 0)
|
||||
}
|
||||
dc.Bases[pkg.PackageBase] = append(dc.Bases[pkg.PackageBase], pkg)
|
||||
}
|
||||
dc.Bases = getBases(dt.Aur)
|
||||
|
||||
for _, pkg := range pkgs {
|
||||
_, name := splitDbFromName(pkg)
|
||||
@ -397,10 +405,7 @@ func depTreeRecursive(dt *depTree, localDb *alpm.Db, syncDb alpm.DbList, isMake
|
||||
|
||||
// Cache the results
|
||||
for _, pkg := range info {
|
||||
// Copying to p fixes a bug.
|
||||
// Would rather not copy but cant find another way to fix.
|
||||
p := pkg
|
||||
dt.Aur[pkg.Name] = &p
|
||||
dt.Aur[pkg.Name] = pkg
|
||||
|
||||
}
|
||||
|
||||
|
23
install.go
23
install.go
@ -135,11 +135,9 @@ func install(parser *arguments) error {
|
||||
hasAur = len(dc.Aur) != 0
|
||||
fmt.Println()
|
||||
|
||||
if !parser.existsArg("gendb") {
|
||||
err = checkForAllConflicts(dc)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = checkForAllConflicts(dc)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(dc.MakeOnly) > 0 {
|
||||
@ -172,19 +170,6 @@ func install(parser *arguments) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if arguments.existsArg("gendb") {
|
||||
for _, pkg := range dc.Aur {
|
||||
pkgbuild := srcinfosStale[pkg.PackageBase]
|
||||
|
||||
for _, pkg := range dc.Bases[pkg.PackageBase] {
|
||||
updateVCSData(pkg.Name, pkgbuild.Source)
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println(bold(green(arrow + " GenDB finished. No packages were installed")))
|
||||
return nil
|
||||
}
|
||||
|
||||
incompatable, err = getIncompatable(dc.Aur, srcinfosStale, dc.Bases)
|
||||
if err != nil {
|
||||
return err
|
||||
@ -196,7 +181,7 @@ func install(parser *arguments) error {
|
||||
}
|
||||
}
|
||||
|
||||
if !parser.existsArg("gendb") && (len(arguments.targets) > 0 || arguments.existsArg("u")) {
|
||||
if len(arguments.targets) > 0 || arguments.existsArg("u") {
|
||||
err := passToPacman(arguments)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error installing repo packages")
|
||||
|
13
query.go
13
query.go
@ -137,7 +137,7 @@ func syncSearch(pkgS []string) (err error) {
|
||||
|
||||
// SyncInfo serves as a pacman -Si for repo packages and AUR packages.
|
||||
func syncInfo(pkgS []string) (err error) {
|
||||
var info []rpc.Pkg
|
||||
var info []*rpc.Pkg
|
||||
aurS, repoS, err := packageSlices(pkgS)
|
||||
if err != nil {
|
||||
return
|
||||
@ -170,7 +170,7 @@ func syncInfo(pkgS []string) (err error) {
|
||||
|
||||
if len(aurS) != 0 {
|
||||
for _, pkg := range info {
|
||||
PrintInfo(&pkg)
|
||||
PrintInfo(pkg)
|
||||
}
|
||||
}
|
||||
|
||||
@ -336,8 +336,8 @@ func statistics() (info struct {
|
||||
// of packages exceeds the number set in config.RequestSplitN.
|
||||
// If the number does exceed config.RequestSplitN multiple rpc requests will be
|
||||
// performed concurrently.
|
||||
func aurInfo(names []string) ([]rpc.Pkg, error) {
|
||||
info := make([]rpc.Pkg, 0, len(names))
|
||||
func aurInfo(names []string) ([]*rpc.Pkg, error) {
|
||||
info := make([]*rpc.Pkg, 0, len(names))
|
||||
seen := make(map[string]int)
|
||||
var mux sync.Mutex
|
||||
var wg sync.WaitGroup
|
||||
@ -358,7 +358,10 @@ func aurInfo(names []string) ([]rpc.Pkg, error) {
|
||||
return
|
||||
}
|
||||
mux.Lock()
|
||||
info = append(info, tempInfo...)
|
||||
for _, _i := range tempInfo {
|
||||
i := _i
|
||||
info = append(info, &i)
|
||||
}
|
||||
mux.Unlock()
|
||||
}
|
||||
|
||||
|
39
vcs.go
39
vcs.go
@ -3,10 +3,14 @@ package main
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
rpc "github.com/mikkeloscar/aur"
|
||||
gopkg "github.com/mikkeloscar/gopkgbuild"
|
||||
)
|
||||
|
||||
// Info contains the last commit sha of a repo
|
||||
@ -20,16 +24,39 @@ type shaInfo struct {
|
||||
|
||||
// createDevelDB forces yay to create a DB of the existing development packages
|
||||
func createDevelDB() error {
|
||||
infoMap := make(map[string]*rpc.Pkg)
|
||||
srcinfosStale := make(map[string]*gopkg.PKGBUILD)
|
||||
|
||||
_, _, _, remoteNames, err := filterPackages()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
config.NoConfirm = true
|
||||
arguments := makeArguments()
|
||||
arguments.addArg("gendb")
|
||||
arguments.addTarget(remoteNames...)
|
||||
err = install(arguments)
|
||||
info, err := aurInfo(remoteNames)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, pkg := range info {
|
||||
infoMap[pkg.Name] = pkg
|
||||
}
|
||||
|
||||
|
||||
bases := getBases(infoMap)
|
||||
|
||||
downloadPkgBuilds(info, sliceToStringSet(remoteNames), bases)
|
||||
err = parsesrcinfosFile(info, srcinfosStale, bases)
|
||||
|
||||
for _, pkg := range info {
|
||||
pkgbuild := srcinfosStale[pkg.PackageBase]
|
||||
|
||||
for _, pkg := range bases[pkg.PackageBase] {
|
||||
updateVCSData(pkg.Name, pkgbuild.Source)
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println(bold(green(arrow + " GenDB finished. No packages were installed")))
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
@ -95,6 +122,8 @@ func updateVCSData(pkgName string, sources []string) {
|
||||
}
|
||||
|
||||
savedInfo[pkgName] = info
|
||||
|
||||
fmt.Println(bold(green(arrow + " Found git repo: ")) + cyan(url))
|
||||
saveVCSInfo()
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user