[pacman-dev] [PATCH 1/2] makepkg: allow make-style environment vars to override BUILDSCRIPT vars
Dave Reisner
d at falconindy.com
Thu Oct 3 09:26:02 EDT 2013
On Thu, Oct 03, 2013 at 09:06:28PM +0800, 郑文辉(Techlive Zheng) wrote:
> 2013/10/3 Dave Reisner <d at falconindy.com>:
> > On Thu, Oct 03, 2013 at 03:49:33PM +0800, Techlive Zheng wrote:
> >> This allows for VAR=value and VAR+=value variable declarations in
> >> command line to override variables in BUILDSCRIPT.
> >> ---
> >> scripts/makepkg.sh.in | 9 ++++-----
> >> 1 file changed, 4 insertions(+), 5 deletions(-)
> >>
> >> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> >> index 1ef2af2..f6d884f 100644
> >> --- a/scripts/makepkg.sh.in
> >> +++ b/scripts/makepkg.sh.in
> >> @@ -2712,11 +2712,6 @@ if [[ ! -w $BUILDDIR ]]; then
> >> exit 1
> >> fi
> >>
> >> -# override settings from extra variables on commandline, if any
> >> -if (( ${#extra_environment[*]} )); then
> >> - export "${extra_environment[@]}"
> >> -fi
> >> -
> >> PKGDEST=${_PKGDEST:-$PKGDEST}
> >> PKGDEST=${PKGDEST:-$startdir} #default to $startdir if undefined
> >> if (( ! (NOBUILD || GENINTEG) )) && [[ ! -w $PKGDEST ]]; then
> >> @@ -2810,7 +2805,11 @@ if [[ $BUILDDIR = "$startdir" ]]; then
> >> else
> >> srcdir="$BUILDDIR/$pkgbase/src"
> >> pkgdirbase="$BUILDDIR/$pkgbase/pkg"
> >> +fi
> >>
> >> +# override settings from extra variables on commandline, if any
> >> +if (( ${#extra_environment[*]} )); then
> >> + export "${extra_environment[@]}"
> >
> > Doing this is dangerous, as it lets you do things like:
> >
> > makepkg pkgver=this-is-not-a-valid-version
> >
> > Allowing a documented feature to override basic sanity checks is not a
> > good idea, imo.
> >
> >> fi
> >>
> >> # set pkgdir to something "sensible" for (not recommended) use during build()
> >> --
> >> 1.8.4
> >>
> >>
> >
>
> Yes, that is a risk, but people should know what they are doing.
And what are the rules? Where have you documented this?
Regardless, I don't think we should require that people have a
strong understanding of shell quoting rules and hand escape their
values. It's going to make for a really crappy user experience,
especially given the failure modes. I realize that this probably isn't
going to be a widely used feature, but it should still make sense and
have easily understood behavior.
> My main purpose to move this section here is to use the variables from
> BUILDSCRIPT in the command line vars assignment in the following
> patch.
Yes, I surmised that from your other posts. I'd strongly prefer that you
find another way. Sorry.
More information about the pacman-dev
mailing list