diff --git a/bpm_utils/config.go b/bpm_utils/config.go new file mode 100644 index 0000000..d50e7f3 --- /dev/null +++ b/bpm_utils/config.go @@ -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 + } +} diff --git a/bpm_utils/package_utils.go b/bpm_utils/package_utils.go index 621afb1..d8cd3db 100644 --- a/bpm_utils/package_utils.go +++ b/bpm_utils/package_utils.go @@ -193,10 +193,13 @@ func ExecutePackageScripts(filename, rootDir string, operation Operation, postOp if err != nil { return err } + cmd := exec.Command("/bin/bash", temp.Name()) - cmd.Stdin = os.Stdin - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr + if !BPMConfig.SilentCompilation { + cmd.Stdin = os.Stdin + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + } cmd.Dir = rootDir cmd.Env = os.Environ() 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_URL=%s", pkgInfo.Url)) 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)) copy(depends, pkgInfo.Depends) 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_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") + + if !BPMConfig.SilentCompilation { + cmd.Stdin = os.Stdin + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + } err = cmd.Run() if 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)) cmd := exec.Command("/usr/bin/tar", "-czvf", compiledInfo.Name+"-"+compiledInfo.Version+".bpm", "pkg.info", path.Join(temp, "/output/"), "--transform", sed) - cmd.Stdin = os.Stdin - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr + if !BPMConfig.SilentCompilation { + cmd.Stdin = os.Stdin + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + } cmd.Dir = compiledDir fmt.Printf("running command: %s %s\n", cmd.Path, strings.Join(cmd.Args, " ")) 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 { cmd := exec.Command("/bin/bash", path.Join(pkgDir, "post_remove.sh")) - cmd.Stdin = os.Stdin - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr + if !BPMConfig.SilentCompilation { + cmd.Stdin = os.Stdin + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + } cmd.Dir = rootDir cmd.Env = os.Environ() cmd.Env = append(cmd.Env, fmt.Sprintf("BPM_ROOT=%s", rootDir)) diff --git a/config.go b/config.go deleted file mode 100644 index 06ab7d0..0000000 --- a/config.go +++ /dev/null @@ -1 +0,0 @@ -package main diff --git a/go.mod b/go.mod index 5288e56..de36652 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module capcreepergr.me/bpm go 1.22 + +require gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..4bc0337 --- /dev/null +++ b/go.sum @@ -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= diff --git a/main.go b/main.go index 562b3df..a55b612 100644 --- a/main.go +++ b/main.go @@ -32,6 +32,7 @@ var pkgListNumbers = false var pkgListNames = false func main() { + bpm_utils.ReadConfig() resolveFlags() resolveCommand() } diff --git a/test_packages/x86_64/bpm/bpm.bpm b/test_packages/x86_64/bpm/bpm.bpm index 5f27e1c..26aa954 100644 Binary files a/test_packages/x86_64/bpm/bpm.bpm and b/test_packages/x86_64/bpm/bpm.bpm differ diff --git a/test_packages/x86_64/bpm/files/etc/bpm.conf b/test_packages/x86_64/bpm/files/etc/bpm.conf new file mode 100644 index 0000000..c1151a8 --- /dev/null +++ b/test_packages/x86_64/bpm/files/etc/bpm.conf @@ -0,0 +1,3 @@ +--- +compilation_env: [] +silent_compilation: false \ No newline at end of file diff --git a/test_packages/x86_64/bpm/files/usr/bin/bpm b/test_packages/x86_64/bpm/files/usr/bin/bpm index b04fa79..2a20e4b 100755 Binary files a/test_packages/x86_64/bpm/files/usr/bin/bpm and b/test_packages/x86_64/bpm/files/usr/bin/bpm differ diff --git a/test_packages/x86_64/bpm/pkg.info b/test_packages/x86_64/bpm/pkg.info index 3a8a6bc..c99f5dd 100644 --- a/test_packages/x86_64/bpm/pkg.info +++ b/test_packages/x86_64/bpm/pkg.info @@ -5,3 +5,4 @@ url: https://gitlab.com/bubble-package-manager/bpm/ license: GPL3 architecture: x86_64 type: binary +keep: etc/bpm.conf \ No newline at end of file