mirror of
https://github.com/Jguer/yay.git
synced 2025-08-07 15:17:12 +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 (
|
||||
github.com/Jguer/go-alpm v0.0.0-20200405152916-a3feea4322e9 // indirect
|
||||
github.com/Jguer/go-alpm/v2 v2.0.2
|
||||
github.com/Morganamilo/go-pacmanconf v0.0.0-20180910220353-9c5265e1b14f
|
||||
github.com/Jguer/go-alpm/v2 v2.0.3-0.20210503120603-1e8b5ec6f821
|
||||
github.com/Morganamilo/go-pacmanconf v0.0.0-20210502114700-cff030e927a5
|
||||
github.com/Morganamilo/go-srcinfo v1.0.0
|
||||
github.com/bradleyjkemp/cupaloy v2.3.0+incompatible
|
||||
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/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.2/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-20180910220353-9c5265e1b14f/go.mod h1:Hk55m330jNiwxRodIlMCvw5iEyoRUCIY64W1p9D+tHc=
|
||||
github.com/Jguer/go-alpm/v2 v2.0.3-0.20210503120603-1e8b5ec6f821 h1:ds4SK2NSSFF3f/jOUL7liQ2N6Ug7UQzFdAvWcj44Y2s=
|
||||
github.com/Jguer/go-alpm/v2 v2.0.3-0.20210503120603-1e8b5ec6f821/go.mod h1:zU4iKCtNkDARfj5BrKJXYAQ5nIjtZbySfa0paboSmTQ=
|
||||
github.com/Morganamilo/go-pacmanconf v0.0.0-20210502114700-cff030e927a5 h1:TMscPjkb1ThXN32LuFY5bEYIcXZx3YlwzhS1GxNpn/c=
|
||||
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/go.mod h1:MP6VGY1NNpVUmYIEgoM9acix95KQqIRyqQ0hCLsyYUY=
|
||||
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))
|
||||
}
|
||||
|
||||
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) {
|
||||
incompatible := make(stringset.StringSet)
|
||||
basesMap := make(map[string]dep.Base)
|
||||
alpmArch, err := dbExecutor.AlpmArch()
|
||||
alpmArch, err := dbExecutor.AlpmArchitectures()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -454,7 +468,7 @@ func getIncompatible(bases []dep.Base, srcinfos map[string]*gosrc.Srcinfo, dbExe
|
||||
nextpkg:
|
||||
for _, base := range bases {
|
||||
for _, arch := range srcinfos[base.Pkgbase()].Arch {
|
||||
if arch == "any" || arch == alpmArch {
|
||||
if alpmArchIsSupported(alpmArch, arch) {
|
||||
continue nextpkg
|
||||
}
|
||||
}
|
||||
|
4
main.go
4
main.go
@ -47,8 +47,8 @@ func initAlpm(cmdArgs *settings.Arguments, pacmanConfigPath string) (*pacmanconf
|
||||
pacmanConf.DBPath = dbPath
|
||||
}
|
||||
|
||||
if arch, _, exists := cmdArgs.GetArg("arch"); exists {
|
||||
pacmanConf.Architecture = arch
|
||||
if arch := cmdArgs.GetArgs("arch"); arch != nil {
|
||||
pacmanConf.Architecture = append(pacmanConf.Architecture, arch...)
|
||||
}
|
||||
|
||||
if ignoreArray := cmdArgs.GetArgs("ignore"); ignoreArray != nil {
|
||||
|
@ -22,7 +22,7 @@ type Upgrade struct {
|
||||
}
|
||||
|
||||
type Executor interface {
|
||||
AlpmArch() (string, error)
|
||||
AlpmArchitectures() ([]string, error)
|
||||
BiggestPackages() []IPackage
|
||||
Cleanup()
|
||||
IsCorrectVersionInstalled(string, string) bool
|
||||
|
@ -115,7 +115,7 @@ func configureAlpm(pacmanConf *pacmanconf.Config, alpmHandle *alpm.Handle) error
|
||||
return err
|
||||
}
|
||||
|
||||
if err := alpmHandle.SetArch(pacmanConf.Architecture); err != nil {
|
||||
if err := alpmSetArchitecture(alpmHandle, pacmanConf.Architecture); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -442,10 +442,6 @@ func (ae *AlpmExecutor) RepoUpgrades(enableDowngrade bool) ([]db.Upgrade, error)
|
||||
return slice, nil
|
||||
}
|
||||
|
||||
func (ae *AlpmExecutor) AlpmArch() (string, error) {
|
||||
return ae.handle.Arch()
|
||||
}
|
||||
|
||||
func (ae *AlpmExecutor) BiggestPackages() []alpm.IPackage {
|
||||
localPackages := []alpm.IPackage{}
|
||||
_ = 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