[GRASS5] GRASS make system oddities

Hi all,

just noticed two things that I find strange:

1. All include files are now in $GISBASE/include/grass which
is neat, but GDAL 1.3.1 does not seem to know about this yet?
I had to link the *.h files to $GISBASE/include to get it
to compile.

2. What makes me a little nervous is this:
make install creates grass-6.1.cvs with ownership set
to root. But: all files in that dir get ownership set
to the user who compiled the source code.
Is this intended behaviour?

Best,

Benjamin

benducke@compuserve.de wrote:

just noticed two things that I find strange:

1. All include files are now in $GISBASE/include/grass which
is neat, but GDAL 1.3.1 does not seem to know about this yet?
I had to link the *.h files to $GISBASE/include to get it
to compile.

2. What makes me a little nervous is this:
make install creates grass-6.1.cvs with ownership set
to root. But: all files in that dir get ownership set
to the user who compiled the source code.
Is this intended behaviour?

It isn't exactly intended; it's a consequence of the way that the
build and install processes work.

The build process puts everything into a staging directory,
dist.<arch>, along with a version of the grass61 script in bin.<arch>
which sets $GISBASE to the dist.<arch> directory. This allows you to
run the compiled version in-place without having to install it.

"make install" simply copies the staging directory to the final
location (e.g. /usr/local/grass-6.1.cvs) using a pair of tar commands.
When run as root, the default behaviour of "tar x ..." is to preserve
the owner and permissions on the extracted files.

The GNU tar program has the --no-same-owner (-o) option which inhibits
this behaviour; extracted files will be owned by the user running tar
(i.e. root; for non-root users, files will always be owned by the user
running tar). However, I don't know if this option is portable to
other tar programs. Hence it isn't used at present.

--
Glynn Clements <glynn@gclements.plus.com>

On Thu, Mar 16, 2006 at 03:14:40PM +0000, Glynn Clements wrote:
...

"make install" simply copies the staging directory to the final
location (e.g. /usr/local/grass-6.1.cvs) using a pair of tar commands.
When run as root, the default behaviour of "tar x ..." is to preserve
the owner and permissions on the extracted files.

The GNU tar program has the --no-same-owner (-o) option which inhibits
this behaviour; extracted files will be owned by the user running tar
(i.e. root; for non-root users, files will always be owned by the user
running tar). However, I don't know if this option is portable to
other tar programs. Hence it isn't used at present.

Indeed, it is used in the main Makefile:

2006-01-04 17:37 glynn

        * Make
        Add -o switch (don't preserve owner) to tar when extracting
        demolocation

Seems to work well.

Markus