--Boundary-00=_OYr3NJ/Rw7s3Iy0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit On Wednesday 25 May 2011, Alexander Neundorf wrote: > On Wednesday 25 May 2011, Eric Hameleers wrote: > > On Tue, 24 May 2011, Alexander Neundorf wrote: > > > On Sunday 22 May 2011, Alexander Neundorf wrote: > > >> On Sunday 22 May 2011, Kevin Kofler wrote: > > >>> On Sunday 22 May 2011, Alexander Neundorf wrote: > > >>>> So, what I'm doing right now for kdesupport is to create one > > >>>> CMakeLists.txt, which contains all the contained projects (automoc4, > > >>>> phonon, attica, akonadi, ...) via the externalproject()-feature from > > >>>> CMake. > > >>>> What it does, is it gets and updates all the sources from git, > > >>>> configures, builds and installs them. > > >>>> So it feels almost like it did before. > > >>> > > >>> Unfortunately, this is of no use for us packagers because we are > > >>> banned by policy (and at least in Fedora, this is enforced by the > > >>> build system) from downloading stuff during build. We can only work > > >>> from tarballs. (If we want to package a snapshot, we have to check > > >>> it out, tar it, then package the resulting tarball.) > > >> > > >> I'll see whether I can do something for this. > > >> > > >> Alex > > > > > > Looks good :-) > > > I have here now a CMakeLists.txt for kdesupport, which downloads > > > everything from git and builds it. > > > But on "make package", it creates basically a package of the downloaded > > > sources together with a matching CMakeLists.txt (which then doesn't > > > download, but just uses the already present sources). > > > I.e. > > > you could do "cmake " , then "make package" (or maybe some > > > custom target), and then you'd have a tgz of kdesupport which you can > > > unpack and build anywhere. > > > Would that help your case ? > > > > > > Alex > > > > Hi Alex > > > > Absolutely! > > > > I have no issues with creating a comprehensive tarball myself. In > > fact, if this allows me to build a single monolithic kdesupport > > package again, then you provide what I need. > > I think so. > There may be issues with installing the built stuff, we'll see. > (currently it is installed during the build, so you need write permissions > for the install directory, which is probably ok for developers, who have > their system probably anyway set up in such a way that they can install as > normal user, not sure for packagers). > > Where should I put that stuff ? > git, svn, somewhere else ? Attached is what I have so far for kdesupport. There are still issues because some of the projects in kdesupport try to install outside CMAKE_INSTALL_PREFIX by default, those projects have to be fixed. The file uses the ExternalProject-support from cmake to gather all the projects into one "superproject". If you simply build it (cmake; make), it will download, configure and build them all. During building it will also install them to their install location. If you just want to have a source package which you can build, there is a custom target "UpdateAll" provided, which just gets all the sources. To get a package from that, use the package target. I.e. $ make UpdateAll $ make package gives you a KDESupport-1.2.3.tgz, which you can unpack anywhere and configure there (for all of the included projects at once). Alex --Boundary-00=_OYr3NJ/Rw7s3Iy0 Content-Type: text/x-cmake; charset="ISO-8859-1"; name="CMakeLists.txt" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="CMakeLists.txt" cmake_minimum_required(VERSION 2.8.4) project(KDESupport) find_package(Qt4 REQUIRED) add_custom_target(UpdateAll) include(ExternalProject) include(CMakeParseArguments) macro(kde4_add_project _name ) option(BUILD_${_name} "Build subproject ${_name}" TRUE) set(oneValueArgs CVS_REPOSITORY GIT_REPOSITORY SVN_REPOSITORY SOURCE_DIR ) cmake_parse_arguments(_KAP "" "${oneValueArgs}" "" ${ARGN}) if(EXISTS ${CMAKE_SOURCE_DIR}/${_name}/src/ ) # we are building an installed version of the source package set(GET_SOURCES_ARGS SOURCE_DIR ${CMAKE_SOURCE_DIR}/${_name}/src/${_name} DOWNLOAD_COMMAND "") else() set(GET_SOURCES_ARGS DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${_name}/ ) if(_KAP_CVS_REPOSITORY) set(GET_SOURCES_ARGS ${GET_SOURCES_ARGS} CVS_REPOSITORY ${_KAP_CVS_REPOSITORY} ) elseif(_KAP_GIT_REPOSITORY) set(GET_SOURCES_ARGS ${GET_SOURCES_ARGS} GIT_REPOSITORY ${_KAP_GIT_REPOSITORY} ) elseif(_KAP_SVN_REPOSITORY) set(GET_SOURCES_ARGS ${GET_SOURCES_ARGS} SVN_REPOSITORY ${_KAP_SVN_REPOSITORY} ) elseif(_KAP_SOURCE_DIR) set(GET_SOURCES_ARGS ${GET_SOURCES_ARGS} SOURCE_DIR ${_KAP_SOURCE_DIR} ) endif() endif() if (BUILD_${_name}) externalproject_add(${_name} # ${_KAP_UNPARSED_ARGUMENTS} PREFIX ${_name} ${GET_SOURCES_ARGS} TMP_DIR ${CMAKE_BINARY_DIR}/${_name}/tmpfiles STAMP_DIR ${CMAKE_BINARY_DIR}/${_name}/stampfiles BINARY_DIR ${CMAKE_BINARY_DIR}/${_name}/build INSTALL_DIR ${CMAKE_INSTALL_PREFIX} # INSTALL_COMMAND ${CMAKE_MAKE_PROGRAM} -C${CMAKE_BINARY_DIR}/${_name}/build install DESTDIR=${CMAKE_BINARY_DIR}/Install CMAKE_ARGS -DQT_QMAKE_EXECUTABLE=${QT_QMAKE_EXECUTABLE} -DCMAKE_PREFIX_PATH=${CMAKE_INSTALL_PREFIX} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} STEP_TARGETS update ) install(DIRECTORY ${CMAKE_BINARY_DIR}/${_name}/src/ DESTINATION src/${_name}/src/ ) add_dependencies(UpdateAll ${_name}-update ) else() add_custom_target(${_name}) endif() endmacro(kde4_add_project) kde4_add_project(Automoc4 GIT_REPOSITORY git://anongit.kde.org/automoc ) kde4_add_project(Akonadi GIT_REPOSITORY git://anongit.kde.org/akonadi ) kde4_add_project(Attica GIT_REPOSITORY git://anongit.kde.org/attica ) kde4_add_project(Cagibi GIT_REPOSITORY git://anongit.kde.org/cagibi ) add_dependencies(Cagibi Automoc4) kde4_add_project(Prison GIT_REPOSITORY git://anongit.kde.org/prison ) kde4_add_project(PolKitQt GIT_REPOSITORY git://anongit.kde.org/polkit-qt-1 ) add_dependencies(PolKitQt Automoc4) kde4_add_project(Soprano GIT_REPOSITORY git://anongit.kde.org/soprano ) kde4_add_project(Phonon GIT_REPOSITORY git://anongit.kde.org/phonon CMAKE_ARGS -DPHONON_MKSPECS_DIR=share/qt4/mkspecs/modules -DPHONON_QT_PLUGIN_INSTALL_DIR=lib/qt4/plugins/designer/ ) add_dependencies(Phonon Automoc4) kde4_add_project(Phonon-GStreamer GIT_REPOSITORY git://anongit.kde.org/phonon-gstreamer ) kde4_add_project(Phonon-MMF GIT_REPOSITORY git://anongit.kde.org/phonon-mmf ) kde4_add_project(Phonon-MPlayer GIT_REPOSITORY git://anongit.kde.org/phonon-mplayer ) kde4_add_project(Phonon-VLC GIT_REPOSITORY git://anongit.kde.org/phonon-vlc ) kde4_add_project(Phonon-WaveOut GIT_REPOSITORY git://anongit.kde.org/phonon-waveout ) kde4_add_project(Phonon-Xine GIT_REPOSITORY git://anongit.kde.org/phonon-xine ) if(WIN32) kde4_add_project(Phonon-DirectShow GIT_REPOSITORY git://anongit.kde.org/phonon-directshow ) endif() if(APPLE) kde4_add_project(Phonon-QuickTime GIT_REPOSITORY git://anongit.kde.org/phonon-quicktime ) endif() #kde4_add_project(hello SOURCE_DIR ${CMAKE_SOURCE_DIR}/hello DOWNLOAD_COMMAND "") install(FILES CMakeLists.txt DESTINATION src ) set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY TRUE) set(CPACK_PACKAGE_VERSION 1.2.3) set(CPACK_PACKAGE_NAME KDESupport ) set(CPACK_GENERATOR "TGZ") set(CPACK_SET_DESTDIR FALSE) include(CPack) --Boundary-00=_OYr3NJ/Rw7s3Iy0 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Kde-buildsystem mailing list Kde-buildsystem@kde.org https://mail.kde.org/mailman/listinfo/kde-buildsystem --Boundary-00=_OYr3NJ/Rw7s3Iy0--