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