# -*- 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 91580 2012-04-06 06:26:53Z jmr@macports.org $

PortSystem      1.0

name            perl5.12
version         5.12.4
set branch      [join [lrange [split ${version} .] 0 1] .]
categories      lang
license         {Artistic-1 GPL}
platforms       darwin freebsd linux
maintainers     ricci openmaintainer
description     Perl 5.12.x - Practical Extraction and Report Language

long_description \
    Perl is a general-purpose programming language originally developed \
    for text manipulation and now used for a wide range of tasks including \
    system administration, web development, network programming, GUI \
    development, and more.

distname        perl-${version}
use_bzip2       yes
homepage        http://www.perl.org/
master_sites    http://www.cpan.org/src/5.0/

depends_lib-append  port:gdbm

checksums           md5     c499a9c04d08b1424fc808104850a0cf \
                    sha1    68ff2f4a0901d1e4ea263f452001db0563d2edb3 \
                    sha256 c920fa01a34b7752e8cbbc99c6921b908df60611d84a29c4377e4a798604767e

patchfiles	patch-Configure.diff patch-handy.h.stdbool.diff

platform darwin {
    patchfiles-append   patch-hints_darwin.sh.diff
##    patchfiles-append   patch-hints_darwin.diff \
## 						patch-perl.c.diff
}

pre-configure {
    reinplace "s|/opt/local|${prefix}|g" ${worksrcpath}/Configure
}

configure.ccache    no
configure.distcc    no
configure.env       LC_ALL=C
configure.cmd       sh Configure
configure.pre_args
configure.universal_args-delete --disable-dependency-tracking
configure.post_args	\
					-des	\
					-Dprefix='${prefix}'	\
					-Dscriptdir='${prefix}/bin' \
					-Dcppflags="\${CPPFLAGS}" \
					-Dccflags="\${CFLAGS}" \
					-Dldflags="\${LDFLAGS}" \
					-Dvendorprefix='${prefix}'	\
					-Dusemultiplicity=y \
					-D cc=\${CC} \
					-D ld=\${CC} \
					-D man1ext='1pm' \
					-D man3ext='3pm' \
					-D man1dir='${prefix}/share/man/man1p' \
					-D man3dir='${prefix}/share/man/man3p' \
					-D siteman1dir='${prefix}/share/man/man1' \
					-D siteman3dir='${prefix}/share/man/man3' \
					-D vendorman1dir='${prefix}/share/man/man1' \
					-D vendorman3dir='${prefix}/share/man/man3'	\
					-D pager="/usr/bin/less -sR" \
					-D perlpath="${prefix}/bin/perl${branch}" \
					-D startperl="#!${prefix}/bin/perl${branch}"

platform darwin 11 {
    # bypass stupid check that assumes fprintf must be in libc.dylib
    patchfiles-append patch-hints_darwin.sh-usenm.diff
}

# Allow perl to find p5-* ports installed by previous (minor) versions
set platsuffix ""
if {${os.platform} == "darwin"} {
    set platsuffix "-2level"
}
if { [variant_isset threads] } {
    configure.args-append "-D inc_version_list=\"5.12.3/${os.platform}-thread-multi${platsuffix} 5.12.3 5.12.2/${os.platform}-thread-multi${platsuffix} 5.12.2 5.12.1/${os.platform}-thread-multi${platsuffix} 5.12.1 5.12.0/${os.platform}-thread-multi${platsuffix} 5.12.0\""
} else {
    configure.args-append "-D inc_version_list=\"5.12.3/${os.platform}-multi${platsuffix} 5.12.3 5.12.2/${os.platform}-multi${platsuffix} 5.12.2 5.12.1/${os.platform}-multi${platsuffix} 5.12.1 5.12.0/${os.platform}-multi${platsuffix} 5.12.0\""
}

if {[variant_isset universal]} {
    post-configure {
        system "cd ${worksrcpath} && ed - ${worksrcpath}/config.h < ${filespath}/config.h.ed"
    }
}

post-build { 
    reinplace -E {s|-arch [a-z0-9_]+||g} \
        ${worksrcpath}/lib/Config_heavy.pl 
}

test.run            yes

variant threads description {Build with thread support} {
    configure.args-append   -Dusethreads
}

variant shared description {Build shared perl library} {
    configure.args-append   -Duseshrplib
}

variant dtrace description {Build with DTrace probes} {
    configure.args-append   -Dusedtrace
}

post-destroot {
    # avoid conflicting with other perl versions
    # perl5 creates unversioned symlinks
    delete ${destroot}${prefix}/bin/perl
    foreach binFile [glob -directory "${destroot}${prefix}/bin" *] {
        if {$binFile != "${destroot}${prefix}/bin/perl${version}"} {
            move ${binFile} ${binFile}-${branch}
        }
    }
    move ${destroot}${prefix}/bin/perl${version} ${destroot}${prefix}/bin/${name}
    ln -s ${name} ${destroot}${prefix}/bin/perl${version}
    foreach man1File [glob -directory "${destroot}${prefix}/share/man/man1p" *] {
        regexp (.*)(\.1.*) ${man1File} -> program suffix
        move ${man1File} ${program}-${branch}${suffix}
    }
    foreach man3File [glob -directory "${destroot}${prefix}/share/man/man3p" *] {
        regexp (.*)(\.3.*) ${man3File} -> program suffix
        move ${man3File} ${program}-${branch}${suffix}
    }
}

## livecheck.type  regex
## livecheck.url   http://www.cpan.org/src
## livecheck.regex latest_[join [lrange [split ${version} .] 0 1] .]_is_(\\d+(?:\\.\\d+)*)

livecheck.type  regex
livecheck.url   http://www.cpan.org/src
livecheck.regex {perl-(5\.12\.\d)\.}
