Added configuration file to BPM

This commit is contained in:
CapCreeperGR 2024-05-29 21:30:22 +03:00
parent 8db2635314
commit ea469c4180
10 changed files with 64 additions and 14 deletions

29
bpm_utils/config.go Normal file
View File

@ -0,0 +1,29 @@
package bpm_utils
import (
"gopkg.in/yaml.v3"
"os"
)
type BPMConfigStruct struct {
CompilationEnv []string `yaml:"compilation_env"`
SilentCompilation bool `yaml:"silent_compilation"`
}
var BPMConfig BPMConfigStruct = BPMConfigStruct{
CompilationEnv: make([]string, 0),
SilentCompilation: false}
func ReadConfig() {
if _, err := os.Stat("/etc/bpm.conf"); os.IsNotExist(err) {
return
}
bytes, err := os.ReadFile("/etc/bpm.conf")
if err != nil {
return
}
err = yaml.Unmarshal(bytes, &BPMConfig)
if err != nil {
return
}
}

View File

@ -193,10 +193,13 @@ func ExecutePackageScripts(filename, rootDir string, operation Operation, postOp
if err != nil { if err != nil {
return err return err
} }
cmd := exec.Command("/bin/bash", temp.Name()) cmd := exec.Command("/bin/bash", temp.Name())
cmd.Stdin = os.Stdin if !BPMConfig.SilentCompilation {
cmd.Stdout = os.Stdout cmd.Stdin = os.Stdin
cmd.Stderr = os.Stderr cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
}
cmd.Dir = rootDir cmd.Dir = rootDir
cmd.Env = os.Environ() cmd.Env = os.Environ()
cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_ROOT=%s", rootDir)) cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_ROOT=%s", rootDir))
@ -680,10 +683,6 @@ fi
cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_VERSION=%s", pkgInfo.Version)) cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_VERSION=%s", pkgInfo.Version))
cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_URL=%s", pkgInfo.Url)) cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_URL=%s", pkgInfo.Url))
cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_ARCH=%s", pkgInfo.Arch)) cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_ARCH=%s", pkgInfo.Arch))
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
depends := make([]string, len(pkgInfo.Depends)) depends := make([]string, len(pkgInfo.Depends))
copy(depends, pkgInfo.Depends) copy(depends, pkgInfo.Depends)
for i := 0; i < len(depends); i++ { for i := 0; i < len(depends); i++ {
@ -696,7 +695,16 @@ fi
} }
cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_DEPENDS=(%s)", strings.Join(depends, " "))) cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_DEPENDS=(%s)", strings.Join(depends, " ")))
cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_MAKE_DEPENDS=(%s)", strings.Join(makeDepends, " "))) cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_PKG_MAKE_DEPENDS=(%s)", strings.Join(makeDepends, " ")))
for _, value := range BPMConfig.CompilationEnv {
cmd.Env = append(cmd.Env, value)
}
cmd.Env = append(cmd.Env, "BPM_PKG_TYPE=source") cmd.Env = append(cmd.Env, "BPM_PKG_TYPE=source")
if !BPMConfig.SilentCompilation {
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
}
err = cmd.Run() err = cmd.Run()
if err != nil { if err != nil {
return err, nil return err, nil
@ -810,9 +818,11 @@ fi
} }
sed := fmt.Sprintf("s/%s/files/", strings.Replace(strings.TrimPrefix(path.Join(temp, "/output/"), "/"), "/", `\/`, -1)) sed := fmt.Sprintf("s/%s/files/", strings.Replace(strings.TrimPrefix(path.Join(temp, "/output/"), "/"), "/", `\/`, -1))
cmd := exec.Command("/usr/bin/tar", "-czvf", compiledInfo.Name+"-"+compiledInfo.Version+".bpm", "pkg.info", path.Join(temp, "/output/"), "--transform", sed) cmd := exec.Command("/usr/bin/tar", "-czvf", compiledInfo.Name+"-"+compiledInfo.Version+".bpm", "pkg.info", path.Join(temp, "/output/"), "--transform", sed)
cmd.Stdin = os.Stdin if !BPMConfig.SilentCompilation {
cmd.Stdout = os.Stdout cmd.Stdin = os.Stdin
cmd.Stderr = os.Stderr cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
}
cmd.Dir = compiledDir cmd.Dir = compiledDir
fmt.Printf("running command: %s %s\n", cmd.Path, strings.Join(cmd.Args, " ")) fmt.Printf("running command: %s %s\n", cmd.Path, strings.Join(cmd.Args, " "))
err = cmd.Run() err = cmd.Run()
@ -1323,9 +1333,11 @@ func RemovePackage(pkg, rootDir string) error {
} }
if _, err := os.Stat(path.Join(pkgDir, "post_remove.sh")); err == nil { if _, err := os.Stat(path.Join(pkgDir, "post_remove.sh")); err == nil {
cmd := exec.Command("/bin/bash", path.Join(pkgDir, "post_remove.sh")) cmd := exec.Command("/bin/bash", path.Join(pkgDir, "post_remove.sh"))
cmd.Stdin = os.Stdin if !BPMConfig.SilentCompilation {
cmd.Stdout = os.Stdout cmd.Stdin = os.Stdin
cmd.Stderr = os.Stderr cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
}
cmd.Dir = rootDir cmd.Dir = rootDir
cmd.Env = os.Environ() cmd.Env = os.Environ()
cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_ROOT=%s", rootDir)) cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_ROOT=%s", rootDir))

View File

@ -1 +0,0 @@
package main

2
go.mod
View File

@ -1,3 +1,5 @@
module capcreepergr.me/bpm module capcreepergr.me/bpm
go 1.22 go 1.22
require gopkg.in/yaml.v3 v3.0.1 // indirect

3
go.sum Normal file
View File

@ -0,0 +1,3 @@
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

View File

@ -32,6 +32,7 @@ var pkgListNumbers = false
var pkgListNames = false var pkgListNames = false
func main() { func main() {
bpm_utils.ReadConfig()
resolveFlags() resolveFlags()
resolveCommand() resolveCommand()
} }

Binary file not shown.

View File

@ -0,0 +1,3 @@
---
compilation_env: []
silent_compilation: false

View File

@ -5,3 +5,4 @@ url: https://gitlab.com/bubble-package-manager/bpm/
license: GPL3 license: GPL3
architecture: x86_64 architecture: x86_64
type: binary type: binary
keep: etc/bpm.conf