2012-12-25 15 views
3

우분투 런치 패드 빌드 봇에서 소스가 저장소 (주 프로그램의 소스처럼)에서 가져온 정적 라이브러리 (빌드 시간 의존성 만)를 컴파일하고 링크합니다.pbuilder env debian/rules 스크립트에서 cmake의 'make install'을 사용하는 방법?

#!/usr/bin/make -f 
    export PREFIX=/usr 
    export CFLAGS= -O3 -fomit-frame-pointer -flto -fwhole-program 
    export CXXFLAGS= -O3 -fomit-frame-pointer -flto -fwhole-program 

    %: 
     dh [email protected] 
    override_dh_auto_configure: 
     cd src/munt;cmake -DCMAKE_CXX_FLAGS="-O3 -fomit-frame-pointer -flto" mt32emu;make;make install 
#...compile of the program that depends on mt32emu... 

을하지만 실패 : 현재

내가 뭐하는 거지

Install the project... 
-- Install configuration: "" 
-- Installing: /usr/local/lib/libmt32emu.a 
CMake Error at cmake_install.cmake:36 (FILE): 
    file INSTALL cannot copy file 
    "/tmp/buildd/dosbox-0.74+20121225/src/munt/libmt32emu.a" to 
    "/usr/local/lib/libmt32emu.a". 


make[2]: *** [install] Error 1 
make[2]: Leaving directory `/tmp/buildd/dosbox-0.74+20121225/src/munt' 
make[1]: *** [override_dh_auto_configure] Error 2 
make[1]: Leaving directory `/tmp/buildd/dosbox-0.74+20121225' 
make: *** [build] Error 2 
dpkg-buildpackage: error: debian/rules build gave error exit status 2 
E: Failed autobuilding of package 
I: unmounting /var/cache/pbuilder/ccache filesystem 
I: unmounting dev/pts filesystem 
I: unmounting proc filesystem 
I: cleaning the build env 
I: removing directory /var/cache/pbuilder/build//2751 and its subdirectories 

아이디어는 런치 패드는 pbuilder에서 우분투 저장소에 포장되지 않은 정적 라이브러리 의존성을 설치하는 것입니다 env이므로 이미 시스템 종속성 인 것처럼 사용할 수 있습니다.

내가 'sudo make install'(debian/control의 build-deps에 sudo를 추가)하려고하면, 로컬로 테스트 할 때 'pbuilder'비밀번호를 묻습니다. 우분투 buildbots에 기계.

편집 : '아니오 tty 현재없고 askpass 프로그램이 지정되지 않았습니다'때문에 buildbots에서 실제로 실패합니다.

답변

0

이 권한인가요? (즉, '/ usr/local'에 설치하려면 'sudo'를 사용해야합니까?)

'/ usr/local'에 설치해야합니까?

단지 정적 라이브러리 인 경우 "mt32emu에 의존하는 프로그램"을 빌드하기 위해 순전히 필요합니다. 그러면 어디 에나 둘 수 있으며, 종속 프로그램이 어디에 있는지 알 수 있습니다.

다른 위치에 설치하려면 -DCMAKE_INSTALL_PREFIX =/directory/where/you/have/write/privileges를 사용하십시오. 또는 make install과 함께 DESTDIR =을 사용하십시오.

0

특히 dh을 사용할 때 rules 파일을 정리할 수있는 몇 가지 방법이 있습니다. % 대상에서

, 당신이 구축하고 어떤 디렉토리 지정하는 매개 변수 builddirectory을 걸릴 dh 명령의 전부. 이는 해당 디렉토리 cd에 빌더 및 다음 호출 명령 (make, cmake 등을 알려줍니다).

또한, dh 파일을 설치해야합니다. 이것은 자동으로 수행됩니다. make install 번으로 직접 전화하지 않아도됩니다.

여기에 약간 쉽게 읽기 rules 파일입니다 :

#!/usr/bin/make -f 
export PREFIX=/usr 
export CFLAGS= -O3 -fomit-frame-pointer -flto -fwhole-program 
export CXXFLAGS= -O3 -fomit-frame-pointer -flto -fwhole-program 

%: 
    dh [email protected] --builddirectory=src/munt 

override_dh_auto_configure: 
    cd src/munt && cmake -DCMAKE_CXX_FLAGS="-O3 -fomit-frame-pointer -flto" mt32emu 
#...compile of the program that depends on mt32emu... 
0

나는 결국 런치 패드 저장소 종속성에 따라하여 '해결', 그 라이브러리와 건물에 대한 전체 패키지 건물입니다 런치 패드 그런 다음 내 다른 빌드에 배치 된 아카이브를 가져옵니다. 그것이 명백하게했다라고 생각해라.