[OSSCA Git 활용 및 Yocto] core-image-weston 빌드해 보기

core-image-weston은 yocto project kirkstone 브랜치에서 하기 위치에 정의되어 있습니다.

poky/meta/recipes-graphics/images/core-image-weston.bb at kirkstone · yoctoproject/poky

빠르게 아래 명령어들로 확인이 가능합니다.

$ bitbake-layers show-recipes core-image-weston
$ git grep -n “core-image-weston” poky/meta
$ ls poky/meta/recipes-graphics/images/core-image-weston.bb

bb 파일 내용을 간추리면 이 레시피는 inherit core-image 하고, Wayland/Weston 구성(예: weston, weston-init 등)을 이미지에 포함하도록 패키지들을 묶어 image를 정의하고 있습니다.

이 bb 파일에서 무엇인지 잘 모르겠다고 생각할 수 있는 부분은 @bb.utils.contains 라는 녀석일 것 같습니다. Yocto 문서에 설명은 아래 위치에 있습니다.

7 Library Functions — Bitbake dev documentation

그리고, 구분 설명을 GPT에게 물어보니, 아래처럼 설명해 주고 있습니다.

X11을 켠 배포판이면 이미지에 몇 개 패키지를 조건부로 추가하라는 뜻이에요.

구문 쪼개보기:

  • CORE_IMAGE_BASE_INSTALL += " ... "
    → 이미지에 기본으로 들어갈 패키지 목록 변수에 패키지를 덧붙임(공백으로 이어 붙임).
  • ${@ ... }
    → BitBake의 인라인 파이썬 실행. 안의 표현식을 평가해 그 문자열로 치환.
  • bb.utils.contains('DISTRO_FEATURES', 'x11', 'weston-xwayland matchbox-terminal', '', d)
    DISTRO_FEATURES'x11'포함되면 "weston-xwayland matchbox-terminal"을 반환, **없으면> ** 빈 문자열("") 반환. d는 BitBake 데이터스토어.

따라서 전체 의미:

배포판의 DISTRO_FEATURESx11이 있으면, 이 이미지는 weston-xwayland(Weston에서 X 클라이언트 실행용 XWayland)와 matchbox-terminal(가벼운 터미널 앱)을 추가 설치한다. 없으면 아무 것도 추가하지 않는다.

참고:

  • += 는 앞에 공백을 하나 두고 값을 추가하는 연산자입니다.
  • CORE_IMAGE_BASE_INSTALLcore-image 계열 이미지에서 실제 IMAGE_INSTALL에 합쳐지는 기본 패키지 집합을 담는 변수입니다.

제 업무용 PC에서 실행시켜본 yocto core-image-weston의 build 모습입니다.

빌드 완료후 걸린 시간을 보니 343분 38초 정도 걸렸습니다.