I am trying to write a yocto recipe to compile https://github.com/bluenviron/mediamtx package, which is written on Golang. And no matter what, I can't get the package to build the binary. I have little to no experience with Go.
So far, I have managed to get the recipe to clone proper version from git and with correct LIC_FILES_CHKSUM but I am struggling to get it to actually generate a binary from the source.
SUMMARY = "mediamtx RTSP server"
HOMEPAGE = "https://github.com/bluenviron/mediamtx"
SECTION = "multimedia"
LICENSE = "MIT"
inherit goarch pkgconfig
#GO_IMPORT = "github.com/bluenviron/mediamtx"
LIC_FILES_CHKSUM = "file://LICENSE;md5=77fd2623bd5398430be5ce60489c2e81"
SRC_URI = "git://github.com/bluenviron/mediamtx;branch=main"
S = "${WORKDIR}/git"
SRCREV = "21756a4d54152872cda48469861147ee652df922"
FILES_${PN} += "${GOBIN_FINAL}/*"
DEPENDS += "\
go \
python \
"
do_install_append() {
cp ${D}${bindir}/mediamtx ${D}${bindir}/${BPN}
}
if I remove do_install_append
then the recipe builds successfully but it doesn't compile the code to create a binary - which seems obvious to me as there is no do_compile
section. I can't seem to find any information which tells me how to get it to compile.
It'd be great if someone is able to provide me a yocto recipe for this package, if not then any kind of help/direction is appreciated. Thanks.
I had that same problem, this worked for me.
SUMMARY = "MediaMTX / rtsp-simple-server is a ready-to-use and zero-dependency server and proxy that allows users to publish, read and proxy live video and audio streams."
GO_IMPORT = "github.com/bluenviron/mediamtx"
HOMEPAGE = "https://${GO_IMPORT}"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=77fd2623bd5398430be5ce60489c2e81"
SRC_URI = "git://${GO_IMPORT};branch=main;protocol=https"
SRCREV = "65f617aa7c326f491c4f4f4a4d52beea3bd6abc7"
GO_INSTALL = "${GO_IMPORT}"
do_compile[network] = "1"
# build executable instead of shared object
GO_LINKSHARED = ""
GOBUILDFLAGS:remove = "-buildmode=pie"
inherit go-mod
FILES:${PN} += "/usr/local/bin"
I'm using Yocto's kirkstone release.