• E
    spec: make systemd_daemon usage configurable · dea81f40
    Eric Blake 提交于
    On Fedora 20, I added this to my '~/.rpmmacros':
    
    %_without_udev 1
    %_without_storage_mpath 1
    %_without_storage_disk 1
    
    and uninstalled systemd-devel (which also removed device-mapper-devel).
    Then I ran 'make rpm', and inspected the results:
    
    $ ldd ~/rpmbuild/BUILD/libvirt-1.2.2/daemon/.libs/libvirtd | grep syst
    $
    
    Then I reinstalled systemd-devel, where I now see:
    
    $ ldd ~/rpmbuild/BUILD/libvirt-1.2.2/daemon/.libs/libvirtd | grep syst
      libsystemd-daemon.so.0 => /lib64/libsystemd-daemon.so.0 (0x00007ffb858ba000)
    $
    
    Oops - the build is non-deterministic, where the final binary
    depends on my build environment.  The fix is to require
    systemd-devel in all situations where the code base uses it.
    Now ~/.rpmmacros can contain "%define _without_systemd_daemon 1"
    to explicitly disable use of the library, but the library is now
    a strict build requirement for normal builds; if systemd-devel
    is not installed, the user now gets an up-front warning:
    
    $ rpmbuild -ta libvirt-1.2.2.tar.gz
    error: Failed build dependencies:
           systemd-devel is needed by libvirt-1.2.2-1.fc20.x86_64
    
    * libvirt.spec.in (with_systemd_daemon): New variable.
    (BuildRequires): Require systemd-devel for more than just udev.
    (%configure): Make choice of systemd_daemon explicit.
    Signed-off-by: NEric Blake <eblake@redhat.com>
    dea81f40
libvirt.spec.in 87.8 KB