When compiling libvirt (and probably other packages) on Fedora rawhide systems, I'm seeing a new warning message on every link line. # rpm -q libtool gcc binutils libtool-2.4.6-1.fc23.x86_64 gcc-5.0.0-0.16.fc23.x86_64 binutils-2.25-6.fc23.x86_64 For an example of the warning during a 'make V=1': > libtool: link: rm -fr .libs/libvirt_driver_qemu_impl.a .libs/libvirt_driver_qemu_impl.la > libtool: link: ar cru .libs/libvirt_driver_qemu_impl.a qemu/.libs/libvirt_driver_qemu_impl_la-qemu_agent.o qemu/.libs/libvirt_driver_qemu_impl_la-qemu_capabilities.o qemu/.libs/libvirt_driver_qemu_impl_la-qemu_command.o qemu/.libs/libvirt_driver_qemu_impl_la-qemu_domain.o qemu/.libs/libvirt_driver_qemu_impl_la-qemu_cgroup.o qemu/.libs/libvirt_driver_qemu_impl_la-qemu_hostdev.o qemu/.libs/libvirt_driver_qemu_impl_la-qemu_hotplug.o qemu/.libs/libvirt_driver_qemu_impl_la-qemu_conf.o qemu/.libs/libvirt_driver_qemu_impl_la-qemu_process.o qemu/.libs/libvirt_driver_qemu_impl_la-qemu_migration.o qemu/.libs/libvirt_driver_qemu_impl_la-qemu_monitor.o qemu/.libs/libvirt_driver_qemu_impl_la-qemu_monitor_text.o qemu/.libs/libvirt_driver_qemu_impl_la-qemu_monitor_json.o qemu/.libs/libvirt_driver_qemu_impl_la-qemu_driver.o qemu/.libs/libvirt_driver_qemu_impl_la-qemu_interface.o > ar: `u' modifier ignored since `D' is the default (see `U') > libtool: link: ranlib .libs/libvirt_driver_qemu_impl.a Reading 'man ar', it looks like a relatively new binutils invention, one that Fedora chose to flip on by default, but also one that might be worth using even when ar is built with 'U' rather than 'D' as the default: > D Operate in deterministic mode. When adding files and the archive > index use zero for UIDs, GIDs, timestamps, and use consistent file > modes for all files. When this option is used, if ar is used with > identical options and identical input files, multiple runs will > create identical output files regardless of the input files' > owners, groups, file modes, or modification times. > > If binutils was configured with --enable-deterministic-archives, > then this mode is on by default. It can be disabled with the U > modifier, below. Is it worth teaching libtool to change ARFLAGS to be 'crD' instead of 'cru' when it is detected that ar is new enough to support deterministic libraries, in part to shut up the warning message being printed on every single libtool link line? (Note that I would explicitly include 'D', because even though Fedora chose to make 'D' the default, other distros may choose to make 'U' the default). Or conversely, do we want ARFLAGS to be 'cruU', to force non-deterministic mode, since any speedups made possible by timestamp comparison ('u') are only possible in non-deterministic mode? Does the use of 'u' buy us much measurable time when repeatedly and incrementally linking large libraries, where the new 'D' mode is forced to link everything instead of just the new inputs? And of course there's the question of how easy is it to detect that ar is new enough to understand the 'D'/'U' dichotomy? Is this something I should redirect to automake instead of libtool? -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list