[libvirt] [PATCH] Remove all generated RPC files from GIT

Daniel P. Berrange berrange at redhat.com
Fri May 6 13:11:32 UTC 2011


commit 7a2fd256cb85dd9a9d6640d9faed0b66ca617411
Author: Daniel P. Berrange <berrange at redhat.com>
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 :|




More information about the libvir-list mailing list