[MPlayer-cvslog] CVS: main configure, 1.1137, 1.1138 Makefile, 1.342, 1.343

Jindrich Makovicka makovick at kmlinux.fjfi.cvut.cz
Mon Mar 6 10:28:14 CET 2006


On 3/6/06, Diego Biurrun <diego at biurrun.de> wrote:
> On Mon, Mar 06, 2006 at 08:06:14AM +0100, Jindrich Makovicka wrote:
> > Diego Biurrun wrote:
> > > On Sun, Mar 05, 2006 at 11:03:55AM +0100, Jindrich Makovicka CVS wrote:
> > >
> > >>Modified Files:
> > >>    configure Makefile
> > >>Log Message:
> > >>use relative paths for libav* build
> > >>
> > >>absolute path in the command line can confuse ccache
> > >
> > > What were the problems with ccache?
> >
> > when compiling the same (or almost the same) revision, but in different
> > directories, ccache sees it as different compilations, because the
> > command line has changed. so libav* gets compiled all the time.
>
> I'm not sure I understand entirely, please elaborate.  This sounds like
> a problem with ccache...

(AFAIK) Ccache computes a hash of the compilation from 3 parts:

1) compiler binary
2) compiler command line
3) preprocessed compiler input

if you compile mplayer twice in directories with different names, 2)
is different for libav*, so ccache doesn't find the result of the
previous compilation and runs the compiler again.

Libavcodec compilation takes quite a big portion of overall compile
time, so as a result, ccache isn't very useful now for speeding up
MPlayer compilation.

> > > This commit has problems, here is what I get when I do distclean:
> > >
> > > make[1]: Entering directory `/home/diego/src/mplayer/main/libavcodec/libpostproc'
> > > Makefile:22: ../common.mak: No such file or directory
> > > make[1]: *** No rule to make target `../common.mak'.  Stop.
> > > make[1]: Leaving directory `/home/diego/src/mplayer/main/libavcodec/libpostproc'
> >
> > stupid /me. please try the attachment.
> >
> > > I get failures in all libav* dirs on another box...
> >
> > also in distclean, or when building?
>
> Also in distclean, but I think libav was not being built at all, at
> least not correctly.  I stumbled over this while trying to test the gcc
> 2.95 patch posted by Loren to ffmpeg-cvslog.  I was tripping over
> previous bugs fixed in earlier revisions because somehow libavcodec was
> not compiled or miscompiled.  Maybe it was just a ccache problem, dunno,
> I'm away from that machine right now.
>
> > --- Makefile  5 Mar 2006 10:03:53 -0000       1.343
> > +++ Makefile  6 Mar 2006 06:58:29 -0000
> > @@ -161,9 +161,6 @@
> >  PARTS = libmpdemux \
> >          libmpcodecs \
> > -        libavutil \
> > -        libavcodec \
> > -        libavformat \
> >          libao2 \
> > @@ -529,6 +526,10 @@
> >       @for a in $(PARTS); do $(MAKE) -C $$a distclean; done
> > +     $(MAKE) -C libavutil distclean SRC_PATH=..
> > +     $(MAKE) -C libavcodec distclean SRC_PATH=..
> > +     $(MAKE) -C libavcodec/libpostproc distclean SRC_PATH=../..
> > +     $(MAKE) -C libavformat distclean SRC_PATH=..
> >
> > @@ -539,6 +540,9 @@
> >       @for a in $(PARTS); do $(MAKE) -C $$a dep; done
> > +     $(MAKE) -C libavutil dep SRC_PATH=..
> > +     $(MAKE) -C libavcodec dep SRC_PATH=..
> > +     $(MAKE) -C libavformat dep SRC_PATH=..
>
> I don't like this patch.  You're adding 4 lines and complicating the
> build system, plus the previous patch that also added complications.
>
> IMO this is a problem in ccache and should be fixed there.

It's very well possible that ccache developers will refuse to fix it
because it would needlessly complicate ccache - it would introduce
special cases, while the current system doesn't depend much on the
used compiler.

> Please revert your commit unless you can come up with good arguments
> that make me change my mind.

I'll be able to revert it when I get back home. Feel free to do it sooner.

--
Jindrich Makovicka




More information about the MPlayer-cvslog mailing list