aboutsummaryrefslogtreecommitdiff
path: root/bpkg/pkg-bindist.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2023-02-22 10:20:14 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2023-02-22 10:20:14 +0200
commit5837974ede1f489fe1e65cb10188f776fb6d1974 (patch)
tree958b345fd8b3490b358ca0807a1d3c220fc89fab /bpkg/pkg-bindist.cxx
parent10827e2338f9390383c30c95a2cbbfd733d76088 (diff)
WIP
Diffstat (limited to 'bpkg/pkg-bindist.cxx')
-rw-r--r--bpkg/pkg-bindist.cxx28
1 files changed, 17 insertions, 11 deletions
diff --git a/bpkg/pkg-bindist.cxx b/bpkg/pkg-bindist.cxx
index e191996..6db7cdb 100644
--- a/bpkg/pkg-bindist.cxx
+++ b/bpkg/pkg-bindist.cxx
@@ -16,6 +16,7 @@ using namespace butl;
namespace bpkg
{
+ using package = system_package_manager::package;
using packages = system_package_manager::packages;
using recursive_mode = system_package_manager::recursive_mode;
@@ -131,13 +132,11 @@ namespace bpkg
// Skip duplicates.
//
- if (ps == nullptr ||
- find_if (ps->begin (), ps->end (),
- [&d] (const pair<shared_ptr<selected_package>,
- available_packages>& p)
- {
- return p.first == d;
- }) == ps->end ())
+ if (ps == nullptr || find_if (ps->begin (), ps->end (),
+ [&d] (const package& p)
+ {
+ return p.selected == d;
+ }) == ps->end ())
{
const selected_package& p (*d);
@@ -155,7 +154,13 @@ namespace bpkg
}
if (ps != nullptr)
- ps->push_back (make_pair (move (d), move (aps)));
+ {
+ dir_path out;
+ if (ps != &deps)
+ out = p.effective_out_root (db.config);
+
+ ps->push_back (package {move (d), move (aps), move (out)});
+ }
}
if (recursive && !sys)
@@ -308,7 +313,8 @@ namespace bpkg
merge_languages (type, langs, *ap);
const selected_package& r (*p);
- pkgs.push_back (make_pair (move (p), move (aps)));
+ pkgs.push_back (
+ package {move (p), move (aps), r.effective_out_root (db.config)});
// If --recursive is not specified then we want all the immediate
// (system and non-) dependecies in deps. Otherwise, if the recursive
@@ -336,7 +342,7 @@ namespace bpkg
// Load the package manifest (source of extra metadata). This should be
// always possible since the package is configured and is not system.
//
- const shared_ptr<selected_package>& sp (pkgs.front ().first);
+ const shared_ptr<selected_package>& sp (pkgs.front ().selected);
package_manifest pm (
pkg_verify (o,
@@ -374,7 +380,7 @@ namespace bpkg
//
if (verb && !o.no_result ())
{
- const selected_package& p (*pkgs.front ().first);
+ const selected_package& p (*pkgs.front ().selected);
text << "generated " << spm->os_release.name_id << " package for "
<< p.name << '/' << p.version;