rpmbuild 中的“--build-in-place”实际上意味着什么?

rpmbuild 中的“--build-in-place”实际上意味着什么?

我签出了 git repohttps://github.com/rpmfusion/buildsys-build-rpmfusion.git

首先我认为 userpmbuild -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 目录中,我做了但是,它与Everything 仍然基于它rpmbuild -ba --build-in-place buildsys-build-rpmfusion.spec没有什么区别它仍然用作构建目录。rpmbuild -ba buildsys-build-rpmfusion.spec~/rpmbuild/~/rpmbuild/BUILDROOT/

那么效果是什么呢--build-in-place

我知道我可以使用--define "_topdirpwd"来更改顶级目录,但这不是我想要的,那么我仍然必须将mkdir {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}源代码复制到 SOURCES 中。

答案1

我也在寻找允许我不准备 tarball 之前构建的解决方案,因为它已经签出。当我发现你的问题没有答案时,我决定检查来源。 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>

相关内容