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