mirror of
https://github.com/EnumeratedDev/bpm.git
synced 2026-09-16 02:26:12 +00:00
Split compilation config options into separate config file
This commit is contained in:
@@ -21,6 +21,7 @@ install: build/bpm config/
|
|||||||
# Install files
|
# Install files
|
||||||
install -Dm755 build/bpm $(DESTDIR)$(BINDIR)/bpm
|
install -Dm755 build/bpm $(DESTDIR)$(BINDIR)/bpm
|
||||||
install -Dm644 config/bpm.conf $(DESTDIR)$(SYSCONFDIR)/bpm.conf
|
install -Dm644 config/bpm.conf $(DESTDIR)$(SYSCONFDIR)/bpm.conf
|
||||||
|
install -Dm644 config/bpm-compilation.conf $(DESTDIR)$(SYSCONFDIR)/bpm-compilation.conf
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
rm $(DESTDIR)$(BINDIR)/bpm
|
rm $(DESTDIR)$(BINDIR)/bpm
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
privilege_escalator_cmd: "sudo"
|
||||||
|
compilation_env: []
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
ignore_packages: []
|
ignore_packages: []
|
||||||
privilege_escalator_cmd: "sudo"
|
|
||||||
compilation_env: []
|
|
||||||
cleanup_make_dependencies: true
|
cleanup_make_dependencies: true
|
||||||
databases:
|
databases:
|
||||||
- name: example-database
|
- name: example-database
|
||||||
|
|||||||
+4
-4
@@ -217,7 +217,7 @@ func resolveCommand() {
|
|||||||
for i, term := range searchTerms {
|
for i, term := range searchTerms {
|
||||||
nameResults := make([]*bpmlib.PackageInfo, 0)
|
nameResults := make([]*bpmlib.PackageInfo, 0)
|
||||||
descResults := make([]*bpmlib.PackageInfo, 0)
|
descResults := make([]*bpmlib.PackageInfo, 0)
|
||||||
for _, db := range bpmlib.BPMConfig.Databases {
|
for _, db := range bpmlib.MainBPMConfig.Databases {
|
||||||
for _, entry := range db.Entries {
|
for _, entry := range db.Entries {
|
||||||
if strings.Contains(entry.Info.Name, term) {
|
if strings.Contains(entry.Info.Name, term) {
|
||||||
nameResults = append(nameResults, entry.Info)
|
nameResults = append(nameResults, entry.Info)
|
||||||
@@ -630,7 +630,7 @@ func resolveCommand() {
|
|||||||
// Run 'bpm install' using the set privilege escalator command
|
// Run 'bpm install' using the set privilege escalator command
|
||||||
args := []string{executable, "install", "--installation-reason=make-dependency"}
|
args := []string{executable, "install", "--installation-reason=make-dependency"}
|
||||||
args = append(args, unmetDepends...)
|
args = append(args, unmetDepends...)
|
||||||
cmd := exec.Command(bpmlib.BPMConfig.PrivilegeEscalatorCmd, args...)
|
cmd := exec.Command(bpmlib.CompilationBPMConfig.PrivilegeEscalatorCmd, args...)
|
||||||
if yesAll {
|
if yesAll {
|
||||||
cmd.Args = slices.Insert(cmd.Args, 3, "-y")
|
cmd.Args = slices.Insert(cmd.Args, 3, "-y")
|
||||||
}
|
}
|
||||||
@@ -714,7 +714,7 @@ func resolveCommand() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Run 'bpm cleanup' using the set privilege escalator command
|
// Run 'bpm cleanup' using the set privilege escalator command
|
||||||
cmd := exec.Command(bpmlib.BPMConfig.PrivilegeEscalatorCmd, executable, "cleanup")
|
cmd := exec.Command(bpmlib.CompilationBPMConfig.PrivilegeEscalatorCmd, executable, "cleanup")
|
||||||
if yesAll {
|
if yesAll {
|
||||||
cmd.Args = slices.Insert(cmd.Args, 3, "-y")
|
cmd.Args = slices.Insert(cmd.Args, 3, "-y")
|
||||||
}
|
}
|
||||||
@@ -924,7 +924,7 @@ func resolveFlags() {
|
|||||||
}
|
}
|
||||||
if !isFlagSet(cleanupFlagSet, "depends") && !isFlagSet(cleanupFlagSet, "make-depends") && !isFlagSet(cleanupFlagSet, "compilation-files") && !isFlagSet(cleanupFlagSet, "compiled-pkgs") && !isFlagSet(cleanupFlagSet, "fetched-pkgs") {
|
if !isFlagSet(cleanupFlagSet, "depends") && !isFlagSet(cleanupFlagSet, "make-depends") && !isFlagSet(cleanupFlagSet, "compilation-files") && !isFlagSet(cleanupFlagSet, "compiled-pkgs") && !isFlagSet(cleanupFlagSet, "fetched-pkgs") {
|
||||||
cleanupDependencies = true
|
cleanupDependencies = true
|
||||||
cleanupMakeDependencies = bpmlib.BPMConfig.CleanupMakeDependencies
|
cleanupMakeDependencies = bpmlib.MainBPMConfig.CleanupMakeDependencies
|
||||||
cleanupCompilationFiles = true
|
cleanupCompilationFiles = true
|
||||||
cleanupCompiledPackages = true
|
cleanupCompiledPackages = true
|
||||||
cleanupFetchedPackages = true
|
cleanupFetchedPackages = true
|
||||||
|
|||||||
@@ -3,13 +3,14 @@ package bpmlib
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"gopkg.in/yaml.v3"
|
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path"
|
"path"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
var rootCompilationUID = "65534"
|
var rootCompilationUID = "65534"
|
||||||
@@ -136,7 +137,7 @@ func CompileSourcePackage(archiveFilename, outputDirectory string, skipChecks bo
|
|||||||
} else {
|
} else {
|
||||||
env = append(env, "BPM_PKG_ARCH="+GetArch())
|
env = append(env, "BPM_PKG_ARCH="+GetArch())
|
||||||
}
|
}
|
||||||
env = append(env, BPMConfig.CompilationEnvironment...)
|
env = append(env, CompilationBPMConfig.CompilationEnvironment...)
|
||||||
|
|
||||||
// Execute prepare and build functions in source.sh script
|
// Execute prepare and build functions in source.sh script
|
||||||
cmd := exec.Command("bash", "-c",
|
cmd := exec.Command("bash", "-c",
|
||||||
|
|||||||
+38
-18
@@ -1,41 +1,61 @@
|
|||||||
package bpmlib
|
package bpmlib
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gopkg.in/yaml.v3"
|
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
type BPMConfigStruct struct {
|
type MainBPMConfigStruct struct {
|
||||||
IgnorePackages []string `yaml:"ignore_packages"`
|
IgnorePackages []string `yaml:"ignore_packages"`
|
||||||
PrivilegeEscalatorCmd string `yaml:"privilege_escalator_cmd"`
|
|
||||||
CompilationEnvironment []string `yaml:"compilation_env"`
|
|
||||||
CleanupMakeDependencies bool `yaml:"cleanup_make_dependencies"`
|
CleanupMakeDependencies bool `yaml:"cleanup_make_dependencies"`
|
||||||
Databases []*BPMDatabase `yaml:"databases"`
|
Databases []*BPMDatabase `yaml:"databases"`
|
||||||
}
|
}
|
||||||
|
|
||||||
var BPMConfig BPMConfigStruct
|
type CompilationBPMConfigStruct struct {
|
||||||
|
PrivilegeEscalatorCmd string `yaml:"privilege_escalator_cmd"`
|
||||||
|
CompilationEnvironment []string `yaml:"compilation_env"`
|
||||||
|
}
|
||||||
|
|
||||||
|
var MainBPMConfig MainBPMConfigStruct
|
||||||
|
var CompilationBPMConfig CompilationBPMConfigStruct
|
||||||
|
|
||||||
func ReadConfig() (err error) {
|
func ReadConfig() (err error) {
|
||||||
if _, err = os.Stat("/etc/bpm.conf"); os.IsNotExist(err) {
|
var file *os.File
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
bytes, err := os.ReadFile("/etc/bpm.conf")
|
// Set default config options
|
||||||
if err != nil {
|
MainBPMConfig = MainBPMConfigStruct{
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
BPMConfig = BPMConfigStruct{
|
|
||||||
CleanupMakeDependencies: true,
|
CleanupMakeDependencies: true,
|
||||||
}
|
}
|
||||||
err = yaml.Unmarshal(bytes, &BPMConfig)
|
|
||||||
|
// Read main BPM config
|
||||||
|
file, err = os.Open("/etc/bpm.conf")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
err = yaml.NewDecoder(file).Decode(&MainBPMConfig)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
file.Close()
|
||||||
|
|
||||||
for i := len(BPMConfig.Databases) - 1; i >= 0; i-- {
|
// Read compilation BPM config
|
||||||
if BPMConfig.Databases[i].Disabled != nil && *BPMConfig.Databases[i].Disabled {
|
if _, err := os.Stat("/etc/bpm-compilation.conf"); err == nil {
|
||||||
BPMConfig.Databases = append(BPMConfig.Databases[:i], BPMConfig.Databases[i+1:]...)
|
file, err = os.Open("/etc/bpm-compilation.conf")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = yaml.NewDecoder(file).Decode(&CompilationBPMConfig)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
file.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove disabled databases from memory
|
||||||
|
for i := len(MainBPMConfig.Databases) - 1; i >= 0; i-- {
|
||||||
|
if MainBPMConfig.Databases[i].Disabled != nil && *MainBPMConfig.Databases[i].Disabled {
|
||||||
|
MainBPMConfig.Databases = append(MainBPMConfig.Databases[:i], MainBPMConfig.Databases[i+1:]...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,14 @@ package bpmlib
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"gopkg.in/yaml.v3"
|
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
type BPMDatabase struct {
|
type BPMDatabase struct {
|
||||||
@@ -172,7 +173,7 @@ func (db *BPMDatabase) SyncLocalDatabaseFile() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ReadLocalDatabaseFiles() (err error) {
|
func ReadLocalDatabaseFiles() (err error) {
|
||||||
for _, db := range BPMConfig.Databases {
|
for _, db := range MainBPMConfig.Databases {
|
||||||
// Initialize struct values
|
// Initialize struct values
|
||||||
db.Entries = make(map[string]*BPMDatabaseEntry)
|
db.Entries = make(map[string]*BPMDatabaseEntry)
|
||||||
db.VirtualPackages = make(map[string][]string)
|
db.VirtualPackages = make(map[string][]string)
|
||||||
@@ -188,7 +189,7 @@ func ReadLocalDatabaseFiles() (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetDatabase(name string) *BPMDatabase {
|
func GetDatabase(name string) *BPMDatabase {
|
||||||
for _, db := range BPMConfig.Databases {
|
for _, db := range MainBPMConfig.Databases {
|
||||||
if db.Name == name {
|
if db.Name == name {
|
||||||
return db
|
return db
|
||||||
}
|
}
|
||||||
@@ -203,7 +204,7 @@ func GetDatabaseEntry(str string) (*BPMDatabaseEntry, *BPMDatabase, error) {
|
|||||||
if pkgName == "" {
|
if pkgName == "" {
|
||||||
return nil, nil, errors.New("could not find database entry for this package")
|
return nil, nil, errors.New("could not find database entry for this package")
|
||||||
}
|
}
|
||||||
for _, db := range BPMConfig.Databases {
|
for _, db := range MainBPMConfig.Databases {
|
||||||
if db.ContainsPackage(pkgName) {
|
if db.ContainsPackage(pkgName) {
|
||||||
return db.Entries[pkgName], db, nil
|
return db.Entries[pkgName], db, nil
|
||||||
}
|
}
|
||||||
@@ -226,7 +227,7 @@ func GetDatabaseEntry(str string) (*BPMDatabaseEntry, *BPMDatabase, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func FindReplacement(pkg string) *BPMDatabaseEntry {
|
func FindReplacement(pkg string) *BPMDatabaseEntry {
|
||||||
for _, db := range BPMConfig.Databases {
|
for _, db := range MainBPMConfig.Databases {
|
||||||
for _, entry := range db.Entries {
|
for _, entry := range db.Entries {
|
||||||
for _, replaced := range entry.Info.Replaces {
|
for _, replaced := range entry.Info.Replaces {
|
||||||
if replaced == pkg {
|
if replaced == pkg {
|
||||||
@@ -240,7 +241,7 @@ func FindReplacement(pkg string) *BPMDatabaseEntry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ResolveVirtualPackage(vpkg string) *BPMDatabaseEntry {
|
func ResolveVirtualPackage(vpkg string) *BPMDatabaseEntry {
|
||||||
for _, db := range BPMConfig.Databases {
|
for _, db := range MainBPMConfig.Databases {
|
||||||
if v, ok := db.VirtualPackages[vpkg]; ok {
|
if v, ok := db.VirtualPackages[vpkg]; ok {
|
||||||
for _, pkg := range v {
|
for _, pkg := range v {
|
||||||
return db.Entries[pkg]
|
return db.Entries[pkg]
|
||||||
|
|||||||
@@ -362,7 +362,7 @@ func UpdatePackages(rootDir string, syncDatabase bool, installOptionalDependenci
|
|||||||
|
|
||||||
// Search for packages
|
// Search for packages
|
||||||
for _, pkg := range pkgs {
|
for _, pkg := range pkgs {
|
||||||
if slices.Contains(BPMConfig.IgnorePackages, pkg) {
|
if slices.Contains(MainBPMConfig.IgnorePackages, pkg) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
var entry *BPMDatabaseEntry
|
var entry *BPMDatabaseEntry
|
||||||
@@ -407,7 +407,7 @@ func UpdatePackages(rootDir string, syncDatabase bool, installOptionalDependenci
|
|||||||
|
|
||||||
// SyncDatabase syncs all databases declared in /etc/bpm.conf
|
// SyncDatabase syncs all databases declared in /etc/bpm.conf
|
||||||
func SyncDatabase(verbose bool) (err error) {
|
func SyncDatabase(verbose bool) (err error) {
|
||||||
for _, db := range BPMConfig.Databases {
|
for _, db := range MainBPMConfig.Databases {
|
||||||
if verbose {
|
if verbose {
|
||||||
fmt.Printf("Fetching package database file for database (%s)...\n", db.Name)
|
fmt.Printf("Fetching package database file for database (%s)...\n", db.Name)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user