On m4, I'm currently playing with multiple branches, each of which has imported a different set of gnulib modules via 'gnulib-tool --import'. I'm finding it very difficult to track which modules have been imported to which branches by using a 'git diff' of the various versions of gnulib-cache.m4. This is because both the command-line and gl_MODULES listings are run-ons, with every single module crammed into a really long line, and picking out a one-word change in a 600-character line that has been wrapped across an 80-column terminal is not easy.
The task of tracking changes to gnulib-cache.m4 would be a lot easier if modules were listed on a separate line, as in the proposed patch; then there is no longer any line-wrapping of the gl_MODULES portion of the file, and the added or deleted modules diff independently of the remaining modules. I did this only for gl_MODULES; the comment on a command-line invocation to reproduce the import needs to remain as a run-on line to be pastable into a shell. But as long as one of the two instances is newline separated, then diffs between versions of gnulib-cache.m4 become much easier to inspect. OK to commit? Autoconf claims [1] that using address limiters (such as '/)/' in the patch below) within {} command groups is not required by POSIX. But a defect was recently raised against POSIX [2] that claims POSIX is wrong, and that all 'editing commands' (including addresses) rather than 'functions' (excluding addresses) was intended. Does anyone know whether any existing sed implementations would choke on this proposed patch, in which case I would have to rewrite it using the 's' and 't' commands rather than 'address' and 'b'? At any rate, GNU sed in --posix mode didn't reject the construct. [1] http://www.gnu.org/software/autoconf/manual/html_node/Limitations-of-Usual- Tools.html#Limitations-of-Usual-Tools, under sed [2] https://www.opengroup.org/sophocles/show_mail.tpl? CALLER=index.tpl&source=L&listname=austin-review-l&id=2578 From: Eric Blake <[EMAIL PROTECTED]> Date: Mon, 23 Jun 2008 11:30:06 -0600 Subject: [PATCH] Make gnulib-cache.m4 easier to diff. * gnulib-tool (func_import): Allow newlines when reading cached gl_MODULES, and generate newlines when creating gnulib-cache.m4. Signed-off-by: Eric Blake <[EMAIL PROTECTED]> --- ChangeLog | 6 ++++++ gnulib-tool | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletions(-) diff --git a/ChangeLog b/ChangeLog index c4f9c9a..e93c2ed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2008-06-23 Eric Blake <[EMAIL PROTECTED]> + Make gnulib-cache.m4 easier to diff. + * gnulib-tool (func_import): Allow newlines when reading cached + gl_MODULES, and generate newlines when creating gnulib-cache.m4. + +2008-06-23 Eric Blake <[EMAIL PROTECTED]> + Fix typo. * tests/test-sigaction.c (MASK_SA_FLAGS): Add missing operator. diff --git a/gnulib-tool b/gnulib-tool index a3b9df5..92b368f 100755 --- a/gnulib-tool +++ b/gnulib-tool @@ -2197,6 +2197,11 @@ func_import () s,^.*gl_LOCAL_DIR([[ ]*\([^])]*\).*$,cached_local_gnulib_dir="\1",p } /gl_MODULES(/ { + :loop + /)/b done + N + b loop + :done s,^.*gl_MODULES([[ ]*\([^])]*\).*$,cached_specified_modules="\1",p } /gl_AVOID(/ { @@ -3004,7 +3009,9 @@ func_import () esac ;; esac echo "gl_LOCAL_DIR([$relative_local_gnulib_dir])" - echo "gl_MODULES(["`echo $specified_modules`"])" + echo "gl_MODULES([" + echo "$specified_modules" | sed 's/^/ /g' + echo "])" echo "gl_AVOID([$avoidlist])" echo "gl_SOURCE_BASE([$sourcebase])" echo "gl_M4_BASE([$m4base])" -- 1.5.6