source: trunk/dports/devel/openssl/Portfile @ 49057

Last change on this file since 49057 was 49057, checked in by raimue@…, 9 years ago

devel/openssl:
Revert r49051, epoch increased for downgrade.
See #19122 and http://lists.macosforge.org/pipermail/macports-dev/2009-April/008127.html

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 5.7 KB
Line 
1# $Id: Portfile 49057 2009-04-02 15:50:22Z raimue@macports.org $
2
3PortSystem 1.0
4
5name                    openssl
6version                 0.9.8k
7epoch                   1
8platforms               darwin freebsd
9categories              devel security
10maintainers             mww
11homepage                http://www.openssl.org/
12description             OpenSSL SSL/TLS cryptography library
13
14long_description \
15        The OpenSSL Project is a collaborative effort to develop a robust, \
16        commercial-grade, full-featured, and Open Source toolkit implementing \
17        the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security \
18        (TLS v1) protocols as well as a full-strength general purpose \
19        cryptography library.
20
21master_sites    http://www.openssl.org/source/
22checksums           md5     e555c6d58d276aec7fdc53363e338ab3 \
23                    sha1    3ba079f91d3c1ec90a36dcd1d43857165035703f \
24                    rmd160  496df7a5d33457b0d8e3b930a8e5cf068923182c
25
26depends_lib             port:zlib
27
28platform darwin {
29        patchfiles      patch-Makefile.org.diff patch-crypto-Makefile.diff
30}
31
32configure.cmd   ./config
33configure.args  -L${prefix}/lib --openssldir=${prefix}/etc/openssl zlib no-asm no-krb5 shared
34
35platform darwin 6 {
36        depends_lib-append      port:dlcompat
37}
38
39variant rfc3779 description {enable RFC 3779: X.509 Extensions for IP Addresses and AS Identifiers} {
40        configure.args-append   enable-rfc3779
41}
42
43use_parallel_build      no
44
45destroot.destdir        INSTALL_PREFIX=${destroot}
46destroot.args           MANDIR=${prefix}/share/man
47
48test.run                yes
49
50livecheck.check regex
51livecheck.url   ${master_sites}
52livecheck.regex ${name}-(0.9.8\[a-z\])
53
54if { ![info exists universal_archs] } {
55        set universal_archs {i386 ppc}
56        #set universal_archs {i386 x86_64 ppc ppc64}
57}
58set first_arch [lindex ${universal_archs} 0]
59
60variant universal {
61    patchfiles-append patch-Configure-sysroot.diff
62        post-patch {
63            reinplace "s|__UNIVERSAL_SYSROOT__|${universal_sysroot}|" ${worksrcpath}/Configure
64                foreach arch ${universal_archs} {
65                        if {[string equal ${arch} ${first_arch}]} {
66                                move ${worksrcpath} ${workpath}/${first_arch}
67                        } else {
68                                copy ${workpath}/${first_arch} ${workpath}/${arch}
69                        }
70                }
71        }
72
73        configure {
74                foreach arch ${universal_archs} {
75                        if { [string first 64 $arch] == -1 } {
76                                set my_cc "darwin-${arch}-cc"
77                        } else {
78                                if {[string first ppc $arch] != -1} {
79                                        set my_cc "darwin64-ppc-cc"
80                                } else {
81                                        set my_cc "darwin64-${arch}-cc"
82                                }
83                        }
84                        system "cd ${workpath}/${arch} && ./Configure ${my_cc} ${configure.pre_args} ${configure.args}"
85                }
86        }
87
88        build {
89                foreach arch ${universal_archs} {
90                        system "cd ${workpath}/${arch} && make all"
91                }
92        }
93
94        destroot {
95# in port 1.7, just call:
96#               merge "${workpath}/pre-dest"
97# till then, do this:
98                foreach arch ${universal_archs} {
99                        xinstall -d ${workpath}/pre-dest/${arch}
100                        system "cd ${workpath}/${arch} && make install INSTALL_PREFIX=${workpath}/pre-dest/${arch} MANDIR=${prefix}/share/man"
101                       
102                        # opensslconf.h will differ between 32- and 64-bit, so patch it so it doesn't
103                        if { [string first 64 $arch] != -1 } {
104                                if { [string first ppc $arch] != -1 } {
105                                        set configpatch ${filespath}/patch-opensslconf.h-ppc64.diff
106                                } else {
107                                        set configpatch ${filespath}/patch-opensslconf.h-x86_64.diff
108                                }
109                        } else {
110                                set configpatch ${filespath}/patch-opensslconf.h-32.diff
111                        }
112                        system "cd ${workpath}/pre-dest/${arch}${prefix} && patch --no-backup-if-mismatch -p0 < ${configpatch}"
113                }
114
115                set basepath "${workpath}/pre-dest/${first_arch}"
116                fs-traverse file "${basepath}" {
117                        set fpath [string range "${file}" [string length "${basepath}"] [string length "${file}"]]
118                        if {${fpath} != ""} {
119                                ui_debug ":: ${fpath}"
120
121                                switch -exact [file type "${basepath}${fpath}"] {
122                                        directory {
123                                                # just create directories
124                                                ui_debug "-- dir:: ${fpath}"
125                                                file mkdir "${destroot}${fpath}"
126                                        }
127                                        link {
128                                                # copy symlinks (TODO: check if target matches)
129                                                ui_debug "-- lnk:: ${fpath}"
130                                                file copy "${basepath}${fpath}" "${destroot}${fpath}"
131                                        }
132                                        file {
133                                                # treat files depending on their filetype
134                                                ui_debug "-- file:: ${fpath}"
135                                                set filetype [exec "/usr/bin/file" "-b" "${basepath}${fpath}"]
136                                                switch -regexp ${filetype} {
137                                                        Mach-O.* {
138                                                                # Mach-O binaries get lipo-ed
139                                                                ui_debug "Mach-O file -- lipo-ing"
140                                                                set machocmd "lipo"
141                                                                foreach arch ${universal_archs} {
142                                                                        set machocmd "${machocmd} -arch $arch ${workpath}/pre-dest/${arch}/${fpath}"
143                                                                }
144                                                                set machocmd "${machocmd} -create -output ${destroot}${fpath}"
145                                                                system ${machocmd}
146                                                        }
147                                                        current\ ar\ archive {
148                                                                # ar archives get lipo-ed
149                                                                ui_debug "ar archive -- lipo-ing"
150                                                                set arcmd "lipo"
151                                                                foreach arch ${universal_archs} {
152                                                                        set arcmd "${arcmd} -arch $arch ${workpath}/pre-dest/${arch}/${fpath}"
153                                                                }
154                                                                set arcmd "${arcmd} -create -output ${destroot}${fpath}"
155                                                                system ${arcmd}
156                                                        }
157                                                        default {
158                                                                # unknown file types are copied IF they do not differ across ALL architectures -- if they do: This is an error!
159                                                                ui_debug "unknown filetype: ${filetype}"
160                                                               
161                                                                set any_difference no
162                                                                foreach arch ${universal_archs} {
163                                                                        if {![string equal ${arch} ${first_arch}]} {
164                                                                                set differ1 [exec "/usr/bin/diff" "-q" "${workpath}/pre-dest/${first_arch}/${fpath}" "${workpath}/pre-dest/${arch}/${fpath}"]
165                                                                                if {![string equal ${differ1} ""]} {
166                                                                                        set any_difference yes
167                                                                                }
168                                                                        }
169                                                                }
170                                                                if {${any_difference}} {
171                                                                        ui_debug "ERROR: files differ"
172                                                                } else {
173                                                                        ui_debug "files match, just copying"
174                                                                        file copy "${basepath}${fpath}" "${destroot}${fpath}"
175                                                                }
176                                                        }
177                                                }
178                                        }
179                                        default { ui_debug "serious error" }
180                                }
181                        }
182                }
183        }
184}
185
186# the test suite can only be run *after* destrooting
187#    test.run            yes
188#    test.dir            ${worksrcpath}/test
189#    test.target         alltests
Note: See TracBrowser for help on using the repository browser.