<pre style='margin:0'>
Marcus Calhoun-Lopez (MarcusCalhoun-Lopez) pushed a commit to branch master
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/e0bd891f757606ff99e0611048de4f48f71dcce5">https://github.com/macports/macports-base/commit/e0bd891f757606ff99e0611048de4f48f71dcce5</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit e0bd891f757606ff99e0611048de4f48f71dcce5
</span>Author: Marcus Calhoun-Lopez <mcalhoun@macports.org>
AuthorDate: Sun Sep 16 05:14:42 2018 -0700
<span style='display:block; white-space:pre;color:#404040;'> improve compiler dependency check
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Attempt to add all dependencies (port, C++ library, etc.)
</span>---
src/port1.0/portconfigure.tcl | 88 +++++++++++++++++++++++++++++++++++--------
1 file changed, 73 insertions(+), 15 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portconfigure.tcl b/src/port1.0/portconfigure.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 01c5703..c016849 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portconfigure.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portconfigure.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1147,20 +1147,83 @@ proc portconfigure::add_automatic_compiler_dependencies {} {
</span>
# The default value requires substitution before use.
set compiler [subst ${configure.compiler}]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![compiler_is_port $compiler]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[compiler_is_port $compiler]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_debug "Chosen compiler ${compiler} is provided by a port, adding dependency"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ portconfigure::add_compiler_port_dependencies ${compiler}
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_debug "Chosen compiler ${compiler} is provided by a port, adding dependency"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Register the above procedure as a callback after Portfile evaluation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+port::register_callback portconfigure::add_automatic_compiler_dependencies
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# and an option to turn it off if required
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+options configure.compiler.add_deps
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default configure.compiler.add_deps yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# helper function to add dependencies for a given compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::add_compiler_port_dependencies {compiler} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global os.major porturl
</span>
set compiler_port [portconfigure::compiler_port_name ${compiler}]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set deptype "build"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[string first "macports-gcc-" $compiler] == 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set deptype "lib"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[regexp {^apple-gcc-(4\.0)$} $compiler -> gcc_version]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # compiler links against ${prefix}/lib/apple-gcc40/lib/libgcc_s.1.dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_debug "Adding depends_lib port:$compiler_port"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-delete port:$compiler_port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append port:$compiler_port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[regexp {^macports-(mpich|openmpi)-(default|clang|gcc)(?:-(\d+(?:\.\d+)?))?$} $compiler -> mpi clang_or_gcc version]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # MPI compilers link against MPI libraries
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_debug "Adding depends_lib port:$compiler_port"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${mpi} eq "openmpi"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set pkgname ompi.pc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set pkgname ${mpi}.pc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-delete "path:lib/$compiler_port/pgkconfig/${pkgname}:${compiler_port}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append "path:lib/$compiler_port/pkgconfig/${pkgname}:${compiler_port}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_debug "Adding depends_build port:$compiler_port"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-delete port:$compiler_port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-append port:$compiler_port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # add C++ runtime dependency if necessary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [regexp {^macports-gcc-(\d+(?:\.\d+)?)?$} ${compiler} -> gcc_version]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [regexp {^macports-dragonegg-(\d+\.\d+)(?:-gcc-(\d+\.\d+))?$} ${compiler} -> llvm_version gcc_version]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists llvm_version] && ${gcc_version} eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # port dragonegg-3.4 defaults to GCC version 4.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set gcc_version 4.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set libgccs ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set dependencies_file [getportresourcepath $porturl "port1.0/compilers/gcc_dependencies.tcl"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[file exists ${dependencies_file}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ source ${dependencies_file}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "GCC dependencies file not found"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error "${dependencies_file} does not exist"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_debug "Adding depends_build port:$compiler_port"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-delete port:$compiler_port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-append port:$compiler_port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach libgcc_dep $libgccs {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_debug "Adding depends_lib $libgcc_dep"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-delete $libgcc_dep
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append $libgcc_dep
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[regexp {^macports-clang(?:-(\d+\.\d+))$} $compiler -> clang_version]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[option configure.cxx_stdlib] eq "macports-libstdc++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # see https://trac.macports.org/ticket/54766
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_debug "Adding depends_lib path:lib/libgcc/libgcc_s.1.dylib:libgcc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-delete "path:lib/libgcc/libgcc_s.1.dylib:libgcc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append "path:lib/libgcc/libgcc_s.1.dylib:libgcc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[option configure.cxx_stdlib] eq "libc++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${os.major} < 11 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # libc++ does not exist on these systems
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_debug "Adding depends_lib libcxx"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-delete "port:libcxx"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append "port:libcxx"
</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:#ffe0e0;'>- ui_debug "Adding depends_${deptype} port:$compiler_port"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- depends_${deptype}-delete port:$compiler_port
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- depends_${deptype}-append port:$compiler_port
</span>
if {[arch_flag_supported $compiler]} {
ui_debug "Adding depends_skip_archcheck $compiler_port"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1168,11 +1231,6 @@ proc portconfigure::add_automatic_compiler_dependencies {} {
</span> depends_skip_archcheck-append $compiler_port
}
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Register the above procedure as a callback after Portfile evaluation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-port::register_callback portconfigure::add_automatic_compiler_dependencies
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# and an option to turn it off if required
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-options configure.compiler.add_deps
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-default configure.compiler.add_deps yes
</span>
proc portconfigure::configure_main {args} {
global [info globals]
</pre><pre style='margin:0'>
</pre>