Hi,
when I’m in location “/data/dir/GRASS Data/nc_smp/” and I try to install addon module using g.extension
I get the following error:
$ g.extension extension=g.proj.all svnurl=http://svn.osgeo.org/grass/grass-addons/grass7
Fetching <g.proj.all> from GRASS-Addons SVN (be patient)…
Compiling…
/grass/src/include/Make/Rules.make:15: target /data/dir/GRASS' given more than once in the same rule. ... /grass/src/include/Make/HtmlRules.make:14: warning: overriding commands for target
/data/dir/GRASS’
/grass/src/include/Make/Rules.make:16: warning: ignoring old
commands for target /data/dir/GRASS' ... make: *** No rule to make target
%‘, needed by
`/data/dir/GRASS’. Stop.
ERROR: Compilation failed, sorry. Please check above error messages.
There is an ticket #1178 closed as wontfix for this but it is for GRASS 6 shell script and MS Windows, I’m on Linux with GRASS 7 Python script.
Since it is a problem with Makefile, I’m not sure if it is possible to fix. Does GNU make support paths with spaces?
Anyway, there might be better way to fix it. g.extension.py is using
TMPDIR = grass.tempdir()
to create the temporary directory in which it runs compilation
os.chdir(TMPDIR)
and uses this dir for make variables:
os.path.join(TMPDIR, name, ‘bin’)
…
make … ‘BIN=%s’ % dirs[‘bin’]
grass.script.core.tempdir()
uses
grass.script.core.tempfile(create=False)
which uses g.tempfile with -d flag.
Isn’t this just the misunderstanding of the purpose of g.tempfile
which already occurred several times? Wouldn’t the use of tempfile.mkdtemp() from Python library just solve the whole issue?
- TMPDIR = grass.tempdir()
- TMPDIR = tempfile.mkdtemp()
Do you think that this is correct? If so, I can commit this one liner and hopefully test it in next days, but honestly, it seems so clear that I would be very surprised if there is some issue. What do you think?
Vaclav
[#1178] http://trac.osgeo.org/grass/ticket/1178
[g.extension] http://grass.osgeo.org/grass70/manuals/g.extension.html
[g.tempfile] http://grass.osgeo.org/grass70/manuals/g.tempfile.html
[mkdtemp] http://docs.python.org/2/library/tempfile.html#tempfile.mkdtemp
PS: I don’t use spaces in file names. I discovered this issue by chance.