diff options
Diffstat (limited to 'bpkg')
-rw-r--r-- | bpkg/pkg-bindist.cli | 40 | ||||
-rw-r--r-- | bpkg/system-package-manager-debian.cxx | 22 | ||||
-rw-r--r-- | bpkg/system-package-manager-debian.hxx | 2 | ||||
-rw-r--r-- | bpkg/system-package-manager-fedora.hxx | 2 |
4 files changed, 49 insertions, 17 deletions
diff --git a/bpkg/pkg-bindist.cli b/bpkg/pkg-bindist.cli index aa66796..4e03225 100644 --- a/bpkg/pkg-bindist.cli +++ b/bpkg/pkg-bindist.cli @@ -38,7 +38,8 @@ namespace bpkg the binary package is generated for the host architecture using the host's standard system package manager. Additional command line variables (<vars>, normally \cb{config.*}) can be passed to the build system during - the installation step. + the installation step. See distribution-specific description sections + below for details and invocation examples. The specified packages may have dependencies and the default behavior is to not bundle them but rather to specify them as dependencies in the @@ -55,6 +56,32 @@ namespace bpkg // class pkg_bindist_debian_options { + "\h|DEBIAN DESCRIPTION| + + The Debian binary packages are generated by producing the standard + \cb{debian/control}, \cb{debian/rules}, and other package metadata files + and then invoking \cb{dpkg-buildpackage(1)} to build the binary package + from that. In particular, the \cb{debian/rules} implemenation is based on + the \cb{dh(1)} command sequencer. While this approach is normally used to + build packages from source, this implementation \"pretends\" that this is + what's happening by overriding a number of \cb{dh} targets to invoke the + \cb{build2} build system on the required packages directly in their + \cb{bpkg} configuration locations. Typical invocation: + + \ + bpkg build libhello + bpkg test libhello + bpkg bindist -o /tmp/output/ libhello + \ + + Note that the \cb{dpkg-dev} (or \cb{build-essential}) and \cb{debhelper} + Debian packages must be installed before invocation. + + See \l{bpkg#bindist-mapping-debian-produce Debian Package Mapping for + Production} for details on \cb{bpkg} to Debian package name and version + mapping. + " + "\h|PKG-BINDIST DEBIAN OPTIONS|" bool --debian-prepare-only @@ -126,16 +153,17 @@ namespace bpkg string --debian-main-depends { "<v>", - "Override the language runtime dependencies in the \cb{Depends} - \cb{control} file field value of the main binary package." + "Override the language runtime dependencies (such as \cb{libc6}, + \cb{libstdc++6}, etc) in the \cb{Depends} \cb{control} file field + value of the main binary package." } string --debian-dev-depends { "<v>", - "Override the language runtime dependencies in the \cb{Depends} - \cb{control} file field value of the development (\cb{-dev}) binary - package." + "Override the language runtime dependencies (such as \cb{libc-dev}, + \cb{libstdc++-dev}, etc) in the \cb{Depends} \cb{control} file field + value of the development (\cb{-dev}) binary package." } }; diff --git a/bpkg/system-package-manager-debian.cxx b/bpkg/system-package-manager-debian.cxx index 1abfb84..f1c794d 100644 --- a/bpkg/system-package-manager-debian.cxx +++ b/bpkg/system-package-manager-debian.cxx @@ -1561,6 +1561,8 @@ namespace bpkg // Map the version. // + // NOTE: THE BELOW DESCRIPTION IS ALSO REPRODUCED IN THE BPKG MANUAL. + // // To recap, a Debian package version has the following form: // // [<epoch>:]<upstream>[-<revision>] @@ -1646,28 +1648,28 @@ namespace bpkg // to revision. Note that this also means we will have to make the 0 // revision explicit. For example: // - // 1.2.3-0~ubuntu20.04 // 1.2.3-1~debian10 + // 1.2.3-0~ubuntu20.04 // // The next case to consider is when we have the upstream version // (upstream-version manifest value). After some rumination it feels - // correct to use it instead of the <epoch>-<upstream> components in the + // correct to use it in place of the <epoch>-<upstream> components in the // above mapping (upstream version itself cannot have epoch). In other // words, we will add the pre-release and revision components from the // bpkg version. If this is not the desired semantics, then it can always // be overrided with the distribution version. // - // Finally, we have the distribution version. The <epoch> and <upstream> - // components are straightforward: they should be specified by the - // distribution version as required. This leaves pre-release and + // Finally, we have the distribution version. The Debian <epoch> and + // <upstream> components are straightforward: they should be specified by + // the distribution version as required. This leaves pre-release and // revision. It feels like in most cases we would want these copied over // from the bpkg version automatically -- it's too tedious and error- // prone to maintain them manually. However, we want the user to have the // full override ability. So instead, if empty revision is specified, as - // in 1.2.3-, then we automatically add bpkg revision. Similarly, if empty - // pre-release is specified, as in 1.2.3~, then we add bpkg pre-release. - // To add both automatically, we would specify 1.2.3~- (other combinations - // are 1.2.3~b.1- and 1.2.3~-1). + // in 1.2.3-, then we automatically add the bpkg revision. Similarly, if + // empty pre-release is specified, as in 1.2.3~, then we add the bpkg + // pre-release. To add both automatically, we would specify 1.2.3~- (other + // combinations are 1.2.3~b.1- and 1.2.3~-1). // // Note also that per the Debian version specification, if upstream // contains `:` and/or `-`, then epoch and/or revision must be specified @@ -1857,6 +1859,8 @@ namespace bpkg // fairly complex ones) tend to prefer dh and there is no reason for us to // try to buck this trend. // + // NOTE: THE BELOW DESCRIPTION IS ALSO REWORDED IN BPKG-PKG-BINDIST(1). + // // So, to sum up, the plan is to produce debian/rules that uses the dh // command sequencer and then invoke dpkg-buildpackage to produce the binary // package from that. While this approach is normally used to build things diff --git a/bpkg/system-package-manager-debian.hxx b/bpkg/system-package-manager-debian.hxx index eb9d91b..4736a7c 100644 --- a/bpkg/system-package-manager-debian.hxx +++ b/bpkg/system-package-manager-debian.hxx @@ -18,7 +18,7 @@ namespace bpkg // consumption and the dpkg-buildpackage/debhelper/dh tooling for // production. // - // NOTE: the below description is also reproduced in the bpkg manual. + // NOTE: THE BELOW DESCRIPTION IS ALSO REPRODUCED IN THE BPKG MANUAL. // // For background, a library in Debian is normally split up into several // packages: the shared library package (e.g., libfoo1 where 1 is the ABI diff --git a/bpkg/system-package-manager-fedora.hxx b/bpkg/system-package-manager-fedora.hxx index 982881a..2eebb90 100644 --- a/bpkg/system-package-manager-fedora.hxx +++ b/bpkg/system-package-manager-fedora.hxx @@ -16,7 +16,7 @@ namespace bpkg // The system package manager implementation for Fedora and alike (Red Hat // Enterprise Linux, CentOS, etc) using the DNF frontend. // - // NOTE: the below description is also reproduced in the bpkg manual. + // NOTE: THE BELOW DESCRIPTION IS ALSO REPRODUCED IN THE BPKG MANUAL. // // For background, a library in Fedora is normally split up into several // packages: the shared library package (e.g., libfoo), the development |