<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/819395b793a5e55e00f22c485ebd4405db509f0f">https://github.com/macports/macports-ports/commit/819395b793a5e55e00f22c485ebd4405db509f0f</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 819395b793a bazel PG: Create compiler wrappers during pre-configure
</span>819395b793a is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 819395b793a5e55e00f22c485ebd4405db509f0f
</span>Author: Chris Jones <jonesc@macports.org>
AuthorDate: Mon May 3 20:14:57 2021 +0100
<span style='display:block; white-space:pre;color:#404040;'> bazel PG: Create compiler wrappers during pre-configure
</span>---
_resources/port1.0/group/bazel-1.0.tcl | 86 ++++++++++++++++++++--------------
1 file changed, 50 insertions(+), 36 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 7a0a274850a..5d2e2f92b03 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;'>@@ -66,6 +66,12 @@ default bazel.cxx_standard 2014
</span> options bazel.path
default bazel.path {}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+proc bazel::add_to_envs { var } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach phase {configure build destroot} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${phase}.env-append ${var}
</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> # Required java version
java.version 11+
# LTS JDK port to install if required java not found
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -74,9 +80,7 @@ java.fallback openjdk11
</span> # declare no conflict to allow redistribution of binaries.
license_noconflict ${java.fallback}
# append to envs
<span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.env-append JAVA_HOME=${java.home}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-build.env-append JAVA_HOME=${java.home}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-destroot.env-append JAVA_HOME=${java.home}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bazel::add_to_envs JAVA_HOME=${java.home}
</span>
# Always force the use of the un-versioned SDK
configure.sdk_version
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -161,12 +165,6 @@ if {![variant_isset native]} {
</span> customized for your machine, use the +native variant"
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-proc bazel::add_to_envs { var } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach phase {configure build destroot} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${phase}.env-append ${var}
</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> proc bazel::set_env {} {
global prefix env
ui_debug "Setting Bazel Env"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -194,19 +192,51 @@ proc bazel::set_configure {} {
</span> }
port::register_callback bazel::set_configure
<span style='display:block; white-space:pre;background:#e0ffe0;'>+proc bazel::compiler_wrap_dir { } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global workpath
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set wrapdir ${workpath}/bazelwrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![file exists ${wrapdir}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -m 755 -d ${wrapdir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ${wrapdir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Patch configuration
pre-configure {
# enforce correct build settings
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Create compiler wrappers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set wrapdir [bazel::compiler_wrap_dir]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach comp {cc cxx} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set f [ open ${wrapdir}/${comp} 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} "export CCACHE_DIR=[bazel::get_ccache_dir]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set bzflags "\"\$\{\@\}\""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set bzcomp "[set configure.${comp}]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if { [option configure.ccache] && [file exists ${prefix}/bin/ccache] } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set bzcomp "${prefix}/bin/ccache ${bzcomp}"
</span><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;'>+ set bzflags "[option legacysupport.header_search] ${bzflags}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts ${f} "exec ${bzcomp} ${bzflags}"
</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;'>+ configure.cc ${wrapdir}/cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.cxx ${wrapdir}/cxx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Patch the checked out source
</span> # note final / is because ${worksrcpath} is a sym-link
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach f [ exec find ${worksrcpath}/ -name ".bazelrc" -or -name "configure" -or -name "configure.py" -or -name "compile.sh" -or -name "*.tpl" -or -name "*.bzl" -or -name "CROSSTOOL" -or -name "configure.py" -or -name "MOCK_CROSSTOOL" ] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach f [ exec find ${worksrcpath}/ -name ".bazelrc" -or -name "configure" -or -name "configure.py" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -or -name "compile.sh" -or -name "*.tpl" -or -name "*.bzl" -or -name "CROSSTOOL" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -or -name "configure.py" -or -name "MOCK_CROSSTOOL" ] {
</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|\"${configure.cc}\"|g" ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reinplace -q "s|\"clang++\"|\"${configure.cxx}\"|g" ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reinplace -q "s| clang++ | ${configure.cxx} |g" ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reinplace -q "s|\"clang\"|\"${configure.cc}\"|g" ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reinplace -q "s| clang | ${configure.cc} |g" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s|/usr/bin/clang++|\"${wrapdir}/cxx\"|g" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s|/usr/bin/clang|\"${wrapdir}/cc\"|g" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s|\"clang++\"|\"${wrapdir}/cxx\"|g" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s| clang++ | ${wrapdir}/cxx |g" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s|\"clang\"|\"${wrapdir}/cc\"|g" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s| clang | ${wrapdir}/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;'>@@ -216,7 +246,8 @@ pre-configure {
</span> # If not native build, make sure not used...
if {![variant_isset native]} {
set base_march [bazel::get_base_arch]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach f [ exec find ${worksrcpath}/ -name "configure" -or -name "configure.py" -or -name "CMakeLists.txt" -or -name "Makefile" -or -name "*.sh" ] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach f [ exec find ${worksrcpath}/ -name "configure" -or -name "configure.py" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -or -name "CMakeLists.txt" -or -name "Makefile" -or -name "*.sh" ] {
</span> reinplace -q "s|-march=native|${base_march}|g" ${f}
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -235,32 +266,15 @@ 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;'>- # Create compiler wrappers
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set wrapdir ${workpath}/bazelwrap
</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;'>- 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:#e0ffe0;'>+ set wrapdir [bazel::compiler_wrap_dir]
</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++\"|\"${wrapdir}/cxx\"|g" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s|\"clang\"|\"${wrapdir}/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}"
</pre><pre style='margin:0'>
</pre>