<pre style='margin:0'>
Chris Jones (cjones051073) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/f918bf6a32b7c6bb3d7fcfccf05741601de022d6">https://github.com/macports/macports-ports/commit/f918bf6a32b7c6bb3d7fcfccf05741601de022d6</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new f918bf6a32b cargo_fetch PG, rust, cargo: Add support for using legacysupport PG on older systems
</span>f918bf6a32b is described below

<span style='display:block; white-space:pre;color:#808000;'>commit f918bf6a32b7c6bb3d7fcfccf05741601de022d6
</span>Author: Chris Jones <jonesc@macports.org>
AuthorDate: Tue Apr 20 20:10:25 2021 +0100

<span style='display:block; white-space:pre;color:#404040;'>    cargo_fetch PG, rust, cargo: Add support for using legacysupport PG on older systems
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>        - Patch bootstrapping binaries to use legacysupport dylib for missing libSystem calls
</span><span style='display:block; white-space:pre;color:#404040;'>        - Wrap underlying compiler commands used by rust/cargo to enforce use of legacy support flags
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/62656
</span>---
 _resources/port1.0/group/cargo_fetch-1.0.tcl |  70 ++++++---
 devel/cargo/Portfile                         |  60 +++++---
 lang/rust/Portfile                           | 222 ++++++++++++++++++++++-----
 3 files changed, 262 insertions(+), 90 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/cargo_fetch-1.0.tcl b/_resources/port1.0/group/cargo_fetch-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index d1ec4174f18..b3e96a43bfe 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/cargo_fetch-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/cargo_fetch-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -37,6 +37,9 @@
</span> #    baz    author/baz  branch  abcdef12345678...commit...abcdef12345678  fedcba654321...
 #
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup compiler_blacklist_versions 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup legacysupport 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> options cargo.bin cargo.home cargo.crates cargo.crates_github
 
 default cargo.bin           {${prefix}/bin/cargo}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -44,6 +47,11 @@ default cargo.home          {${workpath}/.home/.cargo}
</span> default cargo.crates        {}
 default cargo.crates_github {}
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# As building with rust uses the same underlying compiler as used to build it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# replicate the same compiler selection options here
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cxx_standard       2017
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.blacklist-append   {macports-clang-[4-9].0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # please remove when 8a088c3 has been in a released MacPorts version for at least two weeks
 # see https://github.com/macports/macports-base/commit/8a088c30d80c7c3eca10848f28835e1c180229b1
 if {"shellescape" ni [info commands shellescape]} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -241,41 +249,57 @@ proc cargo.rust_platform {{arch ""}} {
</span>     return [cargo.translate_arch_name ${arch}]-apple-${os.platform}
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-foreach stage {build destroot} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # see https://trac.macports.org/wiki/UsingTheRightCompiler
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    ${stage}.env-append CC=${configure.cc} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        CXX=${configure.cxx}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc cargo.append_envs { value } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach stage {extract configure build destroot} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${stage}.env-delete ${value}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${stage}.env-append ${value}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span> }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-foreach stage {configure build destroot} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    ${stage}.env-append "RUSTFLAGS=-C linker=${configure.cc}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# see https://trac.macports.org/wiki/UsingTheRightCompiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cargo.append_envs CC=${configure.cc}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cargo.append_envs CXX=${configure.cxx}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cargo.append_envs "RUSTFLAGS=-C linker=${configure.cc}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Is build caching enabled ?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# WIP for now ...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if {[tbool configure.ccache]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    # Enable sccache for rust caching
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    depends_build-append port:sccache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    cargo.append_envs    RUSTC_WRAPPER=${prefix}/bin/sccache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    cargo.append_envs    SCCACHE_CACHE_SIZE=2G
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    cargo.append_envs    SCCACHE_DIR=${workpath}/.sccache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#}
</span> 
 # do not force all Portfiles to switch from ${stage}.env to ${stage}.env-append
 proc cargo.environments {} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    global configure.cc configure.cxx subport configure.build_arch configure.universal_archs merger_configure_env merger_build_env merger_destroot_env worksrcpath
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    foreach stage {build destroot} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ${stage}.env-delete CC=${configure.cc} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            CXX=${configure.cxx}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ${stage}.env-append CC=${configure.cc} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            CXX=${configure.cxx}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global os.major prefix
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global configure.cc configure.cxx subport configure.build_arch configure.universal_archs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global merger_configure_env merger_build_env merger_destroot_env worksrcpath
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    foreach stage {configure build destroot} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ${stage}.env-delete "RUSTFLAGS=-C linker=${configure.cc}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ${stage}.env-append "RUSTFLAGS=-C linker=${configure.cc}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set cargo_ld ${configure.cc}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if { ${os.major} <= [option legacysupport.newest_darwin_requires_legacy] } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Use wrapped rust compilers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_build-append port:rust-compiler-wrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.cc      ${prefix}/libexec/rust-compiler-wrap/bin/clang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.cxx     ${prefix}/libexec/rust-compiler-wrap/bin/clang++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.objc    ${prefix}/libexec/rust-compiler-wrap/bin/clang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.objcxx  ${prefix}/libexec/rust-compiler-wrap/bin/clang++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set cargo_ld      ${prefix}/libexec/rust-compiler-wrap/bin/ld
</span>     }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    cargo.append_envs     CC=${configure.cc}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    cargo.append_envs     CXX=${configure.cxx}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    cargo.append_envs     "RUSTFLAGS=-C linker=${cargo_ld}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    cargo.append_envs     "RUST_BACKTRACE=1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     # CARGO_BUILD_TARGET does not work correctly
     # see the patchfile path-dyld.diff in cargo Portfile
     if {${subport} ne "cargo-stage1"} {
         if {![variant_exists universal] || ![variant_isset universal]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            foreach stage {configure build destroot} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                ${stage}.env-delete \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    CARGO_BUILD_TARGET=[cargo.rust_platform ${configure.build_arch}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                ${stage}.env-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    CARGO_BUILD_TARGET=[cargo.rust_platform ${configure.build_arch}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            cargo.append_envs CARGO_BUILD_TARGET=[cargo.rust_platform ${configure.build_arch}]
</span>         } else {
             foreach stage {configure build destroot} {
                 foreach arch ${configure.universal_archs} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/cargo/Portfile b/devel/cargo/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 958ddc887e7..30037790b63 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/cargo/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/cargo/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -14,7 +14,7 @@ if {${subport} ne "${name}-bootstrap"} {
</span> }
 PortGroup           cargo 1.0
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            1
</span> categories          devel
 platforms           darwin
 supported_archs     x86_64 arm64
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -32,6 +32,7 @@ homepage            https://crates.io
</span> installs_libs       no
 
 if {${subport} ne "${name}-bootstrap"} {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     # can use cmake or cmake-devel; default to cmake.
     depends_build   port:pkgconfig \
                     path:bin/cmake:cmake
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -75,41 +76,43 @@ if {${subport} ne "${name}-bootstrap"} {
</span>     # Features of direct dependencies may be enabled with <dep-name>/<feature-name> syntax.
     build.args-append --features curl-sys/force-system-lib-on-osx
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {${subport} eq ${name}} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_build-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            port:${name}-bootstrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        port:${name}-bootstrap
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        cargo.bin ${prefix}/libexec/${name}-bootstrap/bin/cargo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    cargo.bin ${prefix}/libexec/${name}-bootstrap/bin/cargo
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            xinstall ${worksrcpath}/target/[cargo.rust_platform]/release/cargo ${destroot}${prefix}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall ${worksrcpath}/target/[cargo.rust_platform]/release/cargo ${destroot}${prefix}/bin
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            xinstall -m 0644 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                {*}[glob ${worksrcpath}/src/etc/man/*] \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                ${destroot}${prefix}/share/man/man1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 0644 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            {*}[glob ${worksrcpath}/src/etc/man/*] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${destroot}${prefix}/share/man/man1
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            xinstall -d ${destroot}${prefix}/share/doc/${subport}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            xinstall -m 0644 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                -W ${worksrcpath} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                LICENSE-APACHE LICENSE-MIT LICENSE-THIRD-PARTY README.md \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                ${destroot}${prefix}/share/doc/${subport}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -d ${destroot}${prefix}/share/doc/${subport}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 0644 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            -W ${worksrcpath} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            LICENSE-APACHE LICENSE-MIT LICENSE-THIRD-PARTY README.md \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${destroot}${prefix}/share/doc/${subport}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            xinstall -d ${destroot}${prefix}/etc/bash_completion.d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            xinstall -m 0644 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                ${worksrcpath}/src/etc/cargo.bashcomp.sh \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                ${destroot}${prefix}/etc/bash_completion.d/${subport}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -d ${destroot}${prefix}/etc/bash_completion.d
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 0644 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${worksrcpath}/src/etc/cargo.bashcomp.sh \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${destroot}${prefix}/etc/bash_completion.d/${subport}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            xinstall -d ${destroot}${prefix}/share/zsh/site-functions
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            xinstall -m 0644 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                ${worksrcpath}/src/etc/_cargo \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                ${destroot}${prefix}/share/zsh/site-functions
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -d ${destroot}${prefix}/share/zsh/site-functions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 0644 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${worksrcpath}/src/etc/_cargo \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${destroot}${prefix}/share/zsh/site-functions
</span>     }
 } else {
     master_sites-append https://static.rust-lang.org/dist/:rust_dist
 
     depends_run-append  port:rust
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    if { ${os.major} <= [option legacysupport.newest_darwin_requires_legacy] } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_build-append port:cctools
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     set arch ${configure.build_arch}
     if {${configure.build_arch} eq "arm64"} {
         set arch "aarch64"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -125,7 +128,6 @@ if {${subport} ne "${name}-bootstrap"} {
</span>                     sha256  37eb709e5ed8fe02d2c8d89bc0be3dc1d642cff223c25df311ff5a82eab53d4b \
                     size    6495810
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>     set cargo_dist_suffix ${arch}-apple-${os.platform}
     distfiles  ${name}-${version}-${cargo_dist_suffix}${extract.suffix}:rust_dist
     worksrcdir ${name}-${version}-${cargo_dist_suffix}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -141,7 +143,15 @@ if {${subport} ne "${name}-bootstrap"} {
</span>             -W ${worksrcpath} \
             LICENSE-APACHE LICENSE-MIT LICENSE-THIRD-PARTY README.md \
             ${destroot}${prefix}/share/doc/${subport}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if { ${os.major} <= [option legacysupport.newest_darwin_requires_legacy] } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # To patch the bootstrap binary to use the legacySupport System.B lib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set sLib /usr/lib/libSystem.B.dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set lLib ${prefix}/lib/libMacportsLegacySystem.B.dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            system "${prefix}/bin/install_name_tool -change ${sLib} ${lLib} ${destroot}${prefix}/libexec/${subport}/bin/cargo"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span>     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> }
 
 subport ${name}-bootstrap {}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/rust/Portfile b/lang/rust/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 93539623415..2786374714a 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/rust/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/rust/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2,9 +2,15 @@
</span> 
 PortSystem          1.0
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           compiler_blacklist_versions 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           legacysupport 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+legacysupport.use_static                    yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+legacysupport.newest_darwin_requires_legacy 15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> name                rust
 version             1.51.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            2
</span> categories          lang devel
 platforms           darwin
 supported_archs     x86_64 arm64
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -33,8 +39,54 @@ set rustc_version   1.50.0
</span> set py_ver          3.9
 set py_ver_nodot    [string map {. {}} ${py_ver}]
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# can use cmake or cmake-devel; default to cmake.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Make sure the chosen python is found via PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-extract {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    xinstall -d ${workpath}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ln -s ${prefix}/bin/python${py_ver} ${workpath}/bin/python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ln -s ${prefix}/bin/python${py_ver} ${workpath}/bin/python3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set arch ${configure.build_arch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${configure.build_arch} eq "arm64"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set arch "aarch64"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set binTag ${rustc_version}-${arch}-apple-${os.platform}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Rust 1.49.0 and newer has issues on macOS 10.9 and older.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# See  https://trac.macports.org/ticket/62656
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#      https://github.com/rust-lang/rust/issues/80804
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# If upstream eventually address the issue these workarounds can be removed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# For now patch the bootstrap binaries and compiler commands to use legacysupport library
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set ccwrap ${name}-compiler-wrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${os.major} <= [option legacysupport.newest_darwin_requires_legacy] && ${subport} ne ${ccwrap} } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Force use of MP clang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    compiler.blacklist-append clang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-extract {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "Relinking rust/cargo bootstrap binaries"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Re-link binaries to force loading of MacPorts LegacySupport lib instead of libSystem
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        proc relink_binary { exe } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            global prefix
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set sLib /usr/lib/libSystem.B.dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set lLib ${prefix}/lib/libMacportsLegacySystem.B.dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            system "${prefix}/bin/install_name_tool -change ${sLib} ${lLib} ${exe} > /dev/null 2>&1 ; true"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        proc relink_binaries { binaries } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach binary $binaries {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                relink_binary ${binary}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        proc search_dirs_relink { dirs } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach dir $dirs {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                relink_binaries [ glob -nocomplain ${dir}/* ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        relink_binaries    [ exec find ${workpath}/ -name "*.dylib" ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        search_dirs_relink [ exec find ${workpath}/ -type d -and -name bin -or -name libexec ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${subport} ne ${ccwrap} } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append \
</span>                     bin:git:git \
                     path:bin/cmake:cmake \
                     port:cctools \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -43,22 +95,18 @@ depends_build-append \
</span>                     port:pkgconfig \
                     port:ninja \
                     port:gmake
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_lib-append  port:libffi \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libffi \
</span>                     path:lib/libssl.dylib:openssl
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set arch ${configure.build_arch}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${configure.build_arch} eq "arm64"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set arch "aarch64"
</span> }
 
 master_sites        https://static.rust-lang.org/dist
 
 distname            ${name}c-${version}-src
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-distfiles-append    rust-std-${rustc_version}-${arch}-apple-${os.platform}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rustc-${rustc_version}-${arch}-apple-${os.platform}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    cargo-${rustc_version}-${arch}-apple-${os.platform}${extract.suffix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distfiles-append    rust-std-${binTag}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    rustc-${binTag}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    cargo-${binTag}${extract.suffix}
</span> 
 checksums           ${distname}${extract.suffix} \
                     rmd160  86012fa02e52e4a06e5c76aaa482face78b38ef5 \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -90,10 +138,11 @@ checksums-append    rust-std-${rustc_version}-x86_64-apple-${os.platform}${extra
</span>                     sha256  19d526ef3518fb0322f809deddbd4208a27d08efa41d2188348f1be8d3bcfe5e \
                     size    5820420
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${os.platform} eq "darwin" && ${os.major} < 14} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set min_darwin 13
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} < ${min_darwin}} {
</span>     known_fail yes
     pre-fetch {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        ui_error "${name} is only supported on macOS 10.10 or later."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_error "${name} is only supported on macOS 10.[expr ${min_darwin} - 4] or later."
</span>         return -code error "unsupported platform version"
     }
 }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -101,37 +150,126 @@ if {${os.platform} eq "darwin" && ${os.major} < 14} {
</span> set rust_platform       ${arch}-apple-${os.platform}
 set rust_root           ${worksrcpath}/build/stage0-${arch}
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-post-extract {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    file mkdir ${rust_root}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    system "cp -r ${workpath}/rust-std-${rustc_version}-${rust_platform}/rust-std-${rust_platform}/* ${rust_root}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    system "cp -r ${workpath}/rustc-${rustc_version}-${rust_platform}/rustc/* ${rust_root}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    system "cp -r ${workpath}/cargo-${rustc_version}-${rust_platform}/cargo/* ${rust_root}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${subport} ne ${ccwrap} } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-extract {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        file mkdir ${rust_root}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system "cp -r ${workpath}/rust-std-${rustc_version}-${rust_platform}/rust-std-${rust_platform}/* ${rust_root}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system "cp -r ${workpath}/rustc-${rustc_version}-${rust_platform}/rustc/* ${rust_root}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system "cp -r ${workpath}/cargo-${rustc_version}-${rust_platform}/cargo/* ${rust_root}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span> }
 
 # Rust claims to only need c++14 but uses some c++17 features relating to std::unique_ptr
<span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.cxx_standard   2017
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cxx_standard  2017
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Use recent macports clang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.blacklist-append {macports-clang-[4-9].0}
</span> 
 # Compiler used needed at runtime with rust, so if a MacPorts clang compiler used needs to be a dep
 if { [string match macports-clang-* ${configure.compiler}] } {
     depends_lib-append port:[string map {"macports-" ""} ${configure.compiler}]
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.args          --enable-vendor \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --default-linker=${configure.cc} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --disable-codegen-tests \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --disable-docs \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --release-channel=stable \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --build=${rust_platform} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --local-rust-root=${rust_root} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --set=target.${rust_platform}.cc=${configure.cc} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --set=target.${rust_platform}.cxx=${configure.cxx} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --set=target.${rust_platform}.linker=${configure.cc} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --enable-extended \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --tools=rustfmt,clippy,rls \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --llvm-cflags="${configure.cflags}" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --llvm-cxxflags="${configure.cxxflags}" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --llvm-ldflags="${configure.ldflags}" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --python=${prefix}/bin/python${py_ver}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Max Darwin version to create wrapper scripts. Should be equal to the highest
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Darwin version that downstream ports could possible need legacy support for.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set max_wrap_darwin [legacysupport::get_newest_darwin_with_missing_symbols]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Adds given entry to the environment of various phases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc envs_append { value } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach stage {extract configure build destroot} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${stage}.env-delete ${value}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${stage}.env-append ${value}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# In order to enforce use of legacy support, both when building rust and subsequently
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# when using it, the underlying compiler commands need to be wrapped to make sure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# they use the correct flags. Do this in a sub-port which then is added as a dep
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# to rust to ensure they are available when rust is both built and installed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set wrapdir ${prefix}/libexec/${ccwrap}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${ccwrap} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Enable support in scripts for all neccessary versions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    legacysupport.newest_darwin_requires_legacy ${max_wrap_darwin}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description      Wrapped compiler commands for ${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description {*}${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license          BSD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    supported_archs  noarch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    distfiles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if { ${os.major} <= [option legacysupport.newest_darwin_requires_legacy] } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-append [legacysupport::get_dependency]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    use_configure    no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build            {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append port:cctools
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Deduce MP clang version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {![regexp {macports-clang-(.*)} ${configure.compiler} -> llvm_ver]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ui_error "Unsupported compiler: ${configure.compiler}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 755 -d ${destroot}${wrapdir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        proc create_wrapper { fname comp flags } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set f [ open ${fname} w 0755 ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            puts ${f} "#!/bin/bash"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            puts ${f} "exec ${comp} ${flags} \$\{\@\}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            close ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set llvm_dir ${prefix}/libexec/llvm-${llvm_ver}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        create_wrapper ${destroot}${wrapdir}/clang   \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "\$\{MACPORTS_RUST_CC\:\-${llvm_dir}/clang\}" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "\$\{MACPORTS_LEGACY_SUPPORT_CPPFLAGS\}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        create_wrapper ${destroot}${wrapdir}/clang++ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "\$\{MACPORTS_RUST_CXX\:\-${llvm_dir}/clang++\}" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "\$\{MACPORTS_LEGACY_SUPPORT_CPPFLAGS\}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        create_wrapper ${destroot}${wrapdir}/ld-rust \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "\$\{MACPORTS_RUST_CC\:\-${llvm_dir}/clang\}" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "\$\{MACPORTS_LEGACY_SUPPORT_CPPFLAGS\} \$\{MACPORTS_LEGACY_SUPPORT_LDFLAGS\}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        create_wrapper ${destroot}${wrapdir}/ld \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "\$\{MACPORTS_RUST_LD\:\-${llvm_dir}/ld\}" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "\$\{MACPORTS_LEGACY_SUPPORT_LDFLAGS\}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach cmd { ar as nm nm-classic libtool lipo objdump otool ranlib size size-classic strip strings bitcode-strip segedit } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ln -s ${prefix}/bin/${cmd} ${destroot}${wrapdir}/${cmd}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set ld ${configure.cc}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${subport} ne ${ccwrap} } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if { ${os.major} <= ${max_wrap_darwin} } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-append port:${ccwrap}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.cc     ${wrapdir}/clang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.cxx    ${wrapdir}/clang++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.objc   ${wrapdir}/clang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.objcxx ${wrapdir}/clang++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set ld           ${wrapdir}/ld-rust
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        envs_append      "PATH=${wrapdir}:${workpath}/bin:$env(PATH)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        envs_append      "PATH=${workpath}/bin:$env(PATH)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+envs_append       LD=${ld}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args    --enable-vendor \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --default-linker=${ld} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --disable-codegen-tests \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --disable-docs \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --release-channel=stable \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --build=${rust_platform} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --local-rust-root=${rust_root} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --set=target.${rust_platform}.cc=${configure.cc} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --set=target.${rust_platform}.cxx=${configure.cxx} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --set=target.${rust_platform}.linker=${ld} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --enable-extended \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --tools=rustfmt,clippy,rls \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --llvm-cflags="${configure.cflags}" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --llvm-cxxflags="${configure.cxxflags}" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --llvm-ldflags="${configure.ldflags}" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  --python=${prefix}/bin/python${py_ver}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Cache support
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {[tbool configure.ccache]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append   port:ccache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append  --enable-ccache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span> 
 post-configure {
     # the bootstrap call to rustc uses cc for the linker
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -141,13 +279,15 @@ post-configure {
</span>     set config [open ${workpath}/.home/.cargo/config w]
 
     puts ${config} "\[target.${rust_platform}\]"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    puts ${config} "linker = \"${configure.cc}\""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    puts ${config} "linker = \"${ld}\""
</span> 
     close ${config}
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-build.args          VERBOSE=1 BOOTSTRAP_ARGS="-v -j${build.jobs}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-build.env-append    OPENSSL_DIR=${prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.args          VERBOSE=1 BOOTSTRAP_ARGS="-vv -j${build.jobs}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+envs_append         OPENSSL_DIR=${prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+envs_append         RUST_BACKTRACE=1
</span> 
 test.run            yes
 test.target         check
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -156,7 +296,6 @@ test.args           VERBOSE=1
</span> destroot.args       VERBOSE=1
 
 if {${subport} eq ${name}} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>     post-destroot {
         delete ${destroot}${prefix}/lib/rustlib/install.log
         delete ${destroot}${prefix}/lib/rustlib/uninstall.sh
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -164,7 +303,6 @@ if {${subport} eq ${name}} {
</span>         xinstall -m 644 ${worksrcpath}/src/etc/ctags.rust \
             ${destroot}${prefix}/share/${name}
     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> }
 
 livecheck.type      regex
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -179,7 +317,7 @@ subport rust-src {
</span>     set rust_source_dir ${destroot}${prefix}/lib/rustlib/src/rust
 
     description     Source code for the rust programming language
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    long_description ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description {*}${description}
</span> 
     use_configure no
 
</pre><pre style='margin:0'>

</pre>