*.log
*.pyc
-nominatim/*.d
-nominatim/*.o
-nominatim/nominatim
-module/nominatim.so
-module/nominatim.o
-settings/configuration.txt
-settings/download.lock
-settings/state.txt
+build
settings/local.php
-.deps/
-autom4te.cache/
-config.*
-configure
-Makefile
-!tests/scenes/bin/Makefile
-Makefile.in
-stamp-h1
-missing
-INSTALL
-aclocal.m4
-depcomp
-install-sh
-compile
-
data/wiki_import.sql
data/wiki_specialphrases.sql
data/osmosischange.osc
-.vagrant
\ No newline at end of file
+.vagrant
--- /dev/null
+#-----------------------------------------------------------------------------
+#
+# CMake Config
+#
+# Nominatim
+#
+#-----------------------------------------------------------------------------
+
+cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
+
+
+#-----------------------------------------------------------------------------
+#
+# Project version
+#
+#-----------------------------------------------------------------------------
+
+project(nominatim)
+
+set(NOMINATIM_VERSION_MAJOR 2)
+set(NOMINATIM_VERSION_MINOR 5)
+
+set(NOMINATIM_VERSION "${NOMINATIM_VERSION_MAJOR}.${NOMINATIM_VERSION_MINOR}")
+
+add_definitions(-DNOMINATIM_VERSION="${NOMINATIM_VERSION}")
+
+
+#-----------------------------------------------------------------------------
+#
+# Find external dependencies
+#
+#-----------------------------------------------------------------------------
+
+set(BUILD_TESTS on)
+add_subdirectory(osm2pgsql)
+
+find_package(Threads REQUIRED)
+
+unset(PostgreSQL_TYPE_INCLUDE_DIR CACHE)
+set(PostgreSQL_TYPE_INCLUDE_DIR "/usr/include/")
+find_package(PostgreSQL REQUIRED)
+include_directories(${PostgreSQL_INCLUDE_DIRS})
+
+find_program(PG_CONFIG pg_config)
+execute_process(COMMAND ${PG_CONFIG} --pgxs
+ OUTPUT_VARIABLE PGXS
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+find_package(ZLIB REQUIRED)
+
+find_package(BZip2 REQUIRED)
+
+find_package(LibXml2 REQUIRED)
+include_directories(${LIBXML2_INCLUDE_DIR})
+
+#-----------------------------------------------------------------------------
+#
+# Setup settings and paths
+#
+#-----------------------------------------------------------------------------
+
+configure_file(
+ ${PROJECT_SOURCE_DIR}/settings/settings.php
+ ${PROJECT_BINARY_DIR}/settings/settings.php
+)
+
+configure_file(
+ ${PROJECT_SOURCE_DIR}/settings/phrase_settings.php
+ ${PROJECT_BINARY_DIR}/settings/phrase_settings.php
+)
+
+execute_process(
+ COMMAND ln -s -t ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}/utils
+)
+
+#-----------------------------------------------------------------------------
+#
+# Tests
+#
+#-----------------------------------------------------------------------------
+
+include(CTest)
+
+set(TEST_BDD db osm2pgsql api)
+
+foreach (test ${TEST_BDD})
+ add_test(NAME bdd_${test}
+ COMMAND lettuce features/${test}
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests)
+ set_tests_properties(bdd_${test}
+ PROPERTIES ENVIRONMENT "NOMINATIM_DIR=${PROJECT_BINARY_DIR}")
+endforeach()
+
+add_test(NAME php
+ COMMAND phpunit ./
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests-php)
+
+#-----------------------------------------------------------------------------
+
+add_subdirectory(module)
+add_subdirectory(nominatim)
+
+#-----------------------------------------------------------------------------
+++ /dev/null
-ACLOCAL_AMFLAGS = -I osm2pgsql/m4
-AUTOMAKE_OPTIONS = -Wno-portability
-
-SUBDIRS = osm2pgsql module nominatim
-
-NOMINATIM_SERVER ?= $(shell echo a | php -F lib/init.php -E 'echo CONST_Website_BaseURL."\n";')
-NOMINATIM_DATABASE ?= $(shell echo a | php -F lib/init.php -E 'echo DB::parseDSN(CONST_Database_DSN)["database"];')
-
-install:
- @echo Nominatim needs to be executed directly from this directory. No install necessary.
-
-test:
- cd tests; NOMINATIM_SERVER=${NOMINATIM_SERVER} lettuce -t -Fail -t -poldi-only
-
-test-fast:
- cd tests; NOMINATIM_SERVER=${NOMINATIM_SERVER} NOMINATIM_REUSE_TEMPLATE=1 lettuce -t -Fail -t -poldi-only
-
-test-db:
- cd tests; NOMINATIM_SERVER=${NOMINATIM_SERVER} lettuce -t -Fail -t -poldi-only features/db
-
-test-db-fast:
- cd tests; NOMINATIM_SERVER=${NOMINATIM_SERVER} NOMINATIM_REUSE_TEMPLATE=1 lettuce -t -Fail -t -poldi-only features/db
-
-test-api:
- cd tests; NOMINATIM_SERVER=${NOMINATIM_SERVER} lettuce -t -Fail -t -poldi-only features/api
-
-.PHONY: test test-fast test-db test-db-fast test-api
Installation steps:
-0. If checking out from git run:
-
- ./autogen.sh
-
1. Compile Nominatim:
- ./configure
+ mkdir build
+ cd build
+ cmake ..
make
2. Get OSM data and import:
+++ /dev/null
-#!/bin/sh
-autoreconf -vfi
+++ /dev/null
-AC_INIT(Nominatim,2.5)
-if git rev-parse HEAD 2>/dev/null >/dev/null; then
- AC_SUBST([PACKAGE_VERSION], [$PACKAGE_VERSION-git-`git rev-parse --short HEAD`])
-fi
-
-dnl Required autoconf version
-AC_PREREQ(2.61)
-
-AM_INIT_AUTOMAKE([1.9.6 dist-bzip2 std-options check-news])
-
-dnl Additional macro definitions are in here
-m4_include([m4/ax_lib_postgresql_svr.m4])
-AC_CONFIG_MACRO_DIR([osm2pgsql/m4])
-
-dnl Generate configuration header file
-AC_CONFIG_HEADER(nominatim/config.h)
-
-
-dnl Find C compiler
-AC_PROG_CC
-
-dnl Find C++ compiler
-AC_PROG_CXX
-
-dnl pthread
-AX_PTHREAD([], [AC_MSG_ERROR([pthread library required])])
-
-dnl Check for Geos library
-AX_LIB_GEOS
-if test "x$GEOS_VERSION" = "x"
-then
- AC_MSG_ERROR([required library not found]);
-fi
-
-dnl Check for Proj library
-AX_LIB_PROJ
-if test "$HAVE_PROJ" = "no"
-then
- AC_MSG_ERROR([required library not found]);
-fi
-
-
-dnl Check for PostgresSQL client library
-AX_LIB_POSTGRESQL(9.0)
-if test "x$POSTGRESQL_VERSION" = "x"
-then
- AC_MSG_ERROR([postgresql client library not found])
-fi
-AX_LIB_POSTGRESQL_SVR(9.0)
-if test ! -f "$POSTGRESQL_PGXS"
-then
- AC_MSG_ERROR([postgresql server development library not found])
-fi
-
-dnl Check for bzip2 library
-AX_LIB_BZIP2
-if test "$HAVE_BZIP2" = "no"
-then
- AC_MSG_ERROR([required library not found]);
-fi
-
-dnl Check for libxml2 library
-AM_PATH_XML2
-
-AC_CONFIG_SUBDIRS([osm2pgsql])
-
-AC_OUTPUT(Makefile nominatim/Makefile module/Makefile)
+++ /dev/null
-# This file includes a small subset of OpenLayers code, designed to be
-# integrated into another application. It includes only the Layer types
-# neccesary to create tiled or untiled WMS, and does not include any Controls.
-# This is the result of what was at the time called "Webmap.js" at the FOSS4G
-# Web Mapping BOF.
-
-[first]
-
-[last]
-
-[include]
-OpenLayers/Map.js
-OpenLayers/Kinetic.js
-OpenLayers/Geometry/MultiLineString.js
-OpenLayers/Geometry/MultiPolygon.js
-OpenLayers/Format/WKT.js
-OpenLayers/Layer/OSM.js
-OpenLayers/Layer/Vector.js
-OpenLayers/Layer/SphericalMercator.js
-OpenLayers/Control/Attribution.js
-OpenLayers/Control/KeyboardDefaults.js
-OpenLayers/Control/Navigation.js
-OpenLayers/Control/MousePosition.js
-OpenLayers/Control/PanZoomBar.js
-OpenLayers/Control/Permalink.js
-OpenLayers/Control/TouchNavigation.js
-OpenLayers/Style.js
-OpenLayers/Protocol/HTTP.js
-OpenLayers/Projection.js
-OpenLayers/Renderer/SVG.js
-OpenLayers/Renderer/VML.js
-OpenLayers/Renderer/Canvas.js
-
-[exclude]
-
-
@define('CONST_BasePath', dirname(dirname(__FILE__)));
- require_once(CONST_BasePath.'/settings/settings.php');
+ require_once('settings/settings.php');
require_once(CONST_BasePath.'/lib/lib.php');
require_once(CONST_BasePath.'/lib/leakybucket.php');
require_once(CONST_BasePath.'/lib/db.php');
+++ /dev/null
-# SYNOPSIS
-#
-# AX_LIB_POSTGRESQL_SVR([MINIMUM-VERSION])
-#
-# DESCRIPTION
-#
-# This macro provides tests of availability of PostgreSQL server library
-#
-# This macro calls:
-#
-# AC_SUBST(POSTGRESQL_PGXS)
-# AC_SUBST(POSTGRESQL_SERVER_CFLAGS)
-#
-# LICENSE
-#
-# Copyright (c) 2008 Mateusz Loskot <mateusz@loskot.net>
-# Copyright (c) 2015 Sarah Hoffmann <lonia@denofr.de>
-#
-# Copying and distribution of this file, with or without modification, are
-# permitted in any medium without royalty provided the copyright notice
-# and this notice are preserved.
-
-AC_DEFUN([AX_LIB_POSTGRESQL_SVR],
-[
- AC_ARG_WITH([postgresql],
- AC_HELP_STRING([--with-postgresql-svr=@<:@ARG@:>@],
- [use PostgreSQL server library @<:@default=yes@:>@, optionally specify path to pg_config]
- ),
- [
- if test "$withval" = "no"; then
- want_postgresql="no"
- elif test "$withval" = "yes"; then
- want_postgresql="yes"
- else
- want_postgresql="yes"
- PG_CONFIG="$withval"
- fi
- ],
- [want_postgresql="yes"]
- )
-
- dnl
- dnl Check PostgreSQL server libraries
- dnl
-
- if test "$want_postgresql" = "yes"; then
-
- if test -z "$PG_CONFIG" -o test; then
- AC_PATH_PROG([PG_CONFIG], [pg_config], [])
- fi
-
- if test ! -x "$PG_CONFIG"; then
- AC_MSG_ERROR([$PG_CONFIG does not exist or it is not an exectuable file])
- PG_CONFIG="no"
- found_postgresql="no"
- fi
-
- if test "$PG_CONFIG" != "no"; then
- AC_MSG_CHECKING([for PostgreSQL server libraries])
-
- POSTGRESQL_SERVER_CFLAGS="-I`$PG_CONFIG --includedir-server`"
-
- POSTGRESQL_VERSION=`$PG_CONFIG --version | sed -e 's#PostgreSQL ##'`
-
- POSTGRESQL_PGXS=`$PG_CONFIG --pgxs`
- if test -f "$POSTGRESQL_PGXS"
- then
- found_postgresql="yes"
- AC_MSG_RESULT([yes])
- fi
- else
- found_postgresql="no"
- AC_MSG_RESULT([no])
- fi
- fi
-
- dnl
- dnl Check if required version of PostgreSQL is available
- dnl
-
-
- postgresql_version_req=ifelse([$1], [], [], [$1])
-
- if test "$found_postgresql" = "yes" -a -n "$postgresql_version_req"; then
-
- AC_MSG_CHECKING([if PostgreSQL version is >= $postgresql_version_req])
-
- dnl Decompose required version string of PostgreSQL
- dnl and calculate its number representation
- postgresql_version_req_major=`expr $postgresql_version_req : '\([[0-9]]*\)'`
- postgresql_version_req_minor=`expr $postgresql_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
- postgresql_version_req_micro=`expr $postgresql_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
- if test "x$postgresql_version_req_micro" = "x"; then
- postgresql_version_req_micro="0"
- fi
-
- postgresql_version_req_number=`expr $postgresql_version_req_major \* 1000000 \
- \+ $postgresql_version_req_minor \* 1000 \
- \+ $postgresql_version_req_micro`
-
- dnl Decompose version string of installed PostgreSQL
- dnl and calculate its number representation
- postgresql_version_major=`expr $POSTGRESQL_VERSION : '\([[0-9]]*\)'`
- postgresql_version_minor=`expr $POSTGRESQL_VERSION : '[[0-9]]*\.\([[0-9]]*\)'`
- postgresql_version_micro=`expr $POSTGRESQL_VERSION : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
- if test "x$postgresql_version_micro" = "x"; then
- postgresql_version_micro="0"
- fi
-
- postgresql_version_number=`expr $postgresql_version_major \* 1000000 \
- \+ $postgresql_version_minor \* 1000 \
- \+ $postgresql_version_micro`
-
- postgresql_version_check=`expr $postgresql_version_number \>\= $postgresql_version_req_number`
- if test "$postgresql_version_check" = "1"; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- fi
- fi
-
- AC_SUBST([POSTGRESQL_PGXS])
- AC_SUBST([POSTGRESQL_SERVER_CFLAGS])
-])
-
+++ /dev/null
-# SYNOPSIS
-#
-# AX_LIB_XML2([MINIMUM-VERSION])
-#
-# DESCRIPTION
-#
-# This macro provides tests of availability of xml2 'libxml2' library
-# of particular version or newer.
-#
-# AX_LIB_LIBXML2 macro takes only one argument which is optional. If
-# there is no required version passed, then macro does not run version
-# test.
-#
-# The --with-libxml2 option takes one of three possible values:
-#
-# no - do not check for xml2 library
-#
-# yes - do check for xml2 library in standard locations (xml2-config
-# should be in the PATH)
-#
-# path - complete path to xml2-config utility, use this option if xml2-config
-# can't be found in the PATH
-#
-# This macro calls:
-#
-# AC_SUBST(XML2_CFLAGS)
-# AC_SUBST(XML2_LDFLAGS)
-# AC_SUBST(XML2_VERSION)
-#
-# And sets:
-#
-# HAVE_XML2
-#
-# LICENSE
-#
-# Copyright (c) 2009 Hartmut Holzgraefe <hartmut@php.net>
-#
-# Copying and distribution of this file, with or without modification, are
-# permitted in any medium without royalty provided the copyright notice
-# and this notice are preserved.
-
-AC_DEFUN([AX_LIB_XML2],
-[
- AC_ARG_WITH([libxml2],
- AC_HELP_STRING([--with-libxml2=@<:@ARG@:>@],
- [use libxml2 library @<:@default=yes@:>@, optionally specify path to xml2-config]
- ),
- [
- if test "$withval" = "no"; then
- want_libxml2="no"
- elif test "$withval" = "yes"; then
- want_libxml2="yes"
- else
- want_libxml2="yes"
- XML2_CONFIG="$withval"
- fi
- ],
- [want_libxml2="yes"]
- )
-
- XML2_CFLAGS=""
- XML2_LDFLAGS=""
- XML2_VERSION=""
-
- dnl
- dnl Check xml2 libraries (libxml2)
- dnl
-
- if test "$want_libxml2" = "yes"; then
-
- if test -z "$XML2_CONFIG" -o test; then
- AC_PATH_PROG([XML2_CONFIG], [xml2-config], [])
- fi
-
- if test ! -x "$XML2_CONFIG"; then
- AC_MSG_ERROR([$XML2_CONFIG does not exist or it is not an exectuable file])
- XML2_CONFIG="no"
- found_libxml2="no"
- fi
-
- if test "$XML2_CONFIG" != "no"; then
- AC_MSG_CHECKING([for xml2 libraries])
-
- XML2_CFLAGS="`$XML2_CONFIG --cflags`"
- XML2_LDFLAGS="`$XML2_CONFIG --libs`"
-
- XML2_VERSION=`$XML2_CONFIG --version`
-
- AC_DEFINE([HAVE_XML2], [1],
- [Define to 1 if xml2 libraries are available])
-
- found_libxml2="yes"
- AC_MSG_RESULT([yes])
- else
- found_libxml2="no"
- AC_MSG_RESULT([no])
- fi
- fi
-
- dnl
- dnl Check if required version of xml2 is available
- dnl
-
-
- libxml2_version_req=ifelse([$1], [], [], [$1])
-
-
- if test "$found_libxml2" = "yes" -a -n "$libxml2_version_req"; then
-
- AC_MSG_CHECKING([if libxml2 version is >= $libxml2_version_req])
-
- dnl Decompose required version string of libxml2
- dnl and calculate its number representation
- libxml2_version_req_major=`expr $libxml2_version_req : '\([[0-9]]*\)'`
- libxml2_version_req_minor=`expr $libxml2_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
- libxml2_version_req_micro=`expr $libxml2_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
- if test "x$libxml2_version_req_micro" = "x"; then
- libxml2_version_req_micro="0"
- fi
-
- libxml2_version_req_number=`expr $libxml2_version_req_major \* 1000000 \
- \+ $libxml2_version_req_minor \* 1000 \
- \+ $libxml2_version_req_micro`
-
- dnl Decompose version string of installed PostgreSQL
- dnl and calculate its number representation
- libxml2_version_major=`expr $XML2_VERSION : '\([[0-9]]*\)'`
- libxml2_version_minor=`expr $XML2_VERSION : '[[0-9]]*\.\([[0-9]]*\)'`
- libxml2_version_micro=`expr $XML2_VERSION : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
- if test "x$libxml2_version_micro" = "x"; then
- libxml2_version_micro="0"
- fi
-
- libxml2_version_number=`expr $libxml2_version_major \* 1000000 \
- \+ $libxml2_version_minor \* 1000 \
- \+ $libxml2_version_micro`
-
- libxml2_version_check=`expr $libxml2_version_number \>\= $libxml2_version_req_number`
- if test "$libxml2_version_check" = "1"; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- fi
- fi
-
- AC_SUBST([XML2_VERSION])
- AC_SUBST([XML2_CFLAGS])
- AC_SUBST([XML2_LDFLAGS])
-])
-
--- /dev/null
+# just use the pgxs makefile
+ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/dummy
+ COMMAND PGXS=${PGXS} PG_CONFIG=${PG_CONFIG} make -f ${CMAKE_CURRENT_SOURCE_DIR}/Makefile
+ COMMENT "Running external makefile ${PGXS}"
+ )
+
+ADD_CUSTOM_TARGET( nominatim_lib ALL
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/dummy
+ )
+
MODULES = nominatim
-PGXS := @POSTGRESQL_PGXS@
-PG_CONFIG := @PG_CONFIG@
include $(PGXS)
all:
--- /dev/null
+add_executable(nominatim export.c geometry.cpp import.c index.c input.c nominatim.c postgresql.c sprompt.c)
+
+target_link_libraries(nominatim ${LIBXML2_LIBRARIES} ${ZLIB_LIBRARIES} ${BZIP2_LIBRARIES} ${PostgreSQL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
+
+++ /dev/null
-bin_PROGRAMS = nominatim
-
-nominatim_SOURCES = export.c geometry.cpp import.c index.c input.c nominatim.c postgresql.c sprompt.c
-
-AM_CFLAGS = @PTHREAD_CFLAGS@ @POSTGRESQL_CPPFLAGS@ @XML_CPPFLAGS@ @BZIP2_CFLAGS@ @GEOS_CFLAGS@ @PROJ_CFLAGS@ -DVERSION='"@PACKAGE_VERSION@"'
-AM_CPPFLAGS = @PTHREAD_CFLAGS@ @POSTGRESQL_CPPFLAGS@ @XML_CPPFLAGS@ @BZIP2_CFLAGS@ @GEOS_CFLAGS@ @PROJ_CFLAGS@
-
-nominatim_LDADD = @PTHREAD_CFLAGS@ @POSTGRESQL_LDFLAGS@ @POSTGRESQL_LIBS@ @XML_LIBS@ @BZIP2_LDFLAGS@ @BZIP2_LIBS@ @GEOS_LDFLAGS@ @GEOS_LIBS@ @PROJ_LDFLAGS@ @PROJ_LIBS@ -lz
-
PGconn *conn;
- fprintf(stderr, "nominatim version %s\n\n", VERSION);
+ fprintf(stderr, "nominatim version %s\n\n", NOMINATIM_VERSION);
while (1)
{
-Subproject commit 8179cdb67e70d7fb5605ab6ddedfd0bd3347db47
+Subproject commit fa6a8102e7ee98d011be12fa7549eb3e9e9248c0
<?php
- if (file_exists(CONST_BasePath.'/settings/local.php')) require_once(CONST_BasePath.'/settings/local.php');
+ @define('CONST_InstallPath', dirname(dirname(__FILE__)));
+ if (file_exists(CONST_InstallPath.'/settings/local.php')) require_once(CONST_InstallPath.'/settings/local.php');
if (isset($_GET['debug']) && $_GET['debug']) @define('CONST_Debug', true);
// General settings
// Paths
@define('CONST_Path_Postgresql_Contrib', '/usr/share/postgresql/'.CONST_Postgresql_Version.'/contrib');
@define('CONST_Path_Postgresql_Postgis', CONST_Path_Postgresql_Contrib.'/postgis-'.CONST_Postgis_Version);
- @define('CONST_Osm2pgsql_Binary', CONST_BasePath.'/osm2pgsql/osm2pgsql');
+ @define('CONST_Osm2pgsql_Binary', CONST_InstallPath.'/osm2pgsql/osm2pgsql');
@define('CONST_Osmosis_Binary', '/usr/bin/osmosis');
@define('CONST_Tiger_Data_Path', CONST_BasePath.'/data/tiger');
import psycopg2.extensions
import psycopg2.extras
import os
-import subprocess
import random
import json
import re
'--search', query]
if with_dups is not None:
cmd.append('--nodedupe')
- proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ proc = subprocess.Popen(cmd, cwd=world.config.source_dir,
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(outp, err) = proc.communicate()
assert (proc.returncode == 0), "query.php failed with message: %s" % err
world.page = outp
cmd = [os.path.join(world.config.source_dir, 'utils', 'setup.php')]
cmd.extend(['--osm-file', fname, '--import-data','--osm2pgsql-cache', '300'])
- proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ proc = subprocess.Popen(cmd, cwd=world.config.source_dir,
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(outp, outerr) = proc.communicate()
assert (proc.returncode == 0), "OSM data import failed:\n%s\n%s\n" % (outp, outerr)
cmd = [os.path.join(world.config.source_dir, 'utils', 'update.php')]
cmd.extend(['--import-diff', fname])
- proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ proc = subprocess.Popen(cmd, cwd=world.config.source_dir,
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(outp, outerr) = proc.communicate()
assert (proc.returncode == 0), "OSM data update failed:\n%s\n%s\n" % (outp, outerr)
logging.basicConfig(level=loglevel)
# Nominatim test setup
self.base_url = os.environ.get('NOMINATIM_SERVER', 'http://localhost/nominatim')
- self.source_dir = os.path.abspath(os.environ.get('NOMINATIM_DIR', '..'))
+ self.source_dir = os.path.abspath(os.environ.get('NOMINATIM_DIR', '../build'))
self.template_db = os.environ.get('TEMPLATE_DB', 'test_template_nominatim')
self.test_db = os.environ.get('TEST_DB', 'test_nominatim')
self.local_settings_file = os.environ.get('NOMINATIM_SETTINGS', '/tmp/nominatim_settings.php')
def run_nominatim_script(script, *args):
cmd = [os.path.join(world.config.source_dir, 'utils', '%s.php' % script)]
cmd.extend(['--%s' % x for x in args])
- proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ proc = subprocess.Popen(cmd, cwd=world.config.source_dir,
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(outp, outerr) = proc.communicate()
assert (proc.returncode == 0), "Script '%s' failed:\n%s\n%s\n" % (script, outp, outerr)
conn.close()
# execute osm2pgsql on an empty file to get the right tables
osm2pgsql = os.path.join(world.config.source_dir, 'osm2pgsql', 'osm2pgsql')
- proc = subprocess.Popen([osm2pgsql, '-lsc', '-O', 'gazetteer', '-d', world.config.template_db, '-'],
- stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ proc = subprocess.Popen([osm2pgsql, '-lsc', '-r', 'xml', '-O', 'gazetteer', '-d', world.config.template_db, '-'],
+ cwd=world.config.source_dir, stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
[outstr, errstr] = proc.communicate(input='<osm version="0.6"></osm>')
world.run_nominatim_script('setup', 'create-functions', 'create-tables', 'create-partition-tables', 'create-partition-functions', 'load-data', 'create-search-indices')
);
getCmdOpt($_SERVER['argv'], $aCMDOptions, $aCMDResult, true, true);
- include(CONST_BasePath.'/settings/phrase_settings.php');
+ include(CONST_InstallPath.'/settings/phrase_settings.php');
if (true)
{
{
echo "Functions\n";
$bDidSomething = true;
- if (!file_exists(CONST_BasePath.'/module/nominatim.so')) fail("nominatim module not built");
+ if (!file_exists(CONST_InstallPath.'/module/nominatim.so')) fail("nominatim module not built");
$sTemplate = file_get_contents(CONST_BasePath.'/sql/functions.sql');
- $sTemplate = str_replace('{modulepath}', CONST_BasePath.'/module', $sTemplate);
+ $sTemplate = str_replace('{modulepath}', CONST_InstallPath.'/module', $sTemplate);
if ($aCMDResult['enable-diff-updates']) $sTemplate = str_replace('RETURN NEW; -- @DIFFUPDATES@', '--', $sTemplate);
if ($aCMDResult['enable-debug-statements']) $sTemplate = str_replace('--DEBUG:', '', $sTemplate);
if (CONST_Limit_Reindexing) $sTemplate = str_replace('--LIMIT INDEXING:', '', $sTemplate);
echo "Functions\n";
$sTemplate = file_get_contents(CONST_BasePath.'/sql/functions.sql');
$sTemplate = str_replace('{modulepath}',
- CONST_BasePath.'/module', $sTemplate);
+ CONST_InstallPath.'/module', $sTemplate);
pgsqlRunScript($sTemplate);
}
}
else
{
- if (file_exists(CONST_BasePath.'/settings/configuration.txt'))
+ if (file_exists(CONST_InstallPath.'/settings/configuration.txt'))
{
echo "settings/configuration.txt already exists\n";
}
else
{
- passthru(CONST_Osmosis_Binary.' --read-replication-interval-init '.CONST_BasePath.'/settings');
+ passthru(CONST_Osmosis_Binary.' --read-replication-interval-init '.CONST_InstallPath.'/settings');
// update osmosis configuration.txt with our settings
- passthru("sed -i 's!baseUrl=.*!baseUrl=".CONST_Replication_Url."!' ".CONST_BasePath.'/settings/configuration.txt');
- passthru("sed -i 's:maxInterval = .*:maxInterval = ".CONST_Replication_MaxInterval.":' ".CONST_BasePath.'/settings/configuration.txt');
+ passthru("sed -i 's!baseUrl=.*!baseUrl=".CONST_Replication_Url."!' ".CONST_InstallPath.'/settings/configuration.txt');
+ passthru("sed -i 's:maxInterval = .*:maxInterval = ".CONST_Replication_MaxInterval.":' ".CONST_InstallPath.'/settings/configuration.txt');
}
// Find the last node in the DB
echo "Getting state file: $sRepURL\n";
$sStateFile = file_get_contents($sRepURL);
if (!$sStateFile || strlen($sStateFile) > 1000) fail("unable to obtain state file");
- file_put_contents(CONST_BasePath.'/settings/state.txt', $sStateFile);
+ file_put_contents(CONST_InstallPath.'/settings/state.txt', $sStateFile);
echo "Updating DB status\n";
pg_query($oDB->connection, 'TRUNCATE import_status');
$sSQL = "INSERT INTO import_status VALUES('".$aRepMatch[2]."')";
$bDidSomething = true;
$sOutputFile = '';
if (isset($aCMDResult['index-output'])) $sOutputFile = ' -F '.$aCMDResult['index-output'];
- $sBaseCmd = CONST_BasePath.'/nominatim/nominatim -i -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'].' -t '.$iInstances.$sOutputFile;
+ $sBaseCmd = CONST_InstallPath.'/nominatim/nominatim -i -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'].' -t '.$iInstances.$sOutputFile;
passthruCheckReturn($sBaseCmd.' -R 4');
if (!$aCMDResult['index-noanalyse']) pgsqlRunScript('ANALYSE');
passthruCheckReturn($sBaseCmd.' -r 5 -R 25');
);
getCmdOpt($_SERVER['argv'], $aCMDOptions, $aCMDResult, true, true);
- include(CONST_BasePath.'/settings/phrase_settings.php');
+ include(CONST_InstallPath.'/settings/phrase_settings.php');
if ($aCMDResult['countries']) {
}
*/
- // Assume osm2pgsql is in the folder above
- $sBasePath = dirname(dirname(__FILE__));
-
date_default_timezone_set('Etc/UTC');
$oDB =& getDB();
if ($aResult['index'])
{
- passthru(CONST_BasePath.'/nominatim/nominatim -i -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'].' -t '.$aResult['index-instances'].' -r '.$aResult['index-rank']);
+ passthru(CONST_InstallPath.'/nominatim/nominatim -i -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'].' -t '.$aResult['index-instances'].' -r '.$aResult['index-rank']);
}
if ($aResult['import-osmosis'] || $aResult['import-osmosis-all'])
$sImportFile = CONST_BasePath.'/data/osmosischange.osc';
$sOsmosisCMD = CONST_Osmosis_Binary;
- $sOsmosisConfigDirectory = CONST_BasePath.'/settings';
+ $sOsmosisConfigDirectory = CONST_InstallPath.'/settings';
$sCMDDownload = $sOsmosisCMD.' --read-replication-interval workingDirectory='.$sOsmosisConfigDirectory.' --simplify-change --write-xml-change '.$sImportFile;
$sCMDCheckReplicationLag = $sOsmosisCMD.' -q --read-replication-lag workingDirectory='.$sOsmosisConfigDirectory;
$sCMDImport = $sOsm2pgsqlCmd.' '.$sImportFile;
- $sCMDIndex = $sBasePath.'/nominatim/nominatim -i -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'].' -t '.$aResult['index-instances'];
+ $sCMDIndex = $sInstallPath.'/nominatim/nominatim -i -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'].' -t '.$aResult['index-instances'];
if (!$aResult['no-npi']) {
$sCMDIndex .= '-F ';
}
var_dump($iNPIID);
exit(1);
}
- $sConfigDirectory = CONST_BasePath.'/settings';
- $sCMDImportTemplate = $sBasePath.'/nominatim/nominatim -d gazetteer -P 5433 -I -T '.$sBasePath.'/nominatim/partitionedtags.def -F ';
+ $sConfigDirectory = CONST_InstallPath.'/settings';
+ $sCMDImportTemplate = $sBasePath.'/nominatim/nominatim -d gazetteer -P 5433 -I -T '.CONST_BasePath.'/nominatim/partitionedtags.def -F ';
while(true)
{
$fStartTime = time();
yum install -y epel-release
yum install -y postgresql-server postgresql-contrib postgresql-devel postgis postgis-utils \
- make automake gcc gcc-c++ libtool policycoreutils-python \
+ make cmake gcc gcc-c++ libtool policycoreutils-python \
php-pgsql php php-pear php-pear-DB libpqxx-devel proj-epsg \
bzip2-devel proj-devel geos-devel libxml2-devel boost-devel \
expat-devel zlib-devel
# If the Nominatim source is not being shared with the host, check out source.
if [ ! -d "Nominatim" ]; then
yum install -y git
- sudo -u $USERNAME git clone --recursive https://github.com/twain47/Nominatim.git
+ sudo -H -u $USERNAME git clone --recursive https://github.com/twain47/Nominatim.git
fi
# Configure and compile the source.
cd Nominatim
-sudo -u $USERNAME ./autogen.sh
-sudo -u $USERNAME ./configure
+sudu -u $USERNAME mkdir build-vagrant
+cd build-vagrant
+sudo -u $USERNAME cmake ..
sudo -u $USERNAME make
# Make sure that postgres has access to the nominatim library.
sudo apt-get update -qq
sudo apt-get upgrade -y
sudo apt-get install -y build-essential libgeos-dev libpq-dev libbz2-dev \
- libtool automake libproj-dev libboost-dev libboost-system-dev \
+ libtool cmake libproj-dev libboost-dev libboost-system-dev \
libboost-filesystem-dev libboost-thread-dev libexpat-dev
sudo apt-get autoremove -y
# If the Nominatim source is not being shared with the host, check out source.
if [ ! -d "Nominatim" ]; then
sudo apt-get install -y git
- sudo -u $USERNAME git clone --recursive https://github.com/twain47/Nominatim.git
+ sudo -H -u $USERNAME git clone --recursive https://github.com/twain47/Nominatim.git
fi
cd Nominatim
-
-sudo -u $USERNAME ./autogen.sh
-sudo -u $USERNAME ./configure
+sudo -u $USERNAME mkdir build-vagrant
+cd build-vagrant
+sudo -u $USERNAME cmake ..
sudo -u $USERNAME make
chmod +x ./
chmod +x ./module