Allan McRae schrieb:
Aaron Griffin wrote:
On Thu, Nov 13, 2008 at 11:33 AM, Allan McRae <allan@archlinux.org> wrote:
Aaron Griffin wrote:
On Thu, Nov 13, 2008 at 11:18 AM, Allan McRae <allan@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@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...