diff --git a/pisi/build.py b/pisi/build.py index 7e273393..9b954cc6 100644 --- a/pisi/build.py +++ b/pisi/build.py @@ -407,7 +407,7 @@ class Builder: os.chdir(curDir) def check_build_dependencies(self): - """fail if dependencies not satisfied""" + """check and try to install build dependencies, otherwise fail.""" build_deps = self.spec.source.buildDependencies @@ -436,7 +436,13 @@ class Builder: if dep_unsatis: ctx.ui.info(_("Unsatisfied Build Dependencies:") + ' ' + util.strlist([str(x) for x in dep_unsatis]) ) + + def fail(): + raise Error(_('Cannot build package due to unsatisfied build dependencies')) + if ctx.config.get_option('no_install'): + fail() + if not ctx.config.get_option('ignore_dependency'): for dep in dep_unsatis: if not dependency.repo_satisfies_dep(dep): @@ -446,7 +452,7 @@ class Builder: ctx.ui.info(_('Installing build dependencies.')) operations.install([dep.package for dep in dep_unsatis]) else: - raise Error(_('Cannot build package due to unsatisfied build dependencies')) + fail() else: ctx.ui.warning(_('Ignoring build dependencies.')) diff --git a/pisi/cli/commands.py b/pisi/cli/commands.py index 83181d62..39025643 100644 --- a/pisi/cli/commands.py +++ b/pisi/cli/commands.py @@ -364,6 +364,8 @@ unpack, setup, build, install, package default=True, help=_("automatically create a static package with ar files")) self.parser.add_option("-g", "--create-debug", action="store_true", default=True, help=_("automatically create a debug package with debug files")) + self.parser.add_option("", "--no-install", action="store_true", + default=False, help=_("don't install build dependencies, fail if a build dependency is present")) def run(self): @@ -371,12 +373,17 @@ unpack, setup, build, install, package self.help() return - - if ctx.get_option('until'): - if ctx.get_option('until') in Build.steps: + # We cant use ctx.get_option as we didn't init PiSi + # currently... + if self.options.until: + if not self.options.until in Build.steps: raise Error(_('Step must be one of %s ') % pisi.util.strlist(Build.steps)) - self.init() + if self.options.no_install: + self.init(database=True, write=False) + else: + self.init() + if ctx.get_option('output_dir'): ctx.ui.info(_('Output directory: %s') % ctx.config.options.output_dir) else: