app-emulation/qemu: Dynamically create binfmt.d/qemu.conf
authorMatthias Maier <tamiko@gentoo.org>
Thu, 23 Feb 2017 19:41:13 +0000 (13:41 -0600)
committerMatthias Maier <tamiko@gentoo.org>
Thu, 23 Feb 2017 20:24:10 +0000 (14:24 -0600)
This file is stored in /usr/share/qemu/binfmt.d/qemu.conf and can be
symlinked to /etc/binfmt.d

Package-Manager: Portage-2.3.3, Repoman-2.3.1

app-emulation/qemu/qemu-9999.ebuild

index e00707b446be6df6148029de2c43fac9bd35e2ca..3f97bbab457c879859b5fd1762d58d663fe57090 100644 (file)
@@ -563,12 +563,15 @@ qemu_python_install() {
        python_doscript "${S}/scripts/qmp/qemu-ga-client"
 }
 
-# Generate the /etc/init.d/qemu-binfmt script which registers the user handlers.
+# Generate binfmt support files.
+#   - /etc/init.d/qemu-binfmt script which registers the user handlers (openrc)
+#   - /usr/share/qemu/binfmt.d/qemu.conf (for use with systemd-binfmt)
 generate_initd() {
        local out="${T}/qemu-binfmt"
+       local out_systemd="${T}/qemu.conf"
        local d="${T}/binfmt.d"
 
-       einfo "Generating qemu init.d script"
+       einfo "Generating qemu binfmt scripts and configuration files"
 
        # Generate the debian fragments first.
        mkdir -p "${d}"
@@ -604,6 +607,9 @@ generate_initd() {
                echo ':${package}:M::${magic}:${mask}:${interpreter}:'"\${QEMU_BINFMT_FLAGS}" >/proc/sys/fs/binfmt_misc/register
        fi
 EOF
+
+               echo ":${package}:M::${magic}:${mask}:${interpreter}:OC" >>"${out_systemd}"
+
        done
        cat "${FILESDIR}"/qemu-binfmt.initd.tail >>"${out}" || die
 }
@@ -616,6 +622,10 @@ src_install() {
                # Install binfmt handler init script for user targets.
                generate_initd
                doinitd "${T}/qemu-binfmt"
+
+               # Install binfmt/qemu.conf.
+               insinto "/usr/share/qemu/binfmt.d"
+               doins "${T}/qemu.conf"
        fi
 
        if [[ -n ${softmmu_targets} ]]; then