Yocto 프로젝트에서는 다양한 오픈소스 패키지를 관리하기 때문에 라이센스 관리가 중요하다. Yocto 프로젝트는 이를 위해 "LICENSE" 파일을 각 패키지에 포함시키고, 패키지 메타데이터에서 라이센스 정보를 관리한다.
라이센스 파일 추가
모든 패키지에는 해당 패키지의 라이센스를 명시하는 파일이 존재해야 한다. 이 파일의 위치는 보통 다음과 같다:
<recipe-directory>/LICENSE
각 패키지는 저작권 정보와 라이센스 텍스트를 포함하게 되며, 이는 패키지 배포 시 포함되어야 한다.
메타데이터에서 라이센스 지정
각 레시피 파일에서 라이센스를 지정해야 한다. 이는 레시피 파일의 주요 메타데이터 항목 중 하나이다. 레시피 파일은 .bb
확장자를 가지며, 라이센스 정보는 다음과 같이 지정할 수 있다:
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=<checksum>"
위의 예제에서 LICENSE
변수는 패키지가 사용하는 라이센스를 명시한다. LIC_FILES_CHKSUM
변수는 라이센스 파일의 체크섬을 포함하며, 이는 Yocto 프로젝트가 빌드 중 라이센스 파일의 무결성을 확인하는 데 사용된다.
여러 라이센스의 사용
일부 패키지는 여러 라이센스를 사용할 수 있다. 이 경우에는 여러 라이센스를 &
나 |
기호로 구분하여 지정할 수 있다:
LICENSE = "GPL-2.0 & LGPL-2.1"
LIC_FILES_CHKSUM = "file://LICENSE;md5=<checksum>"
여기서 &
기호는 해당 패키지가 두 라이센스 모두를 따름을 의미하고, |
기호는 둘 중 하나의 라이센스를 선택할 수 있음을 의미한다.
라이센스 파일 체크섬
Yocto 프로젝트에서는 라이센스 파일이 변조되지 않았는지 확인하기 위해 체크섬을 사용한다. Yocto에서는 보통 MD5나 SHA256 체크섬을 사용한다:
LIC_FILES_CHKSUM = "file://LICENSE;md5=c4ca4238a0b923820dcc509a6f75849b"
라이센스 컴플라이언스
Yocto 프로젝트는 또한 라이센스 컴플라이언스를 위한 도구를 제공한다. LICENSE_CREATE_PACKAGE
변수를 통해 배포되는 모든 패키지의 라이센스 정보를 컴파일할 수 있다. 이 변수는 보통 local.conf
파일에서 설정된다:
LICENSE_CREATE_PACKAGE = "1"
이 설정을 통해 Yocto 프로젝트는 모든 라이센스 정보를 하나의 패키지로 묶어 제공할 수 있다. 이를 통해 최종 제품의 라이센스 컴플라이언스를 보장할 수 있다.
라이센스 검증 도구
Yocto 프로젝트는 라이센스 컴플라이언스를 효과적으로 관리하기 위해 여러 도구를 제공한다. 여기에는 빌드 시 라이센스를 검증하고, 빌드 후 분석하는 도구들이 포함된다.
buildhistory
buildhistory
기능을 사용하면 빌드 중 발생한 라이센스 변경을 추적할 수 있다. local.conf
파일에 다음과 같은 설정을 추가하면 된다:
INHERIT += "buildhistory"
BUILDHISTORY_COMMIT = "1"
buildhistory
는 각 빌드에 대한 정보를 기록하고 변경사항을 확인할 수 있도록 해준다.
oe-qa-checks
Yocto는 빌드된 이미지를 검사하기 위한 다양한 QA 체크를 포함하고 있다. 라이센스 검증은 그 중 하나이다. local.conf
파일에 다음 줄을 추가하여 활성화할 수 있다:
IMAGE_CLASSES += "testimage"
TESTIMAGE_AUTO_qemux86 = "1"
이 설정을 통해 Yocto는 빌드된 이미지를 QEMU에 자동으로 로드하고 라이센스를 포함한 다양한 QA 테스트를 수행한다.
특정 라이센스 파일 위치
레시피 파일에서 라이센스 파일 위치를 보다 세부적으로 지정하고 싶다면, 각 라이센스 파일에 대한 경로와 체크섬을 명시할 수 있다. 예를 들어:
LIC_FILES_CHKSUM = " \
file://path/to/LICENSE;md5=<checksum> \
file://path/to/COPYING;md5=<checksum> \
"
이 방법을 통해 여러 파일을 사용할 수 있으며, 각 파일의 무결성을 개별적으로 확인할 수 있다.
예제: hello-world
패키지의 라이센스 설정
hello-world
패키지를 위한 간단한 레시피 파일을 작성해보겠다:
DESCRIPTION = "Hello World example"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e7859b18cb324d95c055e5214be12dea"
SRC_URI = "file://hello-world.c"
S = "${WORKDIR}"
do_compile() {
oe_runmake
}
do_install() {
install -d ${D}${bindir}
install -m 0755 hello-world ${D}${bindir}
}
이 예제에서 LIC_FILES_CHKSUM
변수는 LICENSE
파일의 MD5 체크섬을 포함하고 있다. 이는 Yocto가 빌드 중 라이센스 파일의 무결성을 검증하는 데 사용한다.
Yocto 프로젝트에서의 라이센스 관리는 복잡하지만 중요한 작업이다. 라이센스 파일의 추가, 메타데이터에서의 라이센스 지정, 그리고 라이센스 검증 도구의 사용을 통해 오픈소스 소프트웨어 컴플라이언스를 효과적으로 관리할 수 있다. 이는 최종 제품의 적법성을 보장하고, 오픈소스 커뮤니티에 대한 존중을 표하는 중요한 단계이다.