[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gentoo-dev
Subject:    Re: [gentoo-dev] [PATCH] git-r3.eclass: Support EGIT_SUBMODULES to filter used submodules, #497164
From:       Daniel Campbell <zlg () gentoo ! org>
Date:       2016-05-27 19:16:24
Message-ID: 23b9410b-beaf-f9af-0fd5-e1782c3b13a1 () gentoo ! org
[Download RAW message or body]

[Attachment #2 (multipart/mixed)]


On 05/23/2016 12:54 PM, Michał Górny wrote:
> ---
>  eclass/git-r3.eclass | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 52 insertions(+), 1 deletion(-)
> 
> diff --git a/eclass/git-r3.eclass b/eclass/git-r3.eclass
> index 957ff08..61218a8 100644
> --- a/eclass/git-r3.eclass
> +++ b/eclass/git-r3.eclass
> @@ -165,6 +165,36 @@ fi
>  #
>  # EGIT_CHECKOUT_DIR=${WORKDIR}/${P}
>  
> +# @ECLASS-VARIABLE: EGIT_SUBMODULES
> +# @DEFAULT_UNSET
> +# @DESCRIPTION:
> +# An array of inclusive and exclusive wildcards on submodule names,
> +# stating which submodules are fetched and checked out. Exclusions
> +# start with '-', and exclude previously matched submodules.
> +#
> +# If unset, all submodules are enabled. Empty list disables all
> +# submodules. In order to use an exclude-only list, start the array
> +# with '*'.
> +#
> +# Remember that wildcards need to be quoted in order to prevent filename
> +# expansion.
> +#
> +# Examples:
> +# @CODE
> +# # Disable all submodules
> +# EGIT_SUBMODULES=()
> +#
> +# # Include only foo and bar
> +# EGIT_SUBMODULES=( foo bar )
> +#
> +# # Use all submodules except for test-* but include test-lib
> +# EGIT_SUBMODULES=( '*' '-test-*' test-lib )
> +# @CODE
> +if [[ ${EGIT_SUBMODULES[@]+1} && $(declare -p EGIT_SUBMODULES) != "declare -a"* ]]
> +then
> +	die 'EGIT_SUBMODULES must be an array.'
> +fi
> +
>  # @FUNCTION: _git-r3_env_setup
>  # @INTERNAL
>  # @DESCRIPTION:
> @@ -243,7 +273,8 @@ _git-r3_env_setup() {
>  	if [[ ${EGIT_HAS_SUBMODULES} ]]; then
>  		eerror "EGIT_HAS_SUBMODULES has been removed. The eclass no longer needs"
>  		eerror "to switch the clone type in order to support submodules and therefore"
> -		eerror "submodules are detected and fetched automatically."
> +		eerror "submodules are detected and fetched automatically. If you need to"
> +		eerror "disable or filter submodules, see EGIT_SUBMODULES."
>  		die "EGIT_HAS_SUBMODULES is no longer necessary."
>  	fi
>  
> @@ -357,6 +388,26 @@ _git-r3_set_submodules() {
>  		l=${l#submodule.}
>  		local subname=${l%%.url=*}
>  
> +		# filter out on EGIT_SUBMODULES
> +		if declare -p EGIT_SUBMODULES &>/dev/null; then
> +			local p res= l_res
> +			for p in "${EGIT_SUBMODULES[@]}"; do
> +				if [[ ${p} == -* ]]; then
> +					p=${p#-}
> +					l_res=
> +				else
> +					l_res=1
> +				fi
> +
> +				[[ ${subname} == ${p} ]] && res=${l_res}
> +			done
> +
> +			if [[ ! ${res} ]]; then
> +				einfo "Skipping submodule \e[1m${subname}\e[22m"
> +				continue
> +			fi
> +		fi
> +
>  		# skip modules that have 'update = none', bug #487262.
>  		local upd=$(echo "${data}" | git config -f /dev/fd/0 \
>  			submodule."${subname}".update)
> 
Looks good to me. Great idea actually, since some projects like
app-text/pelican ship with submodules and I just wrote a live ebuild for it.

-- 
Daniel Campbell - Gentoo Developer
OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net
fpr: AE03 9064 AE00 053C 270C  1DE4 6F7A 9091 1EA0 55D6


["signature.asc" (application/pgp-signature)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic