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

Andrew Gregory andrew.gregory.8 at gmail.com
Sun Aug 10 18:01:27 EDT 2014


On 08/07/14 at 08:46pm, 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.
> ---
>  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 cb5ded9..3962005 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -1054,6 +1054,46 @@ get_integlist() {
>  	fi
>  }
>  
> +generate_one_checksum() {
> +	local integ=$1 numsrc=${#source[*]} indentsz idx
> +
> +	if (( numsrc == 0 )); then
> +		return
> +	fi
> +
> +	printf "%ssums=(%n" "$integ" indentsz
> +
> +	for (( idx = 0; idx < numsrc; i++ )); do

Incrementing an unused variable here...

> +		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

and the actual index here.

> +	done
> +
> +	echo ")"
> +}
> +
>  generate_checksums() {
>  	msg "$(gettext "Generating checksums for source files...")"


More information about the pacman-dev mailing list