3 Commits

Author SHA1 Message Date
7d16607a31 Add -z pack-relative-relocs to RUSTFLAGS
rustc/cargo ignores LDFLAGS and requires the linker flags to be passed
via `-Clink-arg=` in RUSTFLAGS.
2023-06-05 17:11:58 +02:00
db8cb28fc5 code cleanup 2023-06-05 15:33:02 +02:00
a04c17f6ab added [multilib] to README.md, closes #125 2023-06-05 15:26:53 +02:00
7 changed files with 30 additions and 22 deletions

View File

@@ -27,6 +27,11 @@ linters-settings:
- '3' - '3'
- '4' - '4'
- '5' - '5'
- '6'
- '7'
- '8'
- '9'
- '10'
ignored-functions: ignored-functions:
- strings.SplitN - strings.SplitN
- os.OpenFile - os.OpenFile
@@ -47,7 +52,6 @@ linters:
disable-all: true disable-all: true
enable: enable:
- bodyclose - bodyclose
- depguard
- dogsled - dogsled
- dupl - dupl
- errcheck - errcheck

View File

@@ -97,6 +97,13 @@ Include = /etc/pacman.d/mirrorlist
[extra] [extra]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# if you need [multilib] support
[multilib-x86-64-v3]
Include = /etc/pacman.d/alhp-mirrorlist
[multilib]
Include = /etc/pacman.d/mirrorlist
``` ```
Replace `x86-64-v3` with the x86-64 feature level you want to enable. Replace `x86-64-v3` with the x86-64 feature level you want to enable.

View File

@@ -41,7 +41,9 @@ func (b *BuildManager) buildQueue(queue []*ProtoPackage, ctx context.Context) er
for len(doneQ) != len(queue) { for len(doneQ) != len(queue) {
up := 0 up := 0
b.buildingLock.RLock() b.buildingLock.RLock()
if (pkgList2MaxMem(b.building) < conf.Build.MemoryLimit && !unknownBuilds && !queueNoMatch) || (unknownBuilds && len(b.building) < MaxUnknownBuilder) { if (pkgList2MaxMem(b.building) < conf.Build.MemoryLimit &&
!unknownBuilds && !queueNoMatch) ||
(unknownBuilds && len(b.building) < MaxUnknownBuilder) {
queueNoMatch = true queueNoMatch = true
b.buildingLock.RUnlock() b.buildingLock.RUnlock()
for _, pkg := range queue { for _, pkg := range queue {
@@ -372,7 +374,7 @@ func (b *BuildManager) repoWorker(repo string) {
pkg.DBPackage = pkgUpd.SaveX(context.Background()) pkg.DBPackage = pkgUpd.SaveX(context.Background())
} }
cmd = exec.Command("paccache", "-rc", filepath.Join(conf.Basedir.Repo, repo, "os", conf.Arch), "-k", "1") cmd = exec.Command("paccache", "-rc", filepath.Join(conf.Basedir.Repo, repo, "os", conf.Arch), "-k", "1") //nolint:gosec
res, err = cmd.CombinedOutput() res, err = cmd.CombinedOutput()
log.Debug(string(res)) log.Debug(string(res))
if err != nil { if err != nil {
@@ -438,7 +440,7 @@ func (b *BuildManager) repoWorker(repo string) {
} }
func (b *BuildManager) syncWorker(ctx context.Context) error { func (b *BuildManager) syncWorker(ctx context.Context) error {
err := os.MkdirAll(filepath.Join(conf.Basedir.Work), 0o755) err := os.MkdirAll(conf.Basedir.Work, 0o755)
if err != nil { if err != nil {
log.Fatalf("error creating work dir %s: %v", conf.Basedir.Work, err) log.Fatalf("error creating work dir %s: %v", conf.Basedir.Work, err)
} }
@@ -447,7 +449,7 @@ func (b *BuildManager) syncWorker(ctx context.Context) error {
gitPath := filepath.Join(conf.Basedir.Work, stateDir) gitPath := filepath.Join(conf.Basedir.Work, stateDir)
if _, err := os.Stat(gitPath); os.IsNotExist(err) { if _, err := os.Stat(gitPath); os.IsNotExist(err) {
cmd := exec.Command("git", "clone", "--depth=1", conf.StateRepo, gitPath) cmd := exec.Command("git", "clone", "--depth=1", conf.StateRepo, gitPath) //nolint:gosec
res, err := cmd.CombinedOutput() res, err := cmd.CombinedOutput()
log.Debug(string(res)) log.Debug(string(res))
if err != nil { if err != nil {

View File

@@ -20,7 +20,7 @@ common:
packager: "ALHP $march$ <alhp@harting.dev>" packager: "ALHP $march$ <alhp@harting.dev>"
makeflags: "-j$buildproc$" makeflags: "-j$buildproc$"
# https://somegit.dev/ALHP/ALHP.GO/issues/110 # https://somegit.dev/ALHP/ALHP.GO/issues/110
rustflags: "-Copt-level=3 -Ctarget-cpu=$march$" rustflags: "-Copt-level=3 -Ctarget-cpu=$march$ -Clink-arg=-Wl,-z,pack-relative-relocs"
ltoflags: ltoflags:
- "-falign-functions=32" # https://github.com/InBetweenNames/gentooLTO/issues/164 - "-falign-functions=32" # https://github.com/InBetweenNames/gentooLTO/issues/164
kcflags: " -march=$march$ -O3" kcflags: " -march=$march$ -O3"

View File

@@ -155,7 +155,11 @@ func housekeeping(repo, march string, wg *sync.WaitGroup) error {
} }
if len(missingSplits) > 0 { if len(missingSplits) > 0 {
log.Infof("[HK] %s->%s missing split-package(s): %s", fullRepo, dbPkg.Pkgbase, missingSplits) log.Infof("[HK] %s->%s missing split-package(s): %s", fullRepo, dbPkg.Pkgbase, missingSplits)
pkg.DBPackage, err = pkg.DBPackage.Update().ClearRepoVersion().ClearTagRev().SetStatus(dbpackage.StatusQueued).Save(context.Background()) pkg.DBPackage, err = pkg.DBPackage.Update().
ClearRepoVersion().
ClearTagRev().
SetStatus(dbpackage.StatusQueued).
Save(context.Background())
if err != nil { if err != nil {
return err return err
} }

View File

@@ -342,7 +342,7 @@ func (p *ProtoPackage) setupBuildDir() (string, error) {
gr = retry.WithMaxRetries(conf.MaxCloneRetries, gr) gr = retry.WithMaxRetries(conf.MaxCloneRetries, gr)
if err := retry.Do(context.Background(), gr, func(ctx context.Context) error { if err := retry.Do(context.Background(), gr, func(ctx context.Context) error {
cmd := exec.Command("git", "clone", "--depth", "1", "--branch", p.State.TagVer, cmd := exec.Command("git", "clone", "--depth", "1", "--branch", p.State.TagVer, //nolint:gosec
fmt.Sprintf("https://gitlab.archlinux.org/archlinux/packaging/packages/%s.git", gitlabPath), buildDir) fmt.Sprintf("https://gitlab.archlinux.org/archlinux/packaging/packages/%s.git", gitlabPath), buildDir)
res, err := cmd.CombinedOutput() res, err := cmd.CombinedOutput()
log.Debug(string(res)) log.Debug(string(res))
@@ -452,7 +452,7 @@ func (p *ProtoPackage) isAvailable(h *alpm.Handle) bool {
} else if p.DBPackage != nil && len(p.DBPackage.Packages) > 0 { } else if p.DBPackage != nil && len(p.DBPackage.Packages) > 0 {
pkg, err = dbs.FindSatisfier(p.DBPackage.Packages[0]) pkg, err = dbs.FindSatisfier(p.DBPackage.Packages[0])
} else { } else {
cmd := exec.Command("unbuffer", "pacsift", "--exact", "--base="+p.Pkgbase, "--repo="+p.Repo.String()) cmd := exec.Command("unbuffer", "pacsift", "--exact", "--base="+p.Pkgbase, "--repo="+p.Repo.String()) //nolint:gosec
var res []byte var res []byte
res, err = cmd.CombinedOutput() res, err = cmd.CombinedOutput()
if err != nil { if err != nil {
@@ -539,7 +539,6 @@ func (p *ProtoPackage) GitVersion(h *alpm.Handle) (string, error) {
return "", err return "", err
} }
pkgloop:
for _, stateFile := range fStateFiles { for _, stateFile := range fStateFiles {
repo, _, _, err := stateFileMeta(stateFile) repo, _, _, err := stateFileMeta(stateFile)
if err != nil { if err != nil {
@@ -548,7 +547,7 @@ func (p *ProtoPackage) GitVersion(h *alpm.Handle) (string, error) {
if iPackage.DB().Name() == repo { if iPackage.DB().Name() == repo {
fStateFiles = []string{stateFile} fStateFiles = []string{stateFile}
break pkgloop break
} }
} }
@@ -589,7 +588,7 @@ func (p *ProtoPackage) genSrcinfo() error {
return nil return nil
} }
cmd := exec.Command("makepkg", "--printsrcinfo", "-p", filepath.Base(p.Pkgbuild)) cmd := exec.Command("makepkg", "--printsrcinfo", "-p", filepath.Base(p.Pkgbuild)) //nolint:gosec
cmd.Dir = filepath.Dir(p.Pkgbuild) cmd.Dir = filepath.Dir(p.Pkgbuild)
res, err := cmd.CombinedOutput() res, err := cmd.CombinedOutput()
if err != nil { if err != nil {

View File

@@ -130,15 +130,6 @@ func statusID2string(s dbpackage.Status) string {
} }
} }
func containsSubStr(str string, subList []string) bool {
for _, checkStr := range subList {
if strings.Contains(str, checkStr) {
return true
}
}
return false
}
func cleanBuildDir(dir, chrootDir string) error { func cleanBuildDir(dir, chrootDir string) error {
if stat, err := os.Stat(dir); err == nil && stat.IsDir() { if stat, err := os.Stat(dir); err == nil && stat.IsDir() {
err = os.RemoveAll(dir) err = os.RemoveAll(dir)
@@ -376,7 +367,8 @@ func setupChroot() error {
return fmt.Errorf("error creating chroot: %w\n%s", err, string(res)) return fmt.Errorf("error creating chroot: %w\n%s", err, string(res))
} }
cmd = exec.Command("sudo", "cp", pacmanConf, filepath.Join(conf.Basedir.Work, chrootDir, pristineChroot, "etc/pacman.conf")) //nolint:gosec cmd = exec.Command("sudo", "cp", pacmanConf, //nolint:gosec
filepath.Join(conf.Basedir.Work, chrootDir, pristineChroot, "etc/pacman.conf"))
res, err = cmd.CombinedOutput() res, err = cmd.CombinedOutput()
log.Debug(string(res)) log.Debug(string(res))
if err != nil { if err != nil {