diff --git a/pisi/api.py b/pisi/api.py index c4fdeb0f..a4d2b3ab 100644 --- a/pisi/api.py +++ b/pisi/api.py @@ -140,6 +140,12 @@ def package_graph(A, ignore_installed = False): B = Bp return G_f +def postpone(package): + try: + import pisi.comariface as comariface + comariface.register(package) + except ImportError: + raise Error(_("COMAR: comard not fully installed")) def configure_pending(): # start with pending packages diff --git a/pisi/atomicoperations.py b/pisi/atomicoperations.py index 5917d5e9..37674c11 100644 --- a/pisi/atomicoperations.py +++ b/pisi/atomicoperations.py @@ -82,9 +82,10 @@ class Install(AtomicOperation): self.extract_install() self.store_pisi_files() if ctx.comar: - self.register_comar_scripts() import pisi.comariface as comariface - comariface.run_postinstall(self.pkginfo.name) + self.register_comar_scripts() + if not ctx.config.options.postpone: + comariface.run_postinstall(self.pkginfo.name) self.update_databases() self.update_environment() diff --git a/pisi/cli/commands.py b/pisi/cli/commands.py index 38c33297..7ea82b4a 100644 --- a/pisi/cli/commands.py +++ b/pisi/cli/commands.py @@ -336,6 +336,8 @@ class PackageOp(Command): p = self.parser p.add_option("-B", "--ignore-comar", action="store_true", default=False, help=_("bypass comar configuration agent")) + p.add_option("-V", "--postpone", action="store_true", + default=False, help=_("Postpone postinstall script")) ignoredep_opt(self) def init(self): diff --git a/pisi/installdb.py b/pisi/installdb.py index a5a973c2..00bdafbd 100644 --- a/pisi/installdb.py +++ b/pisi/installdb.py @@ -140,7 +140,7 @@ class InstallDB: pkg = str(pkg) if self.is_installed(pkg): raise InstallDBError(_("Already installed")) - if ctx.config.get_option('ignore_comar'): + if ctx.config.get_option('postpone'): state = 'ip' self.dp[pkg] = True else: