[[PageOutline]] = Current status of setting up the CI system (still hanging on OSX up to now) = This page shall describe what has to be done to get a KDE/CI system up and running on OSX. Partially this is achieved by using a few port from MacPorts. == Start with a fresh Mavericks/MacPorts install == Currently using the official MacPorts version 2.3.0 is recommended. To be on the safe side make sure your disk has about 60G space in total. == Getting a MacPorts-compatible bash environment == Install ports for MacPorts' bash {{{ $ sudo port install bash bash-completion }}} and set up the [https://projects.kde.org/projects/playground/sdk/macports-kde/repository/revisions/master/show/contrib/user-setup bash environment for MacPorts use] regarding search paths (PATH, MANPATH) == Apple developer tools == Install * Xcode from AppStore (and agree actively to the developer license agreement) * developer command line tools {{{ $ xcode-select --install }}} == Tools already present on OSX == Some tools are already installed on OSX due to Xcode (like git, svn, ssh, rsync, make, clang etc.) they don't need to be installed via MacPorts for now. Should a more up-to-date version of any one of these be necessary for the CI system it could be added later. == Some more software supplied by MacPorts == Install ports needed for the CI scripts: {{{ $ sudo port install py27-lxml bazaar mercurial wget automake autoconf cppcheck shared-mime-info }}} Installing bazaar brings the also needed port gnutar into the system! == Basic setup of CI system == Create some folders, clone and update CI system (assuming a user "kdeci" with its home directory "/Users/kdeci"): {{{ $ cd $ mkdir -p WC/KDECI-build; $ cd WC $ git clone git://anongit.kde.org/websites/build-kde-org $ cd build-kde-org $ git checkout production $ ./update-setup.sh # Ignore 404 occurring due to error cloning ECMA262 by hg }}} The update shell script created a folder {{{~/scripts}}} in which subsequent commands will have to be executed. == 1st step: Qt5 build == === Prepare environment for Qt5 build === Install additional ports specific for Qt5, set correct path to KDE-install directory in config/build/darwin-mavericks.cfg: {{{ $ sudo port install dbus libmng libpng mysql55 pkgconfig sqlite2 tiff $ sudo port uninstall cmake # Remove MacPorts' cmake (which came into the system as build-dependency for mysql55) $ cd ~/scripts $ cat config/build/darwin-mavericks.cfg [DEFAULT] scriptsLocation=/Users/kdeci/scripts opSys=darwin architecture=mavericks compiler=clang [General] installPrefix=/opt/kde/install/%(opSys)s/%(architecture)s/%(compiler)s/ $ python2.7 tools/prepare-environment.py --project qt5 --branchGroup kf5-qt5 --platform darwin-mavericks --sources ~/WC/KDECI-build/qt5 ... $ }}} === Set up build environment for Qt5 === Make sure all libs can be found by adding search paths and avoid inclusion of MacPorts' glib2: {{{ $ cd ~/scripts; cat config/build/qt5/darwin-mavericks.cfg [Build] configureCommand=%(configureExecutable)s -release -system-zlib -system-libpng -system-libjpeg -system-sqlite -dbus -plugin-sql-mysql -nomake examples -confirm-license -opensource -prefix {instPrefix} -no-framework -v -I/opt/local/include -L/opt/local/lib -no-glib }}} Consider here the use of options "{{{-debug -separate-debug-info}}}" instead of "{{{-release}}}". Include MySQL's binary path into PATH e.g. in {{{.macports/profile}}} (assuming /opt/local as MacPort's prefix): {{{ export PATH=/opt/local/lib/mysql55/bin:$PATH }}} Set up SSH for rsync access to build host, then start building Qt5: {{{ $ cat ~/.ssh/config Host build.kde.org Port 2022 $ ssh-keygen -C YOUR@EMAIL.ADDRESS # <-- send your public SSH key to Ben Cooksley in order to get access to the build server $ python2.7 tools/perform-build.py --project qt5 --branchGroup kf5-qt5 --platform darwin-mavericks --sources ~/WC/KDECI-build/qt5 ... }}} == Installation of cmake == Cmake needs a manual checkout of its sources: {{{ $ python2.7 tools/prepare-environment.py --project cmake --branchGroup kf5-qt5 --platform darwin-mavericks --sources ~/WC/KDECI-build/cmake ... $ git clone git://cmake.org/cmake.git ~/WC/KDECI-build/cmake $ python2.7 tools/perform-build.py --project cmake --branchGroup kf5-qt5 --platform darwin-mavericks --sources ~/WC/KDECI-build/cmake ... }}} == Installation of other projects and KDE frameworks == The various frameworks have to be handled by replacing "PROJECT" with the framework's project name: {{{ $ python2.7 tools/prepare-environment.py --project PROJECT --branchGroup kf5-qt5 --platform darwin-mavericks --sources ~/WC/KDECI-build/PROJECT ... $ python2.7 tools/perform-build.py --project PROJECT --branchGroup kf5-qt5 --platform darwin-mavericks --sources ~/WC/KDECI-build/PROJECT ... }}} which has been successfully done so far for: {{{ Additional cmake dependency: - extra-cmake-modules Tier1 frameworks (COMPLETE): - attica - karchive - kcodecs - kconfig - kcoreaddons - kdbusaddons - kglobalaccel - kguiaddons - ki18n - kidletime - kimageformats - kitemmodels - kitemviews - kjs - kplotting - kwidgetsaddons - kwindowsystem - solid - sonnet - threadweaver Tier2 frameworks (IN THE WORKS): - kcrash - kdnssd - kdoctools - kjobwidgets - kpty - kunitconversion Tier3 frameworks (IN THE WORKS): - n/a }}} Problems currently appear for: {{{ Tier2: - kauth (due to polkit-qt-1 dependency) - kcompletion (/Applications/KDE/kconfig_compiler_kf5.app/Contents/MacOS/kconfig_compiler_kf5 as location is wrong) Tier3: - kactivities - kbookmarks - kcmutils - kconfigwidgets - kdeclarative - kded - kdesignerplugin - kdesu - kdewebkit - kemoticons - kiconthemes - kinit - kio - kjsembed (kdoctools can't find its catalogs) - kmediaplayer - knewstuff - knotifications - knotifyconfig - krunner - kservice (/Applications/KDE/kconfig_compiler_kf5.app/Contents/MacOS/kconfig_compiler_kf5 as location is wrong) - ktexteditor - ktextwidgets - kparts - kross - kwallet - kxmlgui - plasma Other stuff: - polkit-qt-1 (still fails due to inability to find package Polkit - this is still Linux-specific and needs to be fixed for use on OSX): }}} Having [http://wiki.gentoo.org/wiki/Project:KDE/Frameworks#kdelibs Gentoo's Project:KDE/Frameworks wiki page] around turned out to be very helpful while building the above KDE frameworks manually.