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