[GRASS5] Re: grass 5.7 windows?

Markus Neteler neteler at itc.it
Tue Mar 30 13:58:58 EST 2004


On Tue, Mar 30, 2004 at 04:22:38PM +0100, Glynn Clements wrote:
> 
> Markus Neteler wrote:
> 
> > Richard and me are currently testing some recent compilation
> > of 5.7 under Cygwin. A strange error occurs:
> 
> > cp:
> > `/cygdrive/e/projects/grass/grass57_cvs/dist.i686-pc-cygwin/driver/db/dbf'
> > and
> > `/cygdrive/e/projects/grass/grass57_cvs/dist.i686-pc-cygwin/driver/db/shp'
> > are the same file
> 
> Is this error correct? I.e. is .../db/shp a link (hard or symbolic) to
> .../db/dbf?

Actually I don't understand the error. It's copying the file,
why does it fail? The command in the Makefile is 'cp'. Quite strange,
but I cannot check from here.

 
> > I'm a bit clueless since it should simply copy a file to a new filename:
> > 
> > tail -3 ~/grass57/db/drivers/dbf/Makefile
> >         $(CC) $(LDFLAGS) -o $@ $(ARCH_OBJS) $(LIBES) $(MATHLIB) $(XDRLIB)
> >         cp $(DRIVER) $(SHPDRIVER)
> > 
> > Any ideas?
> 
> According to the error message, the new filename refers to the same
> file as the old filename, so you're asking "cp" to copy a file onto
> itself, which it refuses to do.
> 
> More generally, Makefiles should normally use $(INSTALL) rather than
> "cp". The "install" program (or autoconf's install-sh script on
> systems which don't have an install program) will handle this
> situation[1] somewhat better than "cp", as it replaces an existing
> file whereas "cp" will attempt to overwrite it ("cp" behaves similarly
> to "cat srcfile > dstfile").

Ah, so quite a few Makefiles (5.3 as well?) will need such changes.
 
> [1] It will also handle the situation where the destination file is
> read-only, or where the destination is the executable for some
> process.

Sounds good. Thanks for the insights.

 Markus




More information about the grass-dev mailing list