aboutsummaryrefslogtreecommitdiff
path: root/bpkg/system-package-manager.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'bpkg/system-package-manager.cxx')
-rw-r--r--bpkg/system-package-manager.cxx25
1 files changed, 22 insertions, 3 deletions
diff --git a/bpkg/system-package-manager.cxx b/bpkg/system-package-manager.cxx
index 1503c32..aa9bed8 100644
--- a/bpkg/system-package-manager.cxx
+++ b/bpkg/system-package-manager.cxx
@@ -15,14 +15,33 @@ namespace bpkg
unique_ptr<system_package_manager>
make_system_package_manager (const target_triplet& host,
- const string& type)
+ const string& name)
{
unique_ptr<system_package_manager> r;
+ if (optional<os_release> osr = host_os_release (host))
+ {
+ if (host.class_ == "linux")
+ {
+ if (osr->name_id == "debian" ||
+ osr->name_id == "ubuntu" ||
+ find_if (osr->like_ids.begin (), osr->like_ids.end (),
+ [] (const string& n)
+ {
+ return n == "debian" || n == "ubuntu";
+ }) != osr->like_ids.end ())
+ {
+ // @@ TODO: verify name if specified.
+
+ //r.reset (new system_package_manager_debian (move (*osr)));
+ }
+ }
+ }
+
if (r == nullptr)
{
- if (!type.empty ())
- fail << "unsupported package manager type '" << type << "' for host "
+ if (!name.empty ())
+ fail << "unsupported package manager '" << name << "' for host "
<< host;
}