yocto 레시피에서 GitHub 저장소에서 다운로드할 버전은 무엇입니까?

yocto 레시피에서 GitHub 저장소에서 다운로드할 버전은 무엇입니까?

저는 yocto를 사용하여 맞춤형 Linux 배포판을 구축하고 있습니다. 이것을 hiredis내 배포판에 추가해야 합니다 .헤리디스Redis 데이터베이스를 위한 최소한의 C 클라이언트 라이브러리입니다. C 애플리케이션을 통해 Redis에 액세스하려면 이 라이브러리가 필요합니다.

레시피hiredis_0.14.0.bb

내 yocto 빌드 시스템에서 레시피는 hiredis_0.14.0.bb폴더 meta-openembedded/meta-oe/recipes-extended/hiredis의 메타 레이어에 저장되므로 meta-openembedded.

레시피 내용은 다음과 같습니다.

DESCRIPTION = "Minimalistic C client library for Redis"
HOMEPAGE = "http://github.com/redis/hiredis"
LICENSE = "BSD-3-Clause"
SECTION = "libs"
DEPENDS = "redis"

LIC_FILES_CHKSUM = "file://COPYING;md5=d84d659a35c666d23233e54503aaea51"
SRCREV = "685030652cd98c5414ce554ff5b356dfe8437870"
SRC_URI = "git://github.com/redis/hiredis;protocol=git \
           file://0001-Makefile-remove-hardcoding-of-CC.patch"

S = "${WORKDIR}/git"

inherit autotools-brokensep pkgconfig

EXTRA_OEMAKE = "PREFIX=${prefix} LIBRARY_PATH=${baselib}"

# By default INSTALL variable in Makefile is equal to 'cp -a', which preserves
# ownership and causes host-user-contamination QA issue.
# And PREFIX defaults to /usr/local.
do_install_prepend() {
  export INSTALL='cp -r'
}

Git Fetcher 다운로드 0.14.0고용 버전

다음 명령을 실행하면:

> bitbake hiredis

코드는 hiredis다음을 통해 얻습니다.GitHub올바르게 컴파일됩니다. GitHub에서 다운로드한 코드의 버전은 0.14.0이고 SRC_URI설정은 다음과 같습니다.

SRC_URI = "git://github.com/redis/hiredis;protocol=git \
           file://0001-Makefile-remove-hardcoding-of-CC.patch"

이 값 SRC_URI힘내 그래버branch은(는) 지정된 매개변수 또는 이 아니며 rev, 이는 매개변수의 값이 임을 의미합니다 master.

버전에 대한 유일한 참조는 0.14.0레시피 이름(hiredis_ .bb)에 있으므로 변수 값이 (레시피 이름으로 설정됨) 0.14.0이므로 버전이 선택됩니다 .0.14.0PV0.14.0PV

내 질문

획득한 Hiredis 라이브러리 버전이 최신 0.14.0이 아닌 최신 버전인 이유는 무엇입니까?

답변1

@Kusalananda가 그의 의견에서 말했듯이:

GitHub에서 다운로드한 버전은 hiredis변수에 할당된 커밋 해시에 의해 선택됩니다 SRCREV.

예를 들어, 1.0.1 버전을 가져와 컴파일하려면 hiredis폴더에 my-meta-layer/recipes-extended/hiredis파일을 추가 hiredis_%.bbappend하고 그 값을 SRC_REV1.0.1 버전의 커밋 해시(즉, 8d1bfac4640fe90cd6f800d09b7f53e886569b98)와 동일하게 설정할 수 있습니다.
질문에 표시된 레시피의 경우 hiredis_0.14.0.bb변수 값도 변경해야 합니다 SRC_URI.

추가된 파일의 내용은 hiredis_%.bbappend다음과 같습니다.

# SRC_URI for release 1.0.1
SRC_URI = "git://github.com/redis/hiredis;protocol=https;branch=master"

# Commit Hash of release 1.0.1
SRCREV = "8d1bfac4640fe90cd6f800d09b7f53e886569b98"

inherit cmake

bbappend 파일 설명

  • 해당 값을 사용하여 Git Fetcher의 매개변수 값을 설정했습니다 SRC_URI(값이 설정되고 설정되지 않은 원래 레시피 대신).protocol=https;branch=masterprotocol=gitbranch
  • SRCREV커밋 해시를 버전 1.0.1과 동일하게 설정
  • inherit cmake버전 1.0.1에서 CMake를 사용하므로 지시문이 추가되었습니다.

내 솔루션이 모든 버전에서 작동하지 않습니다hiredis

내 솔루션은 많은 욕토 레시피 질문에서 묻는 문제에 대한 일반적인 솔루션일 수 있다고 생각하지만 이 경우 hiredis항상 작동하는 것은 아닙니다.
다음 결과로 솔루션의 일부 버전을 테스트했습니다.

  • 버전 0.14.0, 1.0.1, 1.0.2에 적용됩니다.
  • 아니요버전 0.14.1의 경우

관련 정보