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

Dave Reisner d at falconindy.com
Mon May 12 13:43:30 EDT 2014


On Mon, May 12, 2014 at 01:06:20PM +0800, lolilolicon wrote:
> 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?
> 

You're forgetting about package-level overrides, which aren't available
in the environment.

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