[pacman-dev] Comments with `)' are either broken or disallowed

lolilolicon lolilolicon at gmail.com
Mon May 12 01:06:20 EDT 2014


On Mon, May 12, 2014 at 10:47 AM, Michael Witten <mfwitten at gmail.com> wrote:
> In `makepkg' (that is, in `scripts/makepkg.sh.in'), the following exist:
>
>         local provides_list=()
>         eval $(awk '/^[[:space:]]*provides=/,/\)/' "$BUILDFILE" | \
>                 sed -e "s/provides=/provides_list+=/" -e "s/#.*//" -e 's/\\$//')
>   ...
>         local backup_list=()
>         eval $(awk '/^[[:space:]]*backup=/,/\)/' "$BUILDFILE" | \
>                 sed -e "s/backup=/backup_list+=/" -e "s/#.*//" -e 's/\\$//')
>   ...
>         local optdepends_list=()
>         eval $(awk '/^[[:space:]]*optdepends=\(/,/\)[[:space:]]*(#.*)?$/' "$BUILDFILE" | \
>                 sed -e "s/optdepends=/optdepends_list+=/" -e "s/#.*//" -e 's/\\$//')
>   ...
>         local known kopt options_list
>         eval $(awk '/^[[:space:]]*options=/,/\)/' "$BUILDFILE" | \
>                 sed -e "s/options=/options_list+=/" -e "s/#.*//" -e 's/\\$//')

Why are we doing such rudimentary parsing + `eval`? Apart from
breaking any extra ")", it also breaks any "#" that does not start a
comment, which could happen for example in backup file names, or more
likely in the more freestyle optdepends.

These are in the check_sanity function, by the time which is run we
already source'd the BUILDFILE, correct? Why don't we use the existing
variable arrays then?

>
> Perhaps there are more.
>
> As you can plainly see, this ruins the ability to include comments that use
> the `)' character, as in the following:
>
>   options=(
>     '!strip'
>     '!makeflags' # Apparently, there are issues with concurrency (`-j2', etc.)
>   )
>
> Sincerely,
> Michael Witten
>


More information about the pacman-dev mailing list