我签出了 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 作为构建目录,这对我来说毫无用处。但为了确保我仍然想测试:
- 我将所有内容复制到
~/rpmbuild/SOURCES
- 在 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 "_topdir
pwd"
来更改顶级目录,但这不是我想要的,那么我仍然必须将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>