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

Jan Mette jan.mette at berlin.de
Fri Nov 14 06:45:08 EST 2008


Am Freitag 14 November 2008 04:48:27 schrieb Allan McRae:
> 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


Hi,

i just want to give a small update on the KDEmod split patches. I havent
updated them since some months, but the last round of hacking on them
brought in some nice little changes.

The current patches are here:

http://www.kdemod.ath.cx/svn/branches/kde41/_buildsystem/patches/

The split patch is: splitpkg/3_makepkg-kdemod-splitpkg.patch

I have combined our original approach with the improvements from
http://bugs.archlinux.org/task/7982 and fixed all bugs i could find so far.

There are also some more changes:
- the split stuff has been moved into its own function, which makes the
  changes a lot more cleaner, imho...
- the split packages will be created in subdirs of /pkg, so we dont pollute
  the builddir so much
- repackaging etc works

The only drawback i have experienced so far is that the -i switch does
not work with split packages, but i guess there is a easy solution...

You can also find the patches to create separate debug packages at
this place, but these need some more "integration work" and testing.
Currently we have 2 makepkg's (makepkg, splitpkg), because i havent had
the time yet to write a unified split-debug patch that works with both
"normal" and split pkgs.

Oh, and i just want to say that i love Allans PKGBUILD prototype. Putting
the split packages into the pkgname is an awesome idea :)

Greetings

Jan







More information about the pacman-dev mailing list