From: Stefan Herbrechtsmeier <stefan.herbrechtsme...@weidmueller.com>
Add a vendor class for go to resolve the dependency SRC_URIs from a go.sum file and run populate the go mod vendor folder. Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsme...@weidmueller.com> --- meta/classes-recipe/vendor_go.bbclass | 59 +++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 meta/classes-recipe/vendor_go.bbclass diff --git a/meta/classes-recipe/vendor_go.bbclass b/meta/classes-recipe/vendor_go.bbclass new file mode 100644 index 0000000000..dc5f8d1d8d --- /dev/null +++ b/meta/classes-recipe/vendor_go.bbclass @@ -0,0 +1,59 @@ +# Copyright (C) 2025 Weidmueller Interface GmbH & Co. KG +# Stefan Herbrechtsmeier <stefan.herbrechtsme...@weidmueller.com> +# +# SPDX-License-Identifier: MIT +# + +# The directory of the go.mod file relative to the root directory, per default +# assume there's a file directly in the root directory +GO_SRC_DIR ?= "" + +# The path to the go.mod file +GO_MANIFEST_DIR ?= "${GO_SRC_PATH}/go.mod" + +# The path to go.sum file +GO_LOCK_DIR ?= "${@os.path.join(os.path.dirname(d.getVar('GO_MANIFEST_DIR')), 'go.sum')}" + +# The URL of the go proxy +GO_PROXY ?= "https://proxy.golang.org" + +GO_SRC_PATH = "${S}/${GO_SRC_DIR}" +GO_SRC_SUBDIR = "${@os.path.relpath(d.getVar('CARGO_SRC_PATH'), d.getVar('WORKDIR'))}" +GO_SRC_URI_FILE = "${VENDOR_DIR}/go-source-uris.txt" +SRC_URI_FILES:append = " ${GO_SRC_URI_FILE}" + +inherit go-mod vendor + +GO_INSTALL_PREFIX = "." +GO_SRC_PATH = "${S}" +GO_SRCURI_DESTSUFFIX = "" + +GOMODCACHE = "invalid" +GO_MOD_CACHE_DIR = "go/pkg/mod" +GO_WORKPATH = "${GO_SRC_PATH}" +GO_MOD_RECRDEPTASK = "" + +GOBUILDFLAGS:append = " -mod=vendor" + +python vendor_go_do_vendor_resolve() { + import oe.vendor + import oe.vendor.go + + lock_file_dir = d.getVar("GO_LOCK_DIR") + lock_file_subdir = get_early_source_dir(d, lock_file_dir) + proxy = d.getVar("GO_PROXY") + cache_subdir = d.getVar("GO_MOD_CACHE_DIR") + src_uris = oe.vendor.go.resolve_src_uris(lock_file_subdir, proxy, cache_subdir) + with open(d.getVar("GO_SRC_URI_FILE"), "w") as f: + oe.vendor.dump(f, src_uris) +} + +run_go_mod_vendor() { + cd ${GO_SRC_PATH} + export GOMODCACHE="${UNPACKDIR}/${GO_MOD_CACHE_DIR}" + ${GO} mod vendor +} +do_unpack[postfuncs] += "run_go_mod_vendor" +do_unpack[depends] += "${@oe.utils.build_depends_string(d.getVar('DEPENDS_GOLANG'), 'do_populate_sysroot')}" + +EXPORT_FUNCTIONS do_vendor_resolve -- 2.39.5
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#211143): https://lists.openembedded.org/g/openembedded-core/message/211143 Mute This Topic: https://lists.openembedded.org/mt/111123541/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-