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