aboutsummaryrefslogtreecommitdiff
path: root/bpkg
diff options
context:
space:
mode:
Diffstat (limited to 'bpkg')
-rw-r--r--bpkg/pkg-bindist.cli40
-rw-r--r--bpkg/system-package-manager-debian.cxx22
-rw-r--r--bpkg/system-package-manager-debian.hxx2
-rw-r--r--bpkg/system-package-manager-fedora.hxx2
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