<pre style='margin:0'>
Rainer Müller (raimue) pushed a commit to branch vcs-fetch
in repository macports-base.

</pre>
<p><a href="https://github.com/macports/macports-base/commit/5ea80d2de90cbf1bb678a6d8a24c38da4b01fa0a">https://github.com/macports/macports-base/commit/5ea80d2de90cbf1bb678a6d8a24c38da4b01fa0a</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 5ea80d2de90cbf1bb678a6d8a24c38da4b01fa0a
</span>Author: Rainer Müller <raimue@macports.org>
AuthorDate: Sun Apr 15 04:46:52 2018 +0200

<span style='display:block; white-space:pre;color:#404040;'>    fetch: Always use bsdtar for generating tarballs
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    We need features that are only available in bsdtar, such as reading
</span><span style='display:block; white-space:pre;color:#404040;'>    mtree files to override file permissions and ownership.
</span>---
 src/port1.0/portfetch.tcl | 39 ++++++++++++++++++++++++++-------------
 1 file changed, 26 insertions(+), 13 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portfetch.tcl b/src/port1.0/portfetch.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index a8a437d..7cb32e1 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portfetch.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portfetch.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -190,21 +190,36 @@ proc portfetch::set_fetch_type {option action args} {
</span>                 default distname {${name}-${hg.tag}}
             }
         }
<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;'>-        switch $args {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            bzr -
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            cvs -
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            svn -
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            git -
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            hg {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                # bzip2 is needed to create and extract generated tarballs.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                # It might not be used if the fetch was not tarballable,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                # but we cannot decide this yet, so we just add it anyway.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# bsdtar and bzip2 are needed to create and extract generated tarballs.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# We cannot add these dependencies earlier, as we cannot decide whether
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# the fetch would be tarballable until we have seen all options.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portfetch::add_automatic_fetch_dependencies {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global fetch.type fetch.type.add_deps
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {!${fetch.type.add_deps}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return
</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;'>+    switch ${fetch.type} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        bzr -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        cvs -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        svn -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        git -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        hg {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[tarballable]} {
</span>                 use_bzip2 yes
<span style='display:block; white-space:pre;background:#e0ffe0;'>+                depends_fetch-append bin:bsdtar:libarchive
</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 portfetch::add_automatic_fetch_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 fetch.type.add_deps
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default fetch.type.add_deps yes
</span> 
 proc portfetch::find_svn_path {args} {
     global prefix os.platform os.major
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -352,8 +367,7 @@ proc portfetch::mktar {tarfile dir mtime {excludes {}}} {
</span>         }
         close $mtreefd
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        # TODO: add dependency on libarchive, if /usr/bin/tar is not bsdtar
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set tar [findBinary bsdtar tar]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set tar [findBinary bsdtar ${portutil::autoconf::bsdtar_path}]
</span>         set cmdstring "${tar} -cf $tarfile @$mtreefile 2>&1"
         if {[catch {system -W $dir $cmdstring} result]} {
             error [msgcat::mc "tarball creation failed"]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -816,8 +830,7 @@ proc portfetch::gitfetch {args} {
</span> 
     # generate tarballs for submodules and merge them into the main tarball
     if {[file isfile "$exportpath/.gitmodules"] && [tbool git.fetch_submodules]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        # TODO: add dependency on libarchive, if /usr/bin/tar is not bsdtar
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set tar [findBinary bsdtar tar]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set tar [findBinary bsdtar ${portutil::autoconf::bsdtar_path}]
</span>         # determine exportpath again in shell, as the real path might be different
         # due to symlinks (/tmp vs. /private/tmp), pass it as MPTOPDIR in
         # environment
</pre><pre style='margin:0'>

</pre>