私は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
はGit グラバー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 の場合