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) 와 함께 중요한 변경 사항이 있다.
이 릴리스에서 :
(콜론)은 가장 일반적으로 변수의 조건부 할당을 수행할 때 재정의를 참조하기 위해 _
(언더스코어)의 사용을 대체한다.
따라서 다음과 같은 항목은
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 압축 기능을 지원하려면 이제 lz4c, pzstd 및 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의 일부로 사용할 수 있다. 자세한 내용은 빌드 호스트에 필요한 패키지를 참조한다.
더 많은 정보는 이곳에서 자세하게 안내하고 있다.
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
12 | 임베디드 리눅스 부팅 절차 | makersweb | 2019.10.21 | 6302 |
11 | 라즈베리파이3와 PC간 Serial 통신 테스트 [1] | makersweb | 2019.05.20 | 6418 |
10 | 플랫폼 디바이스 및 드라이버에 대해서 | makersweb | 2020.02.01 | 6590 |
9 | AVRISP mkII 펌웨어 업그레이드 | makersweb | 2015.07.22 | 6945 |
8 | USB 핀아웃 | pjk | 2014.10.11 | 8439 |
7 | 이클립스에서 IAR프로젝트 사용방법 | makersweb | 2015.07.09 | 8788 |
6 | ST, STM32 MCU용 ‘통합 개발 환경(IDE)’ 무료 제공 | makersweb | 2015.03.04 | 8867 |
5 | ESP-IDF 의 A2DP리뷰 (ESP32) | makersweb | 2019.10.28 | 9557 |
4 | [Uboot 명령어 및 환경 변수 요약]U-Boot에 Command 및 Parameter에 대한 설명 | pjk | 2014.01.09 | 10484 |
3 | yocto project, 라즈베리파이를 위한 Qt + 임베디드리눅스 빌드 | makersweb | 2019.02.01 | 11065 |
2 | USB OTG 기술의 개념 | pjk | 2014.11.03 | 15351 |
1 | 윈도우10에서 Prolific USB to Serial 드라이버 인식문제 | makersweb | 2016.01.24 | 22832 |