On Thu, Nov 13, 2008 at 11:33 AM, Allan McRae <[EMAIL PROTECTED]> wrote: > Aaron Griffin wrote: >> >> On Thu, Nov 13, 2008 at 11:18 AM, Allan McRae <[EMAIL PROTECTED]> 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) _______________________________________________ pacman-dev mailing list pacman-dev@archlinux.org http://archlinux.org/mailman/listinfo/pacman-dev