diff options
Diffstat (limited to 'meta/classes-recipe/go-mod.bbclass')
-rw-r--r-- | meta/classes-recipe/go-mod.bbclass | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/meta/classes-recipe/go-mod.bbclass b/meta/classes-recipe/go-mod.bbclass new file mode 100644 index 0000000000..93ae72235f --- /dev/null +++ b/meta/classes-recipe/go-mod.bbclass @@ -0,0 +1,34 @@ +# +# Copyright OpenEmbedded Contributors +# +# SPDX-License-Identifier: MIT +# + +# Handle Go Modules support +# +# When using Go Modules, the current working directory MUST be at or below +# the location of the 'go.mod' file when the go tool is used, and there is no +# way to tell it to look elsewhere. It will automatically look upwards for the +# file, but not downwards. +# +# To support this use case, we provide the `GO_WORKDIR` variable, which defaults +# to `GO_IMPORT` but allows for easy override. +# +# Copyright 2020 (C) O.S. Systems Software LTDA. + +# The '-modcacherw' option ensures we have write access to the cached objects so +# we avoid errors during clean task as well as when removing the TMPDIR. +GOBUILDFLAGS:append = " -modcacherw" + +inherit go + +export GOMODCACHE = "${S}/pkg/mod" +GO_MOD_CACHE_DIR = "${@os.path.relpath(d.getVar('GOMODCACHE'), d.getVar('WORKDIR'))}" +do_unpack[cleandirs] += "${GOMODCACHE}" + +GO_WORKDIR ?= "${GO_IMPORT}" +do_compile[dirs] += "${B}/src/${GO_WORKDIR}" + +# Make go install unpack the module zip files in the module cache directory +# before the license directory is polulated with license files. +addtask do_compile before do_populate_lic |