cp error -- oh the great sanity of *nix tools?!?

Soren Andersen soren@wonderstorm.com
Mon Jun 25 12:30:00 GMT 2001

The estimable Randall R Schulz <rrschulz@cris.com> responded Re: cp error --
oh the great sanity of *nix tools?!?

> Perhaps those two files _were_ the same. Namely, if make's current
> directory was /usr/sbin at time the cp commands were invoked.

I was not. I made sure of that in the Makefile script,  even had it print
out where it was to make sure.

> I don't believe cp reports that the source and destination files are the
> same unless they are. Surely you would rather it do this than open the
> destination with the create and truncate options and then copy the source
> (now empty) to it?
> Same as on any Unix, Linux, BSD, FreeBSD, AIX, HPUX or other Unix

Ahh, as it turns out, NOT. And therein lies this GOTCHA. Read on.

And  Mac ("Michael A. Chase" <mchase@ix.netcom.com>)  also wrote in his own

>Because Cygwin mounts allow the same directory to be reachable by
>different routes, it is not always obvious to the user whether two
>directories or files are the same. I guess the same could be true with
>symbolic links in normal UNIXs.

I guess, if I think about it for more than 1.8 sec I begin to get a headache
.. :-).

>Please confirm what directory make was working in when it tried to
>copy those files. The output from 'mount' is also needed to see if
>that directory and /usr/sbin/ are really the same directory.

They are not.

OK, all those who were in nearly intolerable suspense waiting for me to get
to the answer:

It's Cygwin, AND it' s `cp'. Yep. A most unfortunate interaction. To start
with, Cygwin's gcc automatically "maps" an output executable file with an
`.exe' extension filename. That's SO helpful, yes, and might usually be A
Very Good Thing. But NOT this time.

The files I was trying to copy SIMPLY DIDN'T EXIST in the directory I built
in. Because the names came from the Makefile code, but the actual files on
disk were $(PROGS).exe, that is ... each one has .exe caboosed to it ...
because of this I had to bang my head against the proverbial wall until I
saw exactly what was in the build directory.

It IS still  `cp' s fault, too. The message is cp's utterly unhelpful and
misleading way of telling me that the source files named as command
parameters don't exist -- and what the heck is THAT? That's a bona-fide BUG
if ever I was bitten by one. I am really astonished at this, in GNU

                          * * * * * * * * * * * * * * * * * * * *

I have a fixed Makefile.IN prepared now for this package (Berkeley DB
2.7.7). This software's author (SleepyCat) will I am sure *never* be
interested in fixing his Makefile/configure setup for Cygwin, because it is
an old release. It is the highest-numbered 2.x release. I chose it because
the documentation that comes with Perl5.6.1/Cygwin says to do so (to use a
more recent bdb2.x that has the bdb1.xx-compatibility option, to not break
older Perl module code). So although it is an old package, it is IMHO *not*
irrelevent to Cygwin users (at least to those who might want to compile
their own Perl from source), since it is a Perl dependency. So, who is the
Maintainer of this sort of thing (Cygwin-Perl)? Can someone cite an
individual to whom I could forward my fixed Makefile.IN? So that it can be
incorporated into a package to add to the existing Cygwin-ported libraries?
I had to fix some of the code, too (all only macro stuff of course).

     Soren Andersen
   Cygwin Enthusiast

> At 19:58 2001-06-24, *I* wrote:
> >Dogma: GNU/*nix  programming is *always* so much better than what Redmond
> >can produce. Yeah, like.
> >
> >I am running a Makefile installation (`make install') and I keep getting
> >this error (the package is BerkeleyDB, this is irrelevent):
> >
> >
> >./db_checkpoint -> /usr/sbin/db_checkpoint
> >/usr/bin/cp: `./db_checkpoint' and `/usr/sbin/db_checkpoint' are the same
> >file
> >./db_deadlock -> /usr/sbin/db_deadlock
> >/usr/bin/cp: `./db_deadlock' and `/usr/sbin/db_deadlock' are the same
> >./db_dump -> /usr/sbin/db_dump
> >/usr/bin/cp: `./db_dump' and `/usr/sbin/db_dump' are the same file
> >./db_load -> /usr/sbin/db_load
> >/usr/bin/cp: `./db_load' and `/usr/sbin/db_load' are the same file
> >./db_printlog -> /usr/sbin/db_printlog
> >/usr/bin/cp: `./db_printlog' and `/usr/sbin/db_printlog' are the same
> >./db_recover -> /usr/sbin/db_recover
> >/usr/bin/cp: `./db_recover' and `/usr/sbin/db_recover' are the same file
> >./db_stat -> /usr/sbin/db_stat
> >/usr/bin/cp: `./db_stat' and `/usr/sbin/db_stat' are the same file
> >make: *** [install] Error 1
> >
> >You know, the hacker who wrote `cp' to give this error wording needs to
> >put up against a wall and *shot*.
> >
> >What does this mean? I am sure that this is "one of those things" that
> >everybody but me and two guys in Duluth seem to know.
> >
> >    soren andersen
> >
> >
> >
> >--
> >Want to unsubscribe from this list?
> >Check out: http://cygwin.com/ml/#unsubscribe-simple

Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple

More information about the Cygwin mailing list