[GRASS-dev] GRASS 7.1 compiles but won't run

I recently compiled GRASS 7.0.2 for Mac OS X with no problem. I decided to update the 7.1 binary too. It worked fine when I last did this on 27 October. But today, I hit a problem.

7.1 compiles with no errors. But when I try to run it I get the following error:

GRASS 7.1.svn (nc_spm_08_grass7):~ > Traceback (most recent call last):
File “/Users/cmbarton/grass_source/grass_trunk/macosx/dist/GRASS-7.1.app/Contents/MacOS/gui/wxpython/wxgui.py”, line 140, in
sys.exit(main())
File “/Users/cmbarton/grass_source/grass_trunk/macosx/dist/GRASS-7.1.app/Contents/MacOS/gui/wxpython/wxgui.py”, line 132, in main
app = GMApp(workspaceFile)
File “/Users/cmbarton/grass_source/grass_trunk/macosx/dist/GRASS-7.1.app/Contents/MacOS/gui/wxpython/wxgui.py”, line 46, in init
wx.App.init(self, False)
File “/Users/cmbarton/grass_source/grass_trunk/macosx/dist/GRASS-7.1.app/Contents/MacOS/etc/python/wx/_core.py”, line 7981, in init
self._BootstrapApp()
File “/Users/cmbarton/grass_source/grass_trunk/macosx/dist/GRASS-7.1.app/Contents/MacOS/etc/python/wx/_core.py”, line 7555, in _BootstrapApp
return core.PyApp__BootstrapApp(*args, **kwargs)
File “/Users/cmbarton/grass_source/grass_trunk/macosx/dist/GRASS-7.1.app/Contents/MacOS/gui/wxpython/wxgui.py”, line 79, in OnInit
from lmgr.frame import GMFrame
File “/Users/cmbarton/grass_source/grass_trunk/macosx/dist/GRASS-7.1.app/Contents/MacOS/gui/wxpython/lmgr/frame.py”, line 73, in
from datacatalog.catalog import DataCatalog
ImportError: No module named catalog

This error has appeared since 27 October. Any idea what is causing it?

Michael


C. Michael Barton
Director, Center for Social Dynamics & Complexity
Professor of Anthropology, School of Human Evolution & Social Change
Head, Graduate Faculty in Complex Adaptive Systems Science
Arizona State University

voice: 480-965-6262 (SHESC), 480-965-8130/727-9746 (CSDC)
fax: 480-965-7671 (SHESC), 480-727-0709 (CSDC)

www: http://www.public.asu.edu/~cmbarton, http://csdc.asu.edu

Hi,

2015-11-23 22:13 GMT+01:00 Michael Barton <Michael.Barton@asu.edu>:

"/Users/cmbarton/grass_source/grass_trunk/macosx/dist/GRASS-7.1.app/Contents/MacOS/gui/wxpython/lmgr/frame.py",
line 73, in <module>
    from datacatalog.catalog import DataCatalog
ImportError: No module named catalog

please check ML, there are several mail about that. Completely remove
current installation and re-compile from scratch. Ma

--
Martin Landa
http://geo.fsv.cvut.cz/gwiki/Landa
http://gismentors.cz/mentors/landa

On Mon, Nov 23, 2015 at 4:22 PM, Martin Landa <landa.martin@gmail.com>
wrote:

2015-11-23 22:13 GMT+01:00 Michael Barton <Michael.Barton@asu.edu>:
>
"/Users/cmbarton/grass_source/grass_trunk/macosx/dist/GRASS-7.1.app/Contents/MacOS/gui/wxpython/lmgr/frame.py",
> line 73, in <module>
> from datacatalog.catalog import DataCatalog
> ImportError: No module named catalog

please check ML, there are several mail about that. Completely remove
current installation and re-compile from scratch. Ma

When you are building after long time, you should always build from scratch
(make distclean). Some changes, like moving files, require cleaning the
distribution directory and there is no way around it, r66128 was one of
them.

https://trac.osgeo.org/grass/changeset/66128

I always do a make distclean.

However, if you think it would help, I can delete the entire installation and checkout again.

Michael

···

On Mon, Nov 23, 2015 at 4:22 PM, Martin Landa <landa.martin@gmail.com> wrote:

2015-11-23 22:13 GMT+01:00 Michael Barton <Michael.Barton@asu.edu>:

“/Users/cmbarton/grass_source/grass_trunk/macosx/dist/GRASS-7.1.app/Contents/MacOS/gui/wxpython/lmgr/frame.py”,
line 73, in
from datacatalog.catalog import DataCatalog
ImportError: No module named catalog

please check ML, there are several mail about that. Completely remove
current installation and re-compile from scratch. Ma

When you are building after long time, you should always build from scratch (make distclean). Some changes, like moving files, require cleaning the distribution directory and there is no way around it, r66128 was one of them.

https://trac.osgeo.org/grass/changeset/66128

On Mon, Nov 23, 2015 at 4:31 PM, Michael Barton <Michael.Barton@asu.edu>
wrote:

I always do a make distclean.

However, if you think it would help, I can delete the entire installation
and checkout again.

`make distclean` doesn't remove files from the "installation" directory
placed by `make install`. So yes, you must remove everything created during
compilation by `make` and `make install`.

On Nov 23, 2015, at 2:25 PM, Vaclav Petras <wenzeslaus@gmail.com> wrote:

On Mon, Nov 23, 2015 at 4:22 PM, Martin Landa <landa.martin@gmail.com>
wrote:

2015-11-23 22:13 GMT+01:00 Michael Barton <Michael.Barton@asu.edu>:
>
"/Users/cmbarton/grass_source/grass_trunk/macosx/dist/GRASS-7.1.app/Contents/MacOS/gui/wxpython/lmgr/frame.py",
> line 73, in <module>
> from datacatalog.catalog import DataCatalog
> ImportError: No module named catalog

please check ML, there are several mail about that. Completely remove
current installation and re-compile from scratch. Ma

When you are building after long time, you should always build from
scratch (make distclean). Some changes, like moving files, require cleaning
the distribution directory and there is no way around it, r66128 was one of
them.

https://trac.osgeo.org/grass/changeset/66128

Vaclav,

I don’t use make install. Because I’m making binaries for everyone else, I create a binary distribution package with make bindist. I always have to remove that when I create a new one.

Michael

···

On Mon, Nov 23, 2015 at 4:31 PM, Michael Barton <Michael.Barton@asu.edu> wrote:

I always do a make distclean.

However, if you think it would help, I can delete the entire installation and checkout again.

make distclean doesn’t remove files from the “installation” directory placed by make install. So yes, you must remove everything created during compilation by make and make install.

On Nov 23, 2015, at 2:25 PM, Vaclav Petras <wenzeslaus@gmail.com> wrote:

On Mon, Nov 23, 2015 at 4:22 PM, Martin Landa <landa.martin@gmail.com> wrote:

2015-11-23 22:13 GMT+01:00 Michael Barton <Michael.Barton@asu.edu>:

“/Users/cmbarton/grass_source/grass_trunk/macosx/dist/GRASS-7.1.app/Contents/MacOS/gui/wxpython/lmgr/frame.py”,
line 73, in
from datacatalog.catalog import DataCatalog
ImportError: No module named catalog

please check ML, there are several mail about that. Completely remove
current installation and re-compile from scratch. Ma

When you are building after long time, you should always build from scratch (make distclean). Some changes, like moving files, require cleaning the distribution directory and there is no way around it, r66128 was one of them.

https://trac.osgeo.org/grass/changeset/66128

On Mon, Nov 23, 2015 at 4:50 PM, Michael Barton <Michael.Barton@asu.edu>
wrote:

I don't use make install. Because I'm making binaries for everyone else, I
create a binary distribution package with make bindist. I always have to
remove that when I create a new one.

Whatever is appropriate, just make sure you remove everything.

On 23/11/15 22:31, Michael Barton wrote:

I always do a make distclean.

However, if you think it would help, I can delete the entire
installation and checkout again.

Yes, I have found that from time to time make distclean is not enough. I haven't dug into this deeply enough to understand why, but there seems to be some cleaning tasks missing and that corrupts the source tree even after a make distclean.

Moritz

Moritz Lennert wrote:

> However, if you think it would help, I can delete the entire
> installation and checkout again.

Yes, I have found that from time to time make distclean is not enough. I
haven't dug into this deeply enough to understand why, but there seems
to be some cleaning tasks missing and that corrupts the source tree even
after a make distclean.

"svn status --no-ignore" will show everything except for unmodified,
version-controlled files. Modified and non-version-controlled files
will be shown (even if explicitly ignored due to an svn:ignore
property).

In a perfectly clean source tree, that command should produce no
output.

The only difference between "make distclean" and "make clean" is that
the former also removes the files generated by "configure" (so you'll
get an error if you try to build without first running configure,
rather than it using stale files).

Here (on Linux), I don't see any ignored files after "make distclean",
and the only non-ignored "unknown" files are patches, logs, notes, etc
which are there through my own actions (i.e. not as a result of
running "make").

It's possible that, on other architectures, the build process may
create additional files which should be added to the "clean" rule.
Please report any that are found.

When updates remove directories, those directories will be removed
from SUBDIRS in the parent Makefile, which means that "make clean"
won't remove them. "svn update" will delete any removed files, but it
won't delete subdirectories which aren't empty (e.g. if "make clean"
wasn't performed first, the OBJ.$(ARCH) directory will remain and thus
the parent directory won't be deleted by "svn update").

Similarly, if files or directories which are marked for cleaning via
$(EXTRA_CLEAN_FILES), $(EXTRA_CLEAN_DIRS) or $(CLEAN_SUBDIRS) are
removed, they'll typically also be removed from those variables in the
relevant Makefile, and thus won't be removed by "make clean". They
typically won't be explicitly listed as build targets or dependencies
either, but their mere presence may still affect compilation.

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