Yocto Project : : Open Source

yocto 빌드 시 임시 결과물 정리하기, clean options

Jay.P Morgan 2024. 4. 22. 21:41

 

  1.   yocto 빌드 시 임시 결과물 정리하기

 

  1.1  rm_work 간략한 설명

  • yocto 를 통해서 빌드하다 보면 각 레시피마다 build 디렉토리가 생성되며, 소스코드와함께 빌드과정중에 생성되는 파일들을 모두 하드디스크에 저장하게된다.
  • 물론 개발과정중에는 이러한 과정등을 보는것이 좋다. (코드, configure 추적하기등등)
  • 하지만 단순 빌드머신등에서는 해당 임시결과물들이 필요없을수있다.
  • 임시결과물이 필요없을 경우 INHERIT += "rm_work" 옵션을 통해서, 임시결과물들을 바로바로 삭제하게 하여 하드디스크 절약 및 빌드속도를 올릴 수있다.
  • INHERIT += "rm_work" 을 세팅하고, 디버깅이 필요한 레시피가 있다면 RM_WORK_EXCLUDE을 세팅하여 해당 레시피만 임시결과물을 생성하도록한다.

 

 

  1.2  세팅방법

 

set_env 등의 명령어 후에 생성되는 build/conf/local.conf 파일에 다음의 라인을 추가한다.

set env 명령어 초기부터 세팅하게 하려면, 관련 보드 레시비의 경로의 class 폴더에 대부분 전역설정파일이 있을것이다. 해당부분에 추가하면된다.

또한 동일파일에 RM_WORK_EXCLUDE += your_library 와 같이 설정하면 your_library 레시피에 대해서는 임시결과물을 생성하게 할 수있다.

 

 

 

  1.3  관련 레퍼런스

 

 

출처 : https://xenostudy.tistory.com/727

 

yocto 빌드관련 결과물 제어하기 (하드디스크절약)

1 rm_work 옵션 1.1 간략설명 1.2 세팅방법 1.3 관련 레퍼런스 -tags : #yocto yocto 에서 빌드과정중에 생성되는 object 나 configure 관련 파일들, 혹은 소스코드 fetch 등을 제어할 수 있다. 1 rm_work 옵션 1.1 간략

xenostudy.tistory.com

 

 

 

 

  2.   [BBB] Yocto#clean, cleansstate, cleanall

 

Reference:

https://youtu.be/lfORqtu8pJg?si=5IZbBAYOdYKaMvAq

 

※강사의 Github 에 강의 핵심 내용들이 잘 정리되어 있습니다.

GitHub - Munawar-git/YoctoTutorials

https://github.com/Munawar-git/meta-tab-layer

 

[목표]

bitbake 의 clean 명령어들인 clean, cleansstate, cleanall 동작의 차이에 대해서 이해한다. 

Yocto에 의해 관리되는 폴더는 크게 세 가지로 구분할 수 있습니다:

1. Download 폴더: 빌드를 위해 다운로드 받은 소스 파일이 위치하는 폴더입니다. 이 폴더에는 소스 코드, 패치 파일 등이 저장됩니다.

2. 임시작업폴더 (tmp/work): Yocto는 레시피의 빌드 작업을 수행할 때 이 임시 디렉토리를 사용합니다. 여기에는 소스 파일들이 복사되고, 컴파일 및 빌드 작업이 수행됩니다. Youtue 에서 강사는 이 디렉토리를 'Source 디렉토리' 라고 표현했지만 'Source 디렉토리' 라고 부르는 것보다는 임시작업폴더라는 표현이 더 정확할 것 같으며 레서피 폴더 하위에 소스 코드가 저장된 원본 위치와는 다릅니다.

3. Shared State Cache (sstate-cache): 빌드된 파일들을 캐시하는 디렉토리입니다. Bitbake 빌드 시 수정되지 않은 컴포넌트는 캐시 폴더에 저장된 파일을 재사용하여 빌드 시간을 단축합니다.

각각의 `bitbake` 명령어는 다음과 같은 작업을 수행합니다:

- bitbake -c clean: 이 명령어는 임시작업폴더(`tmp/work`)에 위치한 파일들을 삭제하지만, Shared State Cache (sstate-cache)에 있는 빌드된 결과물은 삭제하지 않습니다. 따라서 실제 레시피에 변경이 없다면 Bitbake는 캐시 폴더의 결과물을 재사용하여 이미지를 생성할 수 있습니다.

- bitbake -c cleansstate: 이 명령어는 임시 파일과 함께 sstate-cache에 있는 캐시 파일까지 모두 삭제합니다. 따라서 이미지 생성 시 레시피는 처음부터 재빌드됩니다.

- bitbake -c cleanall: 이 명령어는 임시작업폴더, sstate-cache에 있는 내용과 함께 해당 레시피와 관련된 다운로드된 파일들도 삭제합니다. 하지만, 전체 'Download 폴더'를 삭제하지는 않으며, 특정 레시피와 관련된 파일만 삭제합니다. 파일에 변경이 있어 다시 다운로드가 필요한 경우에 이 명령어를 사용하여 관련 파일들을 삭제한 후 다시 빌드할 수 있습니다.

 

 

 

 

'Yocto Project : : Open Source' 카테고리의 다른 글

VIRTUAL-RUNTIME, virtual/  (0) 2024.06.01
YOCTO - do_package(), package에 관해  (0) 2024.05.31
YOCTO - ${TOPDIR}/conf/local.conf  (0) 2024.05.31
Yocto : Layer  (0) 2024.05.31
Yocto Project - Overview  (0) 2024.04.17