Jim Meyering wrote:
Jim Meyering wrote:
> Eric Blake wrote:
...
> remote/remote_protocol.c \
> remote/remote_protocol.h
>
> +EXTRA_DIST += remote_protocol-structs
> +check-local: remote_protocol-structs
> +.PHONY: remote_protocol-structs
> +remote_protocol-structs:
> + $(AM_V_GEN)if pdwtags --help > /dev/null 2>&1; then \
> + pdwtags libvirt_driver_remote_la-remote_protocol.$(OBJEXT) \
> + | perl -0777 -n \
> + -e 'foreach my $$p (split m!\n\n/\* \d+ \*/\n!)' \
> + -e ' { if ($$p =~ /^struct remote_/) {' \
> + -e ' $$p =~ s!\t*/\*.*?\*/!!sg;' \
> + -e ' $$p =~ s!\s+\n!\n!sg;' \
> + -e ' $$p =~ s!\s+$$!!;' \
> + -e ' print "$$p\n" } }' \
> + > $@-t; \
> + diff -u $@-t $@; st=$$?; rm -f $@-t; exit $$st; \
> + else \
> + echo 'WARNING: you lack pdwtags; skipping the $@ test'; \
> + fi
> +
> EXTRA_DIST += remote/remote_protocol.x remote/rpcgen_fix.pl
>
> # Mock driver, covering domains, storage, networks, etc
> diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs
> new file mode 100644
> index 0000000..c8f81f3
Here's an incremental change that adds comments, moves the
EXTRA_DIST assignment for remote_protocol.x "up" to be nearer
the related code, and changes the new check to mention
the name of the "dwarves" package with the skip warning.
diff --git a/src/Makefile.am b/src/Makefile.am
index 1c92460..fe33cea 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -155,8 +155,18 @@ REMOTE_DRIVER_SOURCES = \
remote/remote_protocol.c \
remote/remote_protocol.h
-EXTRA_DIST += remote_protocol-structs
-check-local: remote_protocol-structs
+EXTRA_DIST += remote/remote_protocol.x remote/rpcgen_fix.pl
+
+# Ensure that we don't change the struct or member names or member ordering
+# in remote_protocol.x The embedded perl below needs a few comments, and
+# presumes you know what pdwtags output looks like:
+# * use -0777 -n to slurp the entire file into $_.
+# * the "split" splits on the /* DD */ comments, so that $p iterates
+# through the struct definitions.
+# * process only "struct remote_..." entries
+# * remove comments and preceding TAB throughout
+# * remove empty lines throughout
+# * remove white space at end of buffer
.PHONY: remote_protocol-structs
remote_protocol-structs:
$(AM_V_GEN)if pdwtags --help > /dev/null 2>&1; then \
@@ -172,9 +182,10 @@ remote_protocol-structs:
diff -u $@-t $@; st=$$?; rm -f $@-t; exit $$st; \
else \
echo 'WARNING: you lack pdwtags; skipping the $@ test'; \
+ echo 'WARNING: install the dwarves package to get pdwtags'; \
fi
-
-EXTRA_DIST += remote/remote_protocol.x remote/rpcgen_fix.pl
+EXTRA_DIST += remote_protocol-structs
+check-local: remote_protocol-structs
# Mock driver, covering domains, storage, networks, etc
TEST_DRIVER_SOURCES = \
---------------------------
In case it helps, here's the full, amended patch:
>From 180d4b2b3b79c768f4a6444181d7f021771fab66 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering(a)redhat.com>
Date: Fri, 7 May 2010 16:01:26 +0200
Subject: [PATCH] help avoid accidental remote_protocol.x changes
Daniel Veillard ACK'd this privately, so I've pushed it.