<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/5712d8aa9fc6201579ccee81782fbc6fcd7c1776">https://github.com/macports/macports-ports/commit/5712d8aa9fc6201579ccee81782fbc6fcd7c1776</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 5712d8aa9fc6201579ccee81782fbc6fcd7c1776
</span>Author: Mihai Moldovan <ionic@ionic.de>
AuthorDate: Fri Nov 22 17:51:29 2019 +0100

<span style='display:block; white-space:pre;color:#404040;'>    emulators/qemu: fix builds using out-of-source builds. Revbump.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This targets mostly older platforms, but also generally changes behavior
</span><span style='display:block; white-space:pre;color:#404040;'>    to a more correct one.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    The qemu build system is buggy when it comes to in-source-builds. Due to
</span><span style='display:block; white-space:pre;color:#404040;'>    Makefile dependencies, it always tries to reconfigure using a special
</span><span style='display:block; white-space:pre;color:#404040;'>    generated file at install time and also re-compiles the whole project.
</span><span style='display:block; white-space:pre;color:#404040;'>    This would normally be just an annoyance, but because not all parameters
</span><span style='display:block; white-space:pre;color:#404040;'>    are passed through (exported) correctly, the second build diverges from
</span><span style='display:block; white-space:pre;color:#404040;'>    the correct first one.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    It shouldn't come as a surprise that Linux distros seem to use
</span><span style='display:block; white-space:pre;color:#404040;'>    out-of-source builds for qemu, which nicely work around that problem.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Additionally, older platforms have an mktemp implementation that always
</span><span style='display:block; white-space:pre;color:#404040;'>    expects a template as its parameter, but the Makefile doesn't provide
</span><span style='display:block; white-space:pre;color:#404040;'>    one in some cases. Hence, switch to GNU coreutils's on 10.10-, but keep
</span><span style='display:block; white-space:pre;color:#404040;'>    using mktemp on more recent platforms because it seems to work fine
</span><span style='display:block; white-space:pre;color:#404040;'>    there.
</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/59257
</span>---
 emulators/qemu/Portfile                            | 28 +++++++++++++++++++++-
 .../patch-Makefile-legacy-mktemp-to-coreutils.diff | 11 +++++++++
 2 files changed, 38 insertions(+), 1 deletion(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/qemu/Portfile b/emulators/qemu/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 19f221a..4a21c56 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/emulators/qemu/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/qemu/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -8,7 +8,7 @@ PortGroup legacysupport 1.0
</span> 
 name                    qemu
 version                 4.2.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision                0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision                1
</span> categories              emulators
 license                 GPL-2+
 platforms               darwin
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -106,6 +106,25 @@ pre-configure {
</span>     configure.args-append --target-list=${target_list}
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# The qemu build system bugs out when using in-source-tree builds.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# During builds, files are generated in directories such as pc-bios, which are
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# prerequites to the config-host.mak file. The latter gets generated during a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# configure run and can (in theory) be used for reconfiguring the package.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Practically, this reconfiguration fails because it doesn't take special flags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# into account like LDFLAGS and the like, so we have to avoid reconfiguring
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# qemu.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Additionally, just "touch"ing the file doesn't work either, because it is a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# prerequisite of other generated file which will, likewise, be generated twice.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Using out-of-source builds we can work around this issue in a pretty nice way.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.dir   "${workpath}/build"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cmd   "${worksrcpath}/configure"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.dir       "${workpath}/build"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    file mkdir ${configure.dir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # disable silent rules
 build.args-append       V=1
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -205,6 +224,13 @@ platform darwin 8 {
</span>     build.cmd ${prefix}/bin/gmake
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+platform darwin {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${os.major} < 15} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_build-append    port:coreutils
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        patchfiles-append       patch-Makefile-legacy-mktemp-to-coreutils.diff
</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;'>+
</span> livecheck.type  regex
 livecheck.url   [lindex ${master_sites} 0]
 livecheck.regex ${name}-(\\d+(?:\\.\\d+)*)(?:-\\d+)*\\.tar
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/qemu/files/patch-Makefile-legacy-mktemp-to-coreutils.diff b/emulators/qemu/files/patch-Makefile-legacy-mktemp-to-coreutils.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..2031f84
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/qemu/files/patch-Makefile-legacy-mktemp-to-coreutils.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/Makefile     2019-08-15 21:01:42.000000000 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/Makefile     2019-11-22 13:38:08.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -879,7 +879,7 @@ ifdef INSTALL_BLOBS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ifneq ($(DESCS),)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/firmware"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  set -e; tmpf=$$(mktemp); trap 'rm -f -- "$$tmpf"' EXIT; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  set -e; tmpf=$$(gmktemp); trap 'rm -f -- "$$tmpf"' EXIT; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   for x in $(DESCS); do \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           sed -e 's,@DATADIR@,$(qemu_datadir),' \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   "$(SRC_PATH)/pc-bios/descriptors/$$x" > "$$tmpf"; \
</span></pre><pre style='margin:0'>

</pre>