[pacman-dev] [PATCH 2/5] makepkg: break out checksum generation to its own function

Dave Reisner d at falconindy.com
Mon Sep 29 12:18:52 UTC 2014


On Mon, Sep 29, 2014 at 01:57:39PM +1000, Allan McRae wrote:
> On 16/08/14 01:41, Dave Reisner wrote:
> > This also fixes a "bug" in which a PKGBUILD without any source array
> > would generate "md5sums=()". While not technically wrong, we can easily
> > do better and emit nothing at all.
> > ---
> >  scripts/makepkg.sh.in | 73 +++++++++++++++++++++++++++++----------------------
> >  1 file changed, 41 insertions(+), 32 deletions(-)
> > 
> > diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> > index 116b46e..a8ae1de 100644
> > --- a/scripts/makepkg.sh.in
> > +++ b/scripts/makepkg.sh.in
> > @@ -1120,6 +1120,46 @@ get_integlist() {
> >  	fi
> >  }
> >  
> > +generate_one_checksum() {
> > +	local integ=$1 numsrc=${#source[*]} indentsz idx
> 
> Is there a reason to change to [*] instead of [@] here?

Nope. ${#a[*]} and ${#a[@]} are functionally equivalent.

> 
> > +
> > +	if (( numsrc == 0 )); then
> > +		return
> > +	fi
> > +
> > +	printf "%ssums=(%n" "$integ" indentsz
> > +
> > +	for (( idx = 0; idx < numsrc; ++idx )); do
> > +		local netfile=${source[idx]}
> > +		local proto sum
> > +		proto="$(get_protocol "$netfile")"
> > +
> > +		case $proto in
> > +			bzr*|git*|hg*|svn*)
> > +				sum="SKIP"
> > +				;;
> > +			*)
> > +				if [[ ! $netfile = *.@(sig?(n)|asc) ]]; then
> > +					local file
> > +					file="$(get_filepath "$netfile")" || missing_source_file "$netfile"
> > +					sum="$(openssl dgst -${integ} "$file")"
> > +					sum=${sum##* }
> > +				else
> > +					sum="SKIP"
> > +				fi
> > +				;;
> > +		esac
> > +
> > +		# indent checksum on lines after the first
> > +		printf "%*s%s" $(( idx ? indentsz : 0 )) '' "'$sum'"
> > +
> > +		# print a newline on lines before the last
> > +		(( idx < (numsrc - 1) )) && echo
> > +	done
> > +
> > +	echo ")"
> > +}
> > +
> >  generate_checksums() {
> >  	msg "$(gettext "Generating checksums for source files...")"
> >  
> > @@ -1142,38 +1182,7 @@ generate_checksums() {
> >  			exit 1 # $E_CONFIG_ERROR
> >  		fi
> >  
> > -		local indentsz idx numsrc=${#source[@]}
> > -		printf "%s%n" "${integ}sums=(" indentsz
> > -
> > -		for (( idx = 0; idx < numsrc; i++ )); do
> > -			local netfile=${source[idx]}
> > -			local proto sum
> > -			proto="$(get_protocol "$netfile")"
> > -
> > -			case $proto in
> > -				bzr*|git*|hg*|svn*)
> > -					sum="SKIP"
> > -					;;
> > -				*)
> > -					if [[ ! $netfile = *.@(sig?(n)|asc) ]]; then
> > -						local file
> > -						file="$(get_filepath "$netfile")" || missing_source_file "$netfile"
> > -						sum="$(openssl dgst -${integ} "$file")"
> > -						sum=${sum##* }
> > -					else
> > -						sum="SKIP"
> > -					fi
> > -					;;
> > -			esac
> > -
> > -			# indent checksum on lines after the first
> > -			printf "%*s%s" $(( idx ? indentsz : 0 )) '' "'$sum'"
> > -
> > -			# print a newline on lines before the last
> > -			(( ++idx < numsrc )) && echo
> > -		done
> > -
> > -		echo ")"
> > +		generate_one_checksum "$integ"
> >  	done
> >  }
> >  
> > 


More information about the pacman-dev mailing list