2011-03-18 3 views
1

module-starter을 사용하여 디렉토리를 만들고 여러 모듈과 테스트를 추가 작성했다고 가정 해 보겠습니다.MakeMaker : make vs make dist

make test 다음 그러나 make dist은 tar.gz의에 MANIFEST에 언급 된 파일을 팩 것, lib/t/의 모든 모듈에서 모든 테스트를 실행하는 것입니다

그래서 나는 최근에 make test && make dist을 실행하고 여전히 고장난 패키지를 가져 와서 화상을 입었습니다.

제 질문은 : 뭔가 빠졌습니까? 아니면 MakeMaker에서 사소한 버그로보고 될 수 있습니까? (어떤 Makefile.PL에 의존하는 것 같습니다).

+0

? 매니페스트를 업데이트 할 필요가 없다는 뜻입니까? 당신이 추가하고 싶은 것을 자동적으로 어떻게 알 수 있습니까? –

+0

나는 다른 방법으로 주위에 신경 쓰지 않을 것이다. 테스트 할 때 매니페스트가 아닌 파일을 건너 뛰기. 간과하기 힘든 마법도 필요하지 않습니다. – Dallaylaen

+1

[Dist :: Zilla] (http://dzil.org) 사용을 고려해야합니다. 표준 플러그인 중 하나는 TestRelease입니다.이 프로그램은 타르볼의 압축을 풀고이를 사용하여 테스트를 실행하여 출시중인 배포판이 실제로 테스트를 통과하는지 확인합니다. – cjm

답변

5

make disttest을 사용하면 MANIFEST (make distdir과 동일)의 배포 디렉토리를 만들고 make test을 실행할 수 있습니다. 이렇게하면 출하 될 파일과 동일한 파일에 대한 실행이 보장됩니다.

또한 MANIFEST를 최신 상태로 유지해야하는 릴리스를 만들기 위해 MANIFEST를 다시 작성합니다.

모두 모두, 내 기본 릴리스 스크립트입니다 : 내가 버그를 누락

perl Makefile.PL 
make manifest 
make disttest 
make dist 
+0

'make disttest'는 실제로'make test '를 어떻게 작동시키고 싶은지, 고마워요. – Dallaylaen

3

패키지를 해제하기 전에 make distcheck을 실행하십시오. 이렇게하면 MANIFEST에서 누락 된 항목에 대해 경고합니다.

일부 모듈은 빌드 프로세스 중에 파일을 생성하므로 (lib/ 포함), MANIFEST에 누락 된 파일로 인해 반드시 make dist이 실패하지 않아야합니다.

+0

설명해 주셔서 감사합니다. – Dallaylaen