저는 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.0
PV
0.14.0
PV
내 질문
획득한 Hiredis 라이브러리 버전이 최신 0.14.0
이 아닌 최신 버전인 이유는 무엇입니까?
답변1
@Kusalananda가 그의 의견에서 말했듯이:
GitHub에서 다운로드한 버전은
hiredis
변수에 할당된 커밋 해시에 의해 선택됩니다SRCREV
.
예를 들어, 1.0.1 버전을 가져와 컴파일하려면 hiredis
폴더에 my-meta-layer/recipes-extended/hiredis
파일을 추가 hiredis_%.bbappend
하고 그 값을 SRC_REV
1.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=master
protocol=git
branch
SRCREV
커밋 해시를 버전 1.0.1과 동일하게 설정inherit cmake
버전 1.0.1에서 CMake를 사용하므로 지시문이 추가되었습니다.
내 솔루션이 모든 버전에서 작동하지 않습니다hiredis
내 솔루션은 많은 욕토 레시피 질문에서 묻는 문제에 대한 일반적인 솔루션일 수 있다고 생각하지만 이 경우 hiredis
항상 작동하는 것은 아닙니다.
다음 결과로 솔루션의 일부 버전을 테스트했습니다.
- 버전 0.14.0, 1.0.1, 1.0.2에 적용됩니다.
- 아니요버전 0.14.1의 경우