Merge pull request #886 from Morganamilo/fix#883

Update go-alpm
This commit is contained in:
Anna 2019-02-14 20:46:33 +00:00 committed by GitHub
commit 8ebc41d4f6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 36 additions and 39 deletions

2
cmd.go
View file

@ -419,7 +419,7 @@ func syncList(parser *arguments) error {
} else { } else {
fmt.Printf("%s %s %s", magenta("aur"), bold(name), bold(green("unknown-version"))) fmt.Printf("%s %s %s", magenta("aur"), bold(name), bold(green("unknown-version")))
if _, err := localDB.Pkg(name); err == nil { if localDB.Pkg(name) != nil {
fmt.Print(bold(blue(" [Installed]"))) fmt.Print(bold(blue(" [Installed]")))
} }

View file

@ -134,8 +134,8 @@ func (dp *depPool) ResolveTargets(pkgs []string) error {
//the user specified a db but there's no easy way to do //the user specified a db but there's no easy way to do
//it without making alpm_lists so don't bother for now //it without making alpm_lists so don't bother for now
//db/group is probably a rare use case //db/group is probably a rare use case
group, err := dp.SyncDB.FindGroupPkgs(target.Name) group := dp.SyncDB.FindGroupPkgs(target.Name)
if err == nil { if !group.Empty() {
dp.Groups = append(dp.Groups, target.String()) dp.Groups = append(dp.Groups, target.String())
group.ForEach(func(pkg alpm.Package) error { group.ForEach(func(pkg alpm.Package) error {
dp.Explicit.set(pkg.Name()) dp.Explicit.set(pkg.Name())
@ -207,7 +207,7 @@ func (dp *depPool) findProvides(pkgs stringSet) error {
} }
for pkg := range pkgs { for pkg := range pkgs {
if _, err := dp.LocalDB.Pkg(pkg); err == nil { if dp.LocalDB.Pkg(pkg) != nil {
continue continue
} }
wg.Add(1) wg.Add(1)
@ -389,7 +389,7 @@ func (dp *depPool) findSatisfierAurCache(dep string) *rpc.Pkg {
seen := make(stringSet) seen := make(stringSet)
providers := makeProviders(depName) providers := makeProviders(depName)
if _, err := dp.LocalDB.Pkg(depName); err == nil { if dp.LocalDB.Pkg(depName) != nil {
if pkg, ok := dp.AurCache[dep]; ok && pkgSatisfies(pkg.Name, pkg.Version, dep) { if pkg, ok := dp.AurCache[dep]; ok && pkgSatisfies(pkg.Name, pkg.Version, dep) {
return pkg return pkg
} }

View file

@ -216,11 +216,11 @@ func getPkgbuildsfromABS(pkgs []string, path string) (bool, error) {
if pkgDB != "" { if pkgDB != "" {
if db, err := alpmHandle.SyncDBByName(pkgDB); err == nil { if db, err := alpmHandle.SyncDBByName(pkgDB); err == nil {
pkg, err = db.Pkg(name) pkg = db.Pkg(name)
} }
} else { } else {
dbList.ForEach(func(db alpm.DB) error { dbList.ForEach(func(db alpm.DB) error {
if pkg, err = db.Pkg(name); err == nil { if pkg = db.Pkg(name); pkg != nil {
return fmt.Errorf("") return fmt.Errorf("")
} }
return nil return nil

2
go.mod
View file

@ -3,6 +3,6 @@ module github.com/Jguer/yay/v9
require ( require (
github.com/Morganamilo/go-pacmanconf v0.0.0-20180910220353-9c5265e1b14f github.com/Morganamilo/go-pacmanconf v0.0.0-20180910220353-9c5265e1b14f
github.com/Morganamilo/go-srcinfo v0.0.0-20180702014333-368edc79b2c5 github.com/Morganamilo/go-srcinfo v0.0.0-20180702014333-368edc79b2c5
github.com/jguer/go-alpm v0.0.0-20181021002825-676ad6bbf3c0 github.com/jguer/go-alpm v0.0.0-20190214204021-327c7630865b
github.com/mikkeloscar/aur v0.0.0-20181111113612-b71516da3ae9 github.com/mikkeloscar/aur v0.0.0-20181111113612-b71516da3ae9
) )

2
go.sum
View file

@ -6,6 +6,8 @@ github.com/jguer/go-alpm v0.0.0-20180914002751-643c287316a5 h1:JPIXUHXLZYwYUTlGp
github.com/jguer/go-alpm v0.0.0-20180914002751-643c287316a5/go.mod h1:1F60/e8oQFVJrZRH0TBqwtiB5ajJ5avOc4MoGRY9CFU= github.com/jguer/go-alpm v0.0.0-20180914002751-643c287316a5/go.mod h1:1F60/e8oQFVJrZRH0TBqwtiB5ajJ5avOc4MoGRY9CFU=
github.com/jguer/go-alpm v0.0.0-20181021002825-676ad6bbf3c0 h1:MtH4SM1pw+23QhMERYK38DyGNqf6F3zUhxeKmQhuHC0= github.com/jguer/go-alpm v0.0.0-20181021002825-676ad6bbf3c0 h1:MtH4SM1pw+23QhMERYK38DyGNqf6F3zUhxeKmQhuHC0=
github.com/jguer/go-alpm v0.0.0-20181021002825-676ad6bbf3c0/go.mod h1:1F60/e8oQFVJrZRH0TBqwtiB5ajJ5avOc4MoGRY9CFU= github.com/jguer/go-alpm v0.0.0-20181021002825-676ad6bbf3c0/go.mod h1:1F60/e8oQFVJrZRH0TBqwtiB5ajJ5avOc4MoGRY9CFU=
github.com/jguer/go-alpm v0.0.0-20190214204021-327c7630865b h1:lQICb6Gw0HDAZlAGdveIp/zww2TVBwQvOM5VtAMpulc=
github.com/jguer/go-alpm v0.0.0-20190214204021-327c7630865b/go.mod h1:1F60/e8oQFVJrZRH0TBqwtiB5ajJ5avOc4MoGRY9CFU=
github.com/mikkeloscar/aur v0.0.0-20180725140122-f998dbf94dc4 h1:qgHSZbD0g3W7KAkZFzXlSqgriYnzEUFS1gkgEiv2GrE= github.com/mikkeloscar/aur v0.0.0-20180725140122-f998dbf94dc4 h1:qgHSZbD0g3W7KAkZFzXlSqgriYnzEUFS1gkgEiv2GrE=
github.com/mikkeloscar/aur v0.0.0-20180725140122-f998dbf94dc4/go.mod h1:n1NKHoldRNhIEufSx1PiDYcd2W+wpbz5/5K+p2eNDVk= github.com/mikkeloscar/aur v0.0.0-20180725140122-f998dbf94dc4/go.mod h1:n1NKHoldRNhIEufSx1PiDYcd2W+wpbz5/5K+p2eNDVk=
github.com/mikkeloscar/aur v0.0.0-20181111113612-b71516da3ae9 h1:g4TBYa1sjv/TZfU9t82oYlRneu8cCVr3dnazE7os5vw= github.com/mikkeloscar/aur v0.0.0-20181111113612-b71516da3ae9 h1:g4TBYa1sjv/TZfU9t82oYlRneu8cCVr3dnazE7os5vw=

View file

@ -364,12 +364,7 @@ func inRepos(syncDB alpm.DBList, pkg string) bool {
return true return true
} }
_, err = syncDB.FindGroupPkgs(target.Name) return !syncDB.FindGroupPkgs(target.Name).Empty()
if err == nil {
return true
}
return false
} }
func earlyPacmanCall(parser *arguments) error { func earlyPacmanCall(parser *arguments) error {
@ -950,7 +945,7 @@ func buildInstallPkgbuilds(dp *depPool, do *depOrder, srcinfos map[string]*gosrc
if cmdArgs.existsArg("needed") { if cmdArgs.existsArg("needed") {
installed := true installed := true
for _, split := range base { for _, split := range base {
if alpmpkg, err := dp.LocalDB.Pkg(split.Name); err != nil || alpmpkg.Version() != version { if alpmpkg := dp.LocalDB.Pkg(split.Name); alpmpkg == nil || alpmpkg.Version() != version {
installed = false installed = false
} }
} }

View file

@ -88,7 +88,7 @@ func (q aurQuery) printSearch(start int) {
toprint += bold(red("(Out-of-date "+formatTime(res.OutOfDate)+")")) + " " toprint += bold(red("(Out-of-date "+formatTime(res.OutOfDate)+")")) + " "
} }
if pkg, err := localDB.Pkg(res.Name); err == nil { if pkg := localDB.Pkg(res.Name); pkg != nil {
if pkg.Version() != res.Version { if pkg.Version() != res.Version {
toprint += bold(green("(Installed: " + pkg.Version() + ")")) toprint += bold(green("(Installed: " + pkg.Version() + ")"))
} else { } else {
@ -126,7 +126,7 @@ func (s repoQuery) printSearch() {
localDB, err := alpmHandle.LocalDB() localDB, err := alpmHandle.LocalDB()
if err == nil { if err == nil {
if pkg, err := localDB.Pkg(res.Name()); err == nil { if pkg := localDB.Pkg(res.Name()); pkg != nil {
if pkg.Version() != res.Version() { if pkg.Version() != res.Version() {
toprint += bold(green("(Installed: " + pkg.Version() + ")")) toprint += bold(green("(Installed: " + pkg.Version() + ")"))
} else { } else {

View file

@ -80,8 +80,8 @@ func filterPackages() (local []alpm.Package, remote []alpm.Package,
if found { if found {
return nil return nil
} }
_, err := d.Pkg(k.Name())
if err == nil { if d.Pkg(k.Name()) != nil {
found = true found = true
local = append(local, k) local = append(local, k)
localNames = append(localNames, k.Name()) localNames = append(localNames, k.Name())
@ -301,9 +301,7 @@ func packageSlices(toCheck []string) (aur []string, repo []string, err error) {
} }
_ = dbList.ForEach(func(db alpm.DB) error { _ = dbList.ForEach(func(db alpm.DB) error {
_, err := db.Pkg(name) if db.Pkg(name) != nil {
if err == nil {
found = true found = true
return fmt.Errorf("") return fmt.Errorf("")
@ -312,8 +310,7 @@ func packageSlices(toCheck []string) (aur []string, repo []string, err error) {
}) })
if !found { if !found {
_, errdb := dbList.FindGroupPkgs(name) found = !dbList.FindGroupPkgs(name).Empty()
found = errdb == nil
} }
if found { if found {

View file

@ -304,10 +304,9 @@ func upRepo(local []alpm.Package) (upSlice, error) {
alpmHandle.SyncSysupgrade(cmdArgs.existsDouble("u", "sysupgrade")) alpmHandle.SyncSysupgrade(cmdArgs.existsDouble("u", "sysupgrade"))
alpmHandle.TransGetAdd().ForEach(func(pkg alpm.Package) error { alpmHandle.TransGetAdd().ForEach(func(pkg alpm.Package) error {
localPkg, err := localDB.Pkg(pkg.Name())
localVer := "-" localVer := "-"
if err == nil { if localPkg := localDB.Pkg(pkg.Name()); localPkg != nil {
localVer = localPkg.Version() localVer = localPkg.Version()
} }

View file

@ -130,28 +130,20 @@ func (db *DB) SetUsage(usage Usage) {
} }
// Name searches a package in db. // Name searches a package in db.
func (db *DB) Pkg(name string) (*Package, error) { func (db *DB) Pkg(name string) *Package {
cName := C.CString(name) cName := C.CString(name)
defer C.free(unsafe.Pointer(cName)) defer C.free(unsafe.Pointer(cName))
ptr := C.alpm_db_get_pkg(db.ptr, cName) ptr := C.alpm_db_get_pkg(db.ptr, cName)
if ptr == nil { return &Package{ptr, db.handle}
return nil, db.handle.LastError()
}
return &Package{ptr, db.handle}, nil
} }
// PkgCachebyGroup returns a PackageList of packages belonging to a group // PkgCachebyGroup returns a PackageList of packages belonging to a group
func (l DBList) FindGroupPkgs(name string) (PackageList, error) { func (l DBList) FindGroupPkgs(name string) PackageList {
cName := C.CString(name) cName := C.CString(name)
defer C.free(unsafe.Pointer(cName)) defer C.free(unsafe.Pointer(cName))
pkglist := (*C.struct___alpm_list_t)(unsafe.Pointer(l.list)) pkglist := (*C.struct___alpm_list_t)(unsafe.Pointer(l.list))
pkgcache := (*list)(unsafe.Pointer(C.alpm_find_group_pkgs(pkglist, cName))) pkgcache := (*list)(unsafe.Pointer(C.alpm_find_group_pkgs(pkglist, cName)))
if pkgcache == nil { return PackageList{pkgcache, l.handle}
return PackageList{pkgcache, l.handle}, l.handle.LastError()
}
return PackageList{pkgcache, l.handle}, nil
} }
// PkgCache returns the list of packages of the database // PkgCache returns the list of packages of the database

View file

@ -106,6 +106,18 @@ func (l *list) forEach(f func(unsafe.Pointer) error) error {
return nil return nil
} }
func (l *list) Len() int {
count := 0
for ; l != nil; l = l.Next {
count++
}
return count
}
func (l *list) Empty() bool {
return l == nil
}
type StringList struct { type StringList struct {
*list *list
} }

2
vendor/modules.txt vendored
View file

@ -3,7 +3,7 @@ github.com/Morganamilo/go-pacmanconf
github.com/Morganamilo/go-pacmanconf/ini github.com/Morganamilo/go-pacmanconf/ini
# github.com/Morganamilo/go-srcinfo v0.0.0-20180702014333-368edc79b2c5 # github.com/Morganamilo/go-srcinfo v0.0.0-20180702014333-368edc79b2c5
github.com/Morganamilo/go-srcinfo github.com/Morganamilo/go-srcinfo
# github.com/jguer/go-alpm v0.0.0-20181021002825-676ad6bbf3c0 # github.com/jguer/go-alpm v0.0.0-20190214204021-327c7630865b
github.com/jguer/go-alpm github.com/jguer/go-alpm
# github.com/mikkeloscar/aur v0.0.0-20181111113612-b71516da3ae9 # github.com/mikkeloscar/aur v0.0.0-20181111113612-b71516da3ae9
github.com/mikkeloscar/aur github.com/mikkeloscar/aur