diff --git a/src/bpm/main.go b/src/bpm/main.go index 25890ab..6ebf379 100644 --- a/src/bpm/main.go +++ b/src/bpm/main.go @@ -149,6 +149,7 @@ func main() { currentFlagSet.BoolP("yes", "y", false, "Enter 'yes' in all prompts") currentFlagSet.BoolP("depends", "d", false, "Install required dependencies for package compilation") currentFlagSet.BoolP("skip-checks", "s", false, "Skip the check function in source.sh scripts") + currentFlagSet.BoolP("keep", "k", false, "Keep compilation files after successful package compilation") currentFlagSet.BoolP("output-directory", "o", false, "Set the output directory for the binary packages") currentFlagSet.Int("output-fd", -1, "Set the file descriptor output package names will be written to") setupFlagsAndHelp(currentFlagSet, fmt.Sprintf("bpm %s ", subcommand), "Compile source packages and convert them to binary ones", os.Args[2:]) @@ -942,6 +943,7 @@ func compilePackage() { rootDir, _ := currentFlagSet.GetString("root") verbose, _ := currentFlagSet.GetBool("verbose") yesAll, _ := currentFlagSet.GetBool("yes") + keepCompilationFiles, _ := currentFlagSet.GetBool("keep") installSrcPkgDepends, _ := currentFlagSet.GetBool("depends") skipChecks, _ := currentFlagSet.GetBool("skip-checks") outputDirectory, _ := currentFlagSet.GetString("output-directory") @@ -1139,7 +1141,7 @@ func compilePackage() { return } - outputBpmPackages, err := bpmlib.CompileSourcePackage(sourcePackage, outputDirectory, skipChecks) + outputBpmPackages, err := bpmlib.CompileSourcePackage(sourcePackage, outputDirectory, skipChecks, keepCompilationFiles) if err != nil { // Remove unused packages cleanupFunc() diff --git a/src/bpmlib/compilation.go b/src/bpmlib/compilation.go index 574991e..f71a23e 100644 --- a/src/bpmlib/compilation.go +++ b/src/bpmlib/compilation.go @@ -21,7 +21,7 @@ import ( var rootCompilationUID = "65534" var rootCompilationGID = "65534" -func CompileSourcePackage(archiveFilename, outputDirectory string, skipChecks bool) (outputBpmPackages map[string]string, err error) { +func CompileSourcePackage(archiveFilename, outputDirectory string, skipChecks, keepCompilationFiles bool) (outputBpmPackages map[string]string, err error) { // Initialize map outputBpmPackages = make(map[string]string) @@ -334,6 +334,11 @@ func CompileSourcePackage(archiveFilename, outputDirectory string, skipChecks bo outputBpmPackages[pkgInfo.Name] = outputFilename } + // Delete temporary directory + if !keepCompilationFiles { + os.RemoveAll(tempDirectory) + } + return outputBpmPackages, nil } diff --git a/src/bpmlib/operations.go b/src/bpmlib/operations.go index ddc6272..6ba8c77 100644 --- a/src/bpmlib/operations.go +++ b/src/bpmlib/operations.go @@ -592,7 +592,7 @@ func (operation *BPMOperation) Execute(verbose, force bool) (err error) { // Compile source package if not compiled already if _, ok := operation.compiledPackages[pkgNameToInstall]; !ok { - outputBpmPackages, err := CompileSourcePackage(value.File, compiledDir, false) + outputBpmPackages, err := CompileSourcePackage(value.File, compiledDir, false, false) if err != nil { return fmt.Errorf("could not compile source package (%s): %s\n", value.File, err) }