如何从 Debian Salsa Git 构建 Postfix? (gbp:错误:upstream/3.3.2 不是有效的树状结构)

如何从 Debian Salsa Git 构建 Postfix? (gbp:错误:upstream/3.3.2 不是有效的树状结构)

我想重建 Debian 软件包“postfix”。没有任何花哨的东西,所以没有本地补丁和未签名的包就可以了。

这是我尝试过的:

  1. 安装一些依赖项:

    $ apt install fakeroot git-buildpackage
    $ apt build-dep postfix
    

    (我的构建机器上的 Postfix 与我尝试构建的版本相同/相似,因此这应该可以很好地安装大多数构建依赖项。我也没有任何构建依赖项问题。)

  2. 克隆 Debian 源:

    $ git clone https://salsa.debian.org/postfix-team/postfix-dev.git
    

    在撰写本文时,该值指向 c21140525af28be0e1bacd932e85b96babe6ca98(标签:v3.3.2-4)。

  3. cd 进入克隆:

    $ cd postfix-dev
    
  4. IIUC,我现在应该能够使用如下命令构建包

    $ gbp buildpackage -uc -us
    

    (有两个选项可以制作未签名的包。)

然而,最后一步会导致错误:

gbp:error: upstream/3.3.2 is not a valid treeish

答案1

这个软件(Postfix)似乎不是来自上游 git,而是手动导入到该存储库中的标签中。该标签v3.3.2似乎反映了上游源(它不包含目录debian/)。

看来这个存储库不符合格式中的默认标签名称upstream/<version>,这可能是维护者的错误或个人偏好。

请参阅git-buildpackage 的联机帮助页对于以下两个选项:

--git-upstream-tree=[BRANCH|SLOPPY|TAG|TREEISH]
    How to find the upstream sources used to generate the tarball.
    TAG (the default) [...]

--git-upstream-tag=TAG-FORMAT
    Use this tag format when looking for tags of upstream versions to build the
    upstream tarballs. Default is upstream/%(version)s. [...]

这意味着您可以手动将 git 中的任何头指向上游分支。命令

$ gbp buildpackage --git-upstream-tag='v%(version)s' -us -uc

将很好地构建 Postfix 包!

重要的!您可能需要完全清理 git 存储库,否则即使git status告诉您一切都干净,您也可能会在检查本地修改的文件时遇到失败。


为了更有效地获取自动化构建,这里有一个仅获取必要内容来构建 Postfix 的方法:

# Fetch Debian-version tag (notice the -<digit> suffix).
$ git clone -b v3.3.2-4 --depth 1 https://salsa.debian.org/postfix-team/postfix-dev.git
$ cd postfix-dev

# Fetch the upstream tag
$ git fetch --depth 1 origin refs/tags/v3.3.2:refs/tags/v3.3.2

# Because we're not on 'master' (not on any branch actually), we need to add
# the --git-ignore-branch option.
$ gbp buildpackage --git-upstream-tag='v%(version)s' --git-ignore-branch -us -uc

相关内容