[pacman-dev] [PATCH 2/6] makepkg: devel_check(): determine vcs

Dave Reisner d at falconindy.com
Mon Mar 12 15:13:54 EDT 2012


On Mon, Mar 12, 2012 at 12:53:11PM -0600, dgbaley27 at 0x01b.net wrote:
> From: Matthew Monaco <matthew.monaco at 0x01b.net>
> 
> Rather than prioritizing an arbitrary VCS, collect all development
> directives. If there is more than one, use the package name as a hint.
> If that doesn't work, abort.
> ---

I'm not really sure I understand the need for this. In what use case
are multiple VCS definitions needed?

>  scripts/makepkg.sh.in |   21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 05a611d..1eb62ca 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -1714,6 +1714,27 @@ devel_check() {
>  		# calls to makepkg via fakeroot will explicitly pass the version
>  		# number to avoid having to determine the version number twice.
>  		# Also do a check to make sure we have the VCS tool available.
> +		local vcs=()
> +
> +		[[ -n ${_darcstrunk} && -n ${_darcsmod} ]] && vcs+=("darcs")
> +		[[ -n ${_cvsroot}    && -n ${_cvsmod}   ]] && vcs+=("cvs")
> +		[[ -n ${_gitroot}    && -n ${_gitname}  ]] && vcs+=("git")
> +		[[ -n ${_svntrunk}   && -n ${_svnmod}   ]] && vcs+=("svn")
> +		[[ -n ${_bzrtrunk}   && -n ${_bzrmod}   ]] && vcs+=("bzr")
> +		[[ -n ${_hgroot}     && -n ${_hgrepo}   ]] && vcs+=("hg")
> +
> +		if [[ ${#vcs[@]} -eq 0 ]]; then

We generally use arithmetic contexts elsewhere for numeric comparison.

> +			return
> +		elif [[ ${#vcs[@]} -ge 2 ]]; then
> +			local vcslen=${#vcs[@]}
> +			vcs=(${vcs[@]/${pkgname##*-}/})

I think you're intentionally performing whitespace splitting here to
avoid counting problems. Even if that isn't the reason, it's not kosher.

> +			if [[ ${#vcs[@]} -eq $vcslen ]]; then
> +				warning "$(gettext "Ambiguous VCS package. Cannot pick from: %s.")" "${vcs[*]}"
> +				return 0
> +			fi
> +			vcs=${pkgname##*-}

And after all that array business, vcs is now treated as a string. I
appreciate bash's "dynamic" typing, but I rarely seek to abuse it.

> +		fi
> +
>  		if [[ -n ${_darcstrunk} && -n ${_darcsmod} ]] ; then
>  			if ! type -p darcs >/dev/null; then
>  				warning "$(gettext "Cannot find the %s binary required to determine latest %s revision.")" "darcs" "darcs"
> -- 
> 1.7.9.3
> 
> 


More information about the pacman-dev mailing list