<pre style='margin:0'>
Mihai Moldovan (Ionic) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/b9564a04c393d6187025d461fa3a4251781f39ad">https://github.com/macports/macports-ports/commit/b9564a04c393d6187025d461fa3a4251781f39ad</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit b9564a04c393d6187025d461fa3a4251781f39ad
</span>Author: Mihai Moldovan <ionic@ionic.de>
AuthorDate: Tue Mar 5 05:21:51 2019 +0100
<span style='display:block; white-space:pre;color:#404040;'> muniversal-1.0: if worksrcpath is a symlink, copy the directory tree referred to instead of the symlink.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Fixes: https://trac.macports.org/ticket/58163
</span>---
_resources/port1.0/group/muniversal-1.0.tcl | 35 ++++++++++++++++++++++++++++-
1 file changed, 34 insertions(+), 1 deletion(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/muniversal-1.0.tcl b/_resources/port1.0/group/muniversal-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index a3ad3d4..cbad38a 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/muniversal-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/muniversal-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -180,7 +180,40 @@ variant universal {
</span> set muniversal.current_arch ${arch}
if {![file exists ${worksrcpath}-${arch}]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- copy ${worksrcpath} ${worksrcpath}-${arch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch [file type ${worksrcpath}] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ directory {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ copy ${worksrcpath} ${worksrcpath}-${arch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ link {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # We have to copy the actual directory tree instead of the verbatim symlink.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set worksrcpath_work ${worksrcpath}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set link_depth 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while {[file type ${worksrcpath_work}] eq "link"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set target [file readlink ${worksrcpath_work}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Canonicalize path.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[string index ${target} 0] ne "/"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set target [file dirname ${worksrcpath_work}]/${target}
</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;'>+ if {![file exists ${target}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error "worksrcpath symlink traversal encountered non-existent target path ${target} (dangling symlink)"
</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;'>+ incr link_depth
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${link_depth} >= 50} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error "worksrcpath symlink too deeply nested, giving up (loop?)"
</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;'>+ set worksrcpath_work ${target}
</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;'>+ copy ${worksrcpath_work} ${worksrcpath}-${arch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error "worksrcpath not a symlink or directory, this is unexpected"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
set archf [muniversal_get_arch_flag ${arch}]
</pre><pre style='margin:0'>
</pre>