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_URIGit グラバー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 の場合

おすすめ記事