PortSystem 1.0

name                fop
version             1.1
categories          textproc java
license             Apache-2
maintainers         nomaintainer
platforms           darwin
supported_archs     noarch
description         Apache FOP Java XSL-FO Print Formatter
long_description    Apache FOP is the world's first print formatter driven by \
                    XSL formatting objects. It is a Java application that \
                    reads a formatting object tree conforming to the XSL 1.0 \
                    Recommendation (15 October 2001) and then turns it into a \
                    PDF document, certain other output formats or allows you \
                    to preview it directly on screen. Some parts of the XSL \
                    1.1 specification (work in progress!) have also been \
                    implemented.
homepage            https://xmlgraphics.apache.org/fop/

# Apache recommends at present that FOP be linked to FOP-specific versions of
# the Java libraries that it depends on (which are distributed with FOP), as
# both it and some of those libraries are undergoing a lot of changes, and they
# do not guarantee that FOP will work with any other versions.  We therefore
# might as well only use the binary distribution, unless anyone else comes up
# with a compelling reason to change this.  For the same reason, we also stick
# to the directory structure within the archive, since it isolates FOP and its
# libraries from conflicts with other versions.

if {${name} eq ${subport}} {
    conflicts       ${name}2

    checksums       md5     8b6f4747482d77449fd4c30df129a507 \
                    sha1    6b96c3f3fd5efe9f2b6b54bfa96161ec3f6a1dbc \
                    rmd160  fdeee43b73f0b005738661bb9b86d9f9a4434f63

    patchfiles      java_home.patch

    livecheck.type  none
}

# It may be possible to install both versions just by changing subport fop2's
# bin/fop to bin/fop2
subport ${name}2 {
    conflicts       ${name}
    version         2.1

    checksums       rmd160  0b261f214c2d841147f84a76ce14c78d473d1b59 \
                    sha256  a93b59aa4d0b6d573c9090d8f21dee6c7d0c449a4bd2d48a1723e233dfb423ea

    livecheck.type  regex
    livecheck.url   http://www.apache.org/dist/xmlgraphics/fop/binaries/
    livecheck.regex "${name}-(\\d+(?:\\.\\d+)*)-bin${extract.suffix}"
}

distname            ${name}-${version}-bin
master_sites        apache:xmlgraphics/fop/binaries/

worksrcdir          ${name}-${version}

use_configure       no
build   {}
pre-destroot {
    delete ${worksrcpath}/fop.bat
    delete ${worksrcpath}/fop.cmd
    delete ${worksrcpath}/fop.js
}
destroot    {
    xinstall -m 755 -d ${destroot}${prefix}/share/java/fop/${version}
    set foppaths [glob ${worksrcpath}/*]
    foreach foppath ${foppaths} {
        copy $foppath ${destroot}${prefix}/share/java/fop/${version}
    }
    ln -fs ${prefix}/share/java/fop/${version}/fop \
        ${destroot}${prefix}/bin/fop
    xinstall -m 755 -d ${destroot}${prefix}/share/doc/fop/${version}
    foreach fopdoc {KEYS LICENSE README NOTICE status.xml} {
        ln -fs ${prefix}/share/java/fop/${version}/${fopdoc} \
            ${destroot}${prefix}/share/doc/fop/${version}/${fopdoc}
    }
    foreach docdir {docs javadocs} {
        ln -fs ${prefix}/share/java/fop/${version}/${docdir} \
            ${destroot}${prefix}/share/doc/fop/${version}/${docdir}
    }
}

# Skeleton of a source variant, despite the comments above, just in case it
# proves useful to have one in the future :-)
#
#variant source description {Build FOP from source instead} {
#    distname            ${name}-${version}-src
#    master_sites        apache:xmlgraphics/fop/source/
#    checksums           md5 184c578a6269a8287ed150e0fc12868d \
#                        sha1 3efc0020fdbf14a12851acf6020ea723aebe2af6 \
#                        rmd160 c047f7512a08120cfed07536c0849b2a999e96d4
#
#    depends_build       bin:ant:apache-ant
#    build.env-append    JAVA_HOME=/Library/Java/Home
#    build.cmd           ant
#    # Re-building local docs requires forrest, for which we don't yet have a
#    # port.
#    #build.target       all docs javadocs
#    build.target        all javadocs
#}