バージョン管理された人

subversionで管理されてます

GoコードをバイナリにしてYoctoに入れる(ARM)

GoはARMバイナリを直接吐ける。 なので、Goのコンパイラをバイナリで引っ張ってビルド時に走らせればARMバイナリを簡単にビルドしてYoctoへ組み込める。

やるにはレシピに次ようなパッケージを追加して

LICENSE = "CLOSED"

SRC_URI_append = " \
  https://dl.google.com/go/go1.13.3.linux-amd64.tar.gz;name=go \
  file://main.go \
"

# go 1.13.3(linux x64版)のチェックサム
SRC_URI[go.md5sum] = "e0b36adf4dbb7fa53b477df5d7b1dd8c"
SRC_URI[go.sha256sum] = "0804bf02020dceaa8a7d7275ee79f7a142f1996bfd0c39216ccb405f93f994c0"

# そのままバイナリをイメージに入れようとすると
# 出来上がったバイナリをstripしようとしてイメージの
# ビルドに失敗するので、stripしないように設定する
INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"

export PROG_PATH="${WORKDIR}/${PN}"

do_compile() {
  # ターゲットOSはlinuxに
  export GOOS=linux
  # ターゲットのアーキテクチャをARMに
  export GOARCH=arm
  # ここでは命令セットはarmv7にしている
  # 他の命令セットは次を参照のこと
  #   ref. https://github.com/golang/go/wiki/GoArm
  export GOARM=7

  # goコンパイラは${WORKDIR}/go/binにある
  ${WORKDIR}/go/bin/go build -o ${PROG_PATH} ${WORKDIR}/main.go
}

do_install() {
  install -d ${D}/usr/local/bin
  install -m 755 ${PROG_PATH} ${D}/usr/local/bin/.
}

FILES_${PN} = " \
  /usr/local/bin/${PN} \
"

あとはIMAGE_INSTALLにパッケージを追加してlayerにレシピを追加すればGoで吐いたバイナリーをイメージに組込むことができる