source: trunk/dports/lang/perl5/Portfile

Last change on this file was 154373, checked in by mojca@…, 13 months ago

perl5: remove the variant for perl5.22 (#52081)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 11.0 KB
Line 
1# -*- 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
2# $Id: Portfile 154373 2016-10-28 20:56:06Z ryandesign@macports.org $
3
4PortSystem          1.0
5PortGroup           perl5 1.0
6
7name                perl5
8version             5.24.0
9categories          lang
10platforms           darwin freebsd linux
11license             {Artistic-1 GPL}
12maintainers         mojca openmaintainer
13
14homepage            http://www.perl.org/
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
23    }
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 3 f25fdd72449156a7cbe989e8bd339fdba1afabc0  bb7bc735e6813b177dcfccd480defcde7eddefa173b5967eac11babd1bfa98e8
35    5.18 4 2 d97181a98f7acc80125b0d2a182a6a2cd7542ceb  1fb4d27b75cd244e849f253320260efe1750641aaff4a18ce0d67556ff1b96a5
36    5.20 3 1 499846a1c92e00dd357cb782bc14787b8cd47051  1b40068166c242e34a536836286e70b78410602a80615143301e52aa2901493b
37    5.22 2 1 203afca8995ca426db0af48b78eb606b5d24011a  f2322b9b04fe0cdbca9fe755360da04892cb6483d44959457cfebc0bcddc8058
38    5.24 0 0 756bf07069e91eabe3dac3a47aec5097d48f8963  62328a53d157e8153b33e137594155f6f8b64418f7f9238210feb809585290e0
39}
40#   5.22 3-RC3 0 24f508e342cb824d96254e91ffd35b09ed740382  9074ac008f11aa5ea3df91a646fa8c23fec37923c729e06a8bc54be4fa710d07
41#   5.24 1-RC3 0 9d055aa3bc92b8cae2a1dd14fd29b7dde1345218  9be39db0b008d2c2d14ae4f6b92418260ce5eb7809a79d729686a0d461b96404
42#   5.25 3 0 268c9c45e4b4f296981be238c11332094fe559b9  0d406dc08717822cfc67937414cf38801ca7101b5a971465b88c0aee005fe823
43
44# NOTE: if you need to revbump perl, please consult with maintainer first
45#       to change the configure flags at the same time
46
47foreach {perl5.v perl5.subversion perl5.revision perl5.rmd160 perl5.sha256} ${perl5.versions_info} {
48    subport perl${perl5.v} {
49        set perl5.major     ${perl5.v}
50        version             ${perl5.major}.[string range ${perl5.subversion} 0 0]
51        set minor           [lrange [split ${version} .] 1 1]
52        revision            ${perl5.revision}
53        checksums           rmd160 ${perl5.rmd160} sha256 ${perl5.sha256}
54
55        description         Perl ${version} - Practical Extraction and Report Language
56        long_description    Perl is a general-purpose programming language \
57                            originally developed for text manipulation and now \
58                            used for a wide range of tasks including system \
59                            administration, web development, network \
60                            programming, GUI development, and more.
61
62        depends_lib-append  port:gdbm
63
64        distname            perl-${perl5.major}.${perl5.subversion}
65        dist_subdir         perl${perl5.major}
66        use_bzip2           yes
67
68        # TODO: revise patch naming scheme
69        patchfiles          ${perl5.major}/clean-up-paths.patch \
70                            ${perl5.major}/avoid-no-cpp-precomp-PR38913.patch
71
72        # Prevent build from picking up the bind9 port's static libbind, which
73        # duplicates symbols from /usr/lib/libdl (r10638).
74        patchfiles-append   ${perl5.major}/avoid-bind9-linking.patch
75
76        # Prevent miniperl linking from accidentally finding our libstdc++
77        # https://trac.macports.org/ticket/36438
78        patchfiles-append   ${perl5.major}/fix-miniperl-linking-PR36438.patch
79
80        # Install files under 5.xx rather than 5.xx.yy
81        # https://trac.macports.org/ticket/43480
82        patchfiles-append   ${perl5.major}/install-under-short-version-PR43480.patch
83
84        if {${perl5.major} == 5.16} {
85            patchfiles-append \
86                            ${perl5.major}/use-stdbool.patch
87            # Avoid a C++ linkage trick that recent Clang doesn't like. See #43150
88            # and https://rt.perl.org/Public/Bug/Display.html?id=121714.
89            patchfiles-append \
90                            ${perl5.major}/fix-cxx-dNOOP-PR43150.patch
91        }
92        if {${perl5.major} >= 5.22} {
93            # failed test
94            # https://trac.macports.org/ticket/51327
95            patchfiles-append \
96                            ${perl5.major}/patch-dist-IO-t-cachepropagate-unix.t.diff
97        }
98        if {${perl5.major} == 5.24} {
99            # Prevent build error on Sierra
100            # https://trac.macports.org/ticket/52012
101            patchfiles-append \
102                            ${perl5.major}/patch-dist-Time-HiRes-HiRes.xs.diff
103            patchfiles-append \
104                            ${perl5.major}/fix-ld-modification.patch
105        } else {
106            # Do not compile for 10.3/10.4
107            # https://trac.macports.org/ticket/51980
108            patchfiles-append \
109                            ${perl5.major}/remove-10.3-target-PR126360.patch
110        }
111
112        post-patch {
113            reinplace -W ${worksrcpath} "s|__PREFIX__|${prefix}|g" \
114                    Configure Makefile.SH
115        }
116
117        configure.ccache    no
118        configure.distcc    no
119        configure.env       LC_ALL=C
120        configure.cmd       sh Configure
121        configure.pre_args
122        configure.universal_args-delete \
123                            --disable-dependency-tracking
124        configure.post_args -des \
125                            -Dprefix='${prefix}' \
126                            -Dscriptdir='${prefix}/bin' \
127                            -Dvendorprefix='${prefix}' \
128                            -Dusemultiplicity=y \
129                            -Dusethreads \
130                            -Duseshrplib \
131                           {-Dcc="$CC"} \
132                            -Dman1ext=1pm \
133                            -Dman3ext=3pm \
134                            -Dinstallstyle='lib/perl5' \
135                            -Dman1dir='${prefix}/share/man/man1p' \
136                            -Dman3dir='${prefix}/share/man/man3p' \
137                            -Dsitebin='${prefix}/libexec/perl${perl5.major}/sitebin' \
138                            -Dsiteman1dir='${prefix}/share/perl${perl5.major}/siteman/man1' \
139                            -Dsiteman3dir='${prefix}/share/perl${perl5.major}/siteman/man3' \
140                            -Dvendorbin='${prefix}/libexec/perl${perl5.major}' \
141                            -Dvendorman1dir='${prefix}/share/perl${perl5.major}/man/man1' \
142                            -Dvendorman3dir='${prefix}/share/perl${perl5.major}/man/man3' \
143                            -Dpager='/usr/bin/less -sR' \
144                            -Dperlpath="${perl5.bin}" \
145                            -Dstartperl="#!${perl5.bin}" \
146                           {-Acppflags="$CPPFLAGS"} \
147                           {-Accflags="$CFLAGS"} \
148                           {-Aldflags="$LDFLAGS"}
149
150        if {[variant_isset universal]} {
151            post-configure {
152                system "cd ${worksrcpath} && ed - ${worksrcpath}/config.h < ${filespath}/${perl5.major}/config.h.ed"
153            }
154        }
155
156        post-build {
157            reinplace -E {s/-arch [a-z0-9_]+//g} \
158                ${worksrcpath}/lib/Config_heavy.pl
159        }
160
161        test.run            yes
162
163        variant dtrace description {Build with DTrace probes} {
164            configure.args-append   -Dusedtrace
165        }
166
167        post-destroot {
168            # avoid conflicting with other perl versions
169            # perl5 creates unversioned symlinks
170            delete ${destroot}${prefix}/bin/perl
171            foreach binFile [glob -directory "${destroot}${prefix}/bin" *] {
172                if {$binFile ne "${destroot}${prefix}/bin/perl${version}"} {
173                    move ${binFile} ${binFile}-${perl5.major}
174                }
175            }
176            move ${destroot}${prefix}/bin/perl${version} ${destroot}${prefix}/bin/${subport}
177            ln -s ${subport} ${destroot}${prefix}/bin/perl${version}
178            foreach man1File [glob -directory "${destroot}${prefix}/share/man/man1p" *] {
179                regexp (.*)(\.1.*) ${man1File} -> program suffix
180                move ${man1File} ${program}-${perl5.major}${suffix}
181            }
182            foreach man3File [glob -directory "${destroot}${prefix}/share/man/man3p" *] {
183                regexp (.*)(\.3.*) ${man3File} -> program suffix
184                move ${man3File} ${program}-${perl5.major}${suffix}
185            }
186        }
187
188        livecheck.type      regex
189        livecheck.url       http://www.cpan.org/src
190        livecheck.regex     perl-(5\\.${minor}\\.\\d)\\.
191    }
192}
193
194# wrapper port
195if {$subport eq $name} {
196    description             Wrapper port for Perl 5.x
197    long_description        ${description}
198
199    supported_archs         noarch
200
201    perl5.require_variant   yes
202    perl5.conflict_variants yes
203    perl5.branches          5.24
204    perl5.default_branch    5.24
205    perl5.create_variants   ${perl5.branches}
206
207    distfiles
208    use_configure           no
209    build                   {}
210
211    ##
212    ## Note:  the destroot section below currently uses lists of files
213    ##   to know what files to link.  In the future we can use
214    ##   something like:
215    ##     set contents_list [registry_port_registered $portname])
216    ##   to get the lists of binaries and man pages installed by
217    ##   the perl5.x ports.
218    ##
219    destroot {
220        if {[file exists ${perl5.bin}]} {
221            ln -s perl${perl5.major} ${destroot}${prefix}/bin/${name}
222            ln -s perl${perl5.major} ${destroot}${prefix}/bin/perl
223        } else {
224            ui_error "Can't find perl ${perl5.major} (as ${perl5.bin}) so can't link $name to it."
225            return -code error "perl${perl5.major} is missing"
226        }
227        # some binaries are not included in the list because they would conflict
228        # with module ports:
229        # config_data    -> p5-module-build (ticket #24025)
230        # corelist       -> p5-module-corelist (ticket #28485)
231        # instmodsh      -> p5-extutils-makemaker (ticket #24590)
232        # ptar, ptardiff -> p5-archive-tar (ticket #28255)
233        # shasum         -> p5-digest-sha (ticket #28580)
234        foreach list {binList man1pList man3pList} {
235            set fd [open ${filespath}/${list}]; set $list [read $fd]; close $fd
236        }
237        foreach binFile $binList {
238            if {[file exists ${prefix}/bin/${binFile}-${perl5.major}]} {
239                ln -s ${binFile}-${perl5.major} ${destroot}${prefix}/bin/${binFile}
240            }
241        }
242        file mkdir ${destroot}${prefix}/share/man/man1p
243        foreach manFile $man1pList {
244            if {[file exists ${prefix}/share/man/man1p/${manFile}-${perl5.major}.1pm]} {
245                ln -s ${manFile}-${perl5.major}.1pm ${destroot}${prefix}/share/man/man1p/${manFile}.1pm
246            }
247        }
248        file mkdir ${destroot}${prefix}/share/man/man3p
249        foreach manFile $man3pList {
250            if {[file exists ${prefix}/share/man/man3p/${manFile}-${perl5.major}.3pm]} {
251                ln -s ${manFile}-${perl5.major}.3pm ${destroot}${prefix}/share/man/man3p/${manFile}.3pm
252            }
253        }
254    }
255
256    livecheck.type      none
257}
Note: See TracBrowser for help on using the repository browser.