On Thu, 7 Apr 2016 10:56:23 -0700 Bryce Harrington <br...@osg.samsung.com> wrote:
> On Thu, Apr 07, 2016 at 04:53:31PM +0000, Chokshi, Mitul wrote: > > > > A double-quote in log message prematurely ends the enquoted string > > in src/git-version.h, causing an error during compilation. > > Used stream editor to replace " with \" > > > > Signed-off-by: Mitul Chokshi <mitul.chok...@intel.com> > > --- > > Makefile.am | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/Makefile.am b/Makefile.am > > index d1644ac..a09ea0b 100644 > > --- a/Makefile.am > > +++ b/Makefile.am > > @@ -162,7 +162,7 @@ endif > > > > if HAVE_GIT_REPO > > src/git-version.h : $(top_srcdir)/.git/logs/HEAD > > - $(AM_V_GEN)echo "#define BUILD_ID \"$(shell git > > --git-dir=$(top_srcdir)/.git describe --always --dirty) $(shell git > > --git-dir=$(top_srcdir)/.git log -1 --format='%s (%ci)')\"" > $@ > > + $(AM_V_GEN)echo "#define BUILD_ID \"$(shell git > > --git-dir=$(top_srcdir)/.git describe --always --dirty) $(shell git > > --git-dir=$(top_srcdir)/.git log -1 --format='%s (%ci)' | $(SED) > > 's|\"|\\\"|g' )\"" > $@ > > else > > src/git-version.h : > > $(AM_V_GEN)echo "#define BUILD_ID \"unknown (not built from git or > > tarball)\"" > $@ > > Confirmed: > > $ echo "foo" >> README > $ git commit README -m "testing \"" > > $ make > make all-am > make[1]: Entering directory `/home/bryce/src/Wayland/weston' > /bin/bash: -c: line 0: syntax error near unexpected token `(' > /bin/bash: -c: line 0: `echo " GEN " src/git-version.h;echo "#define > BUILD_ID \"1.9.0-168-gb1f52e1 testing " (2016-04-07 10:53:15 -0700)\"" > > src/git-version.h' > make[1]: *** [src/git-version.h] Error 1 > make[1]: Leaving directory `/home/bryce/src/Wayland/weston' > make: *** [all] Error 2 > > With the patch applied, the make passes properly. > > Tested-by: Bryce Harrington <br...@osg.samsung.com> Hi, hmm, it doesn't work for me. I did the same test, having the subject line 'testing "', and I get: $ make make all-am make[1]: Entering directory '/home/pq/build/weston' GEN src/git-version.h CC src/weston-compositor.o In file included from /home/pq/git/weston/src/compositor.c:62:0: ./src/git-version.h:1:81: warning: missing terminating " character [enabled by default] #define BUILD_ID "1.10.0-90-g610e0a7-dirty testing " (2016-04-13 17:32:41 +0300)" ^ CC src/weston-main.o In file included from /home/pq/git/weston/src/main.c:47:0: ./src/git-version.h:1:81: warning: missing terminating " character [enabled by default] #define BUILD_ID "1.10.0-90-g610e0a7-dirty testing " (2016-04-13 17:32:41 +0300)" ^ /home/pq/git/weston/src/main.c: In function ‘main’: ./src/git-version.h:1:66: error: expected ‘)’ before numeric constant #define BUILD_ID "1.10.0-90-g610e0a7-dirty testing " (2016-04-13 17:32:41 +0300)" ^ /home/pq/git/weston/src/main.c:737:6: note: in expansion of macro ‘BUILD_ID’ BUILD_ID); ^ ./src/git-version.h:1:54: error: called object is not a function or function pointer #define BUILD_ID "1.10.0-90-g610e0a7-dirty testing " (2016-04-13 17:32:41 +0300)" ^ /home/pq/git/weston/src/main.c:737:6: note: in expansion of macro ‘BUILD_ID’ BUILD_ID); ^ ./src/git-version.h:1:66: error: missing terminating " character #define BUILD_ID "1.10.0-90-g610e0a7-dirty testing " (2016-04-13 17:32:41 +0300)" ^ /home/pq/git/weston/src/main.c:737:6: note: in expansion of macro ‘BUILD_ID’ BUILD_ID); ^ Makefile:5398: recipe for target 'src/weston-main.o' failed make[1]: *** [src/weston-main.o] Error 1 make[1]: Leaving directory '/home/pq/build/weston' Makefile:2982: recipe for target 'all' failed make: *** [all] Error 2 So even if the Makefile command invocation was fixed, the C preprocessor token is still broken. Touching just README probably did not cause any .c files to be rebuilt. Maybe the git strings should not go as arguments to 'echo', so we avoid one level of quoting. So something like this in bash: ( echo -n '#define BUILD_ID "' && ( git --git-dir=$(top_srcdir)/.git describe --always --dirty && git --git-dir=$(top_srcdir)/.git log -1 --format='%s (%ci)' ) | sed ... && echo '"' ) > $@ An excercise for the reader is to figure out if there are any bashisms in that, how to write it in Makefile.am, and what the sed script needs to be. And perhaps make sure to remove stray newlines from the string. Thanks, pq
pgpNeAyrENop5.pgp
Description: OpenPGP digital signature
_______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel