-#!/usr/bin/php -Cq
+#!@PHP_BIN@ -Cq
<?php
require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
array('osm-file', '', 0, 1, 1, 1, 'realpath', 'File to import'),
array('threads', '', 0, 1, 1, 1, 'int', 'Number of threads (where possible)'),
- array('module-path', '', 0, 1, 1, 1, 'string', 'Directory on Postgres server containing Nominatim module'),
array('all', '', 0, 1, 0, 0, 'bool', 'Do the complete process'),
$iCacheMemory = getCacheMemoryMB();
}
-$sModulePath = CONST_InstallPath . '/module';
-if (isset($aCMDResult['module-path'])) {
- $sModulePath = $aCMDResult['module-path'];
- echo 'module path: ' . $sModulePath . '\n';
-}
+$sModulePath = CONST_Database_Module_Path;
+info('module path: ' . $sModulePath);
$aDSNInfo = DB::parseDSN(CONST_Database_DSN);
if (!isset($aDSNInfo['port']) || !$aDSNInfo['port']) $aDSNInfo['port'] = 5432;
exit(1);
}
- // Try accessing the C module, so we know early if something is wrong
- // and can simply error out.
- $sSQL = "CREATE FUNCTION nominatim_test_import_func(text) RETURNS text AS '";
- $sSQL .= $sModulePath."/nominatim.so', 'transliteration' LANGUAGE c IMMUTABLE STRICT";
- $sSQL .= ';DROP FUNCTION nominatim_test_import_func(text);';
- $oResult = $oDB->query($sSQL);
-
- if (PEAR::isError($oResult)) {
- echo "\nERROR: Failed to load nominatim module. Reason:\n";
- echo $oResult->userinfo."\n\n";
- exit(1);
+ if (!checkModulePresence()) {
+ fail('error loading nominatim.so module');
}
if (!file_exists(CONST_ExtraDataPath.'/country_osm_grid.sql.gz')) {
if ($aCMDResult['create-functions'] || $aCMDResult['all']) {
info('Create Functions');
$bDidSomething = true;
+
+ if (!checkModulePresence()) {
+ fail('error loading nominatim.so module');
+ }
+
create_sql_functions($aCMDResult);
}
}
pgsqlRunScript($sTemplate);
}
+
+function checkModulePresence()
+{
+ // Try accessing the C module, so we know early if something is wrong
+ // and can simply error out.
+ global $sModulePath;
+ $sSQL = "CREATE FUNCTION nominatim_test_import_func(text) RETURNS text AS '";
+ $sSQL .= $sModulePath."/nominatim.so', 'transliteration' LANGUAGE c IMMUTABLE STRICT";
+ $sSQL .= ';DROP FUNCTION nominatim_test_import_func(text);';
+
+ $oDB =& getDB();
+ $oResult = $oDB->query($sSQL);
+
+ $bResult = true;
+
+ if (PEAR::isError($oResult)) {
+ echo "\nERROR: Failed to load nominatim module. Reason:\n";
+ echo $oResult->userinfo."\n\n";
+ $bResult = false;
+ }
+
+ return $bResult;
+}