[pacman-dev] Status of "Splitting packages with makepkg"
Marc - A. Dahlhaus
mad at wol.de
Fri Nov 14 06:57:02 EST 2008
Allan McRae schrieb:
> 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
>
>
> _______________________________________________
> pacman-dev mailing list
> pacman-dev at archlinux.org
> http://archlinux.org/mailman/listinfo/pacman-dev
Hello,
the problem is that we need the vars to be the same as inside the
build-function as we need them outside of build-function for package
creation. The function that creates and compresses the actual package
will be executed outside of the scope of the sub-shell so you get
allways the same package-vars (the global defined) while the main-shell
creates the package for every split-package without knowing about any
variable overloading from inside subshell-scope of the build-functions...
So i think as long as we stay with this loggin implentation we can
scratch the overloading feathure alltogether and have to declare an
array inside the scope of the main-shell for each variable...
More information about the pacman-dev
mailing list