RDK Recipe 관리

dtv setup-environment 스크립트를 참고하여 우리 환경에 맞게 아래와 같이 수정하였다. Handan layers을 bitbake가 참조할 수 있도록 bblayer에 meta-handan을 추가하고 새로 소스를 내려받아서 빌드할 때마다 레시피를 다시 다운받기 때문에 downloads 디렉토리를 링크로 만들어 관리하도록 한다.

$ vi work_dir/setup-environment

TOP_DIR=$(pwd)
DOWNLOAD_DIR='downloads'
if [ ! -L $DOWNLOAD_DIR ] && [ ! -d $DOWNLOAD_DIR ] ; then
    ln -s ../_rdk40-2021q3_downloads downloads
fi

if [ $(grep -c 'handan-rdk-raspi-image' $TOP_DIR/meta-rdk/conf/conf-notes.txt) -eq 0 ]; then
    sed -i -e "/core-image-minimal/a \ \ \ \ handan-rdk-raspi-image" $TOP_DIR/meta-rdk/conf/conf-notes.txt
fi

source meta-cmf-raspberrypi/setup-environment
if [ $? -ne 0 ]; then
    return 1
fi

if [[ "$BUILDDIR" == *"handan-rdk-raspi4"* ]] ; then
    echo "copy westeros-sink LICENSE files"
    cp ../components/opensource/westeros/LICENSE ../components/opensource/westeros/westeros-sink/LICENSE
fi

if [[ -z $(grep 'meta-handan' conf/bblayers.conf) ]] && [[ -d  ../meta-handan ]]
then
    cat >> conf/bblayers.conf <<EOF
BBLAYERS =+ "\${RDKROOT}/meta-handan"
EOF
fi

라즈베리파이4인 경우, westeros-sink 빌드 과정에서 LICENSE 파일이 없어 configuration 에러가 발생하여 라이센스 파일을 복사하는 스크립트를 추가하였다.

 

meta-handan layer 구성은 아래와 같으며, 라즈베리파이 3/4 모델에 USB TV카드로 동작하는 RDK DTV 환경을 구성할 계획이다. 하기의 레시피는 우분투 환경이나 우리 개발 옵션에 따른 레시피 변경사항을 추가한 것이다.

예를 들어 recipe-patch4ubuntu 디렉토리는 아래와 같으며, 우분투 20.04 환경에서 특정 레시피를 빌드할 때 발생하는 오류를 수정한 패치 파일을 관리하기 위해 따로 디렉토리를 만들어 관리하고 있다.

bitbake는 bblayers에 등록한 디렉토리를 순회하면서 레시피의 패치를 추가하거나 빌드 옵션을 오버라이드하여 사용할 수 있어 위와 같이 구성할 수 있다.

 

심지어, westoros-sink.bbappend 파일은 아래와 같이 특정 변수를 다시 정의하기 위해 아래와 같이 추가하였다.

$ vi work_dir/meta-handan/recipes-graphics/westeros-soc/westeros-sink.bbappend

AUTOTOOLS_SCRIPT_PATH = "${S}/../${SINK_SOC_PATH}/westeros-sink"

AUTOTOOLS_SCRIPT_PATH가 잘못되어 빌드(/../ 추가) 에러가 발생하는데, RDK 소스 저장소에 수정 권한이 없기 때문에 위와 같은 방식으로 처리하였다. 수정된 사항을 PR 날리던지 해야 할듯...