[pacman-dev] [PATCH 1/2] makepkg: allow make-style environment vars to override BUILDSCRIPT vars

Allan McRae allan at archlinux.org
Thu Oct 3 09:21:44 EDT 2013


On 03/10/13 23:06, 郑文辉(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. 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.

If people knew what they were doing, we would not need the sanity check
in the first place.  Also, much of what is check is assumed throughout
the rest of makepkg and this would lead to breakages.

You know that you can override SRCDEST et al by using environmental
variables already?

You can implement this with a simple wrapper script like:

source PKGBUILD
source makepkg.conf

# assuming pkgbase is defined...
SRCRDEST=$BUILDDIR/pkgbase PKGDEST=...   makepkg "$@"


or something...


More information about the pacman-dev mailing list