2013-02-26 3 views
1

, 나는 현재이 잘 작동debhelper deprecated option --until? buildbot에 패키지를 구축 할 때

dpkg-buildpackage ... 

을하는 하나의 buildstep을 가지고 있지만 모든 출력에서 ​​볼 힘든 만드는 폭포에서 하나의 단계에 함께 집중한다 구성 중, 빌드 중 또는 패키징 중 실패 여부를 한눈에 알 수 있습니다. 그래서 나는 물건을 만드는 더 정교한 방법을 원합니다.

dh를 사용하여 빌드하려는 모든 패키지를 알고 있습니다. 그게 내가, 구성을 구축, 테스트 및 수 있음을 의미 다음 명령 중 하나를 실행, 각각의 패키지 buildsteps :

dh build --until dh_auto_configure 
dh build --until dh_auto_build 
dh build --until dh_auto_test 
dpkg-buildpackage -nc ... 

(패키지 중 하나를 사용하는 경우는 오버라이드 (override)를 할 수 있도록 내가이를 호출 할 DH 사용 buildbot이 문제의 패키지가 재정의를 사용하는지 여부를 알 필요가 없습니다.

지금까지는 그렇게 좋았습니다. 문제는 dh가 --until 옵션을 사용하기를 원하지 않는다는 것입니다. 그것은 말합니다

"dh : - 단호한 옵션은 더 이상 사용되지 않습니다. 대신 재정의 대상을 사용하십시오."

이것은 나를 슬프게합니다 ... dh와 같은 소리는이 사용 사례를 예상하지 않습니다.

그래서 지금 질문 :

는 어디 그런 일이 논의되어야한다?

dh가 실제로 내 유스 케이스를 다른 방식으로 처리하나요, 메모가 누락 되었습니까?

답변

0

이것은 아마도 dh의 훌륭한 작업이 아닙니다. 일반적으로 메이크 파일 debian/rules에서 사용하기위한 것입니다. --until 접근법은 비록 당신에게 다소 문제가 될 수 있습니다.

당신 그러나 dpkg-buildpackage는 (여러분에게 필요한 모든 것을 말해야 맨 페이지의 상단에있는 요약) 자신의 스크립트에 소요되는 모든 단계를 복용하여 빌드 프로세스를 분할 할 수있다.

하지만 그럴 경우 반드시 configurebuild 부분을 분할 할 수는 없습니다. debian/rules 파일은 required이 아니므로 해당 단계를 분리하거나 사용자가 간단하게 만들 수 있습니다. 많은 사람들은하지 만, 그렇지 않은 사람도 있습니다.

제 생각에 dpkg-buildpackage은 빌드 환경, 종속성 확인, 트리 준비, fakeroot 호출 등으로 미묘한 것을 엉망으로 만들지 않도록 각 단계마다 가능한 한 많이 수행하도록 권장합니다. 먼저 트리를 정리하고 처음부터 다시 시작하지 않으려면 단계 후 -nc을 전달하십시오. dh은 위상이 겹치면 (예 : build*binary*) 충분히 똑똑해서 이미 완료 한 부분을 건너 뜁니다.

당신은/올바른 구성을 얻을 같은 대부분의 패키지의 분리를 만들 수 : 항상 올바른 패키지를해야 최소한

set -e 
# check build deps, clean tree, make source debs 
dpkg-buildpackage -S -us -uc 

if grep '^configure:' debian/rules; then 
    debian/rules configure 
elif grep '^override_dh_auto_configure:' debian/rules; then 
    debian/rules override_dh_auto_configure 
elif grep '^%:' debian/rules; then 
    dh_auto_configure 
else 
    : # oh well, it'll get done during the build phase if necessary 
fi 

# prepare environment, perform build 
dpkg-buildpackage -nc -T build 

# install stuff into temp dir, tar it up, make the deb file 
dpkg-buildpackage -nc -b -us -uc 

# remake the changes file, if you care, since right now it only 
# includes the binaries 
dpkg-genchanges > ../$whatever.changes 

.

+0

그게 무슨 가치가 있는지, 나는 문제의 모든 패키지를 통제 할 수 있고, 그들을 dh로 변환하고있다. –

+0

(저주 stackoverflow의 UI :-) 그게 무슨 가치가 있는지, 나는 문제의 모든 패키지를 제어 할 수 있고 그들을 dh로 변환되었습니다. 또한, Coverity를 ​​실행하는 것과 같이 이것을 사용하기 때문에 dpkg-buildpackage를 사용하면 하나 이상의 환경 변수를 통과해야합니다. 하지만 dpkg-buildpackage (또는 더 나은 debuild)를 사용하는 것이 Build To Way이며, 내가 해킹하는 것들은 그들이하는 일을해야한다는 것에 동의합니다. –