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
    

    (署名されていないパッケージを作成するには2つのオプションがあります。)

ただし、最後のステップでエラーが発生します。

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

ベストアンサー1

このソフトウェア(Postfix)はアップストリームGitでは提供されていないようですが、このリポジトリのタグとして手動でインポートされます。タグはv3.3.2アップストリームソースを反映しているようです(ディレクトリを含まないdebian/)。

このリポジトリはフォーマットのデフォルトタグ名に従わないようですupstream/<version>。これは管理者エラーまたは個人的な好みの可能性があります。

よりgit-buildpackage マンページ次の2つのオプションの場合:

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

おすすめ記事