source: trunk/dports/net/curl/Portfile

Last change on this file was 154173, checked in by devans@…, 7 weeks ago

curl: add variant support for +wolfssl +darwinssl after maintainer's review (#52615).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 11.1 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 154173 2016-10-23 14:02:23Z ryandesign@macports.org $
3
4PortSystem                      1.0
5
6name                            curl
7version                         7.50.3
8categories                      net www
9platforms                       darwin freebsd
10maintainers                     ryandesign
11license                         Curl
12
13description                     Tool for transferring files with URL syntax
14
15long_description                curl is a client to get documents/files from servers, \
16                                using any of the supported protocols. The command is \
17                                designed to work without user interaction or any kind \
18                                of interactivity.
19
20homepage                        https://curl.haxx.se
21master_sites                    ${homepage}/download/:curl \
22                                ftp://ftp.sunet.se/pub/www/utilities/curl/:curl \
23                                http://www.execve.net/curl/:curl
24
25use_bzip2                       yes
26
27set curl_distfile               ${distfiles}
28distfiles                       ${curl_distfile}:curl
29
30checksums                       ${curl_distfile} \
31                                rmd160  15db3008862eff79fa7ed472f26054a615a93177 \
32                                sha256  7b7347d976661d02c84a1f4d6daf40dee377efdc45b9e2c77dedb8acf140d8ec
33
34if {${name} eq ${subport}} {
35    PortGroup                   muniversal 1.0
36
37    revision                    0
38
39    depends_build               port:pkgconfig
40
41    depends_lib                 port:zlib
42
43    patchfiles                  patch-curl.h.diff
44
45    configure.args              --disable-silent-rules \
46                                --enable-ipv6 \
47                                --without-cyassl \
48                                --without-gnutls \
49                                --without-gssapi \
50                                --without-libidn \
51                                --without-libmetalink \
52                                --without-librtmp \
53                                --without-libssh2 \
54                                --without-nghttp2 \
55                                --without-nss \
56                                --without-polarssl \
57                                --without-spnego \
58                                --without-ssl \
59                                --without-darwinssl \
60                                --disable-ares \
61                                --disable-ldap \
62                                --disable-ldaps \
63                                --with-zlib=${prefix} \
64                                ac_cv_prog_AWK=/usr/bin/awk
65
66    configure.env               PKG_CONFIG_PATH=${prefix}
67
68    post-configure {
69        if {[variant_isset universal]} {
70            set dirs {}
71            foreach arch ${universal_archs_to_use} {
72                lappend dirs ${worksrcpath}-${arch}
73            }
74        } else {
75            set dirs ${worksrcpath}
76        }
77        foreach dir ${dirs} {
78            reinplace -E {s|-arch [a-z0-9_]+||g} \
79                ${dir}/curl-config \
80                ${dir}/libcurl.pc
81            reinplace -E {s/ '(host_alias|--host)=[^']+'//g} ${dir}/curl-config
82        }
83    }
84
85    test.run                    yes
86    test.target                 test-full
87
88    global merger_dont_diff
89    set merger_dont_diff "${prefix}/include/curl/curlbuild.h"
90
91    post-destroot {
92        set docdir ${prefix}/share/doc/${name}
93        xinstall -d ${destroot}${docdir}/html/libcurl ${destroot}${docdir}/pdf/libcurl \
94            ${destroot}${prefix}/share/aclocal
95        xinstall -m 0644 -W ${worksrcpath} \
96            CHANGES \
97            COPYING \
98            README \
99            RELEASE-NOTES \
100            ${destroot}${docdir}
101        xinstall -m 0644 -W ${worksrcpath}/docs \
102            BINDINGS \
103            BUGS \
104            CODE_OF_CONDUCT.md \
105            CODE_STYLE.md \
106            CONTRIBUTE.md \
107            FAQ \
108            FEATURES \
109            HISTORY.md \
110            HTTP-COOKIES.md \
111            HTTP2.md \
112            INTERNALS.md \
113            KNOWN_BUGS \
114            LICENSE-MIXING.md \
115            MAIL-ETIQUETTE \
116            MANUAL \
117            RESOURCES \
118            ROADMAP.md \
119            SECURITY.md \
120            SSL-PROBLEMS.md \
121            SSLCERTS.md \
122            THANKS \
123            TODO \
124            TheArtOfHttpScripting \
125            VERSIONS \
126            ${destroot}${docdir}
127        xinstall -m 0644 ${worksrcpath}/docs/libcurl/libcurl.m4 \
128            ${destroot}${prefix}/share/aclocal/
129        xinstall -m 0644 {*}[glob ${worksrcpath}/docs/*.html] ${destroot}${docdir}/html
130        xinstall -m 0644 {*}[glob ${worksrcpath}/docs/libcurl/*.html] ${destroot}${docdir}/html/libcurl
131        xinstall -m 0644 {*}[glob ${worksrcpath}/docs/*.pdf] ${destroot}${docdir}/pdf
132        xinstall -m 0644 {*}[glob ${worksrcpath}/docs/libcurl/*.pdf] ${destroot}${docdir}/pdf/libcurl
133    }
134
135    variant ares description {Support resolving names asynchronously} {
136        depends_lib-append      port:c-ares
137        configure.args-replace  --disable-ares --enable-ares
138    }
139
140    variant darwinssl conflicts ssl gnutls wolfssl description {Allow secure connections using GNU TLS} {
141        configure.args-replace  --without-darwinssl --with-darwinssl
142    }
143
144    variant gnutls conflicts ssl wolfssl darwinssl description {Allow secure connections using GNU TLS} {
145        depends_lib-append      port:gnutls
146        configure.args-replace  --without-gnutls --with-gnutls
147    }
148
149    variant wolfssl conflicts ssl gnutls darwinssl description {Allow secure connections using wolfSSL, formerly CyaSSL} {
150        depends_lib-append      port:wolfssl
151        configure.args-replace  --without-cyassl --with-cyassl
152    }
153
154    variant gss description {Support the Generic Security Service API} {
155        # This needs to use the system's Kerberos, not MacPorts' gss or kerberos5.
156        conflicts-append        gss kerberos5
157        configure.args-replace  --without-gssapi --with-gssapi
158    }
159
160    variant http2 description {Support HTTP/2 with nghttp2} {
161        depends_lib-append      port:nghttp2
162        configure.args-replace  --without-nghttp2 --with-nghttp2
163    }
164
165    variant idn description {Enable support for internationalized domain names (IDN)} {
166        depends_lib-append      port:libidn
167        configure.args-replace  --without-libidn --with-idn
168        notes-append "
169            Enabling support for internationalized domain names may be a security risk. See\
170            http://curl.haxx.se/mail/lib-2015-06/0143.html\
171        "
172    }
173
174    variant metalink description {Support Metalink XML download description files} {
175        depends_lib-append      port:libmetalink
176        configure.args-replace  --without-libmetalink --with-libmetalink=${prefix}
177    }
178
179    variant openldap description {Support performing Lightweight Directory Access Protocol queries with OpenLDAP} {
180        depends_lib-append      port:openldap
181        configure.args-replace  --disable-ldap --enable-ldap
182        configure.args-replace  --disable-ldaps --enable-ldaps
183    }
184
185    variant sftp_scp description {Support SFTP/SCP connections via libssh2} {
186        depends_lib-append      port:libssh2
187        configure.args-replace  --without-libssh2 --with-libssh2
188    }
189
190    variant spnego description {Enable SPNEGO authentication support} {
191        # kind of broken?
192        depends_lib-append      port:fbopenssl
193        configure.args-replace  --without-spnego --with-spnego=${prefix}
194    }
195
196    variant ssl conflicts gnutls wolfssl darwinssl description {Allow secure connections using OpenSSL} {
197        depends_lib-append      path:lib/libssl.dylib:openssl \
198                                path:share/curl/curl-ca-bundle.crt:curl-ca-bundle
199        configure.args-replace  --without-ssl --with-ssl=${prefix}
200        configure.args-append   --with-ca-bundle=${prefix}/share/curl/curl-ca-bundle.crt
201    }
202
203    if {![variant_isset gnutls] && ![variant_isset darwinssl] && ![variant_isset wolfssl]} {
204        default_variants +ssl
205    }
206
207    livecheck.type              regex
208    livecheck.url               [join [lrange [split [lindex ${master_sites} 0] {:}] 0 end-1] {:}]
209    livecheck.regex             ${name}-(\[0-9.\]+)${extract.suffix}
210} else {
211    livecheck.type              none
212}
213
214subport curl-ca-bundle {
215    revision                    0
216    categories                  net
217    license                     {MPL-2 LGPL-2.1+}
218    supported_archs             noarch
219    installs_libs               no
220    conflicts                   certsync
221
222    description                 CA certificate bundle for curl
223
224    long_description            Installs a bundle of certification authority certificates \
225                                (CA certs) which curl (when linked with OpenSSL) uses to \
226                                verify the authenticity of secure web and FTP servers.
227
228    depends_build               path:bin/perl:perl5
229
230    set certdata_file           certdata.txt
231    # The output of the Tcl command "clock seconds" (you can run it in tclsh) when
232    # the certdata.txt file in the port was last updated.
233    set certdata_updated        1473264969
234    set certdata_version        4044c6fd7e48
235    set certdata_distfile       certdata-${certdata_version}${extract.suffix}
236    set certdata_path           security/nss/lib/ckfw/builtins/${certdata_file}
237
238    # Only try to fetch from the master site shortly after the port is updated, to guard against stealth updates.
239    if {[clock seconds] - ${certdata_updated} < 90000} {
240        master_sites-append     http://hg.mozilla.org/mozilla-central/archive/${certdata_version}${extract.suffix}/${certdata_path}?dummy=:certdata
241    } else {
242        master_sites-append     macports_distfiles::certdata
243    }
244
245    distfiles-append            ${certdata_distfile}:certdata
246
247    checksums-append            ${certdata_distfile} \
248                                rmd160  a2c4b5c9985f6335354a4810667908d14886135f \
249                                sha256  e26ebd547cc73815ebb14550036fee7426ec68060d1ae2c26bbcc9bb68492509
250
251    extract.only                ${certdata_distfile}
252
253    post-extract {
254        system -W ${workpath} "${extract.cmd} ${extract.pre_args} '${distpath}/${curl_distfile}' ${extract.post_args} ${worksrcdir}/Makefile ${worksrcdir}/lib/mk-ca-bundle.pl"
255        move ${workpath}/mozilla-central-${certdata_version}/${certdata_path} ${worksrcpath}/${certdata_file}
256    }
257
258    patchfiles                  patch-no-autodownload.diff
259
260    use_configure               no
261
262    build.target                ca-bundle
263
264    destroot {
265        set ca_bundle_dir ${prefix}/share/curl
266        set openssl_dir ${prefix}/etc/openssl
267        xinstall -d ${destroot}${ca_bundle_dir} ${destroot}${openssl_dir}
268        xinstall -m 644 ${worksrcpath}/lib/ca-bundle.crt ${destroot}${ca_bundle_dir}/curl-ca-bundle.crt
269        ln -s ${ca_bundle_dir}/curl-ca-bundle.crt ${destroot}${openssl_dir}/cert.pem
270    }
271
272    livecheck.type              regexm
273    livecheck.url               http://hg.mozilla.org/mozilla-central/log/tip/${certdata_path}
274    livecheck.version           ${certdata_version}
275    livecheck.regex             {/rev/([0-9a-f]+)"}
276}
Note: See TracBrowser for help on using the repository browser.