<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/36348ffe164351c0f225bda334685a315ac820c6">https://github.com/macports/macports-ports/commit/36348ffe164351c0f225bda334685a315ac820c6</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 36348ffe164351c0f225bda334685a315ac820c6
</span>Author: Chris Jones <jonesc@macports.org>
AuthorDate: Tue May 4 14:44:52 2021 +0100

<span style='display:block; white-space:pre;color:#404040;'>    bazel, golang, makefile, python PGs: Migrate to use compilerwrapper PG
</span>---
 _resources/port1.0/group/bazel-1.0.tcl    | 67 ++++++++-----------------------
 _resources/port1.0/group/golang-1.0.tcl   | 64 ++++++++++++++---------------
 _resources/port1.0/group/makefile-1.0.tcl |  4 +-
 _resources/port1.0/group/python-1.0.tcl   | 62 ++--------------------------
 4 files changed, 55 insertions(+), 142 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/bazel-1.0.tcl b/_resources/port1.0/group/bazel-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 5d2e2f92b03..8a3f7a8e484 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/bazel-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/bazel-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -6,6 +6,7 @@
</span> PortGroup java 1.0
 PortGroup compiler_blacklist_versions 1.0
 PortGroup legacysupport 1.1
<span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup compilerwrapper 1.0
</span> 
 namespace eval bazel { }
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -145,15 +146,6 @@ proc bazel::get_base_arch {} {
</span>     return ""
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-proc bazel::get_ccache_dir {} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    global portdbpath ccache_dir
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {[info exists ccache_dir]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        return ${ccache_dir}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        return [file join $portdbpath build .ccache]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> supported_archs  x86_64
 if {![variant_isset native]} {
     set base_march [bazel::get_base_arch]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -175,7 +167,7 @@ proc bazel::set_env {} {
</span>     bazel::add_to_envs PATH=[string map {" " ":"} [option bazel.path]]:$env(PATH)
      # ccache dir
     if { [option configure.ccache] } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        bazel::add_to_envs CCACHE_DIR=[bazel::get_ccache_dir]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        bazel::add_to_envs CCACHE_DIR=[compwrap::get_ccache_dir]
</span>     }
 }
 port::register_callback bazel::set_env
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -192,37 +184,11 @@ proc bazel::set_configure {} {
</span> }
 port::register_callback bazel::set_configure
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-proc bazel::compiler_wrap_dir { } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    global workpath
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set wrapdir ${workpath}/bazelwrap
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {![file exists ${wrapdir}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        xinstall -m 755 -d ${wrapdir}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return ${wrapdir}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> # Patch configuration
 pre-configure {
     # enforce correct build settings
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Create compiler wrappers
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set wrapdir [bazel::compiler_wrap_dir]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    foreach comp {cc cxx} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set f [ open ${wrapdir}/${comp} w 0755 ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        puts ${f} "#!/bin/bash"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        puts ${f} "export CCACHE_DIR=[bazel::get_ccache_dir]"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set bzflags "\"\$\{\@\}\""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set bzcomp  "[set configure.${comp}]"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        if { [option configure.ccache] && [file exists ${prefix}/bin/ccache] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set bzcomp "${prefix}/bin/ccache ${bzcomp}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        if { ${os.major} <= [option legacysupport.newest_darwin_requires_legacy] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set bzflags "[option legacysupport.header_search] ${bzflags}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        puts ${f} "exec ${bzcomp} ${bzflags}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        close ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.cc  ${wrapdir}/cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.cxx ${wrapdir}/cxx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set cc  [compwrap::create_wrapper cc]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set cxx [compwrap::create_wrapper cxx]
</span>     # Patch the checked out source
     # note final / is because ${worksrcpath} is a sym-link
     foreach f [ exec find ${worksrcpath}/ -name ".bazelrc" -or -name "configure" -or -name "configure.py" \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -231,12 +197,12 @@ pre-configure {
</span>         foreach cmd {ar nm strip libtool ld objdump} {
             reinplace -q "s|/usr/bin/${cmd}|${prefix}/bin/${cmd}|g"    ${f}
         }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        reinplace -q "s|/usr/bin/clang++|\"${wrapdir}/cxx\"|g"         ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        reinplace -q "s|/usr/bin/clang|\"${wrapdir}/cc\"|g"            ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        reinplace -q "s|\"clang++\"|\"${wrapdir}/cxx\"|g"              ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        reinplace -q "s| clang++ | ${wrapdir}/cxx |g"                  ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        reinplace -q "s|\"clang\"|\"${wrapdir}/cc\"|g"                 ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        reinplace -q "s| clang | ${wrapdir}/cc |g"                     ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace -q "s|/usr/bin/clang++|\"${cc}\"|g"                  ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace -q "s|/usr/bin/clang|\"${cc}\"|g"                    ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace -q "s|\"clang++\"|\"${cxx}\"|g"                      ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace -q "s| clang++ | ${cxx} |g"                          ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace -q "s|\"clang\"|\"${cc}\"|g"                         ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace -q "s| clang | ${cc} |g"                             ${f}
</span>         reinplace -q "s|/usr/local/include|${prefix}/include|g"        ${f}
         reinplace -q "s|std=c++0x|std=c++11|g"                         ${f}
         reinplace -q "s|std=c++1y|std=c++14|g"                         ${f}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -266,15 +232,16 @@ pre-build {
</span>         return -code error "build error"
     }
     if { [option bazel.run_bazel_fetch] && [option bazel.build_cmd] ne "" && [file exists ${worksrcpath}] } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        set wrapdir [bazel::compiler_wrap_dir]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set cc  [compwrap::create_wrapper cc]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set cxx [compwrap::create_wrapper cxx]
</span>         # Run fetch
         set addpath [string map {" " ":"} [option bazel.path]]
         system -W ${worksrcpath} "PATH=${addpath}:$env(PATH) [bazel::get_build_env] [option bazel.build_cmd] [option bazel.build_cmd_opts] fetch [option bazel.build_target]"
         # Patch the bazel clang wrapper script to use MacPorts compiler selection and support ccache
         foreach f [ exec find [bazel::get_bazel_build_area] -name "wrapped_clang.cc" ] {
             # Switch to selected compiler
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            reinplace -q "s|\"clang++\"|\"${wrapdir}/cxx\"|g"  ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            reinplace -q "s|\"clang\"|\"${wrapdir}/cc\"|g"     ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            reinplace -q "s|\"clang++\"|\"${cxx}\"|g"  ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            reinplace -q "s|\"clang\"|\"${cc}\"|g"     ${f}
</span>             # Bazel **really** doesn't want you changing stuff ;)
             # https://stackoverflow.com/questions/47775668/bazel-how-to-skip-corrupt-installation-on-centos6
             system "touch -m -t 210012120101 ${f}"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -299,7 +266,7 @@ proc bazel::get_build_opts {} {
</span>     # See https://docs.bazel.build/versions/master/memory-saving-mode.html 
     set bazel_build_opts "--compilation_mode=opt --verbose_failures --nouse_action_cache --discard_analysis_cache --notrack_incremental_state --nokeep_state_after_build "
     # For very (very) verbose logging
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    #set bazel_build_opts "--subcommands ${bazel_build_opts}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set bazel_build_opts "--subcommands ${bazel_build_opts}"
</span>     # Extra user defined build options
     set bazel_build_opts "${bazel_build_opts} [option bazel.extra_build_opts]"
     # Always disable as bazel sets build jobs differently
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -340,7 +307,7 @@ proc bazel::get_build_opts {} {
</span>         set bazel_build_opts "${bazel_build_opts} --copt=-march=native"
     }
     if { [option configure.ccache] } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        set bazel_build_opts "${bazel_build_opts} --action_env CCACHE_DIR=[bazel::get_ccache_dir]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set bazel_build_opts "${bazel_build_opts} --action_env CCACHE_DIR=[compwrap::get_ccache_dir]"
</span>     }
     ui_debug "Defined Bazel build options ${bazel_build_opts}"
     return ${bazel_build_opts}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -356,7 +323,7 @@ proc bazel::get_build_env { } {
</span>     }
     set bazel_build_env "BAZEL_SH=/bin/bash ${bazel_build_env}"
     if { [option configure.ccache] } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        set bazel_build_env "CCACHE_DIR=[bazel::get_ccache_dir] ${bazel_build_env}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set bazel_build_env "CCACHE_DIR=[compwrap::get_ccache_dir] ${bazel_build_env}"
</span>     }
     return ${bazel_build_env}
 }
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/golang-1.0.tcl b/_resources/port1.0/group/golang-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 856c9c8d46b..d8cc6afaeaf 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/golang-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/golang-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -51,7 +51,10 @@
</span> # etc. file in the upstream source code. The go2port tool (install via MacPorts)
 # can be used to generate a skeleton portfile with precomputed go.vendors.
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup  legacysupport 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup legacysupport 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup compilerwrapper 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compwrap.print_compiler_command yes
</span> 
 options go.package go.domain go.author go.project go.version go.tag_prefix go.tag_suffix
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -149,7 +152,8 @@ set gopath              ${workpath}/gopath
</span> default worksrcdir      {gopath/src/${go.package}}
 
 set go_env {GOPATH=${gopath} GOARCH=${goarch} GOOS=${goos} GOPROXY=off GO111MODULE=off \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                CC=${configure.cc} CXX=${configure.cxx} FC=${configure.fc} OBJC=${configure.objc} OBJCXX=${configure.objcxx} }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                CC=${configure.cc} CXX=${configure.cxx} FC=${configure.fc} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                OBJC=${configure.objc} OBJCXX=${configure.objcxx} }
</span> 
 default build.cmd     {${go.bin} build}
 default build.args      ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -169,38 +173,32 @@ proc go.append_env {} {
</span>     # Create a wrapper scripts around compiler commands to enforce use of MacPorts flags
     # and to aid use of MacPorts legacysupport library as required.
     if { ${os.major} <= [option legacysupport.newest_darwin_requires_legacy] } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        post-extract {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # Note, go annoyingly uses CC for both building and linking, and thus in order to get it to correctly
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # link to the legacy support library, the ldflags need to be added to the cc and ccx wrappers.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # To then prevent 'clang linker input unused' errors we must append -Wno-error at the end.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # Also remove '-static' from compilation options as this is not supported on older systems.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            proc create_wrap { wrap comp flags } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set f [ open ${wrap} w 0755 ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                puts  ${f} "#!/bin/bash"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                puts  ${f} "CMD=\"${comp} ${flags}\""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                puts  ${f} "echo \${CMD}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                puts  ${f} "exec \${CMD}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                close ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set flags "${configure.cppflags} ${configure.ldflags} \"\$\{\@\//-static/\}\" -Wno-error"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set wrapdir ${workpath}/gowrap
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            xinstall -m 755 -d ${wrapdir}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            create_wrap ${wrapdir}/cc     ${configure.cc}     "${configure.cflags}      [get_canonical_archflags cc]     ${flags}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            create_wrap ${wrapdir}/c++    ${configure.cxx}    "${configure.cxxflags}    [get_canonical_archflags cxx]    ${flags}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            create_wrap ${wrapdir}/objc   ${configure.objc}   "${configure.objcflags}   [get_canonical_archflags objc]   ${flags}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            create_wrap ${wrapdir}/objc++ ${configure.objcxx} "${configure.objcxxflags} [get_canonical_archflags objcxx] ${flags}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Note, go annoyingly uses CC for both building and linking, and thus in order to get it to correctly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # link to the legacy support library, the ldflags need to be added to the cc and ccx wrappers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # To then prevent 'clang linker input unused' errors we must append -Wno-error at the end.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Also remove '-static' from compilation options as this is not supported on older systems.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        compwrap.compiler_args_forward {\$\{\@\//-static/\}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        compwrap.compiler_pre_flags    ${configure.ldflags}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        compwrap.compiler_post_flags   {-Wno-error}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-extract {
</span>         build.env-append \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            "CC=${workpath}/gowrap/cc" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            "CXX=${workpath}/gowrap/c++" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            "OBJC=${workpath}/gowrap/objc" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            "OBJCXX=${workpath}/gowrap/objc++" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            "GO_EXTLINK_ENABLED=1" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            "BOOT_GO_LDFLAGS=-extldflags='${configure.ldflags}'" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            "CGO_CFLAGS=${configure.cflags} [get_canonical_archflags cc]" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            "CGO_CXXFLAGS=${configure.cxxflags} [get_canonical_archflags cxx]" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            "CGO_LDFLAGS=${configure.cflags} ${configure.ldflags} [get_canonical_archflags ld]" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            "GO_LDFLAGS=-extldflags='${configure.ldflags} [get_canonical_archflags ld]'"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "CC=[compwrap::create_wrapper cc]" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "CXX=[compwrap::create_wrapper cxx]" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "OBJC=[compwrap::create_wrapper objc]" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "OBJCXX=[compwrap::create_wrapper objcxx]" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "FC=[compwrap::create_wrapper fc]" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "F90=[compwrap::create_wrapper f90]" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "F77=[compwrap::create_wrapper f77]" 
</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;'>+            build.env-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                "GO_EXTLINK_ENABLED=1" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                "BOOT_GO_LDFLAGS=-extldflags='${configure.ldflags}'" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                "CGO_CFLAGS=${configure.cflags} [get_canonical_archflags cc]" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                "CGO_CXXFLAGS=${configure.cxxflags} [get_canonical_archflags cxx]" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                "CGO_LDFLAGS=${configure.cflags} ${configure.ldflags} [get_canonical_archflags ld]" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                "GO_LDFLAGS=-extldflags='${configure.ldflags} [get_canonical_archflags ld]'"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span>         configure.env-append ${build.env}
         test.env-append      ${build.env}
     }
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/makefile-1.0.tcl b/_resources/port1.0/group/makefile-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 308e0e5d0f2..05144e978dd 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/makefile-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/makefile-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -27,6 +27,8 @@
</span> #     -arch flags set by the muniversal PG
 #
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup compilerwrapper       1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> options makefile.override
 default makefile.override       {CC CXX OBJC OBJCXX FC F77 F90 JAVAC PERL PYTHON RUBY INSTALL AWK BISON PKG_CONFIG}
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -216,7 +218,7 @@ proc makefile_pg::makefile_setup {} {
</span>                               FFLAGS F90FLAGS FCFLAGS LDFLAGS LIBS CLASSPATH \
                               PERL PYTHON RUBY INSTALL AWK BISON PKG_CONFIG \
                           } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            set value [option configure.[string tolower $env_var]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set value [compwrap::create_wrapper [string tolower $env_var]]
</span>             if {$value ne ""} {
                 ${phase}.env-append         "$env_var=$value"
                 if {[lsearch -exact ${makefile.override} ${env_var}] != -1} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/python-1.0.tcl b/_resources/port1.0/group/python-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index c2702b52fcf..6c6364a2dc5 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/python-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/python-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -17,6 +17,8 @@
</span> #
 # Note: setting these options requires name to be set beforehand
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup       compilerwrapper 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> categories      python
 
 use_configure   no
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -90,69 +92,13 @@ proc python_get_compiler_tags {} {
</span> }
 
 proc python_set_env_compilers {phase} {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    ui_msg "MOOO ${phase}"
</span>     foreach tag [python_get_compiler_tags] {
         if {[option configure.${tag}] ne ""} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            ${phase}.env-append [string toupper $tag]=[python_get_compiler_command ${tag}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Configure support for ccache
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-proc python_configure_ccache {} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    global prefix
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {[option configure.ccache] && [file exists ${prefix}/bin/ccache]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # Set some cmake env vars incase build uses cmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        foreach tag [python_get_compiler_tags] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            switch ${tag} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                fc {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    set ctag Fortran
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                f77 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    set ctag Fortran
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                f90 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    set ctag Fortran
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                default {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    set ctag [string toupper $tag]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            foreach phase [list configure build destroot] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                ${phase}.env-append CMAKE_${ctag}_COMPILER_LAUNCHER=${prefix}/bin/ccache
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${phase}.env-append [string toupper $tag]=[compwrap::get_compiler ${tag}]
</span>         }
     }
 }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-port::register_callback python_configure_ccache
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-proc python_create_compiler_wrap {tag} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    global prefix
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set comp [option configure.${tag}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {${comp} ne "" && [file exists ${prefix}/bin/ccache]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set wrapdir [option workpath]/compilerwrap/bin
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {![file exists ${wrapdir}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            xinstall -d ${wrapdir}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set fname ${wrapdir}/[file tail ${comp}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # Recreate in case underlying compiler has changed
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        file delete -force ${fname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ui_debug "Creating compiler wrapper ${fname}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set f [open ${fname} w 0755]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        puts  ${f} "#!/bin/bash"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        puts  ${f} "exec ${prefix}/bin/ccache ${comp} \"\$\{\@\}\""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        close ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        return ${fname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return ${comp}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-proc python_get_compiler_command {tag} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set comp [option configure.${tag}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {[option configure.ccache]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set comp [python_create_compiler_wrap ${tag}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return ${comp}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span> 
 proc python_set_versions {option action args} {
     if {$action ne "set"} {
</pre><pre style='margin:0'>

</pre>