#!/usr/bin/make -f
DEB_RELEASE=$(shell dpkg-parsechangelog -SVersion | sed 's/[^-]\+-//')
DEB_BUILDDATE=$(shell dpkg-parsechangelog -SDate)
DEB_BUILDUSER=$(shell dpkg-parsechangelog -SMaintainer)
NULL=
ifneq (,$(findstring $(DEB_HOST_ARCH_OS), linux))
ifneq (,$(findstring $(DEB_HOST_ARCH), i386 amd64))
WITH_VBOX = --with-vbox
FAIL_CHECK = 1
else
WITH_VBOX = --without-vbox
endif
ifneq (,$(findstring $(DEB_HOST_ARCH), i386 amd64 armhf arm64))
MAKE_CHECK = 1
WITH_XEN = --with-xen
WITH_LIBXL = --with-libxl
XEN_ENABLED = 1
else
WITH_XEN = --without-xen
WITH_LIBXL = --without-libxl
endif
WITH_STORAGE_LVM = --with-storage-lvm
WITH_STORAGE_ISCSI = --with-storage-iscsi
WITH_STORAGE_DISK = --with-storage-disk
WITH_STORAGE_RBD = --with-storage-rbd
WITH_STORAGE_ZFS = --with-storage-zfs
WITH_STORAGE_GLUSTER = --with-storage-gluster
WITH_UDEV = --with-udev
WITH_CAPNG = --with-capng
WITH_MACVTAP = --with-macvtap
WITH_NETWORK = --with-network
WITH_OPENVZ = --with-openvz
WITH_NETCF = --with-netcf
WITH_SANLOCK = --with-sanlock
WITH_INIT_SCRIPT = --with-init-script=systemd
WITH_SYSTEMD = --with-systemd-daemon
WITH_FIREWALLD = --with-firewalld
WITH_AUDIT = --with-audit
WITH_SELINUX = --with-selinux --with-secdriver-selinux --with-selinux-mount=/sys/fs/selinux
WITH_APPARMOR = --with-apparmor --with-secdriver-apparmor --with-apparmor-profiles
WITH_NSS_PLUGIN = --with-nss-plugin
ifneq (,$(findstring $(DEB_HOST_ARCH), amd64 armel armhf i386 ia64 powerpc s390))
WITH_DTRACE = --with-dtrace
else
WITH_DTRACE = --without-dtrace
endif
ifneq (,$(findstring $(DEB_HOST_ARCH), amd64 arm64 i386 ia64 mips mipsel powerpc ppc64el))
WITH_NUMA = --with-numactl --with-numad
else
WITH_NUMA = --without-numactl --without-numad
endif
ifneq (,$(findstring $(DEB_HOST_ARCH), ia64))
WITH_LXC = --without-lxc
else
WITH_LXC = --with-lxc
endif
else
ifneq (,$(findstring $(DEB_HOST_ARCH_OS), linux))
WITH_STORAGE_ZFS = --with-storage-zfs
endif
WITH_STORAGE_LVM = --without-storage-lvm
WITH_STORAGE_ISCSI = --without-storage-iscsi
WITH_STORAGE_DISK = --without-storage-disk
WITH_STORAGE_RBD = --without-storage-rbd
WITH_UDEV = --without-udev
WITH_CAPNG = --without-capng
WITH_MACVTAP = --without-macvtap
WITH_NETWORK = --without-network
WITH_LXC = --without-lxc
WITH_NUMA = --without-numactl --without-numad
WITH_NETCF = --without-netcf
WITH_INIT_SCRIPT = --with-init-script=none
WITH_SYSTEMD = --without-systemd-daemon
WITH_FIREWALLD = --without-firewalld
WITH_AUDIT = --without-audit
WITH_SELINUX = --without-selinux
WITH_APPARMOR = --without-apparmor
WITH_NSS_PLUGIN = --without-nss-plugin
WITH_DTRACE = --without-dtrace
WITH_XEN = --without-xen
WITH_LIBXL = --without-libxl
WITH_VBOX = --without-vbox
endif
DEB_CONFIGURE_EXTRA_ARGS := \
--with-packager="$(DEB_BUILDUSER) $(DEB_BUILDDATE)" \
--with-packager-version="$(DEB_RELEASE)" \
--with-default-editor="sensible-editor" \
--disable-silent-rules \
--disable-rpath \
--with-qemu \
--with-qemu-user=libvirt-qemu \
--with-qemu-group=libvirt-qemu \
$(WITH_OPENVZ) \
--with-avahi \
--with-sasl \
--with-yajl \
--with-ssh2 \
--with-polkit \
$(WITH_UDEV) \
--with-storage-fs \
--with-storage-dir \
$(WITH_STORAGE_LVM) \
$(WITH_STORAGE_ISCSI) \
$(WITH_STORAGE_DISK) \
--without-storage-sheepdog \
$(WITH_STORAGE_RBD) \
$(WITH_STORAGE_GLUSTER) \
$(WITH_STORAGE_ZFS) \
$(WITH_INIT_SCRIPT) \
$(WITH_NUMA) \
$(WITH_SELINUX) \
$(WITH_APPARMOR) \
--with-esx \
--without-phyp \
$(WITH_CAPNG) \
--enable-debug \
$(WITH_MACVTAP) \
$(WITH_NETWORK) \
$(WITH_NETCF) \
$(WITH_XEN) \
$(WITH_LIBXL) \
$(WITH_VBOX) \
$(WITH_LXC) \
$(WITH_DTRACE) \
$(WITH_AUDIT) \
--without-hal \
$(WITH_FIREWALLD) \
--without-attr \
$(WITH_NSS_PLUGIN) \
--with-wireshark-dissector \
$(NULL)
LIBVIRT_SYSTEM_SERVICES = \
libvirt-guests.service \
virtlogd.socket \
virtlogd-admin.socket \
virtlogd.service \
virtlockd.socket \
virtlockd-admin.socket \
virtlockd.service \
$(NULL)
DEB_BUILDDIR := $(CURDIR)/debian/build
LOGROTATE = $(basename $(basename $(notdir $(wildcard src/remote/libvirtd*.logrotate.in))))
EXAMPLES_DIR = $(CURDIR)/debian/libvirt-doc/usr/share/doc/libvirt-doc/examples/
%:
dh $@ --builddirectory=$(DEB_BUILDDIR) --parallel --with autoreconf --with systemd
override_dh_auto_configure:
IPTABLES_PATH=/usr/sbin/iptables \
IP6TABLES_PATH=/usr/sbin/ip6tables \
EBTABLES_PATH=/usr/sbin/ebtables \
dh_auto_configure -- $(DEB_CONFIGURE_EXTRA_ARGS) $(shell dpkg-buildflags --export=configure)
mkdir -p debian/build/docs/internals
override_dh_auto_test:
export LD_PRELOAD=""; \
export VIR_TEST_DEBUG=1; \
[ -n "$(MAKE_CHECK)" ] || exit 0; \
if ! dh_auto_test -O--builddirectory=$(DEB_BUILDDIR); then \
cat ./debian/build/gnulib/tests/test-suite.log \
./debian/build/tests/test-suite.log; \
[ -z "$(FAIL_CHECK)" ] || exit 1; \
fi
override_dh_install-arch:
# Multiarch:
# don't configure with --libdir, but move the files manually, because
# we don't want to change other places in /usr/lib/
mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
mv debian/tmp/usr/lib/lib*a \
debian/tmp/usr/lib/lib*.so* \
debian/tmp/usr/lib/pkgconfig \
debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
dh_install
# Copy upstream files to debian/ so dh_* can find them
cp debian/tmp/usr/lib/libvirt/libvirt-guests.sh \
debian/libvirt-daemon-system.libvirt-guests.init
cp tools/libvirt-guests.sysconf \
debian/libvirt-daemon-system.libvirt-guests.default
cp src/logging/virtlogd.sysconf \
debian/libvirt-daemon-system.virtlogd.default
cp src/locking/virtlockd.sysconf \
debian/libvirt-daemon-system.virtlockd.default
# Add our backward compat polkit rule
cp debian/polkit/60-libvirt.pkla \
debian/libvirt-daemon-system/var/lib/polkit-1/localauthority/10-vendor.d/
ifneq (,$(findstring $(DEB_HOST_ARCH_OS), linux))
# Linux supports more nice things:
dh_install -p libvirt-daemon-system usr/lib/systemd/system lib/systemd/
dh_install -p libvirt-daemon-system usr/lib/libvirt/virt-aa-helper
dh_install -p libvirt-daemon-system etc/apparmor.d
dh_apparmor -p libvirt-daemon-system --profile-name=usr.lib.libvirt.virt-aa-helper
dh_apparmor -p libvirt-daemon-system --profile-name=usr.sbin.libvirtd
# Not all linux arches have systemtap yet
mkdir -p debian/tmp/usr/share/systemtap
dh_install -p libvirt-daemon-system usr/share/systemtap
dh_install -p libvirt-daemon-system etc/libvirt/lxc.conf
dh_install -p libvirt-daemon-system etc/libvirt/qemu-sanlock.conf
dh_install -p libvirt-daemon-system etc/libvirt/qemu/networks/
dh_install -p libvirt-daemon-system etc/libvirt/nwfilter/
dh_install -p libvirt-clients etc/libvirt/virt-login-shell.conf
dh_install -p libnss-libvirt \
usr/lib/$(DEB_HOST_MULTIARCH)/libnss_libvirt.so.2 \
lib/$(DEB_HOST_MULTIARCH)/
endif
ifeq ($(XEN_ENABLED), 1)
dh_install -p libvirt-daemon-system etc/libvirt/libxl.conf
dh_install -p libvirt-daemon-system etc/libvirt/libxl-lockd.conf
endif
set -e; for l in $(LOGROTATE); do \
cp $(CURDIR)/debian/tmp/etc/logrotate.d/$$l \
debian/libvirt-daemon-system.$$l.logrotate; \
dh_installlogrotate --name=$$l; \
done
# Don't ship any la files
rm debian/libvirt-daemon/usr/lib/libvirt/connection-driver/*.la
rm debian/libvirt-wireshark/usr/lib/*/wireshark/plugins/*/*/*.la
# Don't ship any files that are managed by the user only
rm debian/libvirt-daemon-system/etc/apparmor.d/local/*
# executable-not-elf-or-script
chmod 644 debian/libvirt-daemon/usr/share/bash-completion/completions/vsh
override_dh_installinit:
dh_installinit -p libvirt-daemon-system --name=virtlogd --no-restart-on-upgrade
dh_installinit -p libvirt-daemon-system --name=libvirtd --restart-after-upgrade -- defaults 28 72
dh_installinit -p libvirt-daemon-system --name=libvirt-guests --no-restart-on-upgrade -- defaults 29 71
override_dh_systemd_start:
dh_systemd_start -p libvirt-daemon-system --restart-after-upgrade libvirtd.service
dh_systemd_start -p libvirt-daemon-system --no-restart-on-upgrade $(LIBVIRT_SYSTEM_SERVICES)
override_dh_installdocs:
dh_installdocs
# Remove binaries and object files examples
[ ! -d $(EXAMPLES_DIR) ] || find $(EXAMPLES_DIR) -name "*.o" -type f -delete -o -name .libs -type d -exec rm -rf {} \;
rm -f $(EXAMPLES_DIR)domain-events/events-c/event-test \
$(EXAMPLES_DIR)dominfo/info1 \
$(EXAMPLES_DIR)domsuspend/suspend \
$(EXAMPLES_DIR)hellolibvirt/hellolibvirt \
$(EXAMPLES_DIR)apparmor/* \
$(NULL)
override_dh_auto_clean:
[ ! -f Makefile ] || dh_auto_clean
rm -f $(CURDIR)/debian/libvirt-daemon-system.libvirt-guests.init \
$(CURDIR)/debian/libvirt-daemon-system.libvirt-guests.default \
$(CURDIR)/debian/libvirt-daemon-system.*.logrotate \
$(CURDIR)/debian/*.service \
$(CURDIR)/debian/libvirt-daemon-system.virtlogd.default \
$(CURDIR)/debian/libvirt-daemon-system.virtlockd.default \
$(NULL)
rm -rf $(DEB_BUILDDIR)
override_dh_installchangelogs:
dh_installchangelogs -plibvirt0
dh_installchangelogs -Nlibvirt0 -XChangeLog
override_dh_missing:
dh_missing --list-missing