From b5480f6e366be7c7d06d8444acc4cfd6a1aa31e2 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Tue, 15 Dec 2020 10:09:55 +0100 Subject: [PATCH] reorganise path settings in config CONST_BasePath is split into separate configuration variables for binaries, libraries and data. These variables as well as the installation path are now set in the executable directly and no longer configurable via project settings. This is the first step towards an installable software. The executables should know per installation where to find their necessary data to execute. Project configuration needs to be restricted to settings that really concern the specific Nominatim installation. --- CMakeLists.txt | 43 ++++++++++++----------------- cmake/script.tmpl | 9 ++++-- cmake/website.tmpl | 7 +++-- lib/AddressDetails.php | 2 +- lib/DB.php | 2 +- lib/Geocode.php | 12 ++++---- lib/PlaceLookup.php | 4 +-- lib/ReverseGeocode.php | 2 +- lib/SearchContext.php | 2 +- lib/SearchDescription.php | 6 ++-- lib/TokenList.php | 12 ++++---- lib/TokenSpecialTerm.php | 2 +- lib/cmd.php | 2 +- lib/init-website.php | 4 +-- lib/init.php | 4 +-- lib/setup/SetupClass.php | 49 ++++++++++++++++----------------- settings/defaults.php | 19 ++++++------- test/bdd/environment.py | 3 +- utils/check_import_finished.php | 2 +- utils/country_languages.php | 2 +- utils/export.php | 4 +-- utils/query.php | 6 ++-- utils/setup.php | 6 ++-- utils/specialphrases.php | 2 +- utils/update.php | 22 +++++++-------- utils/warm.php | 10 +++---- website/deletable.php | 6 ++-- website/details.php | 12 ++++---- website/lookup.php | 10 +++---- website/polygons.php | 6 ++-- website/reverse.php | 12 ++++---- website/search.php | 12 ++++---- website/status.php | 6 ++-- 33 files changed, 150 insertions(+), 152 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 59d9e3a6..79551ce7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -96,20 +96,20 @@ endif() if (BUILD_IMPORTER) set(CUSTOMSCRIPTS - utils/check_import_finished.php - utils/country_languages.php - utils/importWikipedia.php - utils/export.php - utils/query.php - utils/setup.php - utils/specialphrases.php - utils/update.php - utils/warm.php + check_import_finished.php + country_languages.php + importWikipedia.php + export.php + query.php + setup.php + specialphrases.php + update.php + warm.php ) foreach (script_source ${CUSTOMSCRIPTS}) configure_file(${PROJECT_SOURCE_DIR}/cmake/script.tmpl - ${PROJECT_BINARY_DIR}/${script_source}) + ${PROJECT_BINARY_DIR}/utils/${script_source}) endforeach() endif() @@ -119,27 +119,20 @@ endif() if (BUILD_API) set(WEBSITESCRIPTS - website/deletable.php - website/details.php - website/lookup.php - website/polygons.php - website/reverse.php - website/search.php - website/status.php + deletable.php + details.php + lookup.php + polygons.php + reverse.php + search.php + status.php ) foreach (script_source ${WEBSITESCRIPTS}) configure_file(${PROJECT_SOURCE_DIR}/cmake/website.tmpl - ${PROJECT_BINARY_DIR}/${script_source}) + ${PROJECT_BINARY_DIR}/website/${script_source}) endforeach() - set(WEBPATHS css images js) - - foreach (wp ${WEBPATHS}) - execute_process( - COMMAND ln -sf ${PROJECT_SOURCE_DIR}/website/${wp} ${PROJECT_BINARY_DIR}/website/ - ) - endforeach() add_custom_target(serve php -S 127.0.0.1:8088 diff --git a/cmake/script.tmpl b/cmake/script.tmpl index 8146ca8b..1b0cab64 100755 --- a/cmake/script.tmpl +++ b/cmake/script.tmpl @@ -1,4 +1,9 @@ #!@PHP_BIN@ -Cq getCode()); header('Content-type: application/json; charset=utf-8'); - include(CONST_BasePath.'/lib/template/error-json.php'); + include(CONST_LibDir.'/template/error-json.php'); exit(); } @@ -29,7 +29,7 @@ function exception_handler_xml($exception) http_response_code($exception->getCode()); header('Content-type: text/xml; charset=utf-8'); echo ''."\n"; - include(CONST_BasePath.'/lib/template/error-xml.php'); + include(CONST_LibDir.'/template/error-xml.php'); exit(); } diff --git a/lib/init.php b/lib/init.php index 082d1bf5..cc50aaf3 100644 --- a/lib/init.php +++ b/lib/init.php @@ -1,4 +1,4 @@ pgsqlRunScriptFile(CONST_BasePath.'/data/country_name.sql'); - $this->pgsqlRunScriptFile(CONST_ExtraDataPath.'/country_osm_grid.sql.gz'); - $this->pgsqlRunScriptFile(CONST_BasePath.'/data/gb_postcode_table.sql'); - $this->pgsqlRunScriptFile(CONST_BasePath.'/data/us_postcode_table.sql'); + $this->pgsqlRunScriptFile(CONST_DataDir.'/data/country_name.sql'); + $this->pgsqlRunScriptFile(CONST_DataDir.'/data/country_osm_grid.sql.gz'); + $this->pgsqlRunScriptFile(CONST_DataDir.'/data/gb_postcode_table.sql'); + $this->pgsqlRunScriptFile(CONST_DataDir.'/data/us_postcode_table.sql'); - $sPostcodeFilename = CONST_BasePath.'/data/gb_postcode_data.sql.gz'; + $sPostcodeFilename = CONST_DataDir.'/data/gb_postcode_data.sql.gz'; if (file_exists($sPostcodeFilename)) { $this->pgsqlRunScriptFile($sPostcodeFilename); } else { warn('optional external GB postcode table file ('.$sPostcodeFilename.') not found. Skipping.'); } - $sPostcodeFilename = CONST_BasePath.'/data/us_postcode_data.sql.gz'; + $sPostcodeFilename = CONST_DataDir.'/data/us_postcode_data.sql.gz'; if (file_exists($sPostcodeFilename)) { $this->pgsqlRunScriptFile($sPostcodeFilename); } else { @@ -243,7 +243,7 @@ class SetupFunctions { info('Create Tables'); - $sTemplate = file_get_contents(CONST_BasePath.'/sql/tables.sql'); + $sTemplate = file_get_contents(CONST_DataDir.'/sql/tables.sql'); $sTemplate = $this->replaceSqlPatterns($sTemplate); $this->pgsqlRunScript($sTemplate, false); @@ -260,7 +260,7 @@ class SetupFunctions { info('Create Tables'); - $sTemplate = file_get_contents(CONST_BasePath.'/sql/table-triggers.sql'); + $sTemplate = file_get_contents(CONST_DataDir.'/sql/table-triggers.sql'); $sTemplate = $this->replaceSqlPatterns($sTemplate); $this->pgsqlRunScript($sTemplate, false); @@ -270,7 +270,7 @@ class SetupFunctions { info('Create Partition Tables'); - $sTemplate = file_get_contents(CONST_BasePath.'/sql/partition-tables.src.sql'); + $sTemplate = file_get_contents(CONST_DataDir.'/sql/partition-tables.src.sql'); $sTemplate = $this->replaceSqlPatterns($sTemplate); $this->pgsqlRunPartitionScript($sTemplate); @@ -280,7 +280,7 @@ class SetupFunctions { info('Create Partition Functions'); - $sTemplate = file_get_contents(CONST_BasePath.'/sql/partition-functions.src.sql'); + $sTemplate = file_get_contents(CONST_DataDir.'/sql/partition-functions.src.sql'); $this->pgsqlRunPartitionScript($sTemplate); } @@ -342,7 +342,7 @@ class SetupFunctions // pre-create the word list if (!$bDisableTokenPrecalc) { info('Loading word list'); - $this->pgsqlRunScriptFile(CONST_BasePath.'/data/words.sql'); + $this->pgsqlRunScriptFile(CONST_DataDir.'/data/words.sql'); } info('Load Data'); @@ -434,7 +434,7 @@ class SetupFunctions warn('Tiger data import selected but no files found in path '.CONST_Tiger_Data_Path); return; } - $sTemplate = file_get_contents(CONST_BasePath.'/sql/tiger_import_start.sql'); + $sTemplate = file_get_contents(CONST_DataDir.'/sql/tiger_import_start.sql'); $sTemplate = $this->replaceSqlPatterns($sTemplate); $this->pgsqlRunScript($sTemplate, false); @@ -488,7 +488,7 @@ class SetupFunctions } info('Creating indexes on Tiger data'); - $sTemplate = file_get_contents(CONST_BasePath.'/sql/tiger_import_finish.sql'); + $sTemplate = file_get_contents(CONST_DataDir.'/sql/tiger_import_finish.sql'); $sTemplate = $this->replaceSqlPatterns($sTemplate); $this->pgsqlRunScript($sTemplate, false); @@ -544,7 +544,7 @@ class SetupFunctions { checkModulePresence(); // raises exception on failure - $oBaseCmd = (new \Nominatim\Shell(CONST_BasePath.'/nominatim/nominatim.py')) + $oBaseCmd = (new \Nominatim\Shell(CONST_DataDir.'/nominatim/nominatim.py')) ->addParams('--database', $this->aDSNInfo['database']) ->addParams('--port', $this->aDSNInfo['port']) ->addParams('--threads', $this->iInstances); @@ -616,12 +616,12 @@ class SetupFunctions $this->db()->exec("DROP INDEX $sIndexName;"); } - $sTemplate = file_get_contents(CONST_BasePath.'/sql/indices.src.sql'); + $sTemplate = file_get_contents(CONST_DataDir.'/sql/indices.src.sql'); if (!$this->bDrop) { - $sTemplate .= file_get_contents(CONST_BasePath.'/sql/indices_updates.src.sql'); + $sTemplate .= file_get_contents(CONST_DataDir.'/sql/indices_updates.src.sql'); } if (!$this->dbReverseOnly()) { - $sTemplate .= file_get_contents(CONST_BasePath.'/sql/indices_search.src.sql'); + $sTemplate .= file_get_contents(CONST_DataDir.'/sql/indices_search.src.sql'); } $sTemplate = $this->replaceSqlPatterns($sTemplate); @@ -709,10 +709,9 @@ class SetupFunctions */ public function setupWebsite() { - $rOutputFile = fopen(CONST_InstallPath.'/settings/settings-frontend.php', 'w'); + $rOutputFile = fopen(CONST_InstallDir.'/settings/settings-frontend.php', 'w'); fwrite($rOutputFile, " "\033[92m", diff --git a/utils/country_languages.php b/utils/country_languages.php index 63f6525c..c9aa391b 100644 --- a/utils/country_languages.php +++ b/utils/country_languages.php @@ -1,6 +1,6 @@ = 11.0) { } -$oIndexCmd = (new \Nominatim\Shell(CONST_BasePath.'/nominatim/nominatim.py')) +$oIndexCmd = (new \Nominatim\Shell(CONST_DataDir.'/nominatim/nominatim.py')) ->addParams('--database', $aDSNInfo['database']) ->addParams('--port', $aDSNInfo['port']) ->addParams('--threads', $aResult['index-instances']); @@ -193,7 +193,7 @@ if ($aResult['check-for-updates']) { fail('Updates not set up. Please run ./utils/update.php --init-updates.'); } - $oCmd = (new \Nominatim\Shell(CONST_BasePath.'/utils/check_server_for_updates.py')) + $oCmd = (new \Nominatim\Shell(CONST_BinDir.'/check_server_for_updates.py')) ->addParams(CONST_Replication_Url) ->addParams($aLastState['sequence_id']); $iRet = $oCmd->run(); @@ -223,11 +223,11 @@ if (isset($aResult['import-diff']) || isset($aResult['import-file'])) { if ($aResult['calculate-postcodes']) { info('Update postcodes centroids'); - $sTemplate = file_get_contents(CONST_BasePath.'/sql/update-postcodes.sql'); + $sTemplate = file_get_contents(CONST_DataDir.'/sql/update-postcodes.sql'); runSQLScript($sTemplate, true, true); } -$sTemporaryFile = CONST_BasePath.'/data/osmosischange.osc'; +$sTemporaryFile = CONST_InstallDir.'/osmosischange.osc'; $bHaveDiff = false; $bUseOSMApi = isset($aResult['import-from-main-api']) && $aResult['import-from-main-api']; $sContentURL = ''; @@ -274,7 +274,7 @@ if ($bHaveDiff) { if ($aResult['recompute-word-counts']) { info('Recompute frequency of full-word search terms'); - $sTemplate = file_get_contents(CONST_BasePath.'/sql/words_from_search_name.sql'); + $sTemplate = file_get_contents(CONST_DataDir.'/sql/words_from_search_name.sql'); runSQLScript($sTemplate, true, true); } @@ -320,7 +320,7 @@ if ($aResult['import-osmosis'] || $aResult['import-osmosis-all']) { "Please check install documentation (https://nominatim.org/release-docs/latest/admin/Import-and-Update#setting-up-the-update-process)\n"); } - $sImportFile = CONST_InstallPath.'/osmosischange.osc'; + $sImportFile = CONST_InstallDir.'/osmosischange.osc'; $oCMDDownload = (new \Nominatim\Shell(CONST_Pyosmium_Binary)) ->addParams('--server', CONST_Replication_Url) @@ -379,7 +379,7 @@ if ($aResult['import-osmosis'] || $aResult['import-osmosis-all']) { // get the newest object from the diff file $sBatchEnd = 0; $iRet = 0; - $oCMD = new \Nominatim\Shell(CONST_BasePath.'/utils/osm_file_date.py', $sImportFile); + $oCMD = new \Nominatim\Shell(CONST_BinDir.'/osm_file_date.py', $sImportFile); exec($oCMD->escapedCmd(), $sBatchEnd, $iRet); if ($iRet == 5) { echo "Diff file is empty. skipping import.\n"; diff --git a/utils/warm.php b/utils/warm.php index 5476eae0..f86e0dd5 100644 --- a/utils/warm.php +++ b/utils/warm.php @@ -1,6 +1,6 @@ connect(); diff --git a/website/deletable.php b/website/deletable.php index 2028cbdd..9a0ea0d8 100644 --- a/website/deletable.php +++ b/website/deletable.php @@ -1,8 +1,8 @@ 0) { $aPointDetails['error_x'] = 0; $aPointDetails['error_y'] = 0; } - include(CONST_BasePath.'/lib/template/details-error-'.$sOutputFormat.'.php'); + include(CONST_LibDir.'/template/details-error-'.$sOutputFormat.'.php'); exit; } } @@ -247,4 +247,4 @@ if ($bIncludeKeywords) { logEnd($oDB, $hLog, 1); -include(CONST_BasePath.'/lib/template/details-'.$sOutputFormat.'.php'); +include(CONST_LibDir.'/template/details-'.$sOutputFormat.'.php'); diff --git a/website/lookup.php b/website/lookup.php index db2c01d6..e4a98939 100644 --- a/website/lookup.php +++ b/website/lookup.php @@ -1,9 +1,9 @@ lookup(); $aBatchResults[] = $aSearchResults; } - include(CONST_BasePath.'/lib/template/search-batch-json.php'); + include(CONST_LibDir.'/template/search-batch-json.php'); exit; } @@ -89,4 +89,4 @@ if (isset($_SERVER['REQUEST_SCHEME']) if (CONST_Debug) exit; $sOutputTemplate = ($sOutputFormat == 'jsonv2') ? 'json' : $sOutputFormat; -include(CONST_BasePath.'/lib/template/search-'.$sOutputTemplate.'.php'); +include(CONST_LibDir.'/template/search-'.$sOutputTemplate.'.php'); diff --git a/website/status.php b/website/status.php index 0d483544..dc497ff5 100644 --- a/website/status.php +++ b/website/status.php @@ -1,8 +1,8 @@ getSet('format', array('text', 'json'), 'text'); -- 2.45.1