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 138591 2015-07-13 08:26:52Z mojca@macports.org $ |
---|
3 | |
---|
4 | PortSystem 1.0 |
---|
5 | PortGroup perl5 1.0 |
---|
6 | |
---|
7 | name perl5 |
---|
8 | version 5.16.3 |
---|
9 | categories lang |
---|
10 | platforms darwin freebsd linux |
---|
11 | license {Artistic-1 GPL} |
---|
12 | maintainers devans mojca openmaintainer |
---|
13 | |
---|
14 | homepage http://www.perl.org/ |
---|
15 | master_sites http://www.cpan.org/src/5.0/ |
---|
16 | |
---|
17 | # obsolete Perl versions; remove after 2016-12-09 |
---|
18 | foreach perl5.major {5.8 5.10 5.12 5.14} { |
---|
19 | subport xperl${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 |
---|
33 | set 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 0 0 16f3ac6c5d4d72e599222bcbf2591c3b2aa2f857 3689fdb519133d039f49e12834764ff4c1de8f8d925dea44a952ca110d0ac9f7 |
---|
38 | } |
---|
39 | |
---|
40 | foreach {perl5.major perl5.subversion perl5.revision perl5.rmd160 perl5.sha256} ${perl5.versions_info} { |
---|
41 | subport xperl${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 | post-patch { |
---|
61 | reinplace -W ${worksrcpath} "s|__PREFIX__|${prefix}|g" \ |
---|
62 | Configure Makefile.SH |
---|
63 | } |
---|
64 | |
---|
65 | configure.ccache no |
---|
66 | configure.distcc no |
---|
67 | configure.env LC_ALL=C |
---|
68 | configure.cmd sh Configure |
---|
69 | configure.pre_args |
---|
70 | configure.universal_args-delete \ |
---|
71 | --disable-dependency-tracking |
---|
72 | configure.post_args -des \ |
---|
73 | -Dprefix='${prefix}' \ |
---|
74 | -Dscriptdir='${prefix}/bin' \ |
---|
75 | {-Dcppflags="$CPPFLAGS"} \ |
---|
76 | {-Dccflags="$CFLAGS"} \ |
---|
77 | {-Dldflags="$LDFLAGS"} \ |
---|
78 | -Dvendorprefix='${prefix}' \ |
---|
79 | -Dusemultiplicity=y \ |
---|
80 | -Dusethreads \ |
---|
81 | -Duseshrplib \ |
---|
82 | {-Dcc="$CC"} \ |
---|
83 | {-Dld="env MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET $CC"} \ |
---|
84 | -Dman1ext=1pm \ |
---|
85 | -Dman3ext=3pm \ |
---|
86 | -Dman1dir='${prefix}/share/man/man1p' \ |
---|
87 | -Dman3dir='${prefix}/share/man/man3p' \ |
---|
88 | -Dsitebin='${prefix}/libexec/perl${perl5.major}/sitebin' \ |
---|
89 | -Dsiteman1dir='${prefix}/share/perl${perl5.major}/siteman/man1' \ |
---|
90 | -Dsiteman3dir='${prefix}/share/perl${perl5.major}/siteman/man3' \ |
---|
91 | -Dvendorbin='${prefix}/libexec/perl${perl5.major}' \ |
---|
92 | -Dvendorman1dir='${prefix}/share/perl${perl5.major}/man/man1' \ |
---|
93 | -Dvendorman3dir='${prefix}/share/perl${perl5.major}/man/man3' \ |
---|
94 | -Dpager='/usr/bin/less -sR' \ |
---|
95 | -Dperlpath="${perl5.bin}" \ |
---|
96 | -Dstartperl="#!${perl5.bin}" |
---|
97 | |
---|
98 | if {[variant_isset universal]} { |
---|
99 | post-configure { |
---|
100 | system "cd ${worksrcpath} && ed - ${worksrcpath}/config.h < ${filespath}/config.h.ed" |
---|
101 | } |
---|
102 | } |
---|
103 | |
---|
104 | post-build { |
---|
105 | reinplace -E {s/-arch [a-z0-9_]+//g} \ |
---|
106 | ${worksrcpath}/lib/Config_heavy.pl |
---|
107 | } |
---|
108 | |
---|
109 | test.run yes |
---|
110 | |
---|
111 | variant dtrace description {Build with DTrace probes} { |
---|
112 | configure.args-append -Dusedtrace |
---|
113 | } |
---|
114 | |
---|
115 | post-destroot { |
---|
116 | # avoid conflicting with other perl versions |
---|
117 | # perl5 creates unversioned symlinks |
---|
118 | delete ${destroot}${prefix}/bin/perl |
---|
119 | foreach binFile [glob -directory "${destroot}${prefix}/bin" *] { |
---|
120 | if {$binFile ne "${destroot}${prefix}/bin/perl${version}"} { |
---|
121 | move ${binFile} ${binFile}-${perl5.major} |
---|
122 | } |
---|
123 | } |
---|
124 | move ${destroot}${prefix}/bin/perl${version} ${destroot}${prefix}/bin/${name} |
---|
125 | ln -s ${name} ${destroot}${prefix}/bin/perl${version} |
---|
126 | foreach man1File [glob -directory "${destroot}${prefix}/share/man/man1p" *] { |
---|
127 | regexp (.*)(\.1.*) ${man1File} -> program suffix |
---|
128 | move ${man1File} ${program}-${perl5.major}${suffix} |
---|
129 | } |
---|
130 | foreach man3File [glob -directory "${destroot}${prefix}/share/man/man3p" *] { |
---|
131 | regexp (.*)(\.3.*) ${man3File} -> program suffix |
---|
132 | move ${man3File} ${program}-${perl5.major}${suffix} |
---|
133 | } |
---|
134 | } |
---|
135 | |
---|
136 | livecheck.type regex |
---|
137 | livecheck.url http://www.cpan.org/src |
---|
138 | livecheck.regex perl-(5\\.${minor}\\.\\d)\\. |
---|
139 | } |
---|
140 | } |
---|
141 | |
---|
142 | # wrapper port |
---|
143 | if {$subport eq $name} { |
---|
144 | description Wrapper port for Perl 5.x |
---|
145 | long_description ${description} |
---|
146 | |
---|
147 | supported_archs noarch |
---|
148 | |
---|
149 | perl5.require_variant yes |
---|
150 | perl5.conflict_variants yes |
---|
151 | perl5.branches 5.16 5.18 5.20 5.22 |
---|
152 | perl5.create_variants ${perl5.branches} |
---|
153 | # perl5.default_branch 5.22 |
---|
154 | |
---|
155 | distfiles |
---|
156 | use_configure no |
---|
157 | build {} |
---|
158 | |
---|
159 | # if {[variant_isset perl5_16] || [variant_isset perl5_18] || [variant_isset perl5_20] || [variant_isset perl5_22]} { |
---|
160 | # depends_lib-append port:perl${perl5.major} |
---|
161 | # } |
---|
162 | |
---|
163 | ## |
---|
164 | ## Note: the destroot section below currently uses lists of files |
---|
165 | ## to know what files to link. In the future we can use |
---|
166 | ## something like: |
---|
167 | ## set contents_list [registry_port_registered $portname]) |
---|
168 | ## to get the lists of binaries and man pages installed by |
---|
169 | ## the perl5.x ports. |
---|
170 | ## |
---|
171 | destroot { |
---|
172 | if {[file exists ${perl5.bin}]} { |
---|
173 | ln -s perl${perl5.major} ${destroot}${prefix}/bin/${name} |
---|
174 | ln -s perl${perl5.major} ${destroot}${prefix}/bin/perl |
---|
175 | } else { |
---|
176 | ui_error "Can't find perl ${perl5.major} (as ${perl5.bin}) so can't link $name to it." |
---|
177 | return -code error "perl${perl5.major} is missing" |
---|
178 | } |
---|
179 | # some binaries are not included in the list because they would conflict |
---|
180 | # with module ports: |
---|
181 | # config_data -> p5-module-build (ticket #24025) |
---|
182 | # corelist -> p5-module-corelist (ticket #28485) |
---|
183 | # instmodsh -> p5-extutils-makemaker (ticket #24590) |
---|
184 | # ptar, ptardiff -> p5-archive-tar (ticket #28255) |
---|
185 | # shasum -> p5-digest-sha (ticket #28580) |
---|
186 | foreach list {binList man1pList man3pList} { |
---|
187 | set fd [open ${filespath}/${list}]; set $list [read $fd]; close $fd |
---|
188 | } |
---|
189 | foreach binFile $binList { |
---|
190 | if {[file exists ${prefix}/bin/${binFile}-${branch}]} { |
---|
191 | ln -s ${binFile}-${branch} ${destroot}${prefix}/bin/${binFile} |
---|
192 | } |
---|
193 | } |
---|
194 | file mkdir ${destroot}${prefix}/share/man/man1p |
---|
195 | foreach manFile $man1pList { |
---|
196 | if {[file exists ${prefix}/share/man/man1p/${manFile}-${branch}.1pm]} { |
---|
197 | ln -s ${manFile}-${branch}.1pm ${destroot}${prefix}/share/man/man1p/${manFile}.1pm |
---|
198 | } |
---|
199 | } |
---|
200 | file mkdir ${destroot}${prefix}/share/man/man3p |
---|
201 | foreach manFile $man3pList { |
---|
202 | if {[file exists ${prefix}/share/man/man3p/${manFile}-${branch}.3pm]} { |
---|
203 | ln -s ${manFile}-${branch}.3pm ${destroot}${prefix}/share/man/man3p/${manFile}.3pm |
---|
204 | } |
---|
205 | } |
---|
206 | } |
---|
207 | |
---|
208 | livecheck.type none |
---|
209 | } |
---|