# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
# $Id: Portfile 119433 2014-04-25 12:47:30Z nicos@macports.org $

PortSystem          1.0
PortGroup           kde4    1.1
PortGroup           compiler_blacklist_versions 1.0

name                akonadi
version             1.12.1
categories          devel kde kde4
maintainers         nicos openmaintainer
license             LGPL-2+
description         A personal information management storage service.
long_description    Akonadi is an extensible cross-desktop storage service \
for PIM data and metadata providing concurrent read, write, and query access.
platforms           darwin
homepage            http://community.kde.org/KDE_PIM/Akonadi
master_sites        kde:stable/${name}/src/
use_bzip2           yes

checksums           rmd160  6e486f4a39948af6f470b652bf3223de75af5e53 \
                    sha256  a073228fda8bdbcf836af32d4b4c44dcbe58a3eac6da4e5a286b42ace9d83145

depends_lib-append  port:soprano \
                    port:boost \
                    port:shared-mime-info

#Older compilers cannot handle c++0x instructions contained in akonadi
compiler.blacklist  gcc-4.2 llvm-gcc-4.2 apple-gcc-4.2
compiler.blacklist-append   {clang < 137}

configure.args-append  -DPOSTGRES_PATH=Off

set startup_root ""
post-destroot {
    #Create a simple startup item
    xinstall -d -m 755 ${destroot}${prefix}/Library/LaunchDaemons
    set plist [open "${destroot}${prefix}/Library/LaunchDaemons/org.macports.akonadi.plist" w 0644]

    puts ${plist} "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
    puts ${plist} "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">"
    puts ${plist} "<plist version=\"1.0\">"
    puts ${plist} "<dict>"
    puts ${plist} "<key>Label</key>"
    puts ${plist} "<string>org.macports.akonadi</string>"
    puts ${plist} "<key>ProgramArguments</key>"
    puts ${plist} "<array>"
    puts ${plist} "<string>${prefix}/bin/akonadiserver-script.sh</string>"
    puts ${plist} "</array>"
    puts ${plist} "<key>Disabled</key>"
    puts ${plist} "<true/>"
    puts ${plist} "<key>RunAtLoad</key>"
    puts ${plist} "<true/>"
    puts ${plist} "</dict>"
    puts ${plist} "</plist>"
    close ${plist}

    #Create the script to launch server (needed to set the path, so that
    #akonadictl can find akonadi_control
    xinstall -d -m 755 ${destroot}${prefix}/bin
    set scriptFl [open "${destroot}${prefix}/bin/akonadiserver-script.sh" w 0755]
    puts ${scriptFl} "#!/bin/sh"
    puts ${scriptFl} "export PATH=${prefix}/bin:${prefix}/sbin:\$PATH"
    puts ${scriptFl} "${prefix}/bin/akonadictl start"
    close ${scriptFl}

    # The startupitem.install keyword does not exist in MacPorts < 2.1.
    if {![info exists startupitem.install]} {
        set startupitem.install yes
    }
    if { ${startupitem.install} != "no" } {
        xinstall -d -m 755 ${destroot}${startup_root}/Library/LaunchDaemons
        ln -s ${prefix}/Library/LaunchDaemons/org.macports.akonadi.plist ${destroot}${startup_root}/Library/LaunchDaemons
    }

    set docdir ${prefix}/share/doc/${name}
    xinstall -d ${destroot}${docdir}
    xinstall -m 0644 -W ${worksrcpath} AUTHORS NEWS README README.sqlite \
        ${destroot}${docdir}
}

post-activate {
    if { ![variant_isset no_root] } {
        file attributes ${prefix}/Library/LaunchDaemons/org.macports.akonadi.plist -owner root -group wheel 
    }
}

notes "Applications using akonadi need the akonadi server to be running to function.
To start the server manually, run
 akonadictl start &
Otherwise, an agent to start the server at logon is provided.
To start it run the following command:
 launchctl load -w ${startup_root}/Library/LaunchDaemons/org.macports.akonadi.plist"

variant no_root description {Run the akonadi server start as MacPorts install user.} {
    pre-fetch {
        if { ${install.user}=="root" || ${install.group}=="wheel" } {
            ui_error "The akonadi server should not be run as root with no_root variant."
            error "Please do not use this variant with your MacPorts configuration."
        }
    }

    set startup_root  [join [lrange [exec /usr/bin/dscl . -read Users/${install.user} NFSHomeDirectory] 1 end]]
    # Files are installed into user's startup directory.
    destroot.violate_mtree  yes
}

variant mysql5 requires mysql51 description {Legacy compatibility variant} {}

variant mysql51 \
   conflicts sqlite mysql55 mysql56 mariadb55 percona55 \
   description {build with mysql51 port} {

   depends_lib-append      port:qt4-mac-mysql51-plugin
   depends_run-append      port:mysql51-server
   configure.args-append   -DDATABASE_BACKEND=MYSQL \
                           -DMYSQLD_EXECUTABLE=${prefix}/lib/mysql51/bin/mysqld
}

variant mysql55 \
   conflicts sqlite mysql51 mysql56 mariadb55 percona55 \
   description {build with mysql55 port} {

   depends_lib-append      port:qt4-mac-mysql55-plugin
   depends_run-append      port:mysql55-server
   configure.args-append   -DDATABASE_BACKEND=MYSQL \
                           -DMYSQLD_EXECUTABLE=${prefix}/lib/mysql55/bin/mysqld
}

variant mysql56 \
   conflicts sqlite mysql51 mysql55 mariadb55 percona55 \
   description {build with mysql56 port} {

   depends_lib-append      port:qt4-mac-mysql56-plugin
   depends_run-append      port:mysql56-server
   configure.args-append   -DDATABASE_BACKEND=MYSQL \
                           -DMYSQLD_EXECUTABLE=${prefix}/lib/mysql55/bin/mysqld
}

variant mariadb requires mariadb55 description {Legacy compatibility variant} {}

variant mariadb55 \
   conflicts sqlite mysql51 mysql55 mysql56 percona55 \
   description {build with mariadb port} {

   depends_lib-append      port:qt4-mac-mariadb-plugin
   depends_run-append      port:mariadb-server
   configure.args-append   -DDATABASE_BACKEND=MYSQL \
                           -DMYSQLD_EXECUTABLE=${prefix}/lib/mariadb/bin/mysqld
}

variant percona requires percona55 description {Legacy compatibility variant} {}

variant percona55 \
   conflicts sqlite mysql51 mysql55 mysql56 mariadb55 \
   description {build with percona55 port} {

   depends_lib-append      port:qt4-mac-percona-plugin
   depends_run-append      port:percona-server
   configure.args-append   -DDATABASE_BACKEND=MYSQL \
                           -DMYSQLD_EXECUTABLE=${prefix}/lib/percona/bin/mysqld
}

variant sqlite \
   conflicts mysql51 mysql55 mysql56 mariadb55 percona55 \
   description {Use sqlite backend instead of MySQL} {

   depends_lib-append      port:qt4-mac-sqlite3-plugin          
   configure.args-append   -DDATABASE_BACKEND=SQLITE \
                           -DMYSQLD_EXECUTABLE=Off
}

if {![variant_isset mysql5] && ![variant_isset mysql51] && ![variant_isset mysql55] \
    && ![variant_isset mysql56] && ![variant_isset mariadb55] && ![variant_isset percona55] \
    && ![variant_isset sqlite]} {
    default_variants +mariadb55
}

post-patch {
    # fix '#include "utils.h"' -> "src/utils.h" to avoid a conflict
    # with the 'utils.h' header installed by the cdparanoia port
    fs-traverse item ${workpath}/${distname} {
        if {[file isfile ${item}]} {
            reinplace "/include/s@\\(utils\\.h\\)@src/\\1@g" ${item}
        }
    }
	reinplace "s|/Applications|${applications_dir}|" ${worksrcpath}/CMakeLists.txt
}

platform darwin 9 {
    if {[info exists universal_target] && ${universal_target} == "10.4"} {
# Needed if compiling for 10.4 universal on 10.5
        post-configure {
            reinplace "s|#define HAVE_EXECINFO_H 1||" ${workpath}/build/config-akonadi.h
        }
    }
}

livecheck.type      regex
livecheck.url       http://kde.mirrors.hoobly.com/stable/akonadi/src/
livecheck.regex     ${name}-(\\d+(\\.\\d+)+)
