mirror of
https://github.com/Jguer/yay.git
synced 2025-08-10 08:37:07 +02:00
Add support for multiple 'Architecture' values
This allows architecture to be multivalued. On x86-64 machines, this could be something like: Architecture = x86-64-v3 x86-64 We use the first specified Architecture value in mirrorlist $arch variable replacement, as this is backwards-compatible and sane. More info: https://git.archlinux.org/pacman.git/commit/?id=3179db108a83104d9de6d1d607f55f8118e92160 Signed-off-by: x1b6e6 <ftdabcde@gmail.com>
This commit is contained in:
parent
29f4c43227
commit
de113b87f3
4
go.mod
4
go.mod
@ -2,8 +2,8 @@ module github.com/Jguer/yay/v10
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/Jguer/go-alpm v0.0.0-20200405152916-a3feea4322e9 // indirect
|
github.com/Jguer/go-alpm v0.0.0-20200405152916-a3feea4322e9 // indirect
|
||||||
github.com/Jguer/go-alpm/v2 v2.0.2
|
github.com/Jguer/go-alpm/v2 v2.0.3-0.20210503120603-1e8b5ec6f821
|
||||||
github.com/Morganamilo/go-pacmanconf v0.0.0-20180910220353-9c5265e1b14f
|
github.com/Morganamilo/go-pacmanconf v0.0.0-20210502114700-cff030e927a5
|
||||||
github.com/Morganamilo/go-srcinfo v1.0.0
|
github.com/Morganamilo/go-srcinfo v1.0.0
|
||||||
github.com/bradleyjkemp/cupaloy v2.3.0+incompatible
|
github.com/bradleyjkemp/cupaloy v2.3.0+incompatible
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
|
8
go.sum
8
go.sum
@ -1,9 +1,9 @@
|
|||||||
github.com/Jguer/go-alpm v0.0.0-20200405152916-a3feea4322e9 h1:lLQSUe6iRdtFrP0zkDV7n8I8XKSxRHQTEU1KRh4IOLg=
|
github.com/Jguer/go-alpm v0.0.0-20200405152916-a3feea4322e9 h1:lLQSUe6iRdtFrP0zkDV7n8I8XKSxRHQTEU1KRh4IOLg=
|
||||||
github.com/Jguer/go-alpm v0.0.0-20200405152916-a3feea4322e9/go.mod h1:D5SUcIS9Yiz/L8cjRzq/992eERnx6ugYmGlc4e7xdus=
|
github.com/Jguer/go-alpm v0.0.0-20200405152916-a3feea4322e9/go.mod h1:D5SUcIS9Yiz/L8cjRzq/992eERnx6ugYmGlc4e7xdus=
|
||||||
github.com/Jguer/go-alpm/v2 v2.0.2 h1:BbF/6dg2tXISEJiCtxlX6J/TCSoB/g+31bCfEiH9D0c=
|
github.com/Jguer/go-alpm/v2 v2.0.3-0.20210503120603-1e8b5ec6f821 h1:ds4SK2NSSFF3f/jOUL7liQ2N6Ug7UQzFdAvWcj44Y2s=
|
||||||
github.com/Jguer/go-alpm/v2 v2.0.2/go.mod h1:zU4iKCtNkDARfj5BrKJXYAQ5nIjtZbySfa0paboSmTQ=
|
github.com/Jguer/go-alpm/v2 v2.0.3-0.20210503120603-1e8b5ec6f821/go.mod h1:zU4iKCtNkDARfj5BrKJXYAQ5nIjtZbySfa0paboSmTQ=
|
||||||
github.com/Morganamilo/go-pacmanconf v0.0.0-20180910220353-9c5265e1b14f h1:ptFKynTV1p8JCzqk81NcMj0DV0Xle+PdKxfHjPbdIOU=
|
github.com/Morganamilo/go-pacmanconf v0.0.0-20210502114700-cff030e927a5 h1:TMscPjkb1ThXN32LuFY5bEYIcXZx3YlwzhS1GxNpn/c=
|
||||||
github.com/Morganamilo/go-pacmanconf v0.0.0-20180910220353-9c5265e1b14f/go.mod h1:Hk55m330jNiwxRodIlMCvw5iEyoRUCIY64W1p9D+tHc=
|
github.com/Morganamilo/go-pacmanconf v0.0.0-20210502114700-cff030e927a5/go.mod h1:Hk55m330jNiwxRodIlMCvw5iEyoRUCIY64W1p9D+tHc=
|
||||||
github.com/Morganamilo/go-srcinfo v1.0.0 h1:Wh4nEF+HJWo+29hnxM18Q2hi+DUf0GejS13+Wg+dzmI=
|
github.com/Morganamilo/go-srcinfo v1.0.0 h1:Wh4nEF+HJWo+29hnxM18Q2hi+DUf0GejS13+Wg+dzmI=
|
||||||
github.com/Morganamilo/go-srcinfo v1.0.0/go.mod h1:MP6VGY1NNpVUmYIEgoM9acix95KQqIRyqQ0hCLsyYUY=
|
github.com/Morganamilo/go-srcinfo v1.0.0/go.mod h1:MP6VGY1NNpVUmYIEgoM9acix95KQqIRyqQ0hCLsyYUY=
|
||||||
github.com/bradleyjkemp/cupaloy v2.3.0+incompatible h1:UafIjBvWQmS9i/xRg+CamMrnLTKNzo+bdmT/oH34c2Y=
|
github.com/bradleyjkemp/cupaloy v2.3.0+incompatible h1:UafIjBvWQmS9i/xRg+CamMrnLTKNzo+bdmT/oH34c2Y=
|
||||||
|
18
install.go
18
install.go
@ -443,10 +443,24 @@ func earlyRefresh(cmdArgs *settings.Arguments) error {
|
|||||||
return config.Runtime.CmdRunner.Show(passToPacman(arguments))
|
return config.Runtime.CmdRunner.Show(passToPacman(arguments))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func alpmArchIsSupported(alpmArch []string, arch string) bool {
|
||||||
|
if arch == "any" {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, a := range alpmArch {
|
||||||
|
if a == arch {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func getIncompatible(bases []dep.Base, srcinfos map[string]*gosrc.Srcinfo, dbExecutor db.Executor) (stringset.StringSet, error) {
|
func getIncompatible(bases []dep.Base, srcinfos map[string]*gosrc.Srcinfo, dbExecutor db.Executor) (stringset.StringSet, error) {
|
||||||
incompatible := make(stringset.StringSet)
|
incompatible := make(stringset.StringSet)
|
||||||
basesMap := make(map[string]dep.Base)
|
basesMap := make(map[string]dep.Base)
|
||||||
alpmArch, err := dbExecutor.AlpmArch()
|
alpmArch, err := dbExecutor.AlpmArchitectures()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -454,7 +468,7 @@ func getIncompatible(bases []dep.Base, srcinfos map[string]*gosrc.Srcinfo, dbExe
|
|||||||
nextpkg:
|
nextpkg:
|
||||||
for _, base := range bases {
|
for _, base := range bases {
|
||||||
for _, arch := range srcinfos[base.Pkgbase()].Arch {
|
for _, arch := range srcinfos[base.Pkgbase()].Arch {
|
||||||
if arch == "any" || arch == alpmArch {
|
if alpmArchIsSupported(alpmArch, arch) {
|
||||||
continue nextpkg
|
continue nextpkg
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
4
main.go
4
main.go
@ -47,8 +47,8 @@ func initAlpm(cmdArgs *settings.Arguments, pacmanConfigPath string) (*pacmanconf
|
|||||||
pacmanConf.DBPath = dbPath
|
pacmanConf.DBPath = dbPath
|
||||||
}
|
}
|
||||||
|
|
||||||
if arch, _, exists := cmdArgs.GetArg("arch"); exists {
|
if arch := cmdArgs.GetArgs("arch"); arch != nil {
|
||||||
pacmanConf.Architecture = arch
|
pacmanConf.Architecture = append(pacmanConf.Architecture, arch...)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ignoreArray := cmdArgs.GetArgs("ignore"); ignoreArray != nil {
|
if ignoreArray := cmdArgs.GetArgs("ignore"); ignoreArray != nil {
|
||||||
|
@ -22,7 +22,7 @@ type Upgrade struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Executor interface {
|
type Executor interface {
|
||||||
AlpmArch() (string, error)
|
AlpmArchitectures() ([]string, error)
|
||||||
BiggestPackages() []IPackage
|
BiggestPackages() []IPackage
|
||||||
Cleanup()
|
Cleanup()
|
||||||
IsCorrectVersionInstalled(string, string) bool
|
IsCorrectVersionInstalled(string, string) bool
|
||||||
|
@ -115,7 +115,7 @@ func configureAlpm(pacmanConf *pacmanconf.Config, alpmHandle *alpm.Handle) error
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := alpmHandle.SetArch(pacmanConf.Architecture); err != nil {
|
if err := alpmSetArchitecture(alpmHandle, pacmanConf.Architecture); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -442,10 +442,6 @@ func (ae *AlpmExecutor) RepoUpgrades(enableDowngrade bool) ([]db.Upgrade, error)
|
|||||||
return slice, nil
|
return slice, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ae *AlpmExecutor) AlpmArch() (string, error) {
|
|
||||||
return ae.handle.Arch()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ae *AlpmExecutor) BiggestPackages() []alpm.IPackage {
|
func (ae *AlpmExecutor) BiggestPackages() []alpm.IPackage {
|
||||||
localPackages := []alpm.IPackage{}
|
localPackages := []alpm.IPackage{}
|
||||||
_ = ae.localDB.PkgCache().SortBySize().ForEach(func(pkg alpm.IPackage) error {
|
_ = ae.localDB.PkgCache().SortBySize().ForEach(func(pkg alpm.IPackage) error {
|
||||||
|
17
pkg/db/ialpm/alpm_five.go
Normal file
17
pkg/db/ialpm/alpm_five.go
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// +build !six
|
||||||
|
|
||||||
|
package ialpm
|
||||||
|
|
||||||
|
import (
|
||||||
|
alpm "github.com/Jguer/go-alpm/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
func alpmSetArchitecture(alpmHandle *alpm.Handle, arch []string) error {
|
||||||
|
return alpmHandle.SetArch(arch[0])
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ae *AlpmExecutor) AlpmArchitectures() ([]string, error) {
|
||||||
|
arch, err := ae.handle.Arch()
|
||||||
|
|
||||||
|
return []string{arch}, err
|
||||||
|
}
|
17
pkg/db/ialpm/alpm_six.go
Normal file
17
pkg/db/ialpm/alpm_six.go
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// +build six
|
||||||
|
|
||||||
|
package ialpm
|
||||||
|
|
||||||
|
import (
|
||||||
|
alpm "github.com/Jguer/go-alpm/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
func alpmSetArchitecture(alpmHandle *alpm.Handle, arch []string) error {
|
||||||
|
return alpmHandle.SetArchitectures(arch)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ae *AlpmExecutor) AlpmArchitectures() ([]string, error) {
|
||||||
|
architectures, err := ae.handle.GetArchitectures()
|
||||||
|
|
||||||
|
return architectures.Slice(), err
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user