RFC: Release Management Going Forward

Alexander Neundorf neundorf at kde.org
Wed Jul 27 20:22:08 CEST 2011


Hi Dirk,

On Wednesday 27 July 2011, Dirk Mueller wrote:
> On Sunday 17 July 2011, Alexander Neundorf wrote:
> > It's still in the early phase, but it should work already.
> > With these superbuilds, you can create e.g. a standalone source package
> > for all of e.g. kdegraphics. When creating such a source package, you
> > can/have to enter the git tag e.g. via cmake-gui, then the source
> > package will be for this tag.
> > Or, you can build all of kdegraphics in one go directly from git.

The documentation here: https://projects.kde.org/projects/kde/superbuild 
should be up-to-date and mostly complete.

> how  does that work? I set SB_PACKAGE_VERSION_NUMBER to v4.7.0, but it
> still checked out git master, which is completely wrong.
> 
> how do I tell it to check out a specific tag instead?

Set the SB_GIT_TAG variable in the cmake cache.
 
> also, why are the subdirectory names completely different (capitalized
> instead of lower case like the fine grained tarballs)?

No special reason. In the beginning I thought it looks nicer. But now I think 
it would be probably a better idea to name them consistently like the git 
repository.
We can change that.

> why is there a
> Source/ subdir where the main subdir does not have a CMakeLists.txt, so
> that the usual "cmake ; make; make install" workflow does not work?

The Source/ directory is just a container for the checked out projects. The 
toplevel CMakeLists.txt is the one in the checkout out superbuild directory.
So you can do "cmake; make" there.
 
> is there a way to tell it to not run make install after every module? 

No.
And I think this is impossible.
Let's say there is a library libfoo and an application using it names KBar.
KBar will have a find_package(foo) in its CMakeLists.txt.
The find-module used by KBar at cmake time can only work if libfoo has already 
been installed at this time.
So libfoo must already have been built and installed, so it can be found by 
KBar.

That's why installing is done during building.

And libfoo must be installed already with its final and correct 
CMAKE_INSTALL_PREFIX, otherwise several things can go wrong, e.g. would KBar 
get wrong RPATHs (if RPATHs are used), which would point to the intermediate 
location, or maybe it would grep for something in a header installed by libfoo 
to find some path, which could be dependent on the install location, and would 
get a wrong result then if libfoo would not have been installed to the final 
location.

It is possible to use DESTDIR, so the package are not installed to the system 
directory, but into DESTDIR.
If this is used, then RPATH must be completely disabled, because the 
automatically calculated RPATH of KBar would point into the DESTDIR install 
location of libfoo.

> for packagers, the step of "make" and "make install" must be completely
> seperate.

Sune (from Debian) said that the approach with Superbuild is different from 
normal behaviour, but it could be handled for packaging (as long as DESTDIR 
works). So, after "cmake ...; make" all the stuff is installed already in 
DESTDIR.

Why do "make" and "make install" have to be completey separate in your case ?
 
> In this state I don't see that I can create monolithic tarballs from that
> method, I would prefer to run the old setup-kde*.sh scripts (from
> /trunk/KDE/kde-common/release).
> 
> Anything I'm doing wrong here? I might have not grasped every part of the
> README.
> 
> Any help appreciated.

Thanks for giving it a try :-)
I'd be happy if we can get it into a state where it works for you.

Alex


More information about the release-team mailing list