commit 7a2fd256cb85dd9a9d6640d9faed0b66ca617411 Author: Daniel P. Berrange <berrange@xxxxxxxxxx> Date: Fri May 6 13:36:21 2011 +0100 Remove all generated files for remote protocol Stop storing the generated files for the remote protocol client and server in source control. The generated files will still be included in the result of 'make dist' to avoid end-users needing to generate the files * daemon/Makefile.am: Removed generated files with maintainer-clean target * src/Makefile.am: Removed generated files with maintainer-clean target. Always run 'rpcgen' if generated files are missing NB: hand edited diff to remove the huge deleted files diff --git a/daemon/Makefile.am b/daemon/Makefile.am index af71188..49e94d2 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -2,11 +2,7 @@ CLEANFILES = -DAEMON_SOURCES = \ - libvirtd.c libvirtd.h \ - remote.c remote.h \ - dispatch.c dispatch.h \ - stream.c stream.h \ +DAEMON_GENERATED = \ remote_dispatch_prototypes.h \ remote_dispatch_table.h \ remote_dispatch_args.h \ @@ -14,9 +10,16 @@ DAEMON_SOURCES = \ qemu_dispatch_prototypes.h \ qemu_dispatch_table.h \ qemu_dispatch_args.h \ - qemu_dispatch_ret.h \ + qemu_dispatch_ret.h + +DAEMON_SOURCES = \ + libvirtd.c libvirtd.h \ + remote.c remote.h \ + dispatch.c dispatch.h \ + stream.c stream.h \ ../src/remote/remote_protocol.c \ - ../src/remote/qemu_protocol.c + ../src/remote/qemu_protocol.c \ + $(DAEMON_GENERATED) AVAHI_SOURCES = \ mdns.c mdns.h @@ -201,17 +204,8 @@ uninstall-data-polkit:: endif -remote.c: \ - remote_dispatch_prototypes.h \ - remote_dispatch_table.h \ - qemu_dispatch_prototypes.h \ - qemu_dispatch_table.h - -remote.h: \ - remote_dispatch_args.h \ - remote_dispatch_ret.h \ - qemu_dispatch_args.h \ - qemu_dispatch_ret.h +remote.c: $(DAEMON_GENERATED) +remote.h: $(DAEMON_GENERATED) REMOTE_PROTOCOL = $(top_srcdir)/src/remote/remote_protocol.x QEMU_PROTOCOL = $(top_srcdir)/src/remote/qemu_protocol.x @@ -350,4 +344,4 @@ endif CLEANFILES += $(BUILT_SOURCES) $(man8_MANS) CLEANFILES += *.cov *.gcov .libs/*.gcda .libs/*.gcno *.gcno *.gcda -MAINTAINERCLEANFILES = $(srcdir)/libvirtd.8.in +MAINTAINERCLEANFILES = $(srcdir)/libvirtd.8.in $(DAEMON_GENERATED) diff --git a/daemon/qemu_dispatch_args.h b/daemon/qemu_dispatch_args.h deleted file mode 100644 index e278fa4..0000000 --- a/daemon/qemu_dispatch_args.h +++ /dev/null @@ -1,5 +0,0 @@ -/* Automatically generated by remote_generate_stubs.pl. - * Do not edit this file. Any changes you make will be lost. - */ - - qemu_monitor_command_args val_qemu_monitor_command_args; diff --git a/daemon/qemu_dispatch_prototypes.h b/daemon/qemu_dispatch_prototypes.h deleted file mode 100644 index 4ec1ab4..0000000 --- a/daemon/qemu_dispatch_prototypes.h +++ /dev/null diff --git a/daemon/qemu_dispatch_ret.h b/daemon/qemu_dispatch_ret.h deleted file mode 100644 index 492dcf9..0000000 --- a/daemon/qemu_dispatch_ret.h +++ /dev/null diff --git a/daemon/qemu_dispatch_table.h b/daemon/qemu_dispatch_table.h deleted file mode 100644 index c196a3c..0000000 --- a/daemon/qemu_dispatch_table.h +++ /dev/null diff --git a/daemon/remote_dispatch_args.h b/daemon/remote_dispatch_args.h deleted file mode 100644 index f9537d7..0000000 --- a/daemon/remote_dispatch_args.h +++ /dev/null diff --git a/daemon/remote_dispatch_prototypes.h b/daemon/remote_dispatch_prototypes.h deleted file mode 100644 index cf2f38c..0000000 --- a/daemon/remote_dispatch_prototypes.h +++ /dev/null diff --git a/daemon/remote_dispatch_ret.h b/daemon/remote_dispatch_ret.h deleted file mode 100644 index 114e832..0000000 --- a/daemon/remote_dispatch_ret.h +++ /dev/null diff --git a/daemon/remote_dispatch_table.h b/daemon/remote_dispatch_table.h deleted file mode 100644 index b39f7c2..0000000 --- a/daemon/remote_dispatch_table.h +++ /dev/null diff --git a/src/Makefile.am b/src/Makefile.am index 1eaa7d1..00c5e04 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -154,15 +154,22 @@ CONF_SOURCES = \ $(CPU_CONF_SOURCES) # The remote RPC driver, covering domains, storage, networks, etc -REMOTE_DRIVER_SOURCES = \ - gnutls_1_0_compat.h \ - remote/remote_driver.c remote/remote_driver.h \ +REMOTE_DRIVER_GENERATED = \ remote/remote_protocol.c \ remote/remote_protocol.h \ remote/qemu_protocol.c \ remote/qemu_protocol.h -EXTRA_DIST += remote/remote_protocol.x remote/qemu_protocol.x \ +REMOTE_DRIVER_PROTOCOL = \ + remote/remote_protocol.x \ + remote/qemu_protocol.x + +REMOTE_DRIVER_SOURCES = \ + gnutls_1_0_compat.h \ + remote/remote_driver.c remote/remote_driver.h \ + $(REMOTE_DRIVER_GENERATED) + +EXTRA_DIST += $(REMOTE_DRIVER_PROTOCOL) \ remote/rpcgen_fix.pl # Ensure that we don't change the struct or member names or member ordering @@ -528,68 +535,17 @@ libvirt_driver_remote_la_LDFLAGS += -module -avoid-version endif libvirt_driver_remote_la_SOURCES = $(REMOTE_DRIVER_SOURCES) -if HAVE_RPCGEN -# -# Maintainer-only target for re-generating the derived .c/.h source -# files, which are actually derived from the .x file. -# -# For committing protocol changes to GIT, the GLIBC rpcgen *must* -# be used. -# -# Support for non-GLIB rpcgen is here as a convenience for -# non-Linux people needing to test changes during dev. -# -rpcgen-normal: - rm -f rp.c-t rp.h-t rp.c-t1 rp.c-t2 rp.h-t1 - $(RPCGEN) -h -o rp.h-t $(srcdir)/remote/remote_protocol.x - $(RPCGEN) -c -o rp.c-t $(srcdir)/remote/remote_protocol.x -if HAVE_GLIBC_RPCGEN - perl -w $(srcdir)/remote/rpcgen_fix.pl rp.h-t > rp.h-t1 - perl -w $(srcdir)/remote/rpcgen_fix.pl rp.c-t > rp.c-t1 - (echo '#include <config.h>'; cat rp.c-t1) > rp.c-t2 - chmod 0444 rp.c-t2 rp.h-t1 - mv -f rp.h-t1 $(srcdir)/remote/remote_protocol.h - mv -f rp.c-t2 $(srcdir)/remote/remote_protocol.c - rm -f rp.c-t rp.h-t rp.c-t1 -else - chmod 0444 rp.c-t rp.h-t - mv -f rp.h-t $(srcdir)/remote/remote_protocol.h - mv -f rp.c-t $(srcdir)/remote/remote_protocol.c -endif - -rpcgen-qemu: - rm -f rp_qemu.c-t rp_qemu.h-t rp_qemu.c-t1 rp_qemu.c-t2 rp_qemu.h-t1 - $(RPCGEN) -h -o rp_qemu.h-t $(srcdir)/remote/qemu_protocol.x - $(RPCGEN) -c -o rp_qemu.c-t $(srcdir)/remote/qemu_protocol.x -if HAVE_GLIBC_RPCGEN - perl -w $(srcdir)/remote/rpcgen_fix.pl rp_qemu.h-t > rp_qemu.h-t1 - perl -w $(srcdir)/remote/rpcgen_fix.pl rp_qemu.c-t > rp_qemu.c-t1 - (echo '#include <config.h>'; cat rp_qemu.c-t1) > rp_qemu.c-t2 - chmod 0444 rp_qemu.c-t2 rp_qemu.h-t1 - mv -f rp_qemu.h-t1 $(srcdir)/remote/qemu_protocol.h - mv -f rp_qemu.c-t2 $(srcdir)/remote/qemu_protocol.c - rm -f rp_qemu.c-t rp_qemu.h-t rp_qemu.c-t1 -else - chmod 0444 rp_qemu.c-t rp_qemu.h-t - mv -f rp_qemu.h-t $(srcdir)/remote/qemu_protocol.h - mv -f rp_qemu.c-t $(srcdir)/remote/qemu_protocol.c -endif -# -# Maintainer-only target for re-generating the derived .c/.h source -# files, which are actually derived from the .x file. -# -# For committing protocol changes to GIT, the GLIBC rpcgen *must* -# be used. -# -# Support for non-GLIB rpcgen is here as a convenience for -# non-Linux people needing to test changes during dev. -# -rpcgen: rpcgen-normal rpcgen-qemu +remote/remote_driver.c: $(REMOTE_DRIVER_GENERATED) -endif +remote/%_protocol.c: remote/%_protocol.x remote/%_protocol.h + $(AM_V_GEN)perl -w $(srcdir)/remote/rpcgen_fix.pl $(RPCGEN) -c \ + $< $@ + +remote/%_protocol.h: remote/%_protocol.x + $(AM_V_GEN)perl -w $(srcdir)/remote/rpcgen_fix.pl $(RPCGEN) -h \ + $< $@ -remote/remote_protocol.c: remote/remote_protocol.h endif if WITH_XEN @@ -1339,3 +1295,4 @@ endif CLEANFILES = *.gcov .libs/*.gcda .libs/*.gcno *.gcno *.gcda *.i *.s DISTCLEANFILES = $(BUILT_SOURCES) +MAINTAINERCLEANFILES = $(REMOTE_DRIVER_GENERATED) diff --git a/src/remote/qemu_protocol.c b/src/remote/qemu_protocol.c deleted file mode 100644 index 81916ed..0000000 --- a/src/remote/qemu_protocol.c +++ /dev/null diff --git a/src/remote/qemu_protocol.h b/src/remote/qemu_protocol.h deleted file mode 100644 index b822187..0000000 --- a/src/remote/qemu_protocol.h +++ /dev/null diff --git a/src/remote/remote_protocol.c b/src/remote/remote_protocol.c deleted file mode 100644 index 5604371..0000000 --- a/src/remote/remote_protocol.c +++ /dev/null diff --git a/src/remote/remote_protocol.h b/src/remote/remote_protocol.h deleted file mode 100644 index d9bf151..0000000 --- a/src/remote/remote_protocol.h +++ /dev/null diff --git a/src/remote/rpcgen_fix.pl b/src/remote/rpcgen_fix.pl index 3cf5479..d11bbd4 100644 --- a/src/remote/rpcgen_fix.pl +++ b/src/remote/rpcgen_fix.pl @@ -1,4 +1,6 @@ -# Fix XDR code (generated by rpcgen) so that it compiles +# +# Generate code for an XDR protocol, optionally applying +# fixups to the glibc rpcgen code so that it compiles # with warnings turned on. # # This code is evil. Arguably better would be just to compile @@ -17,10 +19,35 @@ use strict; my $in_function = 0; my @function = (); -while (<>) { +my $rpcgen = shift; +my $mode = shift; +my $xdrdef = shift; +my $target = shift; + +unlink $target; + +open RPCGEN, "-|", $rpcgen, $mode, $xdrdef + or die "cannot run $rpcgen $mode $xdrdef: $!"; +open TARGET, ">$target" + or die "cannot create $target: $!"; + +my $fixup = $^O eq "linux"; + +if ($mode eq "-c") { + print TARGET "#include <config.h>\n"; +} + +while (<RPCGEN>) { + # We only want to fixup the GLibc rpcgen output + # So just print data unchanged, if non-Linux + unless ($fixup) { + print TARGET; + next; + } + if (m/^{/) { $in_function = 1; - print; + print TARGET; next; } @@ -79,13 +106,21 @@ while (<>) { map { s/\bXDR_INLINE\b/(int32_t*)XDR_INLINE/; $_ } @function; - print (join ("", @function)); + print TARGET (join ("", @function)); @function = (); } unless ($in_function) { - print; + print TARGET; } else { push @function, $_; } } + +close TARGET + or die "cannot save $target: $!"; +close RPCGEN + or die "cannot shutdown $rpcgen: $!"; + +chmod 0444, $target + or die "cannot set $target readonly: $!"; -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list