diff options
Diffstat (limited to 'app-emulation/libvirt/files')
15 files changed, 1001 insertions, 0 deletions
diff --git a/app-emulation/libvirt/files/README.gentoo-r2 b/app-emulation/libvirt/files/README.gentoo-r2 new file mode 100644 index 000000000000..1c086c1eb5e9 --- /dev/null +++ b/app-emulation/libvirt/files/README.gentoo-r2 @@ -0,0 +1,58 @@ +Important: The openrc libvirtd init script is now broken up into two +separate services: libvirtd, that solely handles the daemon, and +libvirt-guests, that takes care of clients during shutdown/restart of the +host. In order to reenable client handling, edit /etc/conf.d/libvirt-guests +and enable the service and start it: + + $ rc-update add libvirt-guests + $ service libvirt-guests start + + +For the basic networking support (bridged and routed networks) you don't +need any extra software. For more complex network modes including but not +limited to NATed network, you can enable the 'virt-network' USE flag. It +will pull in required runtime dependencies + + +If you are using dnsmasq on your system, you will have to configure +/etc/dnsmasq.conf to enable the following settings: + + bind-interfaces + interface or except-interface + +Otherwise you might have issues with your existing DNS server. + + +For openrc users: + + Please use /etc/conf.d/libvirtd to control the '--listen' parameter for + libvirtd. + + Use /etc/init.d/libvirt-guests to manage clients on restart/shutdown of + the host. The default configuration will suspend and resume running kvm + guests with 'managedsave'. This behavior can be changed under + /etc/conf.d/libvirt-guests + + +For systemd users: + + Please use /etc/systemd/system/libvirtd.service.d/00gentoo.conf + to control the '--listen' parameter for libvirtd. + + The configuration for the 'libvirt-guests.service' is found under + /etc/libvirt/libvirt-guests.conf" + + +If you have built libvirt with policykit support, a new group "libvirt" has +been created. Simply add a user to the libvirt group in order to grant +administrative access to libvirtd. Alternatively, drop a custom policykit +rule into /etc/polkit-1/rules.d. + +If you have built libvirt without policykit support (USE=-policykit), you +must change the unix sock group and/or perms in /etc/libvirt/libvirtd.conf +in order to allow normal users to connect to libvirtd. + + +If libvirtd is built with USE=caps, libvirt will now start qemu/kvm VMs +with non-root privileges. Ensure any resources your VMs use are accessible +by qemu:qemu. diff --git a/app-emulation/libvirt/files/libvirt-1.2.16-fix_paths_in_libvirt-guests_sh.patch b/app-emulation/libvirt/files/libvirt-1.2.16-fix_paths_in_libvirt-guests_sh.patch new file mode 100644 index 000000000000..ddedb1f90cd3 --- /dev/null +++ b/app-emulation/libvirt/files/libvirt-1.2.16-fix_paths_in_libvirt-guests_sh.patch @@ -0,0 +1,19 @@ +diff --git a/tools/libvirt-guests.sh.in b/tools/libvirt-guests.sh.in +index 7f74b85..ea58119 100644 +--- a/tools/libvirt-guests.sh.in ++++ b/tools/libvirt-guests.sh.in +@@ -41,11 +41,11 @@ CONNECT_RETRIES=10 + RETRIES_SLEEP=1 + SYNC_TIME=0 + +-test -f "$sysconfdir"/sysconfig/libvirt-guests && +- . "$sysconfdir"/sysconfig/libvirt-guests ++test -f "$sysconfdir"/libvirt/libvirt-guests.conf && ++ . "$sysconfdir"/libvirt/libvirt-guests.conf + + LISTFILE="$localstatedir"/lib/libvirt/libvirt-guests +-VAR_SUBSYS_LIBVIRT_GUESTS="$localstatedir"/lock/subsys/libvirt-guests ++VAR_SUBSYS_LIBVIRT_GUESTS="$localstatedir"/lock/libvirt-guests + + RETVAL=0 + diff --git a/app-emulation/libvirt/files/libvirt-3.1.0-musl-fix-includes.patch b/app-emulation/libvirt/files/libvirt-3.1.0-musl-fix-includes.patch new file mode 100644 index 000000000000..70fb1686faa7 --- /dev/null +++ b/app-emulation/libvirt/files/libvirt-3.1.0-musl-fix-includes.patch @@ -0,0 +1,10 @@ +--- a/src/storage/storage_backend_fs.c ++++ b/src/storage/storage_backend_fs.c +@@ -30,6 +30,7 @@ + #include <dirent.h> + #include <errno.h> + #include <fcntl.h> ++#include <paths.h> + #include <unistd.h> + #include <string.h> + diff --git a/app-emulation/libvirt/files/libvirt-3.10.0-r2-fix_paths_for_apparmor.patch b/app-emulation/libvirt/files/libvirt-3.10.0-r2-fix_paths_for_apparmor.patch new file mode 100644 index 000000000000..f1360ae4e4e9 --- /dev/null +++ b/app-emulation/libvirt/files/libvirt-3.10.0-r2-fix_paths_for_apparmor.patch @@ -0,0 +1,77 @@ +diff --git a/examples/Makefile.am b/examples/Makefile.am +index ef2f79db3..d8cdb9b3f 100644 +--- a/examples/Makefile.am ++++ b/examples/Makefile.am +@@ -23,7 +23,7 @@ EXTRA_DIST = \ + apparmor/TEMPLATE.lxc \ + apparmor/libvirt-qemu \ + apparmor/libvirt-lxc \ +- apparmor/usr.lib.libvirt.virt-aa-helper \ ++ apparmor/usr.libexec.virt-aa-helper \ + apparmor/usr.sbin.libvirtd \ + lxcconvert/virt-lxc-convert \ + polkit/libvirt-acl.rules \ +@@ -70,7 +70,7 @@ admin_logging_SOURCES = admin/logging.c + if WITH_APPARMOR_PROFILES + apparmordir = $(sysconfdir)/apparmor.d/ + apparmor_DATA = \ +- apparmor/usr.lib.libvirt.virt-aa-helper \ ++ apparmor/usr.libexec.virt-aa-helper \ + apparmor/usr.sbin.libvirtd \ + $(NULL) + +diff --git a/examples/apparmor/libvirt-qemu b/examples/apparmor/libvirt-qemu +index d4fad85a1..0b22009e5 100644 +--- a/examples/apparmor/libvirt-qemu ++++ b/examples/apparmor/libvirt-qemu +@@ -86,6 +86,8 @@ + /usr/share/AAVMF/** r, + /usr/share/qemu-efi/** r, + /usr/share/slof/** r, ++ /usr/share/seavgabios/** r, ++ /usr/share/edk2-ovmf/** r, + + # access PKI infrastructure + /etc/pki/libvirt-vnc/** r, +diff --git a/examples/apparmor/usr.lib.libvirt.virt-aa-helper b/examples/apparmor/usr.libexec.virt-aa-helper +similarity index 92% +rename from examples/apparmor/usr.lib.libvirt.virt-aa-helper +rename to examples/apparmor/usr.libexec.virt-aa-helper +index bd6181d00..4086f140a 100644 +--- a/examples/apparmor/usr.lib.libvirt.virt-aa-helper ++++ b/examples/apparmor/usr.libexec.virt-aa-helper +@@ -1,7 +1,7 @@ + # Last Modified: Mon Apr 5 15:10:27 2010 + #include <tunables/global> + +-profile virt-aa-helper /usr/{lib,lib64}/libvirt/virt-aa-helper { ++profile virt-aa-helper /usr/libexec/virt-aa-helper { + #include <abstractions/base> + + # needed for searching directories +@@ -32,7 +32,7 @@ profile virt-aa-helper /usr/{lib,lib64}/libvirt/virt-aa-helper { + deny /dev/mapper/ r, + deny /dev/mapper/* r, + +- /usr/{lib,lib64}/libvirt/virt-aa-helper mr, ++ /usr/libexec/virt-aa-helper mr, + /{usr/,}sbin/apparmor_parser Ux, + + /etc/apparmor.d/libvirt/* r, +diff --git a/examples/apparmor/usr.sbin.libvirtd b/examples/apparmor/usr.sbin.libvirtd +index 8d61d154e..656a5595b 100644 +--- a/examples/apparmor/usr.sbin.libvirtd ++++ b/examples/apparmor/usr.sbin.libvirtd +@@ -84,8 +84,10 @@ + audit deny /sys/kernel/security/apparmor/.* rwxl, + /sys/kernel/security/apparmor/profiles r, + /usr/{lib,lib64}/libvirt/* PUxr, +- /usr/{lib,lib64}/libvirt/libvirt_parthelper ix, +- /usr/{lib,lib64}/libvirt/libvirt_iohelper ix, ++ /usr/libexec/virt-aa-helper PUxr, ++ /usr/libexec/libvirt_lxc PUxr, ++ /usr/libexec/libvirt_parthelper ix, ++ /usr/libexec/libvirt_iohelper ix, + /etc/libvirt/hooks/** rmix, + /etc/xen/scripts/** rmix, + diff --git a/app-emulation/libvirt/files/libvirt-4.2.0-do_not_use_sysconf.patch b/app-emulation/libvirt/files/libvirt-4.2.0-do_not_use_sysconf.patch new file mode 100644 index 000000000000..796e86000963 --- /dev/null +++ b/app-emulation/libvirt/files/libvirt-4.2.0-do_not_use_sysconf.patch @@ -0,0 +1,196 @@ +diff --git i/src/Makefile.am w/src/Makefile.am +index 8b1e4c8a4e..3cfee8589b 100644 +--- i/src/Makefile.am ++++ w/src/Makefile.am +@@ -756,23 +756,6 @@ endif WITH_SETUID_RPC_CLIENT + + EXTRA_DIST += $(SYSCONF_FILES) + +-install-sysconfig: +- $(MKDIR_P) $(DESTDIR)$(sysconfdir)/sysconfig +- for f in $(SYSCONF_FILES:%.sysconf=%) ; \ +- do \ +- tgt=`basename $$f`; \ +- $(INSTALL_SCRIPT) $(srcdir)/$$f.sysconf \ +- $(DESTDIR)$(sysconfdir)/sysconfig/$$tgt; \ +- done +- +-uninstall-sysconfig: +- for f in $(SYSCONF_FILES:%.sysconf=%) ; \ +- do \ +- tgt=`basename $$f`; \ +- rm -f $(DESTDIR)$(sysconfdir)/sysconfig/$$tgt; \ +- done +- rmdir $(DESTDIR)$(sysconfdir)/sysconfig || : +- + SYSVINIT_FILES_IN += \ + locking/virtlockd.init.in \ + $(NULL) +@@ -813,14 +796,14 @@ uninstall-logrotate: + endif ! WITH_LIBVIRTD + + if LIBVIRT_INIT_SCRIPT_RED_HAT +-install-init:: $(SYSVINIT_FILES) install-sysconfig ++install-init:: $(SYSVINIT_FILES) + $(MKDIR_P) $(DESTDIR)$(sysconfdir)/rc.d/init.d + for f in $(SYSVINIT_FILES:%.init=%) ; \ + do \ + $(INSTALL_SCRIPT) $$f.init $(DESTDIR)$(sysconfdir)/rc.d/init.d/$$f; \ + done + +-uninstall-init:: uninstall-sysconfig ++uninstall-init:: + rm -f $(SYSVINIT_FILES:%.init=$(DESTDIR)$(sysconfdir)/rc.d/init.d/%) + rmdir $(DESTDIR)$(sysconfdir)/rc.d/init.d || : + +@@ -858,14 +841,14 @@ SYSTEMD_UNIT_FILES = $(notdir $(SYSTEMD_UNIT_FILES_IN:%.in=%)) + BUILT_SOURCES += $(SYSTEMD_UNIT_FILES) + DISTCLEANFILES += $(SYSTEMD_UNIT_FILES) + +-install-systemd: $(SYSTEMD_UNIT_FILES) install-sysconfig ++install-systemd: $(SYSTEMD_UNIT_FILES) + $(MKDIR_P) $(DESTDIR)$(SYSTEMD_UNIT_DIR) + for f in $(SYSTEMD_UNIT_FILES); \ + do \ + $(INSTALL_DATA) $$f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/ ; \ + done + +-uninstall-systemd: uninstall-sysconfig ++uninstall-systemd: + rm -f $(SYSTEMD_UNIT_FILES:%=$(DESTDIR)$(SYSTEMD_UNIT_DIR)/%) + rmdir $(DESTDIR)$(SYSTEMD_UNIT_DIR) || : + else ! LIBVIRT_INIT_SCRIPT_SYSTEMD +@@ -883,7 +866,7 @@ EXTRA_DIST += $(UPSTART_FILES) + if WITH_LIBVIRTD + if LIBVIRT_INIT_SCRIPT_UPSTART + +-install-upstart: install-sysconfig ++install-upstart: + $(MKDIR_P) $(DESTDIR)$(sysconfdir)/event.d + for f in $(UPSTART_FILES:%.upstart=%); \ + do \ +@@ -892,7 +875,7 @@ install-upstart: install-sysconfig + $(DESTDIR)$(sysconfdir)/event.d/$$tgt ; \ + done + +-uninstall-upstart: uninstall-sysconfig ++uninstall-upstart: + for f in $(UPSTART_FILES:%.upstart=%); \ + do \ + tgt=`basename $$f` ; \ +diff --git i/src/locking/virtlockd.service.in w/src/locking/virtlockd.service.in +index 3c9d587032..2449b201d9 100644 +--- i/src/locking/virtlockd.service.in ++++ w/src/locking/virtlockd.service.in +@@ -7,8 +7,7 @@ Documentation=man:virtlockd(8) + Documentation=https://libvirt.org + + [Service] +-EnvironmentFile=-/etc/sysconfig/virtlockd +-ExecStart=@sbindir@/virtlockd $VIRTLOCKD_ARGS ++ExecStart=@sbindir@/virtlockd + ExecReload=/bin/kill -USR1 $MAINPID + # Loosing the locks is a really bad thing that will + # cause the machine to be fenced (rebooted), so make +diff --git i/src/logging/virtlogd.service.in w/src/logging/virtlogd.service.in +index 3d9ae36150..43736191d5 100644 +--- i/src/logging/virtlogd.service.in ++++ w/src/logging/virtlogd.service.in +@@ -7,8 +7,7 @@ Documentation=man:virtlogd(8) + Documentation=https://libvirt.org + + [Service] +-EnvironmentFile=-/etc/sysconfig/virtlogd +-ExecStart=@sbindir@/virtlogd $VIRTLOGD_ARGS ++ExecStart=@sbindir@/virtlogd + ExecReload=/bin/kill -USR1 $MAINPID + # Loosing the logs is a really bad thing that will + # cause the machine to be fenced (rebooted), so make +diff --git i/src/remote/libvirtd.service.in w/src/remote/libvirtd.service.in +index 769702ea75..1830c72e3f 100644 +--- i/src/remote/libvirtd.service.in ++++ w/src/remote/libvirtd.service.in +@@ -21,8 +21,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify +-EnvironmentFile=-/etc/sysconfig/libvirtd +-ExecStart=@sbindir@/libvirtd $LIBVIRTD_ARGS ++ExecStart=@sbindir@/libvirtd + ExecReload=/bin/kill -HUP $MAINPID + KillMode=process + Restart=on-failure +diff --git i/tools/Makefile.am w/tools/Makefile.am +index 1452d984a0..cef08741cb 100644 +--- i/tools/Makefile.am ++++ w/tools/Makefile.am +@@ -336,15 +336,6 @@ install-data-local: install-init install-systemd install-nss \ + uninstall-local: uninstall-init uninstall-systemd uninstall-nss \ + uninstall-bash-completion + +-install-sysconfig: +- $(MKDIR_P) $(DESTDIR)$(sysconfdir)/sysconfig +- $(INSTALL_DATA) $(srcdir)/libvirt-guests.sysconf \ +- $(DESTDIR)$(sysconfdir)/sysconfig/libvirt-guests +- +-uninstall-sysconfig: +- rm -f $(DESTDIR)$(sysconfdir)/sysconfig/libvirt-guests +- rmdir $(DESTDIR)$(sysconfdir)/sysconfig ||: +- + EXTRA_DIST += libvirt-guests.sh.in libvirt-guests.init.in + + install-initscript: libvirt-guests.init +@@ -359,8 +350,8 @@ uninstall-initscript: + + if LIBVIRT_INIT_SCRIPT_RED_HAT + BUILT_SOURCES += libvirt-guests.init +-install-init: install-sysconfig install-initscript +-uninstall-init: uninstall-sysconfig uninstall-initscript ++install-init: install-initscript ++uninstall-init: uninstall-initscript + else ! LIBVIRT_INIT_SCRIPT_RED_HAT + install-init: + uninstall-init: +@@ -391,12 +382,12 @@ EXTRA_DIST += libvirt-guests.service.in + SYSTEMD_UNIT_DIR = $(prefix)/lib/systemd/system + + if LIBVIRT_INIT_SCRIPT_SYSTEMD +-install-systemd: libvirt-guests.service install-sysconfig libvirt-guests.sh ++install-systemd: libvirt-guests.service libvirt-guests.sh + $(MKDIR_P) $(DESTDIR)$(SYSTEMD_UNIT_DIR) + $(INSTALL_DATA) libvirt-guests.service \ + $(DESTDIR)$(SYSTEMD_UNIT_DIR)/libvirt-guests.service + +-uninstall-systemd: uninstall-sysconfig ++uninstall-systemd: + rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/libvirt-guests.service + rmdir $(DESTDIR)$(SYSTEMD_UNIT_DIR) ||: + +diff --git i/tools/libvirt-guests.service.in w/tools/libvirt-guests.service.in +index 491ca62138..f0f417bffb 100644 +--- i/tools/libvirt-guests.service.in ++++ w/tools/libvirt-guests.service.in +@@ -10,7 +10,7 @@ Documentation=man:libvirtd(8) + Documentation=https://libvirt.org + + [Service] +-EnvironmentFile=-/etc/sysconfig/libvirt-guests ++EnvironmentFile=-/etc/libvirt/libvirt-guests.conf + # Hack just call traditional service until we factor + # out the code + ExecStart=@libexecdir@/libvirt-guests.sh start +diff --git i/tools/libvirt-guests.sysconf w/tools/libvirt-guests.sysconf +index 08204ca039..2da172b022 100644 +--- i/tools/libvirt-guests.sysconf ++++ w/tools/libvirt-guests.sysconf +@@ -1,3 +1,10 @@ ++# ++# Warning: This configuration file is only sourced by the systemd ++# libvirt-guests.service unit. The coresponding openrc facility is in ++# /etc/init.d/libvirtd and /etc/conf.d/libvirtd ++# ++ ++ + # URIs to check for running guests + # example: URIS='default xen:/// vbox+tcp://host/system lxc:///' + #URIS=default diff --git a/app-emulation/libvirt/files/libvirt-4.5.0-do_not_use_sysconf.patch b/app-emulation/libvirt/files/libvirt-4.5.0-do_not_use_sysconf.patch new file mode 100644 index 000000000000..3e430cba1d2f --- /dev/null +++ b/app-emulation/libvirt/files/libvirt-4.5.0-do_not_use_sysconf.patch @@ -0,0 +1,216 @@ +From a365e2d5b4af1ab2be743773412fe265579a9a0b Mon Sep 17 00:00:00 2001 +Message-Id: <a365e2d5b4af1ab2be743773412fe265579a9a0b.1529989118.git.mprivozn@redhat.com> +From: Michal Privoznik <mprivozn@redhat.com> +Date: Tue, 26 Jun 2018 06:51:06 +0200 +Subject: [PATCH] gentoo: do not use sysconf + +Signed-off-by: Michal Privoznik <mprivozn@redhat.com> +--- + src/Makefile.am | 29 ++++++----------------------- + src/locking/virtlockd.service.in | 3 +-- + src/logging/virtlogd.service.in | 3 +-- + src/remote/libvirtd.service.in | 3 +-- + tools/Makefile.am | 17 ++++------------- + tools/libvirt-guests.service.in | 2 +- + tools/libvirt-guests.sysconf | 7 +++++++ + 7 files changed, 21 insertions(+), 43 deletions(-) + +diff --git a/src/Makefile.am b/src/Makefile.am +index db8c8ebd1a..63d7a9ca46 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -757,23 +757,6 @@ endif WITH_SETUID_RPC_CLIENT + + EXTRA_DIST += $(SYSCONF_FILES) + +-install-sysconfig: +- $(MKDIR_P) $(DESTDIR)$(sysconfdir)/sysconfig +- for f in $(SYSCONF_FILES:%.sysconf=%) ; \ +- do \ +- tgt=`basename $$f`; \ +- $(INSTALL_DATA) $(srcdir)/$$f.sysconf \ +- $(DESTDIR)$(sysconfdir)/sysconfig/$$tgt; \ +- done +- +-uninstall-sysconfig: +- for f in $(SYSCONF_FILES:%.sysconf=%) ; \ +- do \ +- tgt=`basename $$f`; \ +- rm -f $(DESTDIR)$(sysconfdir)/sysconfig/$$tgt; \ +- done +- rmdir $(DESTDIR)$(sysconfdir)/sysconfig || : +- + SYSVINIT_FILES_IN += \ + locking/virtlockd.init.in \ + $(NULL) +@@ -814,14 +797,14 @@ uninstall-logrotate: + endif ! WITH_LIBVIRTD + + if LIBVIRT_INIT_SCRIPT_RED_HAT +-install-init:: $(SYSVINIT_FILES) install-sysconfig ++install-init:: $(SYSVINIT_FILES) + $(MKDIR_P) $(DESTDIR)$(sysconfdir)/rc.d/init.d + for f in $(SYSVINIT_FILES:%.init=%) ; \ + do \ + $(INSTALL_SCRIPT) $$f.init $(DESTDIR)$(sysconfdir)/rc.d/init.d/$$f; \ + done + +-uninstall-init:: uninstall-sysconfig ++uninstall-init:: + rm -f $(SYSVINIT_FILES:%.init=$(DESTDIR)$(sysconfdir)/rc.d/init.d/%) + rmdir $(DESTDIR)$(sysconfdir)/rc.d/init.d || : + +@@ -859,14 +842,14 @@ SYSTEMD_UNIT_FILES = $(notdir $(SYSTEMD_UNIT_FILES_IN:%.in=%)) + BUILT_SOURCES += $(SYSTEMD_UNIT_FILES) + DISTCLEANFILES += $(SYSTEMD_UNIT_FILES) + +-install-systemd: $(SYSTEMD_UNIT_FILES) install-sysconfig ++install-systemd: $(SYSTEMD_UNIT_FILES) + $(MKDIR_P) $(DESTDIR)$(SYSTEMD_UNIT_DIR) + for f in $(SYSTEMD_UNIT_FILES); \ + do \ + $(INSTALL_DATA) $$f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/ ; \ + done + +-uninstall-systemd: uninstall-sysconfig ++uninstall-systemd: + rm -f $(SYSTEMD_UNIT_FILES:%=$(DESTDIR)$(SYSTEMD_UNIT_DIR)/%) + rmdir $(DESTDIR)$(SYSTEMD_UNIT_DIR) || : + else ! LIBVIRT_INIT_SCRIPT_SYSTEMD +@@ -884,7 +867,7 @@ EXTRA_DIST += $(UPSTART_FILES) + if WITH_LIBVIRTD + if LIBVIRT_INIT_SCRIPT_UPSTART + +-install-upstart: install-sysconfig ++install-upstart: + $(MKDIR_P) $(DESTDIR)$(sysconfdir)/event.d + for f in $(UPSTART_FILES:%.upstart=%); \ + do \ +@@ -893,7 +876,7 @@ install-upstart: install-sysconfig + $(DESTDIR)$(sysconfdir)/event.d/$$tgt ; \ + done + +-uninstall-upstart: uninstall-sysconfig ++uninstall-upstart: + for f in $(UPSTART_FILES:%.upstart=%); \ + do \ + tgt=`basename $$f` ; \ +diff --git a/src/locking/virtlockd.service.in b/src/locking/virtlockd.service.in +index 3c9d587032..2449b201d9 100644 +--- a/src/locking/virtlockd.service.in ++++ b/src/locking/virtlockd.service.in +@@ -7,8 +7,7 @@ Documentation=man:virtlockd(8) + Documentation=https://libvirt.org + + [Service] +-EnvironmentFile=-/etc/sysconfig/virtlockd +-ExecStart=@sbindir@/virtlockd $VIRTLOCKD_ARGS ++ExecStart=@sbindir@/virtlockd + ExecReload=/bin/kill -USR1 $MAINPID + # Loosing the locks is a really bad thing that will + # cause the machine to be fenced (rebooted), so make +diff --git a/src/logging/virtlogd.service.in b/src/logging/virtlogd.service.in +index 3d9ae36150..43736191d5 100644 +--- a/src/logging/virtlogd.service.in ++++ b/src/logging/virtlogd.service.in +@@ -7,8 +7,7 @@ Documentation=man:virtlogd(8) + Documentation=https://libvirt.org + + [Service] +-EnvironmentFile=-/etc/sysconfig/virtlogd +-ExecStart=@sbindir@/virtlogd $VIRTLOGD_ARGS ++ExecStart=@sbindir@/virtlogd + ExecReload=/bin/kill -USR1 $MAINPID + # Loosing the logs is a really bad thing that will + # cause the machine to be fenced (rebooted), so make +diff --git a/src/remote/libvirtd.service.in b/src/remote/libvirtd.service.in +index 7f689e08a8..239beeced9 100644 +--- a/src/remote/libvirtd.service.in ++++ b/src/remote/libvirtd.service.in +@@ -22,8 +22,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify +-EnvironmentFile=-/etc/sysconfig/libvirtd +-ExecStart=@sbindir@/libvirtd $LIBVIRTD_ARGS ++ExecStart=@sbindir@/libvirtd + ExecReload=/bin/kill -HUP $MAINPID + KillMode=process + Restart=on-failure +diff --git a/tools/Makefile.am b/tools/Makefile.am +index 1452d984a0..cef08741cb 100644 +--- a/tools/Makefile.am ++++ b/tools/Makefile.am +@@ -336,15 +336,6 @@ install-data-local: install-init install-systemd install-nss \ + uninstall-local: uninstall-init uninstall-systemd uninstall-nss \ + uninstall-bash-completion + +-install-sysconfig: +- $(MKDIR_P) $(DESTDIR)$(sysconfdir)/sysconfig +- $(INSTALL_DATA) $(srcdir)/libvirt-guests.sysconf \ +- $(DESTDIR)$(sysconfdir)/sysconfig/libvirt-guests +- +-uninstall-sysconfig: +- rm -f $(DESTDIR)$(sysconfdir)/sysconfig/libvirt-guests +- rmdir $(DESTDIR)$(sysconfdir)/sysconfig ||: +- + EXTRA_DIST += libvirt-guests.sh.in libvirt-guests.init.in + + install-initscript: libvirt-guests.init +@@ -359,8 +350,8 @@ uninstall-initscript: + + if LIBVIRT_INIT_SCRIPT_RED_HAT + BUILT_SOURCES += libvirt-guests.init +-install-init: install-sysconfig install-initscript +-uninstall-init: uninstall-sysconfig uninstall-initscript ++install-init: install-initscript ++uninstall-init: uninstall-initscript + else ! LIBVIRT_INIT_SCRIPT_RED_HAT + install-init: + uninstall-init: +@@ -391,12 +382,12 @@ EXTRA_DIST += libvirt-guests.service.in + SYSTEMD_UNIT_DIR = $(prefix)/lib/systemd/system + + if LIBVIRT_INIT_SCRIPT_SYSTEMD +-install-systemd: libvirt-guests.service install-sysconfig libvirt-guests.sh ++install-systemd: libvirt-guests.service libvirt-guests.sh + $(MKDIR_P) $(DESTDIR)$(SYSTEMD_UNIT_DIR) + $(INSTALL_DATA) libvirt-guests.service \ + $(DESTDIR)$(SYSTEMD_UNIT_DIR)/libvirt-guests.service + +-uninstall-systemd: uninstall-sysconfig ++uninstall-systemd: + rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/libvirt-guests.service + rmdir $(DESTDIR)$(SYSTEMD_UNIT_DIR) ||: + +diff --git a/tools/libvirt-guests.service.in b/tools/libvirt-guests.service.in +index 491ca62138..f0f417bffb 100644 +--- a/tools/libvirt-guests.service.in ++++ b/tools/libvirt-guests.service.in +@@ -10,7 +10,7 @@ Documentation=man:libvirtd(8) + Documentation=https://libvirt.org + + [Service] +-EnvironmentFile=-/etc/sysconfig/libvirt-guests ++EnvironmentFile=-/etc/libvirt/libvirt-guests.conf + # Hack just call traditional service until we factor + # out the code + ExecStart=@libexecdir@/libvirt-guests.sh start +diff --git a/tools/libvirt-guests.sysconf b/tools/libvirt-guests.sysconf +index 669b046507..45b0b9ea46 100644 +--- a/tools/libvirt-guests.sysconf ++++ b/tools/libvirt-guests.sysconf +@@ -1,3 +1,10 @@ ++# ++# Warning: This configuration file is only sourced by the systemd ++# libvirt-guests.service unit. The coresponding openrc facility is in ++# /etc/init.d/libvirtd and /etc/conf.d/libvirtd ++# ++ ++ + # URIs to check for running guests + # example: URIS='default xen:///system vbox+tcp://host/system lxc:///system' + #URIS=default +-- +2.16.4 + diff --git a/app-emulation/libvirt/files/libvirt-4.5.0-fix_typo_in_apparmor_rule.patch b/app-emulation/libvirt/files/libvirt-4.5.0-fix_typo_in_apparmor_rule.patch new file mode 100644 index 000000000000..4d1bfaf5e3b5 --- /dev/null +++ b/app-emulation/libvirt/files/libvirt-4.5.0-fix_typo_in_apparmor_rule.patch @@ -0,0 +1,13 @@ +diff --git a/examples/apparmor/usr.libexec.virt-aa-helper b/examples/apparmor/usr.libexec.virt-aa-helper +index d21723f..99ab4ea 100644 +--- a/examples/apparmor/usr.libexec.virt-aa-helper ++++ b/examples/apparmor/usr.libexec.virt-aa-helper +@@ -50,7 +50,7 @@ profile virt-aa-helper /usr/libexec/virt-aa-helper { + @{HOME}/** r, + /var/lib/libvirt/images/ r, + /var/lib/libvirt/images/** r, +- /var/lib/nova/instances/_base/* r ++ /var/lib/nova/instances/_base/* r, + /{media,mnt,opt,srv}/** r, + # For virt-sandbox + /{,var/}run/libvirt/**/[sv]d[a-z] r, diff --git a/app-emulation/libvirt/files/libvirt-guests.confd b/app-emulation/libvirt/files/libvirt-guests.confd new file mode 100644 index 000000000000..ed2ce58064a8 --- /dev/null +++ b/app-emulation/libvirt/files/libvirt-guests.confd @@ -0,0 +1,68 @@ +# /etc/conf.d/libvirtd + +# LIBVIRT_URIS +# space separated list of libvirt URIs to communicate with to start/stop guests +# Valid values are anything that can be passed to 'virsh connect' + +#LIBVIRT_URIS="qemu:///system" + + +# LIBVIRT_SHUTDOWN +# Valid options: +# * managedsave - Performs a state save external to the VM (for hypervisors +# supporting this operation). qemu-kvm will stop the CPU +# and save off all state to a separate file. When the +# machine is started again, it will resume like nothing +# ever happened. This is guarenteed to always successfully +# stop your machine and restart it. +# +# * shutdown - Sends an ACPI shutdown (think of this as a request to +# your guest to shutdown). There is no way to distinguish +# between guests that are ignoring the shutdown request or +# are stuck or are taking a long time to shutdown. We will +# wait LIBVIRT_MAXWAIT seconds before yanking the power +# out. +# +# * destroy - Immediately stop all running guests. Use with caution as +# this can leave the guest in a corrupted state and might +# lead to data loss. +# + +#LIBVIRT_SHUTDOWN="managedsave" + + +# LIBVIRT_MAXWAIT +# Timeout in seconds until stopping a guest and "pulling the plug" on the +# guest +# Valid values are any integer over 0 + +#LIBVIRT_MAXWAIT="500" + + +# LIBVIRT_START +# If this value is set to 'no', then guests and networks that were shutdown +# by this script when it was stopped will not be started when it is started +# back up. +# Valid values are yes or no + +#LIBVIRT_START="yes" + + +# LIBVIRT_IGNORE_AUTOSTART +# If the VM is marked for autostart in its XML configuration then we won't +# save its start when the init script is stopped. The result is that when +# the init script starts back up, no attempt will be made to start the VM or +# confirm it is started. +# Valid values are yes or no + +#LIBVIRT_IGNORE_AUTOSTART="no" + + +# LIBVIRT_NET_SHUTDOWN +# If libvirtd created networks for you (e.g. NATed networks) then this init +# script will shut them down for you if this is set to 'yes'. Otherwise, +# the networks will be left running. For this option to be useful you must +# have enabled the 'virt-network' USE flag and have had libvirt create a +# NATed network for you. Valid values: 'yes' or 'no' + +#LIBVIRT_NET_SHUTDOWN="yes" diff --git a/app-emulation/libvirt/files/libvirt-guests.init-r2 b/app-emulation/libvirt/files/libvirt-guests.init-r2 new file mode 100644 index 000000000000..845591899493 --- /dev/null +++ b/app-emulation/libvirt/files/libvirt-guests.init-r2 @@ -0,0 +1,235 @@ +#!/sbin/openrc-run + +description="Virtual Machine Management (libvirt) Guests" + +depend() { + use libvirtd +} + +# set the default to QEMU +[ -z "${LIBVIRT_URIS}" ] && LIBVIRT_URIS="qemu:///system" + +# default to suspending the VM via managedsave +case "${LIBVIRT_SHUTDOWN}" in + managedsave|shutdown|destroy) ;; + *) LIBVIRT_SHUTDOWN="managedsave" ;; +esac + +# default to 500 seconds +[ -z ${LIBVIRT_MAXWAIT} ] && LIBVIRT_MAXWAIT=500 + +gueststatefile="/var/lib/libvirt/libvirt-guests.state" +netstatefile="/var/lib/libvirt/libvirt-net.state" + +do_virsh() { + local hvuri=$1 + shift + + # if unset, default to qemu + [ -z ${hvuri} ] && hvuri="qemu:///system" + # if only qemu was supplied then correct the value + [ "xqemu" = x${hvuri} ] && hvuri="qemu:///system" + + # Silence errors because virsh always throws an error about + # not finding the hypervisor version when connecting to libvirtd + # lastly strip the blank line at the end + LC_ALL=C virsh -c ${hvuri} "$@" 2>/dev/null | head -n -1 +} + +libvirtd_dom_list() { + # Only work with domains by their UUIDs + local hvuri=$1 + shift + + do_virsh "${hvuri}" list --uuid $@ +} + +libvirtd_dom_count() { + local hvuri=$1 + shift + + libvirtd_dom_list "${hvuri}" $@ | wc -l +} + +libvirtd_net_list() { + # Only work with networks by their UUIDs + local hvuri=$1 + shift + + do_virsh "${hvuri}" net-list --uuid $@ +} + +libvirtd_net_count() { + local hvuri=$1 + shift + + libvirtd_net_list "${hvuri}" $@ | wc -l +} + +libvirtd_dom_stop() { + # stops all persistent or transient domains for a given URI + # $1 - uri + # $2 - persisent/transient + + local uri=$1 + local persist=$2 + local shutdown_type=${LIBVIRT_SHUTDOWN} + local counter=${LIBVIRT_MAXWAIT} + local dom_name= + local dom_as= + local dom_ids= + local uuid= + local dom_count= + + [ "${persist}" = "--transient" ] && shutdown_type="shutdown" + [ -n "${counter}" ] || counter=500 + + einfo " Shutting down domain(s) ..." + + # grab all persistent or transient domains running + dom_ids=$(libvirtd_dom_list ${uri} ${persist}) + + for uuid in ${dom_ids}; do + # Get the name + dom_name=$(do_virsh ${uri} domname ${uuid}) + einfo " ${dom_name}" + # Get autostart state + dom_as=$(do_virsh ${uri} dominfo ${uuid} | \ + awk '$1 == "Autostart:" { print $2 }') + + if [ "${persist}" = "--persistent" ]; then + # Save our running state only if LIBVIRT_IGNORE_AUTOSTART != yes + if [ "x${LIBVIRT_IGNORE_AUTOSTART}" = "xyes" ] && \ + [ ${dom_as} = "enabled" ]; then + : + else + echo "${uri} ${uuid}" >> ${gueststatefile} + fi + + fi + + # Now let's stop it + do_virsh "${uri}" ${shutdown_type} ${uuid} > /dev/null + + done + + dom_count="$(libvirtd_dom_count ${uri} ${persist})" + while [ ${dom_count} -gt 0 ] && [ ${counter} -gt 0 ] ; do + dom_count="$(libvirtd_dom_count ${uri} ${persist})" + sleep 1 + if [ "${shutdown_type}" = "shutdown" ]; then + counter=$((${counter} - 1)) + fi + printf "." + done + + if [ "${shutdown_type}" = "shutdown" ]; then + # grab all domains still running + dom_ids=$(libvirtd_dom_list ${uri} ${persist}) + for uuid in ${dom_ids}; do + dom_name=$(do_virsh ${uri} domname ${uuid}) + eerror " ${dom_name} forcibly stopped" + do_virsh "${uri}" destroy ${uuid} > /dev/null + done + fi +} + +libvirtd_net_stop() { + # stops all persistent or transient domains for a given URI + # $1 - uri + # $2 - persisent/transient + + local uri=$1 + local persist=$2 + local uuid= + local net_name= + + if [ "${LIBVIRT_NET_SHUTDOWN}" != "no" ]; then + + einfo " Shutting down network(s):" + for uuid in $(libvirtd_net_list ${uri} ${persist}); do + net_name=$(do_virsh ${uri} net-name ${uuid}) + einfo " ${net_name}" + + if [ "${persist}" = "--persistent" ]; then + # Save our running state + echo "${uri} ${uuid}" >> ${netstatefile} + + fi + + # Actually stop the network + do_virsh qemu net-destroy ${uuid} > /dev/null + done + + fi +} + +start() { + local uri= + local uuid= + local name= + + for uri in ${LIBVIRT_URIS}; do + do_virsh "${uri}" connect + if [ $? -ne 0 ]; then + eerror "Failed to connect to '${uri}'. Domains may not start." + fi + done + + [ ! -e "${netstatefile}" ] && touch "${netstatefile}" + [ ! -e "${gueststatefile}" ] && touch "${gueststatefile}" + + # if the user didn't want to start any guests up then respect their wish + [ "x${LIBVIRT_START}" = "xno" ] && return 0 + + # start networks + ebegin "Starting libvirt networks" + while read -r uri uuid + do + # ignore trash + [ -z "${uri}" ] || [ -z "${uuid}" ] && continue + + name=$(do_virsh "${uri}" net-name ${uuid}) + einfo " ${name}" + do_virsh "${uri}" net-start ${uuid} > /dev/null + done <"${netstatefile}" + eend 0 + + # start domains + ebegin "Starting libvirt domains" + while read -r uri uuid + do + # ignore trash + [ -z "${uri}" ] || [ -z "${uuid}" ] && continue + + name=$(do_virsh "${uri}" domname ${uuid}) + einfo " ${name}" + do_virsh "${uri}" start ${uuid} > /dev/null + done <"${gueststatefile}" + eend 0 +} + +stop() { + local counter= + local dom_name= + local net_name= + local dom_ids= + local uuid= + local dom_count= + + rm -f "${gueststatefile}" + [ $? -ne 0 ] && eerror "Unable to save domain state" + rm -f "${netstatefile}" + [ $? -ne 0 ] && eerror "Unable to save net state" + + for uri in ${LIBVIRT_URIS}; do + einfo "Stopping libvirt domains and networks for ${uri}" + + libvirtd_dom_stop "${uri}" "--persistent" + libvirtd_dom_stop "${uri}" "--transient" + libvirtd_net_stop "${uri}" "--persistent" + libvirtd_net_stop "${uri}" "--transient" + + einfo "Done stopping domains and networks for ${uri}" + done +} diff --git a/app-emulation/libvirt/files/libvirtd.confd-r5 b/app-emulation/libvirt/files/libvirtd.confd-r5 new file mode 100644 index 000000000000..c326531d469f --- /dev/null +++ b/app-emulation/libvirt/files/libvirtd.confd-r5 @@ -0,0 +1,18 @@ +# /etc/conf.d/libvirtd + +# Startup dependency +# libvirtd typically requires all networks to be up and settled which +# is what rc_need="net" provides. However if you only use specific networks +# for libvirtd, you may override this. Or if you only use libvirtd locally. +rc_need="net" + +# The termination timeout (start-stop-daemon parameter "retry") ensures +# that the service will be terminated within a given time (25 + 5 seconds +# per default) when you are stopping the service. +#LIBVIRTD_TERMTIMEOUT="TERM/25/KILL/5" + +# LIBVIRTD_OPTS +# You may want to add '--listen' to have libvirtd listen for tcp/ip connections +# if you want to use libvirt for remote control +# Please consult 'libvirtd --help' for more options +#LIBVIRTD_OPTS="--listen" diff --git a/app-emulation/libvirt/files/libvirtd.init-r16 b/app-emulation/libvirt/files/libvirtd.init-r16 new file mode 100644 index 000000000000..be660e35a1d8 --- /dev/null +++ b/app-emulation/libvirt/files/libvirtd.init-r16 @@ -0,0 +1,34 @@ +#!/sbin/openrc-run +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +description="Virtual Machine Management daemon (libvirt)" + +LIBVIRTD_OPTS=${LIBVIRTD_OPTS:-"${LIBVIRTD_OPTS}"} +LIBVIRTD_TIMEOUT=${LIBVIRTD_TERMTIMEOUT:-"TERM/25/KILL/5"} + +command="/usr/sbin/libvirtd" +command_args="-d ${LIBVIRTD_OPTS}" +start_stop_daemon_args="--env KRB5_KTNAME=/etc/libvirt/krb5.tab" +pidfile="/var/run/libvirtd.pid" +retry="${LIBVIRTD_TERMTIMEOUT}" + +depend() { + need virtlogd + use dbus virtlockd + after ntp-client ntpd nfs nfsmount portmap rpc.statd iptables ip6tables ebtables corosync sanlock cgconfig xenconsoled + USE_FLAG_FIREWALLD + USE_FLAG_AVAHI + USE_FLAG_ISCSI + USE_FLAG_RBD +} + +start_pre() { + # Test configuration directories in /etc/libvirt/ to be either not + # present or a directory, i.e. not a regular file, bug #532892 + + checkpath --directory /etc/libvirt/lxc || return 1 + checkpath --directory /etc/libvirt/nwfilter || return 1 + checkpath --directory /etc/libvirt/qemu || return 1 + checkpath --directory /etc/libvirt/storage || return 1 +} diff --git a/app-emulation/libvirt/files/libvirtd.service.conf b/app-emulation/libvirt/files/libvirtd.service.conf new file mode 100644 index 000000000000..f08792260b72 --- /dev/null +++ b/app-emulation/libvirt/files/libvirtd.service.conf @@ -0,0 +1,10 @@ +# Uncomment the following three lines to start libvirtd with the '--listen' +# directive such that it listens for TCP/IP connections (honoring the +# listen_tls and listen_tcp settings in /etc/libvirt/libvirtd.conf). If +# libvirtd is started without the '--listen' parameter, network connection +# (for the daemon) is globally disabled: + +# [Service] +# ExecStart= +# ExecStart=/usr/sbin/libvirtd --listen + diff --git a/app-emulation/libvirt/files/libvirtd.tmpfiles.conf b/app-emulation/libvirt/files/libvirtd.tmpfiles.conf new file mode 100644 index 000000000000..c22c23dd469f --- /dev/null +++ b/app-emulation/libvirt/files/libvirtd.tmpfiles.conf @@ -0,0 +1 @@ +d /run/libvirt/lxc 0755 root root - diff --git a/app-emulation/libvirt/files/virtlockd.init-r1 b/app-emulation/libvirt/files/virtlockd.init-r1 new file mode 100644 index 000000000000..e7c3db2990e9 --- /dev/null +++ b/app-emulation/libvirt/files/virtlockd.init-r1 @@ -0,0 +1,23 @@ +#!/sbin/openrc-run +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +description="libvirt virtual machine lock manager" +command="/usr/sbin/virtlockd" +command_args="-d" +pidfile="/var/run/virtlockd.pid" + +extra_started_commands="reload" +description_reload="re-exec the daemon, while maintaining locks and clients" + + +depend() { + after ntp-client ntpd nfs nfsmount corosync +} + +reload() { + ebegin "re-exec() virtlockd" + + start-stop-daemon --signal SIGUSR1 \ + --exec "${command}" --pidfile "${pidfile}" +} diff --git a/app-emulation/libvirt/files/virtlogd.init-r1 b/app-emulation/libvirt/files/virtlogd.init-r1 new file mode 100644 index 000000000000..438070e344db --- /dev/null +++ b/app-emulation/libvirt/files/virtlogd.init-r1 @@ -0,0 +1,23 @@ +#!/sbin/openrc-run +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +description="libvirt virtual machine logging manager" +command="/usr/sbin/virtlogd" +command_args="-d" +pidfile="/var/run/virtlogd.pid" + +extra_started_commands="reload" +description_reload="re-exec the daemon, while maintaining open connections" + + +depend() { + after ntp-client ntpd nfs nfsmount corosync +} + +reload() { + ebegin "re-exec() virtlogd" + + start-stop-daemon --signal SIGUSR1 \ + --exec "${command}" --pidfile "${pidfile}" +} |