나는 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를 빌드 디렉토리로 직접 사용한다는 의미인 것 같은데, 이는 나에게 쓸모가 없습니다. 하지만 여전히 테스트하고 싶은지 확인하기 위해 다음을 수행합니다.
- 나는 모든 것을 복사했습니다.
~/rpmbuild/SOURCES
- 그러나 내가 만든 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>