<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>