From 2dbac9c6d08697e28af28178b2ce041140164842 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Mon, 7 Feb 2022 14:02:11 +0300 Subject: Introduce package_skeleton for evaluating dependency clauses --- bpkg/package.cxx | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'bpkg/package.cxx') diff --git a/bpkg/package.cxx b/bpkg/package.cxx index b544773..c8ad9d6 100644 --- a/bpkg/package.cxx +++ b/bpkg/package.cxx @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -539,6 +540,38 @@ namespace bpkg return lazy_shared_ptr (ddb, move (prerequisite)); } + shared_ptr + make_available (const common_options& options, + database& db, + const shared_ptr& sp) + { + assert (sp != nullptr && sp->state != package_state::broken); + + if (sp->system ()) + return make_shared (sp->name, sp->version); + + // The package is in at least fetched state, which means we should + // be able to get its manifest. + // + const optional& a (sp->archive); + + package_manifest m ( + sp->state == package_state::fetched + ? pkg_verify (options, + a->absolute () ? *a : db.config_orig / *a, + true /* ignore_unknown */, + false /* expand_values */, + true /* load_buildfiles */) + : pkg_verify (options, + sp->effective_src_root (db.config_orig), + true /* ignore_unknown */, + true /* load_buildfiles */, + // Copy potentially fixed up version from selected package. + [&sp] (version& v) {v = sp->version;})); + + return make_shared (move (m)); + } + pair, database*> find_dependency (database& db, const package_name& pn, bool buildtime) { -- cgit v1.1