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 "_topdirpwd를 사용하여 "최상위 디렉토리를 변경할 수 있다는 것을 알고 있지만 그것은 내가 원하는 것이 아닙니다. 그러면 여전히 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>

관련 정보