Skip to content

Commit

Permalink
[GRASS] set PATH and PYTHONPATH in startModule() for t.list, #14241
Browse files Browse the repository at this point in the history
  • Loading branch information
blazek committed Mar 2, 2016
1 parent 1cdffd3 commit 1d3cbd9
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions src/providers/grass/qgsgrass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2061,14 +2061,20 @@ QProcess *QgsGrass::startModule( const QString& gisdbase, const QString& locati
out.flush();
QgsDebugMsg( gisrcFile.fileName() );
gisrcFile.close();
QStringList environment = QProcess::systemEnvironment();
environment.append( "GISRC=" + gisrcFile.fileName() );
environment.append( "GRASS_MESSAGE_FORMAT=gui" );
QProcessEnvironment environment = QProcessEnvironment::systemEnvironment();
QStringList paths = QgsGrass::grassModulesPaths();
// PYTHONPATH necessary for t.list.py
// PATH necessary for g.parser called by t.list.py
paths += environment.value( "PATH" ).split( QgsGrass::pathSeparator() );
environment.insert( "PATH", paths.join( QgsGrass::pathSeparator() ) );
environment.insert( "PYTHONPATH", QgsGrass::getPythonPath() );
environment.insert( "GISRC", gisrcFile.fileName() );
environment.insert( "GRASS_MESSAGE_FORMAT", "gui" );
// Normaly modules must be run in a mapset owned by user, because each module calls G_gisinit()
// which checks if G_mapset() is owned by user. The check is disabled by GRASS_SKIP_MAPSET_OWNER_CHECK.
environment.append( "GRASS_SKIP_MAPSET_OWNER_CHECK=1" );
environment.insert( "GRASS_SKIP_MAPSET_OWNER_CHECK", "1" );

process->setEnvironment( environment );
process->setProcessEnvironment( environment );

QgsDebugMsg( modulePath + " " + arguments.join( " " ) );
process->start( modulePath, arguments );
Expand Down

0 comments on commit 1d3cbd9

Please sign in to comment.