簡體   English   中英

Yocto:在我的源存儲庫環境中執行 shell 腳本(在下載文件夾中?)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM