반응형
-tags : #yocto
yocto 에서 빌드과정중에 생성되는 object 나 configure 관련 파일들, 혹은 소스코드 fetch 등을 제어할 수 있다.
1 rm_work 옵션
1.1 간략설명
- yocto 를 통해서 빌드하다 보면 각 레시피마다
build
디렉토리가 생성되며, 소스코드와함께 빌드과정중에 생성되는 파일들을 모두 하드디스크에 저장하게된다. - 물론 개발과정중에는 이러한 과정등을 보는것이 좋다. (코드, configure 추적하기등등)
- 하지만 단순 빌드머신등에서는 해당 임시결과물들이 필요없을수있다.
- 임시결과물이 필요없을 경우
INHERIT += "rm_work"
옵션을 통해서, 임시결과물들을 바로바로 삭제하게 하여 하드디스크 절약 및 빌드속도를 올릴 수있다. INHERIT += "rm_work"
을 세팅하고, 디버깅이 필요한 레시피가 있다면RM_WORK_EXCLUDE
을 세팅하여 해당 레시피만 임시결과물을 생성하도록한다.
1.2 세팅방법
set_env
명령어등을 한 후에 생성되는 build/conf/local.conf
파일에 다음의 라인을 추가한다.
INHERIT += "rm_work"
set env
명령어 초기부터 세팅하게 하려면, 관련 보드 레시비의 경로의 class
폴더에 대부분 전역설정파일이 있을것이다. 해당부분에 추가하면된다.
또한 동일파일에 RM_WORK_EXCLUDE += your_library
와 같이 설정하면 your_library
레시피에 대해서는 임시결과물을 생성하게 할 수있다.
1.3 관련 레퍼런스
- yocto 관련 매뉴얼 : https://docs.yoctoproject.org/1.8/ref-manual/ref-manual.html#ref-classes-rm-work
7.107. rm_work.bbclass
rm_work 클래스는 임시 작업 공간 삭제를 지원하므로 빌드 중 하드 드라이브 요구 사항을 완화할 수 있습니다.
OpenEmbedded 빌드 시스템은 빌드 프로세스 중에 상당한 양의 디스크 공간을 사용할 수 있습니다. 이 공간의 일부는 각 레시피에 대한 $\TMPDIR\/work 디렉토리 아래의 작업 파일입니다. 빌드 시스템이 레시피 패키지를 생성하면 해당 레시피의 작업 파일은 더 이상 필요하지 않습니다. 그러나 기본적으로 빌드 시스템은 검사 및 가능한 디버깅 목적으로 이러한 파일을 보존합니다. 빌드가 진행됨에 따라 디스크 공간을 절약하기 위해 이러한 파일을 삭제하려는 경우 빌드 디렉토리에 있는 local.conf 파일에 다음을 추가하여 rm_work를 활성화할 수 있습니다.
INHERIT += "rm_work"
레시피를 위해 작업 디렉토리에서 소스 코드를 수정하고 빌드하는 경우 rm_work를 활성화하면 소스에 대한 변경 사항이 손실 될 수 있습니다. rm_work에 의해 작업 디렉토리가 삭제되는 것을 막기 위해, RM_WORK_EXCLUDE 변수에 작업 중인 레시피 또는 레시피의 이름을 추가할 수 있으며, 이는 local.conf 파일에도 설정할 수 있습니다. 예를 들어보자.
RM_WORK_EXCLUDE += "busybox glibc"
다음과같은 환경을 설정하면... 빌드과정에서 컴파일한 결과물을 지우면서 빌드한다.
INHERIT += "rm_work"
...
- 본 포스팅은 obsidian 으로 작성하였으며, tistory-posting-cli 를 이용해 발행되었습니다.
반응형