# -*- 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 105725 2013-05-03 22:05:07Z macsforever2000@macports.org $

PortSystem          1.0

name                bacula
version             5.2.13
categories          sysutils
platforms           darwin
license             {AGPL-3 OpenSSLException}
maintainers         macsforever2000 googlemail.com:robertoschwald

description         network based backup program
long_description    Bacula is a set of computer programs that permit you to \
                    manage backup, recovery, and verification of computer data across \
                    a network of computers of different kinds.

homepage            http://www.bacula.org/
master_sites        sourceforge

checksums           rmd160  bcc168143c0eec5cb5e983f765935534379f4fcf \
                    sha256  a4bed458bf001889bd06bf31671b5d9908055a1d1e8113fd750ae4d326607ad8

depends_build       port:pkgconfig
depends_lib         port:gawk \
                    port:gettext \
                    port:libiconv \
                    port:ncurses \
                    port:openssl \
                    port:tcp_wrappers \
                    port:zlib

# Comment out patchfiles in case they are needed in the future or for the non-client version which is completely untested at this point
#                patch-configure.diff \
#post-patch {
#                 reinplace "s|@@PREFIX@@|${prefix}|g" ${worksrcpath}/configure
#}

configure.ccache    no
configure.args      --mandir=${prefix}/share/man \
                    --docdir=${prefix}/share/doc/bacula \
                    --datarootdir=${prefix}/share \
                    --with-pid-dir=${prefix}/var/run \
                    --with-subsys-dir=${prefix}/var/run/subsys \
                    --sysconfdir=${prefix}/etc/${name} \
                    --with-libintl-prefix=${prefix} \
                    --with-openssl=${prefix} \
                    --with-libiconv-prefix=${prefix} \
                    --with-readline=${prefix} \
                    --with-archivedir=/var/tmp \
                    --with-included-gettext=${prefix} \
                    --enable-smartalloc \
                    --enable-largefile \
                    --without-sqlite \
                    --without-sqlite3 \
                    --without-postgresql \
                    --without-mysql \
                    --disable-gnome \
                    --disable-wx-console \
                    --disable-tray-monitor \
                    --with-tcp-wrappers

configure.cppflags-append   -I${prefix}/ncurses
configure.ldflags           ""

destroot.keepdirs   ${destroot}${prefix}/var/run/subsys \
                    ${destroot}${prefix}/var/bacula/working

# Don't overwrite preference files
post-destroot {
    file rename ${destroot}${prefix}/etc/bacula/bacula-fd.conf ${destroot}${prefix}/etc/bacula/bacula-fd.conf.example
    file rename ${destroot}${prefix}/etc/bacula/bconsole.conf ${destroot}${prefix}/etc/bacula/bconsole.conf.example
    file rename ${destroot}${prefix}/etc/bacula/mtx-changer.conf ${destroot}${prefix}/etc/bacula/mtx-changer.conf.example
}

startupitem.create  yes
startupitem.init    "BIN=${prefix}/sbin/bacula-fd\nPID=${prefix}/var/run/bacula-fd.*.pid"
startupitem.start   "\[ -x \${BIN} \] && \${BIN} -c ${prefix}/etc/bacula/bacula-fd.conf"
startupitem.stop    "\[ -r \${PID} \] && /bin/kill \$(cat \${PID})"

variant client_only conflicts mysql5 postgresql83 postgresql84 sqlite2 sqlite3 description "Install bacula client (bacula-fd) only" {
    configure.args-append --enable-client-only
}

variant console_bat description "Install BAT console GUI application" {
    depends_build-append  port:tcp_wrappers \
                          port:makeicns
    depends_lib-append    port:qt4-mac \
                          port:qwt52
    configure.args-append --enable-bat
    post-patch {
        system "makeicns -in ${worksrcpath}/src/qt-console/images/bat_icon.png -out ${worksrcpath}/src/qt-console/images/bat_icon.icns"
    }
    post-destroot {
        file rename ${destroot}${prefix}/etc/bacula/bat.conf ${destroot}${prefix}/etc/bacula/bat.conf.example
        # for now, copy manually until upstream provider fixes bat.app install routines
        xinstall -m 755 -d ${destroot}${applications_dir}
        copy ${worksrcpath}/src/qt-console/bat.app ${destroot}${applications_dir}/Bacula-BAT.app
    }
    notes "To use the Bacula BAT GUI, you'll need to configure \"${prefix}/etc/bacula/bat.conf\"."
}

variant mysql5 conflicts client_only postgresql83 postgresql84 sqlite2 sqlite3 description "Install bacula client and server with mysql 5 backend" {
    depends_lib-append    path:bin/mysql_config5:mysql5
    configure.args-append --with-mysql
    configure.args-delete --without-mysql
}

variant postgresql83 conflicts mysql5 postgresql84 sqlite2 sqlite3 client_only description "Install bacula client and server with postgresql 8.3 backend" {
    depends_lib-append    port:postgresql83
    configure.args-append --with-postgresql
    configure.args-delete --without-postgresql
    configure.env-append  PATH=${prefix}/lib/postgresql83/bin:$env(PATH)
}

variant postgresql84 conflicts mysql5 postgresql83 sqlite2 sqlite3 client_only description "Install bacula client and server with postgresql 8.4 backend" {
    depends_lib-append    port:postgresql84
    configure.args-append --with-postgresql
    configure.args-delete --without-postgresql
    configure.env-append  PATH=${prefix}/lib/postgresql84/bin:$env(PATH)
}

variant sqlite2 conflicts client_only sqlite3 mysql5 postgresql83 postgresql84 description "Install bacula client and server with sqlite 2 backend" {
    depends_lib-append    port:sqlite2
    configure.args-append --with-sqlite=${prefix}
    configure.args-delete --without-sqlite
}

variant sqlite3 conflicts client_only sqlite2 mysql5 postgresql83 postgresql84 description "Install bacula client and server with sqlite 3 backend" {
    depends_lib-append    port:sqlite3
    configure.args-append --with-sqlite3=${prefix}
    configure.args-delete --without-sqlite3
}

default_variants +console_bat

if {![variant_isset mysql5] && ![variant_isset postgresql83] && ![variant_isset postgresql84] && ![variant_isset sqlite2] && ![variant_isset sqlite3]} {
    default_variants-append +client_only
}

livecheck.type           regex
livecheck.url            ${homepage}
livecheck.regex          {Bacula ([0-9\.]+)}
