GNOME Bugzilla – Bug 96592
'make install' fails initially
Last modified: 2004-12-22 21:47:04 UTC
fetched cvs, and did the following: ./autogen.sh --prefix=/home/jan/gstreamer-cvs/ ./configure --prefix=/home/jan/gstreamer-cvs/ --enable-failing-tests make install Got the following output: Making install in include make[1]: Entering directory `/home/jan/cvs/gstreamer/gstreamer/include' make[2]: Entering directory `/home/jan/cvs/gstreamer/gstreamer/include' make[2]: Nothing to be done for `install-exec-am'. make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/home/jan/cvs/gstreamer/gstreamer/include' make[1]: Leaving directory `/home/jan/cvs/gstreamer/gstreamer/include' Making install in gst make[1]: Entering directory `/home/jan/cvs/gstreamer/gstreamer/gst' Making install in parse make[2]: Entering directory `/home/jan/cvs/gstreamer/gstreamer/gst/parse' flex -P_gst_parse_yy parse.l if /bin/sh ../../libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I../.. -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/home/jan/garnome-0.17.1/include/libxml2 -D_REENTRANT -I/home/jan/garnome-0.17.1/include/glib-2.0 -I/home/jan/garnome-0.17.1/lib/glib-2.0/include -I../.. -Wall -Werror -march=athlon-xp -O3 -funroll-loops -mmmx -m3dnow -MT libgstparse_la-lex._gst_parse_yy.lo -MD -MP -MF ".deps/libgstparse_la-lex._gst_parse_yy.Tpo" \ -c -o libgstparse_la-lex._gst_parse_yy.lo `test -f 'lex._gst_parse_yy.c' || echo './'`lex._gst_parse_yy.c; \ then mv ".deps/libgstparse_la-lex._gst_parse_yy.Tpo" ".deps/libgstparse_la-lex._gst_parse_yy.Plo"; \ else rm -f ".deps/libgstparse_la-lex._gst_parse_yy.Tpo"; exit 1; \ fi mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I../.. -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/home/jan/garnome-0.17.1/include/libxml2 -D_REENTRANT -I/home/jan/garnome-0.17.1/include/glib-2.0 -I/home/jan/garnome-0.17.1/lib/glib-2.0/include -I../.. -Wall -Werror -march=athlon-xp -O3 -funroll-loops -mmmx -m3dnow -MT libgstparse_la-lex._gst_parse_yy.lo -MD -MP -MF .deps/libgstparse_la-lex._gst_parse_yy.Tpo -c lex._gst_parse_yy.c -fPIC -DPIC -o .libs/libgstparse_la-lex._gst_parse_yy.lo In file included from ../gstelement.h:29, from types.h:2, from parse.l:5: ../../gst/gstobject.h:30:28: gst/gstmarshal.h: No such file or directory parse.l:6:25: grammar.tab.h: No such file or directory lex._gst_parse_yy.c:643: parse error before '*' token parse.l: In function `_gst_parse_yylex': parse.l:39: `lvalp' undeclared (first use in this function) parse.l:39: (Each undeclared identifier is reported only once parse.l:39: for each function it appears in.) parse.l:43: `VALUE' undeclared (first use in this function) parse.l:94: `CONNECTION' undeclared (first use in this function) parse.l:133: `BCONNECTION' undeclared (first use in this function) parse.l:139: `IDENTIFIER' undeclared (first use in this function) make[2]: *** [libgstparse_la-lex._gst_parse_yy.lo] Error 1 make[2]: Leaving directory `/home/jan/cvs/gstreamer/gstreamer/gst/parse' make[1]: *** [install-recursive] Error 1 make[1]: Leaving directory `/home/jan/cvs/gstreamer/gstreamer/gst' make: *** [install-recursive] Error 1 Seems to work if I do a 'make; make install'
This is normal. gstmarshal.[ch] are built when doing make in gst/, before going into the subdirectories. After having gone into all the subdirectories, all the c files will get compile. So you have: all: build-source-files, all-subdirs, compile-all Where build-source-files creates gstmarshal.[ch], all-subdirs builds (do "make") in all the subdirectories ("for i in SUDIRS; do make -C $i all; done"), and compile-all compiles all the source files in this directory. This isn't the full story, but will suffice for the explanation. The point here is that gstmarshal.[ch] have been created before going into the subdirectory parse/, so gst/gstmarshal.h exists. Now, let's do make install. This basically goes into each of the subdirectories to do make install there, and then does make install in the own directory. make install in the local directory requires all source files to be build, so 'all' is called before actually installing stuff: install: install-all-subdirs, all, install-all The problem is that we go into the subdirs before calling 'all' in this directory, so we do make install in parse/ before creating gstmarshal.[ch]. make install in parse/ calls make, which requires gstmarshal.h which hasn't been created yet. The solution is to call build-source-files before doing install-all-subdirs, but that's basically just a hacky solution - probably more problems will pop up. this is just an inherent problem with the build design. I think the solution is to just follow the docs and do 'make; make install' instead of 'make install' directly.
leaving the process as documented seems fine.