我有一个启动板食谱看起来像这样:
# git-build-recipe format 0.4 deb-version {latest-tag}-0~{time}~rev{revno}~pkg{revno:packaging}
lp:kvantum master
nest packaging lp:~krisives/kvantum/+git/kvantum-packaging debian master
但是,那上游在版本号前加上前缀,V
这会导致打包过程抱怨版本必须以数字开头。作者希望保留其V
前缀标签名称。
除了手动修改changelog
我的包装存储库之外,有没有办法让配方自动使用{latest-tag}
而不破坏构建过程?
答案1
一个解决方法是简单地确保上游版本是软件包版本的组成部分做以数字开头,插入一个数字。例如,您可以使用:
# git-build-recipe format 0.4 deb-version 0{latest-tag}-0~{time}~rev{revno}~pkg{revno:packaging}
请注意,这将比您当前扩展中已经发布的任何内容的排序要低,因为例如0V1
排序在之后V1
。如果必须,您可以使用一个纪元(例如,1:0{latest-tag}-0~{time}~rev{revno}~pkg{revno:packaging}
以确保它排序高于之前发布的任何内容,但这种颠簸是不可逆的,因此应尽可能避免。
了解更多信息:
您可以在以下位置找到有关打包版本字符串如何工作的解释 Debian 政策第 5.6.1.2 节。
您可以从源代码开始,找到变量扩展的确切实现git-build-recipe 包。
查看记录食谱如何运作, 包括变量扩展的详细信息。请注意,本文档实际上是针对基于 bzr 的配方,而 git 的实现仅记录为“类似”(有一个此处有 bug)。
您可以使用 测试软件包版本字符串比较
dpkg --compare-versions
,例如dpkg --compare-versions 0V1 gt V1 && echo true || echo false
。请参阅dpkg(1)了解详情。
除了将“最新上游标签”嵌入到最终版本字符串中之外,我在文档中没有看到任何选项可以对它执行任何操作,如果标签是上游声明它的唯一位置,也没有任何其他方法可以获取上游版本。因此,我认为我的解决方法或类似的方法目前是您唯一的选择,但我们可以看看是否有其他人有其他答案。
如果您不能接受此解决方法,欢迎报告针对 git-build-recipe 的错误包括功能请求以涵盖诸如此类的新用例。不过,我无法说出对于一般情况下哪些增强功能是合适的答案。例如,在扩展中提供基于正则表达式的替换的增强功能可能是可行的,但可能需要以确保在面对不受信任的配方输入时无法在运行 git-build-recipe 的主机上执行恶意代码的方式实现。在尝试实现这样的功能增强之前,最好先在错误中找到一致意见。