[英]Yocto:Execute shell script inside my source repository environment (inside downloads folder ?)
在 Yocto 中,我需要執行取決於源存儲庫環境的 bash 腳本。 我目前的方法是直接在下載文件夾中執行腳本。
偽代碼(希望你明白我的意思):
do_patch_append () {
os.system(' \
pushd ${DL_DIR}/svn/*/svn/myapp/Src; \
dos2unix ./VersionBuild/MakeVersionList.sh; \
./VersionBuild/MakeVersionList.sh ${S}/Src/VersionList.h; \
popd \
')
}
在我開始擺弄細節之前:這是一種有效的方法嗎? do_patch 是正確的地方嗎?
原因:腳本 MakeVersionList.sh 生成一個 header 文件,其中包含來自 subversion 的修訂信息。 它在幾個文件夾上執行“svn info”並將其 output 解析為 header 文件 VersionList.h,稍后將在編譯期間以 ${S} 訪問該文件。
非常感謝。
感謝您提供有用的建議。 這就是我最終做到的方式。 為了最小化對服務器基礎架構(SVN 服務器)的依賴,我將版本生成放入 do_fetch。 我還必須手動執行 do_unpack,因為將生成的文件添加到 SRC_URI(如 ${DL_DIR}/svn/...)會使 fetcher 嘗試獲取它。
#
# Build bitstone application
#
SUMMARY = "Bitstone mega wallet"
SECTION = "Rockefeller"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
#Register for root file system aggregation
APP_NAME = "bst-wallet"
FILES_${PN} += "${bindir}/${APP_NAME}"
PV = "${SRCPV}"
SRCREV = "${AUTOREV}"
SVN_SRV = "flints-svn"
SRC_URI = "svn://${SVN_SRV}/svn/${APP_NAME};module=Src;protocol=http;user=fred;pswd=pebbles "
S = "${WORKDIR}/Src"
GEN_FILE = "VersionList.h"
do_fetch_append () {
os.system(' \
cd ./svn/{0}/svn/{1}/Src; \
TZ=Pacific/Yap ./scripts/MakeVersionList.sh {2}; \
'.format(d.getVar("SVN_SRV"), d.getVar("APP_NAME"), d.getVar("GEN_FILE"))
)
}
do_unpack_append () {
os.system(' \
cp {3}/svn/{0}/svn/{1}/Src/{2} {4} \
'.format(d.getVar("SVN_SRV"), d.getVar("APP_NAME"), d.getVar("GEN_FILE"), \
d.getVar("DL_DIR"), d.getVar("S")) \
)
}
do_install_append () {
install -d ${D}${bindir}
install -m 0755 ${APP_NAME} ${D}${bindir}/
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.