Ignore:
Timestamp:
Apr 4, 2009, 6:05:05 AM (10 years ago)
Author:
mcalhoun@…
Message:

openssl: Simplify universal build by using muniversal PortGroup.
Fixes #19002 (maintainer timeout).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dports/devel/openssl/Portfile

    r49086 r49121  
    22
    33PortSystem 1.0
     4PortGroup  muniversal 1.0
    45
    56name                    openssl
     
    5354livecheck.regex ${name}-(0.9.8\[a-z\])
    5455
    55 if { ![info exists universal_archs] } {
    56         set universal_archs {i386 ppc}
    57         #set universal_archs {i386 x86_64 ppc ppc64}
     56post-patch {
     57        # Ensure that the correct compiler is used
     58        reinplace "s|cc:|${configure.cc}:|" ${worksrcpath}/Configure
    5859}
    59 set first_arch [lindex ${universal_archs} 0]
    6060
    61 variant universal {
    62     patchfiles-append patch-Configure-sysroot.diff
     61if { [variant_isset universal] } {
     62        configure.cmd   ./Configure
     63
    6364        post-patch {
    64             reinplace "s|__UNIVERSAL_SYSROOT__|${universal_sysroot}|" ${worksrcpath}/Configure
    65                 foreach arch ${universal_archs} {
    66                         if {[string equal ${arch} ${first_arch}]} {
    67                                 move ${worksrcpath} ${workpath}/${first_arch}
    68                         } else {
    69                                 copy ${workpath}/${first_arch} ${workpath}/${arch}
    70                         }
     65                # For universal builds, add "-isysroot ${universal_sysroot}" to compiler options
     66                reinplace "s|\\(-arch \[_a-zA-Z0-9\]*\\)|\\1 -isysroot ${universal_sysroot}|" ${worksrcpath}/Configure
     67        }
     68
     69        set merger_arch_compiler "no"
     70
     71        pre-configure {
     72                configure.args-delete  --disable-dependency-tracking
     73        }
     74
     75        pre-destroot {
     76                global merger_dont_diff
     77                if { [llength ${universal_archs_to_use}] > 2 } {
     78                        lappend merger_dont_diff ${prefix}/include/openssl/opensslconf.h
    7179                }
    7280        }
    7381
    74         configure {
    75                 foreach arch ${universal_archs} {
    76                         if { [string first 64 $arch] == -1 } {
    77                                 set my_cc "darwin-${arch}-cc"
    78                         } else {
    79                                 if {[string first ppc $arch] != -1} {
    80                                         set my_cc "darwin64-ppc-cc"
    81                                 } else {
    82                                         set my_cc "darwin64-${arch}-cc"
    83                                 }
    84                         }
    85                         system "cd ${workpath}/${arch} && ./Configure ${my_cc} ${configure.pre_args} ${configure.args}"
    86                 }
     82        array set merger_configure_args {
     83                ppc     darwin-ppc-cc
     84                i386    darwin-i386-cc
     85                ppc64   darwin64-ppc-cc
     86                x86_64  darwin64-x86_64-cc
    8787        }
    8888
    89         build {
    90                 foreach arch ${universal_archs} {
    91                         system "cd ${workpath}/${arch} && make all"
    92                 }
    93         }
    94 
    95         destroot {
    96 # in port 1.7, just call:
    97 #               merge "${workpath}/pre-dest"
    98 # till then, do this:
    99                 foreach arch ${universal_archs} {
    100                         xinstall -d ${workpath}/pre-dest/${arch}
    101                         system "cd ${workpath}/${arch} && make install INSTALL_PREFIX=${workpath}/pre-dest/${arch} MANDIR=${prefix}/share/man"
    102                        
    103                         # opensslconf.h will differ between 32- and 64-bit, so patch it so it doesn't
    104                         if { [string first 64 $arch] != -1 } {
    105                                 if { [string first ppc $arch] != -1 } {
    106                                         set configpatch ${filespath}/patch-opensslconf.h-ppc64.diff
    107                                 } else {
    108                                         set configpatch ${filespath}/patch-opensslconf.h-x86_64.diff
    109                                 }
    110                         } else {
    111                                 set configpatch ${filespath}/patch-opensslconf.h-32.diff
    112                         }
    113                         system "cd ${workpath}/pre-dest/${arch}${prefix} && patch --no-backup-if-mismatch -p0 < ${configpatch}"
    114                 }
    115 
    116                 set basepath "${workpath}/pre-dest/${first_arch}"
    117                 fs-traverse file "${basepath}" {
    118                         set fpath [string range "${file}" [string length "${basepath}"] [string length "${file}"]]
    119                         if {${fpath} != ""} {
    120                                 ui_debug ":: ${fpath}"
    121 
    122                                 switch -exact [file type "${basepath}${fpath}"] {
    123                                         directory {
    124                                                 # just create directories
    125                                                 ui_debug "-- dir:: ${fpath}"
    126                                                 file mkdir "${destroot}${fpath}"
    127                                         }
    128                                         link {
    129                                                 # copy symlinks (TODO: check if target matches)
    130                                                 ui_debug "-- lnk:: ${fpath}"
    131                                                 file copy "${basepath}${fpath}" "${destroot}${fpath}"
    132                                         }
    133                                         file {
    134                                                 # treat files depending on their filetype
    135                                                 ui_debug "-- file:: ${fpath}"
    136                                                 set filetype [exec "/usr/bin/file" "-b" "${basepath}${fpath}"]
    137                                                 switch -regexp ${filetype} {
    138                                                         Mach-O.* {
    139                                                                 # Mach-O binaries get lipo-ed
    140                                                                 ui_debug "Mach-O file -- lipo-ing"
    141                                                                 set machocmd "lipo"
    142                                                                 foreach arch ${universal_archs} {
    143                                                                         set machocmd "${machocmd} -arch $arch ${workpath}/pre-dest/${arch}/${fpath}"
    144                                                                 }
    145                                                                 set machocmd "${machocmd} -create -output ${destroot}${fpath}"
    146                                                                 system ${machocmd}
    147                                                         }
    148                                                         current\ ar\ archive {
    149                                                                 # ar archives get lipo-ed
    150                                                                 ui_debug "ar archive -- lipo-ing"
    151                                                                 set arcmd "lipo"
    152                                                                 foreach arch ${universal_archs} {
    153                                                                         set arcmd "${arcmd} -arch $arch ${workpath}/pre-dest/${arch}/${fpath}"
    154                                                                 }
    155                                                                 set arcmd "${arcmd} -create -output ${destroot}${fpath}"
    156                                                                 system ${arcmd}
    157                                                         }
    158                                                         default {
    159                                                                 # unknown file types are copied IF they do not differ across ALL architectures -- if they do: This is an error!
    160                                                                 ui_debug "unknown filetype: ${filetype}"
    161                                                                
    162                                                                 set any_difference no
    163                                                                 foreach arch ${universal_archs} {
    164                                                                         if {![string equal ${arch} ${first_arch}]} {
    165                                                                                 set differ1 [exec "/usr/bin/diff" "-q" "${workpath}/pre-dest/${first_arch}/${fpath}" "${workpath}/pre-dest/${arch}/${fpath}"]
    166                                                                                 if {![string equal ${differ1} ""]} {
    167                                                                                         set any_difference yes
    168                                                                                 }
    169                                                                         }
    170                                                                 }
    171                                                                 if {${any_difference}} {
    172                                                                         ui_debug "ERROR: files differ"
    173                                                                 } else {
    174                                                                         ui_debug "files match, just copying"
    175                                                                         file copy "${basepath}${fpath}" "${destroot}${fpath}"
    176                                                                 }
    177                                                         }
    178                                                 }
    179                                         }
    180                                         default { ui_debug "serious error" }
    181                                 }
    182                         }
    183                 }
     89        # Do not set --host.
     90        array set merger_host {
     91                ppc     ""
     92                i386    ""
     93                ppc64   ""
     94                x86_64  ""
    18495        }
    18596}
Note: See TracChangeset for help on using the changeset viewer.