簡體   English   中英

如何在 yocto 配方中管理 golang 項目的外部依賴

[英]how to manage external dependencies of a golang project in a yocto recipe

我想用 Yocto 2.4.1 為交叉編譯的 golang 應用程序編寫一個 yocto 配方,但我無法讓外部依賴項工作。 誰能幫我?

current RECIPE_FILE: hello-world_%.bb
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = ""
DESCRIPTION = "Hello world test with golang."

inherit go

COMPATIBLE_MACHINE = "(<machine>)"
DEPENDS = "go-cross-${TARGET_ARCH}"
GO_IMPORT = "hello-world"
SRC_URI = "<git_url>/${GO_IMPORT}.git;branch=${SRCBRANCH};tag=${PV}" 
SRCBRANCH = "master"
PV = "0.01"
S = "${WORKDIR}/git"

do_compile() {
  export GOPATH="${WORKDIR}/build"
  export GOARCH="<machine_arch>"
  export GOOS="linux"
  export CGO_ENABLED="0"
  go build src/${GO_IMPORT}/hello-world.go
}

 do_install() {
   install -d "${D}/${bindir}"
   install -m 0755 "${WORKDIR}/build/hello-world" "${D}/${bindir}/hello-world"
 }

RDEPENDS_${PN}-dev += "bash"

此配方僅適用於內部依賴項。 但是如何集成外部依賴項,如“github.com/golang/protobuf/ptypes”?

項目文件:hello-world.go

package main

import (
    "fmt"
    "github.com/golang/protobuf/ptypes"
)

func main() {
    timestamp := ptypes.TimestampNow()
    fmt.Println(timestamp)
}

有誰知道這個用例的解決方案?

或者有誰知道“go-dep”如何處理這個問題?

最好的祝福

我用 go dep 作為 deps,這是一個例子。 最麻煩的是代理,這在配方中也已解決:

inherit go

LICENSE = "CLOSED"
LIC_FILES_CHKSUM = ""
DESCRIPTION = "Hello world test with golang."

COMPATIBLE_MACHINE = "(<machine>)"
DEPENDS += "go-dep-native"
GO_LINKSHARED = ""

GO_IMPORT = "<git_url>/hello-world.git"
SRC_URI = "<git_url>/${GO_IMPORT}.git;branch=${SRCBRANCH};tag=${PV}" 
SRCBRANCH = "master"

do_compile() {
    export SSH_AUTH_SOCK="${SSH_AUTH_SOCK}"
    export HTTP_PROXY="${HTTP_PROXY}"
    ( cd ${WORKDIR}/build/src/${GO_IMPORT} && dep ensure -v )
}

do_compile[vardepsexclude] += "SSH_AUTH_SOCK HTTP_PROXY"

do_install() {
    install -d "${D}/${bindir}"
    install -m 0755 "${WORKDIR}/bin/<arch>/hello-world" "${D}/${bindir}/hello-world"
}

我相信只有兩種類型的依賴
1. host dependencies(yocto中app編譯時的依賴)
在 yocto 配方(.bb 文件)中保留DEPENDS = "some lib"

  1. 目標依賴項(應用程序運行時的依賴項)
    你的 yocto 食譜RDEPENDS = "some lib"

你好.bb

DESCRIPTION =  
LIC =  
SRC_URI =  
DEPENDS ="sqlite3"   
inherit autools

您可以使用SRC_URI添加外部 go 依賴項:

SRC_URI = "\
           <git_url>/${GO_IMPORT}.git;branch=${SRCBRANCH};tag=${PV} \
           git://github.com/golang/protobuf/ptypes;protocol=https;name=ptype;destsuffix=${PN}-${PV}/src/github.com/golang/protobuf/ptypes \
"

SRCREV_ptype = "v0.1.0" <-- whatever revision you need (branch, tag, sha)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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