]> git.openstreetmap.org Git - nominatim.git/commitdiff
do not overwrite custom set module paths
authorSarah Hoffmann <lonvia@denofr.de>
Tue, 2 Feb 2021 16:33:41 +0000 (17:33 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Tue, 2 Feb 2021 17:31:25 +0000 (18:31 +0100)
Given that the module is now copied to the project directory
when no module path is set, we need the information that the
module path is empty. Therefore hand in the default module path
in a separate variable.

lib/lib.php
lib/setup/SetupClass.php
nominatim/cli.py
nominatim/tools/exec_utils.py
test/python/test_tools_exec_utils.py

index 7760f695304748fe80d9a549c5d76fedbdf5066a..a02fefd055fa121097a38e55b07fbb069bed2d3c 100644 (file)
@@ -8,6 +8,7 @@ function loadSettings($sProjectDir)
     // set of settings.
     defined('CONST_DataDir') or define('CONST_DataDir', $_SERVER['NOMINATIM_DATADIR']);
     defined('CONST_BinDir') or define('CONST_BinDir', $_SERVER['NOMINATIM_BINDIR']);
+    defined('CONST_Default_ModulePath') or define('CONST_Default_ModulePath', $_SERVER['NOMINATIM_DATABASE_MODULE_SRC_PATH']);
 }
 
 function getSetting($sConfName, $sDefault = null)
index e618752c4084be491db79c93f15f87c3e13c54c5..dda491603c3e673576f35ab0e03802874127ee82 100755 (executable)
@@ -148,7 +148,9 @@ class SetupFunctions
             // (aka we are running from the build dir).
             $sDest = CONST_InstallDir.'/module';
             if ($sDest != CONST_Default_ModulePath) {
-                mkdir($sDest);
+                if (!file_exists($sDest)) {
+                    mkdir($sDest);
+                }
                 if (!copy(CONST_Default_ModulePath.'/nominatim.so', $sDest.'/nominatim.so')) {
                     echo "Failed to copy database module to $sDest.";
                     exit(1);
@@ -158,6 +160,8 @@ class SetupFunctions
             } else {
                 info('Running from build directory. Leaving database module as is.');
             }
+        } else {
+            info('Using database module from DATABASE_MODULE_PATH ('.getSetting('DATABASE_MODULE_PATH').').');
         }
         // Try accessing the C module, so we know early if something is wrong
         $this->checkModulePresence(); // raises exception on failure
index f8ffe2d2ace9726d01b3e801cc1affdedea6827d..60701bbf06056899ce2e365434fc6d4e18ec5c89 100644 (file)
@@ -81,7 +81,7 @@ class CommandlineParser:
 
         for arg in ('module_dir', 'osm2pgsql_path', 'phplib_dir', 'data_dir', 'phpcgi_path'):
             setattr(args, arg, Path(kwargs[arg]))
-        args.project_dir = Path(args.project_dir)
+        args.project_dir = Path(args.project_dir).resolve()
 
         logging.basicConfig(stream=sys.stderr,
                             format='%(asctime)s: %(message)s',
@@ -91,7 +91,7 @@ class CommandlineParser:
         args.config = Configuration(args.project_dir, args.data_dir / 'settings')
 
         log = logging.getLogger()
-        log.warn('Using project directory: %s', str(args.project_dir))
+        log.warning('Using project directory: %s', str(args.project_dir))
 
         try:
             return args.command.run(args)
index 03bed98600f6678c5fff6f152ca22cbeeb8ffa47..e0d048a217a7f632f27fccc14710dbde3d51ee86 100644 (file)
@@ -26,8 +26,7 @@ def run_legacy_script(script, *args, nominatim_env=None, throw_on_fail=False):
     env = nominatim_env.config.get_os_env()
     env['NOMINATIM_DATADIR'] = str(nominatim_env.data_dir)
     env['NOMINATIM_BINDIR'] = str(nominatim_env.data_dir / 'utils')
-    if not env['NOMINATIM_DATABASE_MODULE_PATH']:
-        env['NOMINATIM_DATABASE_MODULE_PATH'] = nominatim_env.module_dir
+    env['NOMINATIM_DATABASE_MODULE_SRC_PATH'] = nominatim_env.module_dir
     if not env['NOMINATIM_OSM2PGSQL_BINARY']:
         env['NOMINATIM_OSM2PGSQL_BINARY'] = nominatim_env.osm2pgsql_path
 
index 26a714f3dc6169a398e64041da70d7b7ec844af5..ef1b46e286b9d9b7ac9383751c017a575a0b7dc4 100644 (file)
@@ -63,8 +63,8 @@ def test_run_legacy_return_dont_throw_on_success(nominatim_env, test_script):
     assert 0 == exec_utils.run_legacy_script(fname, nominatim_env=nominatim_env,
                                              throw_on_fail=True)
 
-def test_run_legacy_use_given__module_path(nominatim_env, test_script):
-    fname = test_script("exit($_SERVER['NOMINATIM_DATABASE_MODULE_PATH'] == 'module' ? 0 : 23);")
+def test_run_legacy_use_given_module_path(nominatim_env, test_script):
+    fname = test_script("exit($_SERVER['NOMINATIM_DATABASE_MODULE_PATH'] == '' ? 0 : 23);")
 
     assert 0 == exec_utils.run_legacy_script(fname, nominatim_env=nominatim_env)