[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