본문 바로가기

YOCTO

YOCTO) GitHub에서 fetch하기 vs 로컬 디렉토리에서 fetch하기

🧩 Yocto 레시피에서 Git 소스를 fetch하는 두 가지 방법

Yocto에서는 외부 Git 레포지토리에서 소스를 받아와 빌드할 수 있다.
보통은 SRC_URI 변수에 Git 주소를 설정하면 자동으로 fetch되지만, 네트워크 환경이나 개발 목적에 따라 로컬 소스를 사용하는 방법도 유용하다.

이번 글에서는 helloworld라는 간단한 Git 프로젝트를 대상으로,
Yocto 레시피에서 GitHub에서 소스를 fetch하는 방법로컬 디렉토리에서 소스를 fetch하는 방법 두 가지를 비교해서 정리해본다.


✅ 1. GitHub에서 fetch하기

🔧 레시피 예제 (helloworld_git.bb)

DESCRIPTION = "Simple Hello World app"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

SRC_URI = "git://github.com/your-username/helloworld.git;branch=main;"

#최신 버전 해쉬을 자동으로 채워 넣어줌
SRCREV = "${AUTOREV}"

#git clone으로 받아온 소스를 레시피 작업 디렉토리 아래 git 디렉토리에 저장
S = "${WORKDIR}/git"

💡 설명

꼭 branch 정보와 버전 해쉬를 기입해줘야 bitbake가 clone할 경로를 잘 찾아 갈 수 있다!

  • git://... : Git 주소 지정
  • branch=main : 사용할 브랜치 지정
  • SRCREV = "${AUTOREV}" : 최신 커밋을 항상 사용 (고정하려면 커밋 해시 사용)

이 방식은 공개된 Git 저장소에서 자동으로 소스를 가져올 때 유용하다.


✅ 2. 로컬 디렉토리에서 fetch하기

🗂️ 디렉토리 구조 예시

~/yocto-local/
  └── helloworld/          # 직접 작성한 소스 디렉토리
       ├── main.c
       ├── Makefile
       └── LICENSE

🔧 레시피 예제 (helloworld_local.bb)

DESCRIPTION = "Local Hello World app"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

SRC_URI = "file:///home/username/yocto-local/helloworld"
S = "${WORKDIR}/helloworld"

💡 설명

  • file:// 접두어(helloworld)를 사용해 로컬 디렉토리 지정
  • S는 Yocto가 실제로 빌드 작업을 할 디렉토리
  • Git이 아니라 단순한 로컬 파일 복사처럼 동작함

이 방식은 개발 중인 코드를 빠르게 Yocto에 반영할 때 유용하다.


✅ 빌드 및 확인

레시피를 작성한 후 다음 명령어로 fetch와 빌드를 확인할 수 있다:

bitbake helloworld -c fetch
bitbake helloworld

🔚 마무리

항목 GitHub에서 fetch 로컬 디렉토리에서 fetch

주소 형식 git://... file://...
네트워크 필요 여부 필요 불필요
적용 대상 공유된 Git 프로젝트 로컬 테스트용 코드
특징 최신 코드 자동 반영 가능 빠른 테스트 가능, 오프라인 빌드 가능

Yocto 프로젝트를 운영하면서 이 두 가지 방식은 각각의 목적에 맞게 활용할 수 있다.
CI 환경에서는 GitHub fetch를, 개인 개발 중에는 로컬 fetch를 쓰면 효율적이다.