From 53c2aa8e382dd50d09b385285bc3fa0b645ace0a Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Fri, 19 Aug 2016 17:37:29 +0300 Subject: Support system packages --- bpkg/pkg-disfigure.cxx | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'bpkg/pkg-disfigure.cxx') diff --git a/bpkg/pkg-disfigure.cxx b/bpkg/pkg-disfigure.cxx index de9b681..37a2989 100644 --- a/bpkg/pkg-disfigure.cxx +++ b/bpkg/pkg-disfigure.cxx @@ -25,6 +25,8 @@ namespace bpkg tracer trace ("pkg_disfigure"); + l4 ([&]{trace << *p;}); + database& db (t.database ()); tracer_guard tg (db, trace); @@ -51,6 +53,17 @@ namespace bpkg } } + if (p->substate == package_substate::system) + { + db.erase (p); + t.commit (); + + p->state = package_state::transient; + p->substate = package_substate::none; + + return; + } + // Since we are no longer configured, clear the prerequisites list. // p->prerequisites.clear (); @@ -154,12 +167,15 @@ namespace bpkg fail << "package " << n << " is " << p->state << info << "expected it to be configured"; - l4 ([&]{trace << p->name << " " << p->version;}); - pkg_disfigure (c, o, t, p); // Commits the transaction. + assert (p->state == package_state::unpacked || + p->state == package_state::transient); + if (verb) - text << "disfigured " << p->name << " " << p->version; + text << (p->state == package_state::transient + ? "purged " + : "disfigured ") << *p; return 0; } -- cgit v1.1