[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: CVS and upstream source



From: Brian May <bam@snoopy.apana.org.au>

> Hello,

> I apologize in advance if this is in a FAQ or something, or if this
> is the wrong mailing list...

> I have recently started using CVS to keep track of my source. I use
> cvs-upgrade to `install' the upstream source, and everything works
> very well.

> Except for one point. cvs seems to mangle the time stamps, so
> whenever I try to make the project, it tries to run aclocal,
> automake, autoheader, etc to remake the corresponding files
> again. However, in almost all cases, these files should not be
> recompiled, and I don't want CVS to try and check in the new
> version.

Normaly you only check in real source files and no files that can be
build from others. So you will have Makefile.am in the CVS, but not
Makefile.in or makefile itself. So when you checkout a CVS source you
usually shouldn't have a Makefile at all. To make this happen for your 
own projects, you have to add the relevant files to ".cvsignore" in
each corresponding directories and add all ".cvsignore"'s to you cvs
repository. Also put "core" and "<project>*.tar.gz" to the main
directory's ".cvsignore".

Anyway, when you update a CVS project, cvs only downloads diffs and
aplys them. If nothing changed the files left undone. Timestamps are
ignored alltogether as far as I know.

> This is especially a problem if (1) I have a different version of
> autoconf or automake to the upstream maintainer, or (2) the automake
> generated Makefile is broken and gives an invalid directory to
> aclocal (I haven't investigated this problem in detail yet).

aclocal is usually run first, then automake and autoconf and configure 
last.

> How do I force automake generated Makefiles not to remake the source
> files?? Or am I approaching this from the wrong angle???? What
> should I do?  eg perhaps I should somehow tell cvs-upgrade not to
> install configure and */Makefile.am (any others I have missed)?

My ".cvsignore" for project "language" looks as follows:

-----------------------------------------------------------
.deps
gmon.out
config.cache
Makefile
Makefile.in
config.h
config.h.in
config.log
config.status
config.guess
stamp-h
stamp-h.in
aclocal.m4
install-sh
missing
mkinstalldirs
configure
language-*.tar.gz
core
------------------------------------------------------------------

That covers basically all that will be build automatically. If you
have them in your repository they will be checked out and in regulary, 
because they would allways change once one of them changes, which probably
leads to a chain reaction as you describe.

May the Source be with you.
                        Goswin


Reply to: