diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2023-03-27 08:46:58 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2023-03-27 08:46:58 +0200 |
commit | d38f564abaf6fcbc6c7cf2922f3e8f4c8327362f (patch) | |
tree | 07bd84e520a2ac9989237ccbcc8534e1c183ede4 /bpkg/system-package-manager-debian.cxx | |
parent | b4179919e9456784d91e3ce2766c734213fe2945 (diff) |
Add append/prepend support to pkg-bindist --{debian,archive}-build-meta
Diffstat (limited to 'bpkg/system-package-manager-debian.cxx')
-rw-r--r-- | bpkg/system-package-manager-debian.cxx | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/bpkg/system-package-manager-debian.cxx b/bpkg/system-package-manager-debian.cxx index b06487f..53d3a07 100644 --- a/bpkg/system-package-manager-debian.cxx +++ b/bpkg/system-package-manager-debian.cxx @@ -1849,13 +1849,36 @@ namespace bpkg if (!no_build_metadata) { sv += '~'; - if (build_metadata) - sv += *build_metadata; - else + + if (!build_metadata) { sv += os_release.name_id; sv += os_release.version_id; // Could be empty. } + else + { + const string& md (*build_metadata); + + bool f (md.front () == '+'); + bool b (md.back () == '+'); + + if (f && b) // Note: covers just `+`. + fail << "invalid build metadata '" << md << "'"; + + if (f || b) + { + if (b) + sv.append (md, 0, md.size () - 1); + + sv += os_release.name_id; + sv += os_release.version_id; + + if (f) + sv.append (md, 1, md.size () - 1); + } + else + sv += md; + } } return r; |