introduce constant for configuration directory

This replaces {data_dir}/settings throughout the code, so that
the configuration may be placed somewhere else in the directory
structure (e.g. in /etc).
This commit is contained in:
Sarah Hoffmann
2021-02-09 18:45:45 +01:00
parent b9517c99ae
commit 298ed11261
8 changed files with 10 additions and 5 deletions

View File

@@ -7,6 +7,7 @@ require('@CMAKE_SOURCE_DIR@/lib-php/dotenv_loader.php');
@define('CONST_BinDir', '@CMAKE_SOURCE_DIR@/utils'); @define('CONST_BinDir', '@CMAKE_SOURCE_DIR@/utils');
@define('CONST_DataDir', '@CMAKE_SOURCE_DIR@'); @define('CONST_DataDir', '@CMAKE_SOURCE_DIR@');
@define('CONST_SqlDir', '@CMAKE_SOURCE_DIR@/lib-sql'); @define('CONST_SqlDir', '@CMAKE_SOURCE_DIR@/lib-sql');
@define('CONST_ConfigDir', '@CMAKE_SOURCE_DIR@/settings');
loadDotEnv(); loadDotEnv();
$_SERVER['NOMINATIM_NOMINATIM_TOOL'] = '@CMAKE_BINARY_DIR@/nominatim'; $_SERVER['NOMINATIM_NOMINATIM_TOOL'] = '@CMAKE_BINARY_DIR@/nominatim';

View File

@@ -13,4 +13,5 @@ exit(cli.nominatim(module_dir='@CMAKE_BINARY_DIR@/module',
phplib_dir='@CMAKE_SOURCE_DIR@/lib-php', phplib_dir='@CMAKE_SOURCE_DIR@/lib-php',
sqllib_dir='@CMAKE_SOURCE_DIR@/lib-sql', sqllib_dir='@CMAKE_SOURCE_DIR@/lib-sql',
data_dir='@CMAKE_SOURCE_DIR@', data_dir='@CMAKE_SOURCE_DIR@',
config_dir='@CMAKE_SOURCE_DIR@/settings',
phpcgi_path='@PHPCGI_BIN@')) phpcgi_path='@PHPCGI_BIN@'))

View File

@@ -5,7 +5,7 @@ require('Symfony/Component/Dotenv/autoload.php');
function loadDotEnv() function loadDotEnv()
{ {
$dotenv = new \Symfony\Component\Dotenv\Dotenv(); $dotenv = new \Symfony\Component\Dotenv\Dotenv();
$dotenv->load(CONST_DataDir.'/settings/env.defaults'); $dotenv->load(CONST_ConfigDir.'/env.defaults');
if (file_exists('.env')) { if (file_exists('.env')) {
$dotenv->load('.env'); $dotenv->load('.env');

View File

@@ -9,6 +9,7 @@ function loadSettings($sProjectDir)
defined('CONST_DataDir') or define('CONST_DataDir', $_SERVER['NOMINATIM_DATADIR']); defined('CONST_DataDir') or define('CONST_DataDir', $_SERVER['NOMINATIM_DATADIR']);
defined('CONST_BinDir') or define('CONST_BinDir', $_SERVER['NOMINATIM_BINDIR']); defined('CONST_BinDir') or define('CONST_BinDir', $_SERVER['NOMINATIM_BINDIR']);
defined('CONST_SqlDir') or define('CONST_SqlDir', $_SERVER['NOMINATIM_SQLDIR']); defined('CONST_SqlDir') or define('CONST_SqlDir', $_SERVER['NOMINATIM_SQLDIR']);
defined('CONST_ConfigDir') or define('CONST_ConfigDir', $_SERVER['NOMINATIM_CONFIGDIR']);
defined('CONST_Default_ModulePath') or define('CONST_Default_ModulePath', $_SERVER['NOMINATIM_DATABASE_MODULE_SRC_PATH']); defined('CONST_Default_ModulePath') or define('CONST_Default_ModulePath', $_SERVER['NOMINATIM_DATABASE_MODULE_SRC_PATH']);
} }
@@ -37,7 +38,7 @@ function getSettingConfig($sConfName, $sSystemConfig)
$sValue = $_SERVER['NOMINATIM_'.$sConfName]; $sValue = $_SERVER['NOMINATIM_'.$sConfName];
if (!$sValue) { if (!$sValue) {
return CONST_DataDir.'/settings/'.$sSystemConfig; return CONST_ConfigDir.'/'.$sSystemConfig;
} }
return $sValue; return $sValue;

View File

@@ -27,7 +27,7 @@ function getImportStyle()
$sStyle = getSetting('IMPORT_STYLE'); $sStyle = getSetting('IMPORT_STYLE');
if (in_array($sStyle, array('admin', 'street', 'address', 'full', 'extratags'))) { if (in_array($sStyle, array('admin', 'street', 'address', 'full', 'extratags'))) {
return CONST_DataDir.'/settings/import-'.$sStyle.'.style'; return CONST_ConfigDir.'/import-'.$sStyle.'.style';
} }
return $sStyle; return $sStyle;

View File

@@ -69,7 +69,7 @@ class CommandlineParser:
return 1 return 1
for arg in ('module_dir', 'osm2pgsql_path', 'phplib_dir', 'sqllib_dir', for arg in ('module_dir', 'osm2pgsql_path', 'phplib_dir', 'sqllib_dir',
'data_dir', 'phpcgi_path'): 'data_dir', 'config_dir', 'phpcgi_path'):
setattr(args, arg, Path(kwargs[arg])) setattr(args, arg, Path(kwargs[arg]))
args.project_dir = Path(args.project_dir).resolve() args.project_dir = Path(args.project_dir).resolve()
@@ -78,7 +78,7 @@ class CommandlineParser:
datefmt='%Y-%m-%d %H:%M:%S', datefmt='%Y-%m-%d %H:%M:%S',
level=max(4 - args.verbose, 1) * 10) level=max(4 - args.verbose, 1) * 10)
args.config = Configuration(args.project_dir, args.data_dir / 'settings') args.config = Configuration(args.project_dir, args.config_dir)
log = logging.getLogger() log = logging.getLogger()
log.warning('Using project directory: %s', str(args.project_dir)) log.warning('Using project directory: %s', str(args.project_dir))

View File

@@ -27,6 +27,7 @@ def run_legacy_script(script, *args, nominatim_env=None, throw_on_fail=False):
env['NOMINATIM_DATADIR'] = str(nominatim_env.data_dir) env['NOMINATIM_DATADIR'] = str(nominatim_env.data_dir)
env['NOMINATIM_BINDIR'] = str(nominatim_env.data_dir / 'utils') env['NOMINATIM_BINDIR'] = str(nominatim_env.data_dir / 'utils')
env['NOMINATIM_SQLDIR'] = str(nominatim_env.sqllib_dir) env['NOMINATIM_SQLDIR'] = str(nominatim_env.sqllib_dir)
env['NOMINATIM_CONFIGDIR'] = str(nominatim_env.config_dir)
env['NOMINATIM_DATABASE_MODULE_SRC_PATH'] = nominatim_env.module_dir env['NOMINATIM_DATABASE_MODULE_SRC_PATH'] = nominatim_env.module_dir
if not env['NOMINATIM_OSM2PGSQL_BINARY']: if not env['NOMINATIM_OSM2PGSQL_BINARY']:
env['NOMINATIM_OSM2PGSQL_BINARY'] = nominatim_env.osm2pgsql_path env['NOMINATIM_OSM2PGSQL_BINARY'] = nominatim_env.osm2pgsql_path

View File

@@ -89,6 +89,7 @@ class NominatimEnvironment:
self.test_env['NOMINATIM_USE_US_TIGER_DATA'] = 'yes' self.test_env['NOMINATIM_USE_US_TIGER_DATA'] = 'yes'
self.test_env['NOMINATIM_DATADIR'] = self.src_dir self.test_env['NOMINATIM_DATADIR'] = self.src_dir
self.test_env['NOMINATIM_SQLDIR'] = self.src_dir / 'lib-sql' self.test_env['NOMINATIM_SQLDIR'] = self.src_dir / 'lib-sql'
self.test_env['NOMINATIM_CONFIGDIR'] = self.src_dir / 'settings'
self.test_env['NOMINATIM_BINDIR'] = self.src_dir / 'utils' self.test_env['NOMINATIM_BINDIR'] = self.src_dir / 'utils'
self.test_env['NOMINATIM_DATABASE_MODULE_SRC_PATH'] = self.build_dir / 'module' self.test_env['NOMINATIM_DATABASE_MODULE_SRC_PATH'] = self.build_dir / 'module'
self.test_env['NOMINATIM_OSM2PGSQL_BINARY'] = self.build_dir / 'osm2pgsql' / 'osm2pgsql' self.test_env['NOMINATIM_OSM2PGSQL_BINARY'] = self.build_dir / 'osm2pgsql' / 'osm2pgsql'