[libvirt-users] Fail to build upstream libvirt on rhel8

Hello, A compilation failure happened when I tried building libvirt latest code on rhel8 Version: gcc-8.3.1-4.5.el8.x86_64 libvirt v5.9.0-352-g5e939cea89 Steps: 1. Clone libvirt source code 2. Create build dir, and run autogen.sh # cd libvirt # mkdir build && cd build # ../autogen.sh --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-runstatedir=/run --with-qemu --without-openvz --without-lxc --without-vbox --without-libxl --with-sasl --with-polkit --with-libvirtd --without-phyp --with-esx --without-hyperv --without-vmware --without-vz --without-bhyve --with-remote-default-mode=legacy --with-interface --with-network --with-storage-fs --with-storage-lvm --with-storage-iscsi --with-storage-iscsi-direct --with-storage-scsi --with-storage-disk --with-storage-mpath --with-storage-rbd --without-storage-sheepdog --with-storage-gluster --without-storage-zfs --without-storage-vstorage --with-numactl --with-numad --with-capng --without-fuse --with-netcf --with-selinux --with-selinux-mount=/sys/fs/selinux --without-apparmor --without-hal --with-udev --with-yajl --with-sanlock --with-libpcap --with-macvtap --with-audit --with-dtrace --with-driver-modules --with-firewalld --with-firewalld-zone --without-wireshark-dissector --without-pm-utils --with-nss-plugin --with-qemu-user=qemu --with-qemu-group=qemu --with-tls-priority=@LIBVIRT,SYSTEM --enable-werror --enable-expensive-tests --with-init-script=systemd --without-login-shell # make Then error appears: make[2]: Entering directory '/root/libvirt/build/include/libvirt' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory '/root/libvirt/build/include/libvirt' Making all in src make[2]: Entering directory '/root/libvirt/build/src' GEN access/org.libvirt.api.policy /bin/sh: access/org.libvirt.api.policy: No such file or directory GEN access/viraccessapicheck.h /bin/sh: access/viraccessapicheck.h: No such file or directory make[2]: *** [Makefile:15067: access/viraccessapicheck.h] Error 1 make[2]: Leaving directory '/root/libvirt/build/src' make[1]: *** [Makefile:1957: all-recursive] Error 1 make[1]: Leaving directory '/root/libvirt/build' make: *** [Makefile:1850: all] Error 2 -- Best regards, ----------------------------------- Han Han Quality Engineer Redhat. Email: hhan@redhat.com Phone: +861065339333

On 11/21/19 3:18 AM, Han Han wrote:
Hello, A compilation failure happened when I tried building libvirt latest code on rhel8
Version: gcc-8.3.1-4.5.el8.x86_64 libvirt v5.9.0-352-g5e939cea89
Steps: 1. Clone libvirt source code 2. Create build dir, and run autogen.sh # cd libvirt # mkdir build && cd build # ../autogen.sh --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-runstatedir=/run --with-qemu --without-openvz --without-lxc --without-vbox --without-libxl --with-sasl --with-polkit --with-libvirtd --without-phyp --with-esx --without-hyperv --without-vmware --without-vz --without-bhyve --with-remote-default-mode=legacy --with-interface --with-network --with-storage-fs --with-storage-lvm --with-storage-iscsi --with-storage-iscsi-direct --with-storage-scsi --with-storage-disk --with-storage-mpath --with-storage-rbd --without-storage-sheepdog --with-storage-gluster --without-storage-zfs --without-storage-vstorage --with-numactl --with-numad --with-capng --without-fuse --with-netcf --with-selinux --with-selinux-mount=/sys/fs/selinux --without-apparmor --without-hal --with-udev --with-yajl --with-sanlock --with-libpcap --with-macvtap --with-audit --with-dtrace --with-driver-modules --with-firewalld --with-firewalld-zone --without-wireshark-dissector --without-pm-utils --with-nss-plugin --with-qemu-user=qemu --with-qemu-group=qemu --with-tls-priority=@LIBVIRT,SYSTEM --enable-werror --enable-expensive-tests --with-init-script=systemd --without-login-shell # make
Then error appears: make[2]: Entering directory '/root/libvirt/build/include/libvirt' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory '/root/libvirt/build/include/libvirt' Making all in src make[2]: Entering directory '/root/libvirt/build/src' GEN access/org.libvirt.api.policy /bin/sh: access/org.libvirt.api.policy: No such file or directory GEN access/viraccessapicheck.h /bin/sh: access/viraccessapicheck.h: No such file or directory make[2]: *** [Makefile:15067: access/viraccessapicheck.h] Error 1 make[2]: Leaving directory '/root/libvirt/build/src' make[1]: *** [Makefile:1957: all-recursive] Error 1 make[1]: Leaving directory '/root/libvirt/build' make: *** [Makefile:1850: all] Error 2
I reproduced on Fedora too. I tracked it down to the --disable-dependency-tracking configure option: drop that and the build should work. I don't know enough about autotools to say if that's expected, or it's something broken on libvirt side - Cole

On Tue, Nov 26, 2019 at 06:33:13PM -0500, Cole Robinson wrote:
On 11/21/19 3:18 AM, Han Han wrote:
Hello, A compilation failure happened when I tried building libvirt latest code on rhel8
Version: gcc-8.3.1-4.5.el8.x86_64 libvirt v5.9.0-352-g5e939cea89
Steps: 1. Clone libvirt source code 2. Create build dir, and run autogen.sh # cd libvirt # mkdir build && cd build # ../autogen.sh --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-runstatedir=/run --with-qemu --without-openvz --without-lxc --without-vbox --without-libxl --with-sasl --with-polkit --with-libvirtd --without-phyp --with-esx --without-hyperv --without-vmware --without-vz --without-bhyve --with-remote-default-mode=legacy --with-interface --with-network --with-storage-fs --with-storage-lvm --with-storage-iscsi --with-storage-iscsi-direct --with-storage-scsi --with-storage-disk --with-storage-mpath --with-storage-rbd --without-storage-sheepdog --with-storage-gluster --without-storage-zfs --without-storage-vstorage --with-numactl --with-numad --with-capng --without-fuse --with-netcf --with-selinux --with-selinux-mount=/sys/fs/selinux --without-apparmor --without-hal --with-udev --with-yajl --with-sanlock --with-libpcap --with-macvtap --with-audit --with-dtrace --with-driver-modules --with-firewalld --with-firewalld-zone --without-wireshark-dissector --without-pm-utils --with-nss-plugin --with-qemu-user=qemu --with-qemu-group=qemu --with-tls-priority=@LIBVIRT,SYSTEM --enable-werror --enable-expensive-tests --with-init-script=systemd --without-login-shell # make
Then error appears: make[2]: Entering directory '/root/libvirt/build/include/libvirt' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory '/root/libvirt/build/include/libvirt' Making all in src make[2]: Entering directory '/root/libvirt/build/src' GEN access/org.libvirt.api.policy /bin/sh: access/org.libvirt.api.policy: No such file or directory GEN access/viraccessapicheck.h /bin/sh: access/viraccessapicheck.h: No such file or directory make[2]: *** [Makefile:15067: access/viraccessapicheck.h] Error 1 make[2]: Leaving directory '/root/libvirt/build/src' make[1]: *** [Makefile:1957: all-recursive] Error 1 make[1]: Leaving directory '/root/libvirt/build' make: *** [Makefile:1850: all] Error 2
I reproduced on Fedora too. I tracked it down to the --disable-dependency-tracking configure option: drop that and the build should work. I don't know enough about autotools to say if that's expected, or it's something broken on libvirt side
It is broken code in autotools IMHO, but we don't really care enough to investigate further. Simply don't use the --disable-dependency-tracking option. We'll "solve" it by ditching autotools in favour of meson soon. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
participants (3)
-
Cole Robinson
-
Daniel P. Berrangé
-
Han Han