Subject: Re: now 'make cleandir' is confused
To: None <wonko@tmok.com>
From: Manuel Bouyer <bouyer@antioche.lip6.fr>
List: current-users
Date: 04/08/2001 16:30:46
On Sat, Apr 07, 2001 at 02:16:03PM -0400, Brian Hechinger wrote:
> i fail to understand why cvs wants to create a directory with the same name as
> the binary.  why, what is it doing that it needs to do that?  could it at

Because at one time in the source tree there was a 'grep' directory here.
Then the build system was changed, a directory level was removed, and
where we had a grep directory we now have the grep binary resulting of
the build.
As CVS keeps history on files and not directory, it still have a grep
directory here, but empty (if you do a 'cvs co -D "3 years ago" it won't
be empty). The '-P' flag is a workaround for the fact that CVS doesn't know
about deleted directory: it removes empty directories after the checkout.
But it has to create it first, complete the checkout and remove it
once it knows no files have been created.

> least be named something else so make and cvs have less possability of stepping
> on each other's toes?  the worst case would be that i would be able to get
> through a make cleandir to start over instead of checking out the entire tree
> again.

We can't rename the directory, or a cvs co -D "3 years ago" will not
work (which is one of the point of CVS). We could eventually rename the
binary but it may be confusing. The real anserw is to use obj dirs.

> 
> speaking of which, now i'm having trouble with that as well.  i can't win.
> 
> /usr/src is a mount point, which may be my problem, i don't know, but it's
> completely empty:
> 
> # cd /usr/src
> # ls -la
> total 2
> drwxr-xr-x   2 wonko  wheel  512 Apr  7 13:25 .
> drwxr-xr-x  17 root   wheel  512 Feb  9 20:47 ..
> # cd ..
> # cvs login
> (Logging in to anoncvs@anoncvs.netbsd.org)
> CVS password: 
> # cvs checkout -P src
> cvs checkout: in directory src:
> cvs checkout: cannot open CVS/Entries for reading: No such file or directory
> cvs server: Updating src
> U src/Makefile
> cvs [checkout aborted]: cannot open CVS/Entries.Log: No such file or directory
> #
> 
> last time i grabbed src i was accidetally in /usr/src so i ended up with
> /usr/src/src which i moved so that it was /usr/src.  it worked that time.
> is the fact that the directory already exists confusing cvs and if so how do
> i "convince" cvs to just act as if src wasn't there in the first place? i can
> do the /usr/src/src thing again since it's on the same filesystem mv can put
> the entire tree where it belongs in faster than you can count to 1, but i'd
> like to do it the "right" way if possible.

Yes, that's another problem with CVS: with a checkout, if the directory
exists but is empty it complains instead of ignoring it. I'd call this a bug
in CVS too.

BTW, there's no problems others than cosmetic with /usr/src/src, the build
use relative paths.

--
Manuel Bouyer <bouyer@antioche.eu.org>
--