한국어
Embedded
 

Yocto 프로젝트 Dunfell 에서 Kirkstone 로 마이그레이션 작업 중 다음과 같은 에러 메시지를 마주 했다.
Variable do_install_append contains an operation using the old override syntax. Please convert this layer/metadata before attempting to use with a newer bitbake.

connman-conf.bb 레시피에 재정의된 함수는 다음과 같았다.

# Kernel IP-Config is perfectly capable of setting up networking passed in via ip=
do_install_append() {
    ...
}

Yocto 프로젝트 3.4 릴리스(honister) 와 함께 중요한 변경 사항이 있다.

재정의(Override) 구문 변경

이 릴리스에서 : (콜론)은 가장 일반적으로 변수의 조건부 할당을 수행할 때 재정의를 참조하기 위해 _(언더스코어)의 사용을 대체한다.

따라서 다음과 같은 항목은

SRC_URI_qemux86 = "file://somefile"

이제 다음과 같아야 한다.

SRC_URI:qemux86 = "file://somefile"

다음과 같은 qemux86 재정의 구문 예는

SRC_URI_append = " file://somefile"
SRC_URI_append_qemux86 = " file://somefile2"
SRC_URI_remove_qemux86-64 = "file://somefile3"
SRC_URI_prepend_qemuarm = "file://somefile4 "
FILES_${PN}-ptest = "${bindir}/xyz"
IMAGE_CMD_tar = "tar"
BASE_LIB_tune-cortexa76 = "lib"
SRCREV_pn-bash = "abc"
BB_TASK_NICE_LEVEL_task-testimage = '0'

이제 다음과 같아야 한다.

SRC_URI:append = " file://somefile"
SRC_URI:append:qemux86 = " file://somefile2"
SRC_URI:remove:qemux86-64 = "file://somefile3"
SRC_URI:prepend:qemuarm = "file://somefile4 "
FILES:${PN}-ptest = "${bindir}/xyz"
IMAGE_CMD:tar = "tar"
BASE_LIB:tune-cortexa76 = "lib"
SRCREV:pn-bash = "abc"
BB_TASK_NICE_LEVEL:task-testimage = '0'

이는 데이터 저장소에 대한 변수 쿼리에도 적용된다. 예를 들어 getVar 등을 사용할 때 d.getVar("RDEPENDS_${PN}")는 d.getVar("RDEPENDS:${PN}")가 된다.

이들 중 일부는 MACHINE 및 DISTRO 재정의와 같이 상당히 명백하지만 일부는 덜 명확하다. 예를 들어 RDEPENDS, FILES 등과 같은 패키징 변수는 패키지 이름(예: ${PN}${PN}-ptest)을 재정의로 사용한다.
이러한 재정의는 항상 OVERRIDES에 있는 것은 아니지만 패키징과 같은 특정 컨텍스트에서 조건부로 적용된다. task-<taskname>은 또 다른 컨텍스트별 재정의이며, 이 경우 컨텍스트는 특정 작업이다.

레이어 마이그레이션을 돕기 위해 OE-Core에 변환 스크립트가 제공된다. 재정의로 구성된 후 레이어에서 사용된다면 다음과 같이 실행할 수 있다.

<oe-core>/scripts/contrib/convert-overrides.py <layerdir>

💡 단, 모든 경우를 100% 처리할 것으로 예상되지 않으므로 스크립트의 메모를 읽어보자. 특히 레이어가 사용하는 오버라이드(일반적으로 머신 및 배포판 이름)를 알려야 한다.

참고로 이 변환은 BitBake가 오버라이드가 무엇인지 아닌지를 보다 안정적으로 결정할 수 있게 해주기 때문에 중요하다. 언더스코어는 오버라이드하려는 의도 없이 변수 이름에도 사용되기 때문이다.

새로운 호스트 의존성

LZ4 및 Zstandard 압축 기능을 지원하려면 이제 lz4cpzstd 및 zstd 명령을 빌드 호스트에 설치해야 한다. 이들은 일반적으로 대부분의 Linux 배포판에서 lz4 및 zstd 패키지로 제공된다. 우분투 배포판의 경우 다음과 같이 설치 할 수 있다.

sudo apt-get install zstd liblz4-tool # for Ubuntu Bionic or older
sudo apt-get install zstd lz4 # for Ubuntu Focal or newer 

또는 배포판에서 제공하지 않는 경우 buildtools tarball의 일부로 사용할 수 있다. 자세한 내용은 빌드 호스트에 필요한 패키지를 참조한다.

더 많은 정보는 이곳에서 자세하게 안내하고 있다.

 

번호 제목 글쓴이 날짜 조회 수
52 Rockchip VOP makersweb 2024.04.22 231
51 Raspberry Pi에서 I²C 그리고 Bit-bang (비트뱅) makersweb 2023.08.27 670
» Yocto 프로젝트 3.4 릴리스(honister) 이상 버전으로 마이그레이션 시 참고 사항 makersweb 2023.03.21 1170
49 Raspberry Pi 와 ATtiny85 간 I²C 통신 file makersweb 2023.03.18 737
48 로직분석기와 함께 PulseView 를 사용해서 CAN 신호 캡쳐 file makersweb 2023.03.16 721
47 임베디드 개발자를 위한 Hex,Bin,Dec 변환기 유틸 file makersweb 2023.02.27 1214
46 ATtiny85 개발보드(HW-260) file makersweb 2023.01.02 551
45 플랫폼 디바이스 및 디바이스 트리 makersweb 2021.03.20 4091
44 Android 기기를 사용하여 Raspberry Pi SD 카드 작성 방법 file makersweb 2020.08.01 1085
43 Raspberry Pi 의 프레임버퍼(Framebuffer)구성 makersweb 2020.05.15 2026
42 라즈베리파이2에서 RTOS기반 GPIO제어(LED) file makersweb 2020.04.21 1732
41 POSIX를 지원하는 오픈소스 RTOS, RTEMS file makersweb 2020.04.15 1864
40 라즈베리파이 부팅 가능한 sd카드 파티션 생성 makersweb 2020.04.15 1803
39 플랫폼 디바이스 및 드라이버에 대해서 makersweb 2020.02.01 6568
38 디바이스 트리(Device Tree, DT) makersweb 2020.01.12 5702
37 RISC-V : 자유롭고 개방 된 RISC 명령어 세트 아키텍처 [2] file makersweb 2020.01.01 1247
36 임베디드 비대칭 멀티 프로세싱(asymmetric multiprocessing) 시스템 file makersweb 2019.12.31 956
35 임베디드 시스템에서 베어메탈(Bare metal) 이란? makersweb 2019.12.11 3417
34 HelloWorld 커널 모듈과 yocto 레시피 추가 방법 file makersweb 2019.12.09 5693
33 ESP32 블루투스 스피커(A2DP Sink) file makersweb 2019.10.29 3553