<pre style='margin:0'>
Ryan Schmidt (ryandesign) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/a9aef02445333b920b669974403f382999413f2b">https://github.com/macports/macports-ports/commit/a9aef02445333b920b669974403f382999413f2b</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 a9aef02 minivmac-devel: Use Expect to mount disk image
</span>a9aef02 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit a9aef02445333b920b669974403f382999413f2b
</span>Author: Ryan Schmidt <ryandesign@macports.org>
AuthorDate: Thu Apr 26 18:45:15 2018 -0500
<span style='display:block; white-space:pre;color:#404040;'> minivmac-devel: Use Expect to mount disk image
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> ...to answer "Yes" when some versions of hdiutil ask if we're sure we
</span><span style='display:block; white-space:pre;color:#404040;'> want to mount a possibly corrupted disk.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Require MacPorts master, because only it allows sandbox access to the
</span><span style='display:block; white-space:pre;color:#404040;'> ptys Expect needs to work.
</span>---
emulators/minivmac-devel/Portfile | 29 ++++++++++++++++++++++++-----
emulators/minivmac-devel/files/attach.exp | 13 +++++++++++++
2 files changed, 37 insertions(+), 5 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/minivmac-devel/Portfile b/emulators/minivmac-devel/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index c9473bd..58c1f5a 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/emulators/minivmac-devel/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/minivmac-devel/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -81,7 +81,8 @@ checksums ${my_src_distfile} \
</span>
depends_extract port:bsdiff
<span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_build port:timeout
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build bin:expect:expect \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:timeout
</span>
depends_skip_archcheck bsdiff timeout
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -249,23 +250,25 @@ configure {
</span> }
post-configure {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Sandbox didn't used to allow access to the ptys Expect needs.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://github.com/macports/macports-base/commit/8765c14223c2826c958cddd4e33c17801d63ddb4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp [macports_version] 2.4.99] >= 0} {
</span> # Check if a configuration error occurred. This can happen if invalid
# configuration flags were specified.
delete ${my_mnvm_dat}/disk3.dmg
ln ${my_mnvm_dat}/disk3.dsk ${my_mnvm_dat}/disk3.dmg
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set mountpoint [exec mktemp -d /tmp/mnvm.XXXXXXXX]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- system -W ${worksrcpath} "hdiutil attach '${my_mnvm_dat}/disk3.dmg' -readonly -mountpoint '${mountpoint}' -nobrowse"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set mountpoint [my_attach_disk_image ${my_mnvm_dat}/disk3.dmg]
</span> if {[file exists ${mountpoint}/output/minivmac.err.txt]} {
copy ${mountpoint}/output/minivmac.err.txt ${worksrcpath}
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- system -W ${worksrcpath} "hdiutil detach '${mountpoint}'"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- delete ${mountpoint}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ my_detach_disk_image ${mountpoint}
</span> if {[file exists ${worksrcpath}/minivmac.err.txt]} {
set fp [open ${worksrcpath}/minivmac.err.txt r]
set error_text [read ${fp}]
close ${fp}
return -code error ${error_text}
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
file mkdir ${build.dir}
set my_variation_dirs {}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -402,6 +405,22 @@ proc my_arch_to_target {arch} {
</span> }
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Mounts a disk image, using an Expect script that answers "yes" when some
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# versions of hdiutil ask if we want to mount the image even though it may be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# damaged.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc my_attach_disk_image {disk_image} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global my_name filespath
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set mountpoint [mkdtemp "/tmp/${my_name}.XXXXXXXX"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ system "expect ${filespath}/attach.exp '${disk_image}' '${mountpoint}'"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ${mountpoint}
</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;'>+# Unmounts a disk image.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc my_detach_disk_image {mountpoint} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ system "hdiutil detach ${mountpoint} -force"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete ${mountpoint}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> livecheck.type regex
livecheck.url ${homepage}
#livecheck.version ${my_version}-${branch}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/minivmac-devel/files/attach.exp b/emulators/minivmac-devel/files/attach.exp
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..32eb52b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/minivmac-devel/files/attach.exp
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#!/usr/bin/env expect --
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+spawn hdiutil attach "[lindex $argv 0]" -mountpoint "[lindex $argv 1]" -private -nobrowse -noautoopen -noautofsck -noverify -readonly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+expect {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "Are you sure you want to open" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exp_send "Y\r"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exp_continue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "/dev/" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ interact
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span></pre><pre style='margin:0'>
</pre>