[libvirt] question about libvirt.spec

While installing a libvirt-daemon package build from a slightly modified upstream spec file (e.g. fedora and rhel replaced with suse_version and sles_version), I noticed warnings such as "warning: user qemu does not exist - using root". %files of libvirt-daemon has several hypervisor-specific files and directories, e.g. %dir %attr(0750, %{qemu_user}, %{qemu_group}) ... but afaict libvirt-daemon has no dependency on a package that creates the qemu user:group (e.g. qemu or qemu-kvm). I thought about moving hypervisor-specific files to the libvirt-daemon-driver-<hypervisor> packages, but have a hunch they are in the libvirt-daemon package for a reason I'm not considering. Should these files and directories be moved to their respective libvirt-daemon-driver-<hypervisor> packages, making libvirt-daemon more hypervisor-neutral? Regards, Jim

On 12/03/2013 01:40 PM, Jim Fehlig wrote:
While installing a libvirt-daemon package build from a slightly modified upstream spec file (e.g. fedora and rhel replaced with suse_version and sles_version), I noticed warnings such as "warning: user qemu does not exist - using root".
%files of libvirt-daemon has several hypervisor-specific files and directories, e.g.
%dir %attr(0750, %{qemu_user}, %{qemu_group}) ...
but afaict libvirt-daemon has no dependency on a package that creates the qemu user:group (e.g. qemu or qemu-kvm).
libvirt-daemon itself creates the qemu user on Fedora: %if %{with_libvirtd} %pre daemon %if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 # We want soft static allocation of well-known ids, as disk images # are commonly shared across NFS mounts by id rather than name; see # https://fedoraproject.org/wiki/Packaging:UsersAndGroups getent group kvm >/dev/null || groupadd -f -g 36 -r kvm getent group qemu >/dev/null || groupadd -f -g 107 -r qemu if ! getent passwd qemu >/dev/null; then if ! getent passwd 107 >/dev/null; then useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin -c "qemu user" qemu else useradd -r -g qemu -G kvm -d / -s /sbin/nologin -c "qemu user" qemu fi fi exit 0 %endif
I thought about moving hypervisor-specific files to the libvirt-daemon-driver-<hypervisor> packages, but have a hunch they are in the libvirt-daemon package for a reason I'm not considering. Should these files and directories be moved to their respective libvirt-daemon-driver-<hypervisor> packages, making libvirt-daemon more hypervisor-neutral?
That sounds like an independently useful suggestion regardless of how you resolve the user creation issue - we've already had recent patches to reduce the dependencies of libvirt-daemon by pushing Requires: lines into the respective hypervisor packages. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

Eric Blake wrote:
On 12/03/2013 01:40 PM, Jim Fehlig wrote:
While installing a libvirt-daemon package build from a slightly modified upstream spec file (e.g. fedora and rhel replaced with suse_version and sles_version), I noticed warnings such as "warning: user qemu does not exist - using root".
%files of libvirt-daemon has several hypervisor-specific files and directories, e.g.
%dir %attr(0750, %{qemu_user}, %{qemu_group}) ...
but afaict libvirt-daemon has no dependency on a package that creates the qemu user:group (e.g. qemu or qemu-kvm).
libvirt-daemon itself creates the qemu user on Fedora:
%if %{with_libvirtd} %pre daemon %if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 # We want soft static allocation of well-known ids, as disk images # are commonly shared across NFS mounts by id rather than name; see # https://fedoraproject.org/wiki/Packaging:UsersAndGroups getent group kvm >/dev/null || groupadd -f -g 36 -r kvm getent group qemu >/dev/null || groupadd -f -g 107 -r qemu if ! getent passwd qemu >/dev/null; then if ! getent passwd 107 >/dev/null; then useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin -c "qemu user" qemu else useradd -r -g qemu -G kvm -d / -s /sbin/nologin -c "qemu user" qemu fi fi exit 0 %endif
Part of the "slight modification" is removing this hypervisor-specific code. Otherwise, if libvirt is built with xen and qemu support, installing libvirt-daemon-driver-libxl will result in creating a qemu user and qemu+kvm groups on a xen-only setup.
I thought about moving hypervisor-specific files to the libvirt-daemon-driver-<hypervisor> packages, but have a hunch they are in the libvirt-daemon package for a reason I'm not considering. Should these files and directories be moved to their respective libvirt-daemon-driver-<hypervisor> packages, making libvirt-daemon more hypervisor-neutral?
That sounds like an independently useful suggestion regardless of how you resolve the user creation issue - we've already had recent patches to reduce the dependencies of libvirt-daemon by pushing Requires: lines into the respective hypervisor packages.
I'll workup a patch for further discussion. Regards, Jim
participants (2)
-
Eric Blake
-
Jim Fehlig