如何在Launchpad配方中删除{latest-tag}的前缀?

我有一个看起来像这样的启动台食谱

# 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}

请注意,这将与您当前的扩展已发布的任何内容相比较较低,因为例如0V1V1之后排序。如果必要,您可以使用一个时代(例如1:0{latest-tag}-0~{time}~rev{revno}~pkg{revno:packaging}),以确保它比以前发布的任何内容都更高,但这种提升是不可逆转的,因此应尽量避免使用。
有关更多信息,请参阅: 我在文档中没有看到任何关于处理“最新上游标签”以外的选项,除了将其嵌入到最终版本字符串中之外,也没有其他方法来获取上游版本,如果标签是上游唯一声明的地方。因此,我认为目前我的解决方法或类似的方法是您唯一的选择,但我们可以看看是否有其他人有其他答案。
如果您不接受这个解决方法,欢迎提交针对git-build-recipe的错误报告,包括针对覆盖新用例(如此类情况)的功能请求。至于一般情况下适合的增强功能,我无法预测答案会是什么,尽管提供基于正则表达式的替换扩展可能是可行的,但可能需要以确保在面对不受信任的配方输入时,恶意代码不能在运行git-build-recipe的主机上执行的方式来实现。最好先在错误报告中达成共识,然后再尝试实施此功能增强。

谢谢。你知道在debian/rules中是否可以运行类似sed的命令来替换debian/changelog的版本,并且这会如何影响git-build-recipe的最终deb版本? - Kristopher Ives
这可能作为一个hack起作用。二进制软件包版本不必与源软件包版本匹配,因此您可以在debian/rules中安排至少二进制版本最终使用您想要的内容,使用sed或其他工具。然而,这对于源软件包版本没有帮助,除非Launchpad的流水线不关心输入的源软件包与输出的源软件包不匹配(这很可能是情况)。所以试一试吧!您需要确保上传到PPA的源软件包版本发生变化,否则下次上传将被拒绝。 - Robie Basak