2016-08-18 1 views
2

표준 레시피와 내 소유물을 포함하는 이미지를 만듭니다. 포함 된 모든 패키지에서 사용하는 라이센스를 나열하고 예를 들어 상용 응용 프로그램에 사용할 수 있는지 나중에 확인하고 싶습니다.Yocto의 패키지 그룹 및 이미지 라이센스

나는 놀랍게도 packagegroups에 LICENSE 플래그가 이미 있습니다.

bitbake -e -n -v core-image-minimal | grep "LICENSE" 

그것은 그것이 BB 파일에 정의되어 있기 때문에 라이센스 = MIT를 반환 : 나는 일을 나타났습니다.

그러나 포함 된 모든 패키지에 대한 정보가 없습니다. 이 MIT는 수동으로 core-image-minimal.bb에 넣어졌지만 모든 종속성에 관심이 있습니다. 내 .bb 파일에 대해 동일한 문제가 있습니다.

접근 한

해결책은 INCOMPATIBLE_LICENSE 등 모든 라이선스를 넣어하는 것입니다 다음

bitbake -k -n -e -v <recipe> | grep "incompatible with license" 

다음 LICENSE_FLAGS_WHITELIST에 추가하고 INCOMPATIBLE_LICENSE 및 반복 처리에서 제거, 튀어 어느 보십시요. 문제는 매번 작업이 완료 될 때마다 전체 작업 공간을 다시 구문 분석하고 시간이 오래 걸린다는 것입니다.

쉽게 확인할 수있는 스크립트가 있습니까? Yocto와 같은 python이 항상 그렇습니다. 메타 I/클래스/license.bbclass를 편집 check_license_format 함수의 for 루프에

bb.warn('%s license is %s' %(pn, licenses)) 

추가 2

접근. 지금은 각 패키지에 대한 라이센스를 인쇄,하지만 난 종류가 그래서, 나는 "패키지 관리하기 때문에 내 모든 조리법을 컴파일 할 수없는 그것을

을 할 수

좋은 방법을 요약하고 싶습니다 "기능은 현재 deb 패키지에서 작동하지 않습니다 (here을 읽으십시오). 이미지 레시피를 수정하고 @Roman Khimov의 방법을 사용하십시오. 그것을하는 청결한 방법입니다.

답변

8

특별한 작업을 수행 할 필요가 없습니다. 이미지를 빌드하고 build/tmp/deploy/licenses/$IMAGE_NAME-$MACHINE-$DATE/license.manifest에 결과 매니페스트 파일을 봅니다 (물론 LICENSE_DIRECTORY을 다시 정의하지 않은 경우). 난 내 자신의 generic-amd64 기계에 대한 core-image-minimal을 구축 할 경우

예를 들어, 나는 build/tmp-musl/deploy/licenses/core-image-minimal-generic-amd64-20160818141324/license.manifest의 결과를 얻을 :

PACKAGE NAME: base-files 
PACKAGE VERSION: 3.0.14 
RECIPE NAME: base-files 
LICENSE: GPLv2 

PACKAGE NAME: base-passwd 
PACKAGE VERSION: 3.5.29 
RECIPE NAME: base-passwd 
LICENSE: GPLv2+ 
... 
+0

가 건조 실행 (-n, 나는 테스트에는 라이센스 없어 작업을 만들 수있는 방법이 있나요 매니 페스트)? –

+0

@DavidBensoussan :'license_create_manifest()'가'ROOTFS_POSTPROCESS_COMMAND'에서 실행되고 rootfs 생성 단계에 있기 때문에 그렇게 생각하지 마십시오. 또한 이론적으로 적어도 동적 패키지로 인해 이미지를 빌드 할 때까지 전체 패키지 및 라이센스 목록을 작성할 수 없습니다. –