<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/db162dd0110de0d9197d75dfc74a4388f5d1ae72">https://github.com/macports/macports-ports/commit/db162dd0110de0d9197d75dfc74a4388f5d1ae72</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 db162dd0110 LLVM 18: Switch to Ninja builds
</span>db162dd0110 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit db162dd0110de0d9197d75dfc74a4388f5d1ae72
</span>Author: Chris Jones <jonesc@macports.org>
AuthorDate: Thu Mar 7 15:55:37 2024 +0000

<span style='display:block; white-space:pre;color:#404040;'>    LLVM 18: Switch to Ninja builds
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Ninja is the build system upstream tests on Darwin,
</span><span style='display:block; white-space:pre;color:#404040;'>    so switching to it should reduce the likelihood of us
</span><span style='display:block; white-space:pre;color:#404040;'>    running into issues not seen upstream because of this.
</span><span style='display:block; white-space:pre;color:#404040;'>    See e.g. https://trac.macports.org/ticket/63085
</span><span style='display:block; white-space:pre;color:#404040;'>    which reared its ugly head again with clang-18
</span>---
 lang/llvm-18/Portfile | 53 +++++++++++++++++++--------------------------------
 1 file changed, 20 insertions(+), 33 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/llvm-18/Portfile b/lang/llvm-18/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index aee6c8c72cc..4126fe85e01 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/llvm-18/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/llvm-18/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -27,7 +27,7 @@ set clang_exe_version   ${llvm_version}
</span> version                 ${llvm_version}.1.0
 
 name                    llvm-${llvm_version}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision                0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision                1
</span> subport                 mlir-${llvm_version}  { revision [ expr ${revision} + 0 ] }
 subport                 clang-${llvm_version} { revision [ expr ${revision} + 0 ] }
 subport                 lldb-${llvm_version}  { revision [ expr ${revision} + 0 ] }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -56,8 +56,7 @@ compiler.blacklist      *gcc* {clang < 1001} macports-clang-3.*
</span> compiler.blacklist-append {clang < 1204} {macports-clang-[5-9].0} {macports-clang-1[0-3]}
 compiler.fallback       clang macports-clang-14 macports-clang-15
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# We can't use Ninja with our custom destrooting plan for llvm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#cmake.generator         Ninja
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cmake.generator         Ninja
</span> cmake.install_prefix    ${sub_prefix}
 cmake.build_type        Release
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -242,12 +241,6 @@ if {${subport} eq "mlir-${llvm_version}"} {
</span> 
     configure.args-append \
                         -DLLVM_ENABLE_PROJECTS="mlir"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # we have to run the destroot like this, because individual targets for each of the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # components we want to install are not available; we want "everything but llvm"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        system "cd ${destroot.dir}/tools/mlir && ${destroot.cmd} ${destroot.pre_args} ${destroot.target} ${destroot.post_args}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span> }
 
 if { ${subport} eq "clang-${llvm_version}" } {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -267,17 +260,6 @@ if { ${subport} eq "clang-${llvm_version}" } {
</span>         -DLLVM_ENABLE_RUNTIMES="libcxx\;libcxxabi\;libunwind" \
         -DLIBCXX_ENABLE_SHARED=ON    \
         -DLIBCXX_INSTALL_LIBRARY=ON
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # we have to run the destroot like this, because individual targets for each of the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # components we want to install are not available; we want "everything but llvm"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        system "cd ${destroot.dir}/tools/clang                      && ${destroot.cmd} ${destroot.pre_args} ${destroot.target} ${destroot.post_args}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        system "cd ${destroot.dir}/tools/lld                        && ${destroot.cmd} ${destroot.pre_args} ${destroot.target} ${destroot.post_args}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        system "cd ${destroot.dir}/projects/compiler-rt             && ${destroot.cmd} ${destroot.pre_args} ${destroot.target} ${destroot.post_args}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        system "cd ${destroot.dir}/runtimes/runtimes-bins/libcxx    && ${destroot.cmd} ${destroot.pre_args} ${destroot.target} ${destroot.post_args}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        system "cd ${destroot.dir}/runtimes/runtimes-bins/libcxxabi && ${destroot.cmd} ${destroot.pre_args} ${destroot.target} ${destroot.post_args}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        system "cd ${destroot.dir}/runtimes/runtimes-bins/libunwind && ${destroot.cmd} ${destroot.pre_args} ${destroot.target} ${destroot.post_args}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span> }
 
 if { ${subport} eq "flang-${llvm_version}" } {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -295,23 +277,10 @@ if { ${subport} eq "flang-${llvm_version}" } {
</span>         -DLIBCXX_INSTALL_LIBRARY=OFF
 
     depends_lib-append  port:clang-${llvm_version} port:mlir-${llvm_version}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # we have to run the destroot like this, because individual targets for each of the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # components we want to install are not available; we want "everything but llvm"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        system "cd ${destroot.dir}/tools/flang && ${destroot.cmd} ${destroot.pre_args} ${destroot.target} ${destroot.post_args}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span> }
 
 if { ${subport} eq "clang-${llvm_version}" || ${subport} eq "flang-${llvm_version}" } {
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Until race conditions in the CMake (non ninja) builds are fixed, or we
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # figure out how to migrate to ninja, or the new issue with clang-18 is fixed,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # disable parallel builds :(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # CMake Error: failed to create symbolic link '/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_llvm-18/flang-18/work/build/projects/compiler-rt/lib/builtins/outline_atomic_helpers.dir/outline_atomic_ldset1_2.S': File exists
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # https://groups.google.com/g/llvm-dev/c/rb5sOvgF_OU?pli=1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    use_parallel_build  no
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>     depends_lib-append  port:libxml2 port:libomp port:llvm-${llvm_version} port:ld64
     depends_skip_archcheck-append ld64
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -455,6 +424,24 @@ post-destroot {
</span>             macos-setup-codesign.sh \
             ${lldb_scripts_destdir}
     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${subport} ne "llvm-${llvm_version}"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Need to deactivate current version before traversing destroot to remove
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # 'already installed' files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {![catch {set installed [lindex [registry_active ${subport}] 0]}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            registry_deactivate_composite ${subport} "" [list ports_nodepcheck 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Then search for files in destroot provided by other local (sub)ports deps and remove
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        fs-traverse destroot_f ${destroot} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {![file isdirectory $destroot_f]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set f [string replace $destroot_f 0 [string length $xdestroot]-1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if {[file exists ${f}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ui_msg "${f} already exists -> Removed from destroot"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    file delete ${destroot_f}
</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;'>+    }
</span> }
 
 if {${subport} eq "clang-${llvm_version}"} {
</pre><pre style='margin:0'>

</pre>