commit: 78d13659aa35772114a9f0d12430bd67273998ad
Author: William Hubbs <williamh <AT> gentoo <DOT> org>
AuthorDate: Wed May 26 00:41:32 2021 +0000
Commit: William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Wed May 26 00:41:32 2021 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=78d13659
go-module.eclass: add go-module_setup_proxy function
This function is to be used in an ebuild that uses EGO_SUM and defines
src_unpack.
Signed-off-by: William Hubbs <williamh <AT> gentoo.org>
eclass/go-module.eclass | 41 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/eclass/go-module.eclass b/eclass/go-module.eclass
index 9d64ad48b43..c11895944cd 100644
--- a/eclass/go-module.eclass
+++ b/eclass/go-module.eclass
@@ -239,6 +239,47 @@ go-module_set_globals() {
_GO_MODULE_SET_GLOBALS_CALLED=1
}
+# @FUNCTION: go-module_setup_proxy
+# @DESCRIPTION:
+# If your ebuild redefines src_unpack and uses EGO_SUM you need to call
+# this function in src_unpack.
+# It sets up the go module proxy in the appropriate location.
+go-module_setup_proxy() {
+ # shellcheck disable=SC2120
+ debug-print-function "${FUNCNAME}" "$@"
+
+ if [[ ! ${_GO_MODULE_SET_GLOBALS_CALLED} ]]; then
+ die "go-module_set_globals must be called in global scope"
+ fi
+
+ local goproxy_dir="${GOPROXY/file:\/\//}"
+ mkdir -p "${goproxy_dir}" || die
+
+ # For each Golang module distfile, look up where it's supposed to go and
+ # symlink it into place.
+ local f
+ local goproxy_mod_dir
+ for f in ${A}; do
+ goproxy_mod_path="${_GOMODULE_GOSUM_REVERSE_MAP["${f}"]}"
+ if [[ -n "${goproxy_mod_path}" ]]; then
+ debug-print-function "Populating go proxy for
${goproxy_mod_path}"
+ # Build symlink hierarchy
+ goproxy_mod_dir=$( dirname
"${goproxy_dir}"/"${goproxy_mod_path}" )
+ mkdir -p "${goproxy_mod_dir}" || die
+ ln -sf "${DISTDIR}"/"${f}"
"${goproxy_dir}/${goproxy_mod_path}" ||
+ die "Failed to ln"
+ local v=${goproxy_mod_path}
+ v="${v%.mod}"
+ v="${v%.zip}"
+ v="${v//*\/}"
+ _go-module_gosum_synthesize_files "${goproxy_mod_dir}"
"${v}"
+ fi
+ done
+
+ # Validate the gosum now
+ _go-module_src_unpack_verify_gosum
+}
+
# @FUNCTION: go-module_src_unpack
# @DESCRIPTION:
# If EGO_SUM is set, unpack the base tarball(s) and set up the