X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/31273a42bd925fa6baad86504c760c93e051106c..bf0710dd64eb421c14ec13363c8dcc3f90072b49:/utils/setup.php diff --git a/utils/setup.php b/utils/setup.php index 26d9e8c6..0b5392da 100755 --- a/utils/setup.php +++ b/utils/setup.php @@ -96,8 +96,10 @@ echo "Import\n"; $bDidSomething = true; - if (!file_exists(CONST_BasePath.'/osm2pgsql/osm2pgsql')) fail("please download and build osm2pgsql"); - passthru(CONST_BasePath.'/osm2pgsql/osm2pgsql -lsc -O gazetteer -C 10000 --hstore -d nominatim '.$aCMDResult['osm-file']); + $osm2pgsql = CONST_BasePath.'/osm2pgsql/osm2pgsql'; + if (!file_exists($osm2pgsql)) $osm2pgsql = trim(`which osm2pgsql`); + if (!file_exists($osm2pgsql)) fail("please download and build osm2pgsql"); + passthru($osm2pgsql.' -lsc -O gazetteer -C 10000 --hstore -d nominatim '.$aCMDResult['osm-file']); $oDB =& getDB(); $x = $oDB->getRow('select * from place limit 1'); @@ -130,13 +132,9 @@ { echo "Partitions\n"; $bDidSomething = true; -echo "here"; $oDB =& getDB(); -echo "there"; $sSQL = 'select partition from country_name order by country_code'; -var_dump($sSQL); $aPartitions = $oDB->getCol($sSQL); -var_dump($aPartitions); if (PEAR::isError($aPartitions)) { fail($aPartitions->getMessage()); @@ -147,11 +145,9 @@ var_dump($aPartitions); preg_match_all('#^-- start(.*?)^-- end#ms', $sTemplate, $aMatches, PREG_SET_ORDER); foreach($aMatches as $aMatch) { -var_dump($aMatch); $sResult = ''; foreach($aPartitions as $sPartitionName) { -var_dump($sPartitionName); $sResult .= str_replace('-partition-', $sPartitionName, $aMatch[1]); } $sTemplate = str_replace($aMatch[0], $sResult, $sTemplate); @@ -294,6 +290,7 @@ var_dump($sPartitionName); if ($aCMDResult['calculate-postcodes'] || $aCMDResult['all']) { + $bDidSomething = true; $oDB =& getDB(); if (!pg_query($oDB->connection, 'DELETE from placex where osm_type=\'P\'')) fail(pg_last_error($oDB->connection)); $sSQL = "insert into placex (osm_type,osm_id,class,type,postcode,country_code,geometry) "; @@ -371,26 +368,22 @@ var_dump($sPartitionName); { // Convert database DSN to psql paramaters $aDSNInfo = DB::parseDSN(CONST_Database_DSN); - $sCMD = 'psql '.$aDSNInfo['database']; - + if (!isset($aDSNInfo['port']) || !$aDSNInfo['port']) $aDSNInfo['port'] = 5432; + $sCMD = 'psql -p '.$aDSNInfo['port'].' '.$aDSNInfo['database']; $aDescriptors = array( 0 => array('pipe', 'r'), - 1 => array('pipe', 'w'), - 2 => array('file', '/dev/null', 'a') + 1 => STDOUT, + 2 => STDERR ); $ahPipes = null; $hProcess = proc_open($sCMD, $aDescriptors, $ahPipes); if (!is_resource($hProcess)) fail('unable to start pgsql'); - fwrite($ahPipes[0], $sScript); - fclose($ahPipes[0]); - - // TODO: error checking - while(!feof($ahPipes[1])) + while(strlen($sScript)) { - echo fread($ahPipes[1], 4096); + $written = fwrite($ahPipes[0], $sScript); + $sScript = substr($sScript, $written); } - fclose($ahPipes[1]); - + fclose($ahPipes[0]); proc_close($hProcess); }