This is not being merged. I am posting it now to show how I want
the eclass to change after the usage of EGO_SUM is removed from the tree.
I will re-post before I merge.

---
 eclass/go-module.eclass | 359 +---------------------------------------
 1 file changed, 5 insertions(+), 354 deletions(-)

diff --git a/eclass/go-module.eclass b/eclass/go-module.eclass
index 817f8a9fd3e..557f3fb9654 100644
--- a/eclass/go-module.eclass
+++ b/eclass/go-module.eclass
@@ -104,85 +104,6 @@ QA_FLAGS_IGNORED='.*'
 # Go packages should not be stripped with strip(1).
 RESTRICT+=" strip"
 
-# @ECLASS-VARIABLE: EGO_SUM
-# @DEPRECATED:
-# @DESCRIPTION:
-# This is replaced by a dependency tarball, see above for how to create
-# one.
-#
-# This array is based on the contents of the go.sum file from the top
-# level directory of the software you are packaging. Each entry must be
-# quoted and contain the first two fields of a line from go.sum.
-#
-# You can use some combination of sed/awk/cut to extract the
-# contents of EGO_SUM or use the dev-go/get-ego-vendor tool.
-# 
-# One manual way to do this is the following:
-#
-# @CODE
-#
-# cat go.sum | cut -d" " -f1,2 | awk '{print "\t\"" $0 "\""}'
-# 
-# @CODE
-#
-# The format of go.sum is described upstream here:
-# https://go.dev/ref/mod#go-sum-files
-#
-# For inclusion in EGO_SUM, the h1: value and other future extensions SHOULD be
-# omitted at this time. The EGO_SUM parser will accept them for ease of ebuild
-# creation.
-#
-# h1:<hash> is the Hash1 structure used by upstream Go
-# The Hash1 is MORE stable than Gentoo distfile hashing, and upstream warns
-# that it's conceptually possible for the Hash1 value to remain stable while
-# the upstream zipfiles change. Here are examples that do NOT change the h1:
-# hash, but do change a regular checksum over all bytes of the file:
-# - Differing mtimes within zipfile
-# - Differing filename ordering with the zipfile
-# - Differing zipfile compression parameters
-# - Differing zipfile extra fields
-#
-# For Gentoo usage, the authors of this eclass feel that the h1: hash should
-# NOT be included in the EGO_SUM at this time in order to reduce size of the
-# ebuilds. This position will be reconsidered in future when a Go module
-# distfile collision comes to light, where the Hash1 value of two distfiles is
-# the same, but checksums over the file as a byte stream consider the files to
-# be different.
-#
-# This decision  does NOT weaken Go module security, as Go will verify the
-# go.sum copy of the Hash1 values during building of the package.
-
-# @ECLASS-VARIABLE: _GOMODULE_GOPROXY_BASEURI
-# @DEPRECATED:
-# @DESCRIPTION:
-# Golang module proxy service to fetch module files from. Note that the module
-# proxy generally verifies modules via the Hash1 code.
-#
-# Users in China may find some mirrors in the default list blocked, and should
-# explicitly set an entry in /etc/portage/mirrors for goproxy to
-# https://goproxy.cn/ or another mirror that is not blocked in China.
-# See https://arslan.io/2019/08/02/why-you-should-use-a-go-module-proxy/ for
-# further details
-#
-# This variable is NOT intended for user-level configuration of mirrors, but
-# rather to cover go modules that might exist only on specific Goproxy
-# servers for non-technical reasons.
-#
-# This variable should NOT be present in user-level configuration e.g.
-# /etc/portage/make.conf, as it will violate metadata immutability!
-#
-# I am considering removing this and just hard coding mirror://goproxy
-# below, so please do not rely on it.
-: "${_GOMODULE_GOPROXY_BASEURI:=mirror://goproxy/}"
-
-# @ECLASS-VARIABLE: _GOMODULE_GOSUM_REVERSE_MAP
-# @DEPRECATED:
-# @DESCRIPTION:
-# Mapping back from Gentoo distfile name to upstream distfile path.
-# Associative array to avoid O(N*M) performance when populating the GOPROXY
-# directory structure.
-declare -A -g _GOMODULE_GOSUM_REVERSE_MAP
-
 # @ECLASS-VARIABLE: GO_OPTIONAL
 # @DEFAULT_UNSET
 # @PRE_INHERIT
@@ -205,260 +126,17 @@ ego() {
        "$@" || die -n "${*} failed"
 }
 
-# @FUNCTION: go-module_set_globals
-# @DEPRECATED:
-# @DESCRIPTION:
-# Convert the information in EGO_SUM for other usage in the ebuild.
-# - Populates EGO_SUM_SRC_URI that can be added to SRC_URI
-# - Exports _GOMODULE_GOSUM_REVERSE_MAP which provides reverse mapping from
-#   distfile back to the relative part of SRC_URI, as needed for
-#   GOPROXY=file:///...
-go-module_set_globals() {
-       local line exts
-       # for tracking go.sum errors
-       local error_in_gosum=0
-       local -a gosum_errorlines
-       # used make SRC_URI easier to read
-       local newline=$'\n'
-
-       # Now parse EGO_SUM
-       for line in "${EGO_SUM[@]}"; do
-               local module version modfile version_modfile kvs x
-               read -r module version_modfile kvs <<< "${line}"
-               # kvs contains the hash and may contain other data from
-               # upstream in the future. We do not currently use any of this 
data.
-
-               # Split 'v0.3.0/go.mod' into 'v0.3.0' and '/go.mod'
-               # It might NOT have the trailing /go.mod
-               IFS=/ read -r version modfile x <<<"${version_modfile}"
-               # Reject multiple slashes
-               if [[ -n ${x} ]]; then
-                       error_in_gosum=1
-                       gosum_errorlines+=( "Bad version: ${version_modfile}" )
-                       continue
-               fi
-
-               # The modfile variable should be either empty or '/go.mod'
-               # There is a chance that upstream Go might add something else 
here in
-               # the future, and we should be prepared to capture it.
-               # The .info files do not need to be downloaded, they will be 
created
-               # based on the .mod file.
-               # See 
https://github.com/golang/go/issues/35922#issuecomment-584824275
-               exts=()
-               local errormsg=''
-               case "${modfile}" in
-                       '') exts=( zip ) ;;
-                       'go.mod'|'/go.mod') exts=( mod ) ;;
-                       *) errormsg="Unknown modfile: line='${line}', 
modfile='${modfile}'" ;;
-               esac
-
-               # If it was a bad entry, restart the loop
-               if [[ -n ${errormsg} ]]; then
-                       error_in_gosum=1
-                       gosum_errorlines+=( "${errormsg} line='${line}', 
modfile='${modfile}'" )
-                       continue
-               fi
-
-               _dir=$(_go-module_gomod_encode "${module}")
-
-               for _ext in "${exts[@]}" ; do
-                       # Relative URI within a GOPROXY for a file
-                       _reluri="${_dir}/@v/${version}.${_ext}"
-                       # SRC_URI: LHS entry
-                       _uri="${_GOMODULE_GOPROXY_BASEURI}/${_reluri}"
-#                      _uri="mirror://goproxy/${_reluri}"
-                       # SRC_URI: RHS entry, encode any slash in the path as
-                       # %2F in the filename
-                       _distfile="${_reluri//\//%2F}"
-
-                       EGO_SUM_SRC_URI+=" ${_uri} -> ${_distfile}${newline}"
-                       _GOMODULE_GOSUM_REVERSE_MAP["${_distfile}"]="${_reluri}"
-               done
-       done
-
-       if [[ ${error_in_gosum} != 0 ]]; then
-               eerror "Trailing information in EGO_SUM in ${P}.ebuild"
-               for line in "${gosum_errorlines[@]}" ; do
-                       eerror "${line}"
-               done
-               die "Invalid EGO_SUM format"
-       fi
-
-       # Ensure these variables are not changed past this point
-       readonly EGO_SUM
-       readonly EGO_SUM_SRC_URI
-       readonly _GOMODULE_GOSUM_REVERSE_MAP
-
-       # export the GOPROXY setting
-       export GOPROXY="file://${T}/go-proxy"
-
-       # Set the guard that we are safe
-       _GO_MODULE_SET_GLOBALS_CALLED=1
-}
-
-# @FUNCTION: go-module_setup_proxy
-# @DEPRECATED:
-# @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
-#   local go proxy. Also warn that this usage is deprecated.
-# - Otherwise, if EGO_VENDOR is set, bail out.
+# if EGO_SUM or EGO_VENDOR is set, bail out.
 # - Otherwise do a normal unpack.
 go-module_src_unpack() {
-       if [[ "${#EGO_SUM[@]}" -gt 0 ]]; then
-               eqawarn "This ebuild uses EGO_SUM which is deprecated"
-               eqawarn "Please migrate to a dependency tarball"
-               eqawarn "This will become a fatal error in the future"
-               _go-module_src_unpack_gosum
-       elif [[ "${#EGO_VENDOR[@]}" -gt 0 ]]; then
-               eerror "${EBUILD} is using EGO_VENDOR which is no longer 
supported"
+       if [[ "${#EGO_SUM[@]}" -gt 0 || "${#EGO_VENDOR[@]}" -gt 0 ]]; then
+               eerror "${EBUILD} is using EGO_SUM or EGO_VENDOR"
+               eeror "These are no longer supported"
                die "Please update this ebuild"
-       else
-               default
-       fi
-}
-
-# @FUNCTION: _go-module_src_unpack_gosum
-# @DEPRECATED:
-# @DESCRIPTION:
-# Populate a GOPROXY directory hierarchy with distfiles from EGO_SUM and
-# unpack the base distfiles.
-#
-# Exports GOPROXY environment variable so that Go calls will source the
-# directory correctly.
-_go-module_src_unpack_gosum() {
-       # 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 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}"
-               else
-                       unpack "$f"
-               fi
-       done
-
-       # Validate the gosum now
-       _go-module_src_unpack_verify_gosum
-}
-
-# @FUNCTION: _go-module_gosum_synthesize_files
-# @DEPRECATED:
-# @DESCRIPTION:
-# Given a path &  version, populate all Goproxy metadata files which aren't
-# needed to be downloaded directly.
-# - .../@v/${version}.info
-# - .../@v/list
-_go-module_gosum_synthesize_files() {
-       local target=$1
-       local version=$2
-       # 'go get' doesn't care about the hash of the .info files, they
-       # just need a 'version' element!
-       # This saves a download of a tiny file
-       # The .time key is omitted, because that is the time a module was added
-       # to the upstream goproxy, and not metadata about the module itself.
-       cat >"${target}/${version}.info" <<-EOF
-       {
-               "Version": "${version}",
-               "shortName": "${version}",
-               "Name": "${version}"
-       }
-       EOF
-       listfile="${target}"/list
-       if ! grep -sq -x -e "${version}" "${listfile}" 2>/dev/null; then
-               echo "${version}" >>"${listfile}"
        fi
-}
-
-# @FUNCTION: _go-module_src_unpack_verify_gosum
-# @DEPRECATED:
-# @DESCRIPTION:
-# Validate the Go modules declared by EGO_SUM are sufficient to cover building
-# the package, without actually building it yet.
-_go-module_src_unpack_verify_gosum() {
-       # 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
-
-       cd "${S}" || die "cd failed"
-
-       # Cleanup the modules before starting anything else
-       # This will print 'downloading' messages, but it's accessing content 
from
-       # the $GOPROXY file:/// URL!
-       einfo "Tidying go.mod/go.sum"
-       nonfatal ego mod tidy >/dev/null
-
-       # This used to call 'go get' to verify by fetching everything from the 
main
-       # go.mod. However 'go get' also turns out to recursively try to fetch
-       # everything in dependencies, even materials that are used only for 
tests
-       # of the dependencies, or code generation.
-       # If EGO_SUM is missing an entry now, it will fail during the build 
process
-       # rather than this helper function.
+       default
 }
 
 # @FUNCTION: go-module_live_vendor
@@ -481,31 +159,4 @@ go-module_live_vendor() {
        popd >& /dev/null || die
 }
 
-# @FUNCTION: _go-module_gomod_encode
-# @DEPRECATED:
-# @DESCRIPTION:
-# Encode the name(path) of a Golang module in the format expected by Goproxy.
-#
-# Upper letters are replaced by their lowercase version with a '!' prefix.
-#
-_go-module_gomod_encode() {
-       ## Python:
-       # return re.sub('([A-Z]{1})', r'!\1', s).lower()
-
-       ## Sed:
-       ## This uses GNU Sed extension \l to downcase the match
-       #echo "${module}" |sed 's,[A-Z],!\l&,g'
-       #
-       # Bash variant:
-       debug-print-function "${FUNCNAME}" "$@"
-       #local re input lower
-       re='(.*)([A-Z])(.*)'
-       input="${1}"
-       while [[ ${input} =~ ${re} ]]; do
-               lower='!'"${BASH_REMATCH[2],}"
-               input="${BASH_REMATCH[1]}${lower}${BASH_REMATCH[3]}"
-       done
-       echo "${input}"
-}
-
 fi
-- 
2.34.1


Reply via email to