[pacman-dev] Status of "Splitting packages with makepkg"

Allan McRae allan at archlinux.org
Thu Nov 13 22:48:27 EST 2008


Aaron Griffin wrote:
> On Thu, Nov 13, 2008 at 11:33 AM, Allan McRae <allan at archlinux.org> wrote:
>   
>> Aaron Griffin wrote:
>>     
>>> On Thu, Nov 13, 2008 at 11:18 AM, Allan McRae <allan at archlinux.org> wrote:
>>>
>>>       
>>>> Allan McRae wrote:
>>>>
>>>>         
>>>>> Marc - A. Dahlhaus [ Administration | Westermann GmbH ] wrote:
>>>>>
>>>>>           
>>>>>> Hello Allen,
>>>>>>
>>>>>> the prototype has a little problem in case you give -L option to
>>>>>> makepkg
>>>>>> as it is now:
>>>>>>
>>>>>> As makepkg pipes the output of the build-function into tee, the
>>>>>> build-function gets executed in a sub-shell. Any changes of variables
>>>>>> in
>>>>>> context of main-shell from inside build-function will not work in that
>>>>>> case. This leads to that we have to set the values of all
>>>>>> split-package-variables outside of the respective build-functions.
>>>>>>
>>>>>>
>>>>>>
>>>>>>             
>>>>> As I said, the implementation is still a bit away...  The KDEmod guys
>>>>> override the PKGBUILD variables the same way.  I will look into what
>>>>> they
>>>>> for logging.
>>>>>
>>>>>           
>>>> Testing with this script indicates to me that everything is fine...
>>>>
>>>> test.sh:
>>>> #! /bin/bash
>>>>
>>>> output="FOO"
>>>>
>>>> build() {
>>>>  output="BAR"
>>>>  echo $output
>>>> }
>>>>
>>>> echo $output
>>>> build 2>&1
>>>> build 2>&1 | tee buildlog
>>>>
>>>>
>>>>
>>>>         
>>>>> ./test.sh
>>>>>
>>>>>           
>>>> FOO
>>>> BAR
>>>> BAR
>>>>
>>>>
>>>>         
>>>>> cat buildlog
>>>>>
>>>>>           
>>>> BAR
>>>>
>>>>
>>>> So what exactly are you say is wrong?
>>>>
>>>>         
>>> I think the case he means is this:
>>> test.sh:
>>> #! /bin/bash
>>> output="FOO"
>>> build() {
>>>  output="BAR"
>>>  echo $output
>>> }
>>>
>>> echo $output
>>> build 2>&1 | tee buildlog
>>> echo $output
>>> # end
>>>
>>> ./test.sh
>>> FOO
>>> BAR
>>> FOO
>>>
>>> Which, after thinking a little about it, is the way we want this to
>>> happen, yes?
>>>       
>> I think, yes it is.  From the KDEmod implementation, in the case where we
>> are not logging (and hence no tee) we need to revert the variables to what
>> they were before calling the build function.
>> Anyway, this will all become more apparent as I finish implementing it (with
>> heavy borrowing for all the patches floating around). The implementation can
>> be a bit more complex to accommodate a simpler PKGBUILD as far as I am
>> concerned.  Few people look at makepkg, many look at PKGBUILDs.
>>     
>
> Hell, you might be able to cheat.
> LOGFILE=/dev/null
> # if -L is specified, set LOGFILE to something else
> and always run:
>    build() 2>&1 | tee $LOGFILE
>
> Bam, now variables are reset automatically. Just make sure you comment
> that nicely 8)

Very nice idea.  That will clean up the whole split package patches nicely.

Allan





More information about the pacman-dev mailing list