After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 96592 - 'make install' fails initially
'make install' fails initially
Status: RESOLVED WONTFIX
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
git master
Other other
: Normal enhancement
: 0.4.0
Assigned To: Jan Schmidt
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2002-10-23 12:13 UTC by Jan Schmidt
Modified: 2004-12-22 21:47 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Jan Schmidt 2002-10-23 12:13:09 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'
Comment 1 Ronald Bultje 2002-10-26 09:25:22 UTC
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.
Comment 2 Jan Schmidt 2003-01-13 13:43:17 UTC
leaving the process as documented seems fine.