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

郑文辉(Techlive Zheng) techlivezheng at gmail.com
Thu Oct 3 10:02:48 EDT 2013


2013/10/3 Allan McRae <allan at archlinux.org>:
> 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...
>

Yeah, this was the solution I used before. I named my wrapper as
makepkg.sh, but the only problem was that other pacman wrapper like
yaourt would not use my wrapper for building, then I started hacking
the core of the pacman and it is a pain to keep track pacman's update.

Acturally, all I need is to name my wrapper as makepkg too, and use
the absolute path for the real makepkg in it, then put my wrapper in a
place where appears early in the 'PATH' variable.


More information about the pacman-dev mailing list