diff --git a/src/bpm/main.go b/src/bpm/main.go index 6602f7a..6bbd0fa 100644 --- a/src/bpm/main.go +++ b/src/bpm/main.go @@ -93,6 +93,7 @@ func main() { currentFlagSet.BoolP("reinstall", "r", false, "Reinstall the specified packages") currentFlagSet.BoolP("reinstall-all", "a", false, "Reinstall the specified packages and their dependencies") currentFlagSet.IntP("jobs", "j", bpmlib.CompilationBPMConfig.CompilationJobs, "Set the amount of concurrent processes to use for source package compilation") + currentFlagSet.BoolP("skip-checks", "s", false, "Skip the check function in source.sh scripts") setupFlagsAndHelp(currentFlagSet, fmt.Sprintf("bpm %s ", subcommand), "Install the specified packages", os.Args[2:]) installPackages() @@ -142,6 +143,7 @@ func main() { currentFlagSet.BoolP("no-sync", "n", false, "Do not sync databases") currentFlagSet.Bool("allow-downgrades", false, "Allow package downgrades") currentFlagSet.BoolP("optional", "o", false, "Install all optional dependencies") + currentFlagSet.BoolP("skip-checks", "s", false, "Skip the check function in source.sh scripts") currentFlagSet.IntP("jobs", "j", bpmlib.CompilationBPMConfig.CompilationJobs, "Set the amount of concurrent processes to use for source package compilation") setupFlagsAndHelp(currentFlagSet, fmt.Sprintf("bpm %s ", subcommand), "Update installed packages", os.Args[2:]) @@ -489,6 +491,7 @@ func installPackages() { installationReason, _ := currentFlagSet.GetString("installation-reason") reinstall, _ := currentFlagSet.GetBool("reinstall") reinstallAll, _ := currentFlagSet.GetBool("reinstall-all") + skipChecks, _ := currentFlagSet.GetBool("skip-checks") compilationJobs, _ := currentFlagSet.GetInt("jobs") // Get packages @@ -549,7 +552,7 @@ func installPackages() { } // Create installation operation - operation, err := bpmlib.InstallPackages(rootDir, ir, reinstallMethod, installRuntime, installOptional, force, verbose, packages...) + operation, err := bpmlib.InstallPackages(rootDir, ir, reinstallMethod, installRuntime, installOptional, force, !skipChecks, verbose, packages...) if errors.As(err, &bpmlib.PackageNotFoundErr{}) || errors.As(err, &bpmlib.DependencyNotFoundErr{}) || errors.As(err, &bpmlib.PackageConflictErr{}) { log.Printf("Error: %s", err) exitCode = 1 @@ -907,6 +910,7 @@ func updatePackages() { noSync, _ := currentFlagSet.GetBool("no-sync") allowDowngrades, _ := currentFlagSet.GetBool("allow-downgrades") installOptional, _ := currentFlagSet.GetBool("optional") + skipChecks, _ := currentFlagSet.GetBool("skip-checks") compilationJobs, _ := currentFlagSet.GetInt("jobs") // Check for required permissions @@ -945,7 +949,7 @@ func updatePackages() { } // Create update operation - operation, err := bpmlib.UpdatePackages(rootDir, !noSync, allowDowngrades, installOptional, force, verbose) + operation, err := bpmlib.UpdatePackages(rootDir, !noSync, allowDowngrades, installOptional, force, !skipChecks, verbose) if errors.As(err, &bpmlib.PackageNotFoundErr{}) || errors.As(err, &bpmlib.DependencyNotFoundErr{}) || errors.As(err, &bpmlib.PackageConflictErr{}) { log.Printf("Error: %s", err) exitCode = 1 diff --git a/src/bpmlib/general.go b/src/bpmlib/general.go index ce37c1f..178cc3f 100644 --- a/src/bpmlib/general.go +++ b/src/bpmlib/general.go @@ -20,12 +20,13 @@ const ( ) // InstallPackages installs the specified packages into the given root directory by fetching them from databases or directly from local bpm archives -func InstallPackages(rootDir string, forceInstallationReason InstallationReason, reinstallMethod ReinstallMethod, installRuntimeDependencies, installOptionalDependencies, forceInstallation, verbose bool, packages ...string) (operation *BPMOperation, err error) { +func InstallPackages(rootDir string, forceInstallationReason InstallationReason, reinstallMethod ReinstallMethod, installRuntimeDependencies, installOptionalDependencies, forceInstallation, runChecks bool, verbose bool, packages ...string) (operation *BPMOperation, err error) { // Setup operation struct operation = &BPMOperation{ Actions: make([]OperationAction, 0), UnresolvedDepends: make([]string, 0), Changes: make(map[string]string), + RunChecks: runChecks, RootDir: rootDir, compiledPackages: make(map[string]string), } @@ -365,7 +366,7 @@ func CleanupCache(rootDir string, cleanupCompilationFiles, cleanupCompiledPackag } // UpdatePackages fetches the newest versions of all installed packages from -func UpdatePackages(rootDir string, syncDatabase bool, allowDowngrades bool, installOptionalDependencies, forceInstallation, verbose bool) (operation *BPMOperation, err error) { +func UpdatePackages(rootDir string, syncDatabase bool, allowDowngrades bool, installOptionalDependencies, forceInstallation, runChecks, verbose bool) (operation *BPMOperation, err error) { // Sync databases if syncDatabase { err := SyncDatabase(verbose) @@ -397,6 +398,7 @@ func UpdatePackages(rootDir string, syncDatabase bool, allowDowngrades bool, ins Actions: make([]OperationAction, 0), UnresolvedDepends: make([]string, 0), Changes: make(map[string]string), + RunChecks: runChecks, RootDir: rootDir, compiledPackages: make(map[string]string), } diff --git a/src/bpmlib/operations.go b/src/bpmlib/operations.go index 01b0327..6e68ff6 100644 --- a/src/bpmlib/operations.go +++ b/src/bpmlib/operations.go @@ -16,6 +16,7 @@ type BPMOperation struct { UnresolvedDepends []string Changes map[string]string CompilationJobs int + RunChecks bool RootDir string compiledPackages map[string]string @@ -680,7 +681,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, operation.CompilationJobs, false, false, verbose) + outputBpmPackages, err := CompileSourcePackage(value.File, compiledDir, operation.CompilationJobs, !operation.RunChecks, false, verbose) if err != nil { return fmt.Errorf("could not compile source package (%s): %s\n", value.File, err) }