Changeset 143612 for trunk/dports/lang


Ignore:
Timestamp:
Dec 15, 2015, 10:30:35 PM (3 years ago)
Author:
mojca@…
Message:

perl5[.x]: merge all Perl ports into a single Portfile with subports (see also #49982)

Location:
trunk/dports/lang
Files:
9 deleted
1 edited
4 copied

Legend:

Unmodified
Added
Removed
  • trunk/dports/lang/perl5/Portfile

    r143599 r143612  
    33
    44PortSystem          1.0
     5PortGroup           perl5 1.0
    56
    67name                perl5
    78version             5.22.1
    89categories          lang
    9 license             BSD
    1010platforms           darwin freebsd linux
    11 maintainers         nomaintainer
    12 supported_archs     noarch
    13 
    14 description         Wrapper port for perl 5.x
    15 long_description    ${description}
     11license             {Artistic-1 GPL}
     12maintainers         devans mojca openmaintainer
    1613
    1714homepage            http://www.perl.org/
    18 distfiles
    19 
    20 use_configure       no
    21 build               {}
    22 
    23 if {[variant_isset perl5_16]} {
    24     set branch 5.16
    25 } elseif {[variant_isset perl5_18]} {
    26     set branch 5.18
    27 } elseif {[variant_isset perl5_20]} {
    28     set branch 5.20
    29 } else {
    30     set branch 5.22
    31     default_variants +perl5_22
    32 }
    33 
    34 ##
    35 ## Note:  the destroot section below currently uses lists of files
    36 ##   to know what files to link.  In the future we can use
    37 ##   something like:
    38 ##     set contents_list [registry_port_registered $portname])
    39 ##   to get the lists of binaries and man pages installed by
    40 ##   the perl5.x ports.
    41 ##
    42 destroot {
    43     if {[file exists ${prefix}/bin/perl${branch}]} {
    44         ln -s perl${branch} ${destroot}${prefix}/bin/${name}
    45         ln -s perl${branch} ${destroot}${prefix}/bin/perl
    46     } else {
    47         ui_error "Can't find perl ${branch} (as ${prefix}/bin/perl${branch}) so can't link $name to it."
    48         return -code error "perl${version} is missing"
     15master_sites        http://www.cpan.org/src/5.0/
     16
     17# obsolete Perl versions; remove after 2016-12-09
     18foreach perl5.major {5.8 5.10 5.12 5.14} {
     19    subport perl${perl5.major} {
     20        version             5.22.0
     21        replaced_by         perl5.22
     22        PortGroup           obsolete 1.0
    4923    }
    50     # some binaries are not included in the list because they would conflict
    51     # with module ports:
    52     # config_data    -> p5-module-build (ticket #24025)
    53     # corelist       -> p5-module-corelist (ticket #28485)
    54     # instmodsh      -> p5-extutils-makemaker (ticket #24590)
    55     # ptar, ptardiff -> p5-archive-tar (ticket #28255)
    56     # shasum         -> p5-digest-sha (ticket #28580)
    57     foreach list {binList man1pList man3pList} {
    58         set fd [open ${filespath}/${list}]; set $list [read $fd]; close $fd
     24}
     25
     26# current Perl versions
     27#
     28# meaning of the fields:
     29# - version
     30# - subversion
     31# - revision
     32# - rmd160 sha256
     33set perl5.versions_info {
     34    5.16 3 1 f25fdd72449156a7cbe989e8bd339fdba1afabc0  bb7bc735e6813b177dcfccd480defcde7eddefa173b5967eac11babd1bfa98e8
     35    5.18 4 1 d97181a98f7acc80125b0d2a182a6a2cd7542ceb  1fb4d27b75cd244e849f253320260efe1750641aaff4a18ce0d67556ff1b96a5
     36    5.20 3 0 499846a1c92e00dd357cb782bc14787b8cd47051  1b40068166c242e34a536836286e70b78410602a80615143301e52aa2901493b
     37    5.22 1 0 99e3af98d80ace857da6ce28679a2e35a4360144  e98e4075a3167fa40524abe447c30bcca10c60e02a54ee1361eff278947a1221
     38}
     39
     40foreach {perl5.major perl5.subversion perl5.revision perl5.rmd160 perl5.sha256} ${perl5.versions_info} {
     41    subport perl${perl5.major} {
     42        version             ${perl5.major}.${perl5.subversion}
     43        set minor           [lrange [split ${version} .] 1 1]
     44        revision            ${perl5.revision}
     45        checksums           rmd160 ${perl5.rmd160} sha256 ${perl5.sha256}
     46
     47        description         Perl ${version} - Practical Extraction and Report Language
     48        long_description    Perl is a general-purpose programming language \
     49                            originally developed for text manipulation and now \
     50                            used for a wide range of tasks including system \
     51                            administration, web development, network \
     52                            programming, GUI development, and more.
     53
     54        depends_lib-append  port:gdbm
     55
     56        distname            perl-${version}
     57        dist_subdir         perl${perl5.major}
     58        use_bzip2           yes
     59
     60        patchfiles          ${perl5.major}/clean-up-paths.patch \
     61                            ${perl5.major}/avoid-no-cpp-precomp-PR38913.patch \
     62                            ${perl5.major}/fix-ld-modification.patch
     63
     64        if {${perl5.major} == 5.16} {
     65            patchfiles-append \
     66                            ${perl5.major}/use-stdbool.patch
     67            # Avoid a C++ linkage trick that recent Clang doesn't like. See #43150
     68            # and https://rt.perl.org/Public/Bug/Display.html?id=121714.
     69            patchfiles-append \
     70                            ${perl5.major}/fix-cxx-dNOOP-PR43150.patch
     71        } else {
     72            patchfiles-append \
     73                            ${perl5.major}/install-under-short-version-PR43480.patch \
     74        }
     75
     76        # Prevent build from picking up the bind9 port's static libbind, which
     77        # duplicates symbols from /usr/lib/libdl (r10638).
     78        patchfiles-append   ${perl5.major}/avoid-bind9-linking.patch
     79
     80        # Prevent miniperl linking from accidentally finding our libstdc++
     81        # (#36438).
     82        patchfiles-append   ${perl5.major}/fix-miniperl-linking-PR36438.patch
     83
     84        post-patch {
     85            reinplace -W ${worksrcpath} "s|__PREFIX__|${prefix}|g" \
     86                    Configure Makefile.SH
     87        }
     88
     89        configure.ccache    no
     90        configure.distcc    no
     91        configure.env       LC_ALL=C
     92        configure.cmd       sh Configure
     93        configure.pre_args
     94        configure.universal_args-delete \
     95                            --disable-dependency-tracking
     96        configure.post_args -des \
     97                            -Dprefix='${prefix}' \
     98                            -Dscriptdir='${prefix}/bin' \
     99                           {-Dcppflags="$CPPFLAGS"} \
     100                           {-Dccflags="$CFLAGS"} \
     101                           {-Dldflags="$LDFLAGS"} \
     102                            -Dvendorprefix='${prefix}' \
     103                            -Dusemultiplicity=y \
     104                            -Dusethreads \
     105                            -Duseshrplib \
     106                           {-Dcc="$CC"} \
     107                           {-Dld="env MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET $CC"} \
     108                            -Dman1ext=1pm \
     109                            -Dman3ext=3pm \
     110                            -Dman1dir='${prefix}/share/man/man1p' \
     111                            -Dman3dir='${prefix}/share/man/man3p' \
     112                            -Dsitebin='${prefix}/libexec/perl${perl5.major}/sitebin' \
     113                            -Dsiteman1dir='${prefix}/share/perl${perl5.major}/siteman/man1' \
     114                            -Dsiteman3dir='${prefix}/share/perl${perl5.major}/siteman/man3' \
     115                            -Dvendorbin='${prefix}/libexec/perl${perl5.major}' \
     116                            -Dvendorman1dir='${prefix}/share/perl${perl5.major}/man/man1' \
     117                            -Dvendorman3dir='${prefix}/share/perl${perl5.major}/man/man3' \
     118                            -Dpager='/usr/bin/less -sR' \
     119                            -Dperlpath="${perl5.bin}" \
     120                            -Dstartperl="#!${perl5.bin}"
     121
     122        if {[variant_isset universal]} {
     123            post-configure {
     124                system "cd ${worksrcpath} && ed - ${worksrcpath}/config.h < ${filespath}/config.h.ed"
     125            }
     126        }
     127
     128        post-build {
     129            reinplace -E {s/-arch [a-z0-9_]+//g} \
     130                ${worksrcpath}/lib/Config_heavy.pl
     131        }
     132
     133        test.run            yes
     134
     135        variant dtrace description {Build with DTrace probes} {
     136            configure.args-append   -Dusedtrace
     137        }
     138
     139        post-destroot {
     140            # avoid conflicting with other perl versions
     141            # perl5 creates unversioned symlinks
     142            delete ${destroot}${prefix}/bin/perl
     143            foreach binFile [glob -directory "${destroot}${prefix}/bin" *] {
     144                if {$binFile ne "${destroot}${prefix}/bin/perl${version}"} {
     145                    move ${binFile} ${binFile}-${perl5.major}
     146                }
     147            }
     148            move ${destroot}${prefix}/bin/perl${version} ${destroot}${prefix}/bin/${name}
     149            ln -s ${name} ${destroot}${prefix}/bin/perl${version}
     150            foreach man1File [glob -directory "${destroot}${prefix}/share/man/man1p" *] {
     151                regexp (.*)(\.1.*) ${man1File} -> program suffix
     152                move ${man1File} ${program}-${perl5.major}${suffix}
     153            }
     154            foreach man3File [glob -directory "${destroot}${prefix}/share/man/man3p" *] {
     155                regexp (.*)(\.3.*) ${man3File} -> program suffix
     156                move ${man3File} ${program}-${perl5.major}${suffix}
     157            }
     158        }
     159
     160        livecheck.type      regex
     161        livecheck.url       http://www.cpan.org/src
     162        livecheck.regex     perl-(5\\.${minor}\\.\\d)\\.
    59163    }
    60     foreach binFile $binList {
    61         if {[file exists ${prefix}/bin/${binFile}-${branch}]} {
    62             ln -s ${binFile}-${branch} ${destroot}${prefix}/bin/${binFile}
     164}
     165
     166# wrapper port
     167if {$subport eq $name} {
     168    description             Wrapper port for Perl 5.x
     169    long_description        ${description}
     170
     171    supported_archs         noarch
     172
     173    perl5.require_variant   yes
     174    perl5.conflict_variants yes
     175    perl5.branches          5.16 5.18 5.20 5.22
     176    perl5.create_variants   ${perl5.branches}
     177
     178    distfiles
     179    use_configure           no
     180    build                   {}
     181
     182    ##
     183    ## Note:  the destroot section below currently uses lists of files
     184    ##   to know what files to link.  In the future we can use
     185    ##   something like:
     186    ##     set contents_list [registry_port_registered $portname])
     187    ##   to get the lists of binaries and man pages installed by
     188    ##   the perl5.x ports.
     189    ##
     190    destroot {
     191        if {[file exists ${perl5.bin}]} {
     192            ln -s perl${perl5.major} ${destroot}${prefix}/bin/${name}
     193            ln -s perl${perl5.major} ${destroot}${prefix}/bin/perl
     194        } else {
     195            ui_error "Can't find perl ${perl5.major} (as ${perl5.bin}) so can't link $name to it."
     196            return -code error "perl${perl5.major} is missing"
     197        }
     198        # some binaries are not included in the list because they would conflict
     199        # with module ports:
     200        # config_data    -> p5-module-build (ticket #24025)
     201        # corelist       -> p5-module-corelist (ticket #28485)
     202        # instmodsh      -> p5-extutils-makemaker (ticket #24590)
     203        # ptar, ptardiff -> p5-archive-tar (ticket #28255)
     204        # shasum         -> p5-digest-sha (ticket #28580)
     205        foreach list {binList man1pList man3pList} {
     206            set fd [open ${filespath}/${list}]; set $list [read $fd]; close $fd
     207        }
     208        foreach binFile $binList {
     209            if {[file exists ${prefix}/bin/${binFile}-${branch}]} {
     210                ln -s ${binFile}-${branch} ${destroot}${prefix}/bin/${binFile}
     211            }
     212        }
     213        file mkdir ${destroot}${prefix}/share/man/man1p
     214        foreach manFile $man1pList {
     215            if {[file exists ${prefix}/share/man/man1p/${manFile}-${branch}.1pm]} {
     216                ln -s ${manFile}-${branch}.1pm ${destroot}${prefix}/share/man/man1p/${manFile}.1pm
     217            }
     218        }
     219        file mkdir ${destroot}${prefix}/share/man/man3p
     220        foreach manFile $man3pList {
     221            if {[file exists ${prefix}/share/man/man3p/${manFile}-${branch}.3pm]} {
     222                ln -s ${manFile}-${branch}.3pm ${destroot}${prefix}/share/man/man3p/${manFile}.3pm
     223            }
    63224        }
    64225    }
    65     file mkdir ${destroot}${prefix}/share/man/man1p
    66     foreach manFile $man1pList {
    67         if {[file exists ${prefix}/share/man/man1p/${manFile}-${branch}.1pm]} {
    68             ln -s ${manFile}-${branch}.1pm ${destroot}${prefix}/share/man/man1p/${manFile}.1pm
    69         }
    70     }
    71     file mkdir ${destroot}${prefix}/share/man/man3p
    72     foreach manFile $man3pList {
    73         if {[file exists ${prefix}/share/man/man3p/${manFile}-${branch}.3pm]} {
    74             ln -s ${manFile}-${branch}.3pm ${destroot}${prefix}/share/man/man3p/${manFile}.3pm
    75         }
    76     }
    77 }
    78 
    79 variant perl5_16 conflicts perl5_18 perl5_20 perl5_22 description {use perl 5.16} {
    80     depends_lib-append  port:perl5.16
    81 }
    82 
    83 variant perl5_18 conflicts perl5_16 perl5_20 perl5_22 description {use perl 5.18} {
    84     depends_lib-append  port:perl5.18
    85 }
    86 
    87 variant perl5_20 conflicts perl5_16 perl5_18 perl5_22 description {use perl 5.20} {
    88     depends_lib-append  port:perl5.20
    89 }
    90 
    91 variant perl5_22 conflicts perl5_16 perl5_18 perl5_20 description {use perl 5.22} {
    92     depends_lib-append  port:perl5.22
    93 }
    94 
    95 livecheck.type      none
     226
     227    livecheck.type      none
     228}
Note: See TracChangeset for help on using the changeset viewer.