diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2023-03-14 09:32:22 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2023-03-17 08:58:33 +0200 |
commit | afd0b8699b009b96be34ba2a20441ecb223957ce (patch) | |
tree | 7b34b0166c994769135b2b10b4f885e0ad124a4e /bpkg/system-package-manager.cxx | |
parent | 3cc61ab4a6275428520cb0fb2f18dc3e09aef28a (diff) |
Add support for generating installation archives in pkg-bindist
Diffstat (limited to 'bpkg/system-package-manager.cxx')
-rw-r--r-- | bpkg/system-package-manager.cxx | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/bpkg/system-package-manager.cxx b/bpkg/system-package-manager.cxx index 9e54418..c4ebe5a 100644 --- a/bpkg/system-package-manager.cxx +++ b/bpkg/system-package-manager.cxx @@ -18,6 +18,7 @@ #include <bpkg/system-package-manager-debian.hxx> #include <bpkg/system-package-manager-fedora.hxx> +#include <bpkg/system-package-manager-archive.hxx> using namespace std; using namespace butl; @@ -147,13 +148,35 @@ namespace bpkg o.no_progress () ? false : optional<bool> ()); - unique_ptr<system_package_manager> r; + optional<os_release> oos; + if (o.os_release_id_specified ()) + { + oos = os_release (); + oos->name_id = o.os_release_id (); + } + else + oos = host_release (host); - if (optional<os_release> oos = host_release (host)) + if (o.os_release_name_specified ()) + oos->name = o.os_release_name (); + + if (o.os_release_version_id_specified ()) + oos->version_id = o.os_release_version_id (); + + unique_ptr<system_package_manager> r; + if (oos) { os_release& os (*oos); - if (host.class_ == "linux") + // Note that we don't make archive the default on any platform in case + // we later want to support its native package format. + // + if (name == "archive") + { + r.reset (new system_package_manager_archive ( + move (os), host, arch, progress, &o)); + } + else if (host.class_ == "linux") { if (is_or_like (os, "debian") || is_or_like (os, "ubuntu")) |