# -*- 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 119928 2014-05-10 20:35:38Z devans@macports.org $

PortSystem      1.0

name            dbus-python
version         1.2.0
maintainers     mcalhoun openmaintainer
license         MIT
categories      devel python
platforms       darwin
description     Python bindings for the dbus message bus system.

set python_versions {24 25 26 27 31 32 33}

# this default version should stay synchronized with python_get_default_version
#    in the python PortGroup
set python_default_version 27

long_description \
    ${description}

homepage        http://www.freedesktop.org/Software/dbus/
master_sites    http://dbus.freedesktop.org/releases/dbus-python/

if {${name} eq ${subport}} {
    # set up dbus-python as a stub port that depends on the default dbus-pythonXY
    fetch {}
    checksum {}
    extract {}
    supported_archs noarch
        
    depends_lib port:${name}${python_default_version}
    
    patch {}
    use_configure no
    build {}
    destroot {
        xinstall -d ${destroot}${prefix}/share/doc/${name}
        system "echo $name is a stub port > ${destroot}${prefix}/share/doc/${name}/README"
    }
}

foreach python_version ${python_versions} {

    set python_branch [string range ${python_version} 0 end-1].[string index ${python_version} end]
    
    subport ${name}${python_version} {
        
        checksums           rmd160  cba09a1ca259bfa49c943142110a968241f40360 \
                            sha256  e12c6c8b2bf3a9302f75166952cbe41d6b38c3441bbc6767dbd498942316c6df
        
        livecheck.type  regex
        livecheck.url   ${master_sites}?C=M&O=D
        livecheck.regex ${name}-(\\d+(?:\\.\\d+)*)
        
        # dbus-python 1.x only supports Python 2.6 and above
        if { [vercmp ${python_branch} 2.5] <= 0 } {
            version 0.84.0
            
            checksums           rmd160  ec5912e28e49e89ff3f9a3a5a05292c27f11de2c \
                                sha256  b85bc7aaf1a976627ca461b1ca7b0c4ddddff709f52fe44c9b2d1d7d8fac5906
            
            livecheck.regex ${name}-(0(?:\\.\\d+)*)
        }
        
        distname        ${name}-${version}

        depends_build   port:pkgconfig
        
        depends_lib                               \
            path:bin/dbus-daemon:dbus             \
            port:dbus-glib                        \
            port:gettext                          \
            path:lib/pkgconfig/glib-2.0.pc:glib2  \
            port:libiconv \
            port:python${python_version}
        
        set python_prefix ${frameworks_dir}/Python.framework/Versions/${python_branch}
                
        configure.pre_args-replace --prefix=${prefix} --prefix=${python_prefix}
        
        configure.args                                                    \
            --docdir=${prefix}/share/doc/${subport}                       \
            --includedir=${python_prefix}/include/python${python_branch}  \
            --disable-html-docs                                           \
            --disable-api-docs
        
        configure.pkg_config_path  ${python_prefix}/lib/pkgconfig
        
        configure.python    ${prefix}/bin/python${python_branch}
        
        variant html description {Enable HTML documentation building} {}
        
        # pyXY-epydoc, which is required to build the api, is only supported on certain versions of python
        if { [lsearch -exact {25 26 27} ${python_version}] != -1 } {
            variant doc description {Enable API documentation building} {}
        }
        
        variant examples description {Install examples} {
            post-destroot {
                set docdir ${prefix}/share/doc/${subport}
                set exdir ${docdir}/examples
                xinstall -d ${destroot}${exdir}
                eval xinstall -m 644 [glob ${worksrcpath}/examples/*] ${destroot}${exdir}
            }
        }
        
        # pyXY-gobject, which is required to test, is only supported on certain versions of python
        if { [lsearch -exact {26 27 32 33 34} ${python_version}] != -1 } {
            variant test {}
            
            test.run yes
            test.target check
        }
        
        # ${python_version} and ${python_branch} do not have the right value inside variant block,
        #    so put it here.
        if { [variant_isset html] || ([variant_exists doc] && [variant_isset doc]) } {
            depends_build-append port:py${python_version}-docutils
            configure.env-append RST2HTML=${prefix}/bin/rst2html-${python_branch}.py
        }

        if { [variant_isset html] } {
            configure.args-replace --disable-html-docs --enable-html-docs
        }

        # ${python_version} and ${python_branch} do not have the right value inside variant block,
        #    so put it here.
        if { [variant_exists doc] && [variant_isset doc] } {
            depends_build-append port:py${python_version}-epydoc
            configure.args-replace --disable-api-docs --enable-api-docs
            configure.env-append EPYDOC=${prefix}/bin/epydoc-${python_branch}
            
            post-destroot {
                set docdir ${prefix}/share/doc/${subport}
                set apidir ${docdir}/api
                xinstall -d ${destroot}${apidir}
                eval xinstall -m 644 [glob ${worksrcpath}/api/*] ${destroot}${apidir}
            }
        }
        
        # ${python_version} and ${python_branch} do not have the right value inside variant block,
        #    so put it here.
        if { [variant_exists test] } {
            if { [variant_isset test] } {
                depends_build-append port:py${python_version}-gobject
            } else {
                pre-test {
                    ui_error "test variant must be activated to enable test support."
                    error "Please enable test variant."
                }
            }
        }
        
        platform darwin 9 {
            post-patch {
                reinplace "s| -export-symbols-regex.*| \\\\|g" \
                    ${worksrcpath}/_dbus_bindings/Makefile.in \
                    ${worksrcpath}/_dbus_glib_bindings/Makefile.in
            }
        }
    }
}
