rpmbuildの「--build-in-place」は実際に何を意味しますか?

rpmbuildの「--build-in-place」は実際に何を意味しますか?

git repoを確認しましたhttps://github.com/rpmfusion/buildsys-build-rpmfusion.git

rpmbuild -bs --build-in-place buildsys-build-rpmfusion.spec最初はソースのコピーを避けることができると思いましたが、間違って~/rpmbuild/SOURCESいました。

error: Bad file: /home/user/rpmbuild/SOURCES/buildsys-build-rpmfusion-kerneldevpkgs-current: No such file or directory
error: Bad file: /home/user/rpmbuild/SOURCES/buildsys-build-rpmfusion-README: No such file or directory
error: Bad file: /home/user/rpmbuild/SOURCES/buildsys-build-rpmfusion-list-kernels.sh: No such file or directory

その後、そのマニュアルを参照してください。

--build-in-place
              Build  from  locally  checked  out  sources.  Sets  _builddir  to  current  working
              directory.  Skips  handling  of  -n and untar in the %setup and the deletion of the
              buildSubdir.

だからこれはpwdをビルドディレクトリとして直接使用することを意味しているようですが、これは私には役に立ちません。しかし、まだテストしたいことを確認するには、次のようにします。

  1. 私はすべてをコピーしました。~/rpmbuild/SOURCES
  2. しかし、私が作成したgit repoディレクトリでは、rpmbuild -ba --build-in-place buildsys-build-rpmfusion.specすべてがまだそれに基づいており、まだビルドディレクトリとして使用されているものと同じではありません。rpmbuild -ba buildsys-build-rpmfusion.spec~/rpmbuild/~/rpmbuild/BUILDROOT/

だから効果は何ですか--build-in-place

私は--define "_topdir pwdを使用して"トップレベルのディレクトリを変更できることを知っていますが、それは私が望むものではありません。その後、mkdir {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}ソースコードをSOURCESにコピーする必要があります。

ベストアンサー1

また、すでにチェックアウトされたタールボールをビルドする前に準備する必要がないようにするソリューションを探しています。質問に回答がないことがわかったら、ソースを確認することにしました。 https://github.com/rpm-software-management/rpm/blob/master/rpmbuild.c#L445

提出ですhttps://github.com/rpm-software-management/rpm/commit/0265acbde87036df08da16507a8c4c9a9e6c3c64

SOURCEの存在を確認する部分は見られませんでしたが、SOURCESディレクトリを準備せずにパッケージをビルドすることができて役に立ちました。

私もCWDでビルドするためにToodirを使用します。

rpmbuild --define "_topdir $PWD" --build-in-place -bb <package>.spec

あなたはフラグを使用しましたが、-bs私は-bbフラグを使用しました。

  -bb                        build binary package only from <specfile>
  -bs                        build source package only from <specfile>

おすすめ記事