]> git.openstreetmap.org Git - nominatim.git/commitdiff
remove remaining references to php code
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 15 Sep 2024 13:33:59 +0000 (15:33 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Sun, 15 Sep 2024 13:33:59 +0000 (15:33 +0200)
cmake/paths-py-no-php.tmpl
packaging/nominatim-api/extra_src/paths.py
packaging/nominatim-db/extra_src/nominatim_db/paths.py
src/nominatim_db/cli.py
src/nominatim_db/config.py
src/nominatim_db/tokenizer/factory.py
src/nominatim_db/tokenizer/icu_tokenizer.py
src/nominatim_db/tokenizer/legacy_tokenizer.py
src/nominatim_db/tools/exec_utils.py
test/python/cli/test_cli.py

index 36856bf3c37c4330ab9c012a5830d00c06f0a632..a95cb6645b5ebdca2210530b39bc9607d6dd3835 100644 (file)
@@ -9,7 +9,6 @@ Path settings for extra data used by Nominatim (installed version).
 """
 from pathlib import Path
 
-PHPLIB_DIR = None
 SQLLIB_DIR = (Path('@NOMINATIM_LIBDIR@') / 'lib-sql').resolve()
 DATA_DIR = Path('@NOMINATIM_DATADIR@').resolve()
 CONFIG_DIR = Path('@NOMINATIM_CONFIGDIR@').resolve()
index 6131319ca8d39878b58c7bda481f5ad38fbf6655..797acbb55eebccd279cbcc0be9cdec69a66e84fd 100644 (file)
@@ -9,7 +9,6 @@ Path settings for extra data used by Nominatim.
 """
 from pathlib import Path
 
-PHPLIB_DIR = None
 DATA_DIR = None
 SQLLIB_DIR = None
 CONFIG_DIR = (Path(__file__) / '..' / 'resources' / 'settings').resolve()
index 2294834fc1815a70120f8751890a5871fe17c380..796ff08b3519a205b5f8a926a7a46e17c0a89908 100644 (file)
@@ -9,7 +9,6 @@ Path settings for extra data used by Nominatim.
 """
 from pathlib import Path
 
-PHPLIB_DIR = None
 DATA_DIR = (Path(__file__) / '..' / 'resources').resolve()
 SQLLIB_DIR = (DATA_DIR / 'lib-sql')
 CONFIG_DIR = (DATA_DIR / 'settings')
index 9fd439f8d0f33684e5429f31c7386f57f7625ae3..9a54f338e0f61daecf8fe9e0de0a85a9d53f48f0 100644 (file)
@@ -19,7 +19,6 @@ from pathlib import Path
 
 from .config import Configuration
 from .errors import UsageError
-from .tools.exec_utils import run_php_server
 from . import clicmd
 from . import version
 from .clicmd.args import NominatimArgs, Subcommand
@@ -154,10 +153,10 @@ class AdminServe:
     from the current project directory. This webserver is only suitable
     for testing and development. Do not use it in production setups!
 
-    There are different webservers available. The default 'php' engine
-    runs the classic PHP frontend. The other engines are Python servers
-    which run the new Python frontend code. This is highly experimental
-    at the moment and may not include the full API.
+    There are two different webserver implementations for Python available:
+    falcon (the default) and starlette. You need to make sure the
+    appropriate Python packages as well as the uvicorn package are
+    installed to use this function.
 
     By the default, the webserver can be accessed at: http://127.0.0.1:8088
     """
@@ -167,19 +166,12 @@ class AdminServe:
         group.add_argument('--server', default='127.0.0.1:8088',
                            help='The address the server will listen to.')
         group.add_argument('--engine', default='falcon',
-                           choices=('php', 'falcon', 'starlette'),
+                           choices=('falcon', 'starlette'),
                            help='Webserver framework to run. (default: falcon)')
 
 
     def run(self, args: NominatimArgs) -> int:
-        if args.engine == 'php':
-            if args.config.lib_dir.php is None:
-                raise UsageError("PHP frontend not configured.")
-            LOG.warning('\n\nWARNING: the PHP frontend is deprecated '
-                        'and will be removed in Nominatim 5.0.\n\n')
-            run_php_server(args.server, args.project_dir / 'website')
-        else:
-            asyncio.run(self.run_uvicorn(args))
+        asyncio.run(self.run_uvicorn(args))
 
         return 0
 
index 357cc9d7175caf5e0aa4f71fc804a75bb48e2d25..a34ec9440361bc72c1c3f32f93a29633e1409708 100644 (file)
@@ -74,7 +74,6 @@ class Configuration:
         class _LibDirs:
             module: Path
             osm2pgsql: Path
-            php = paths.PHPLIB_DIR
             sql = paths.SQLLIB_DIR
             data = paths.DATA_DIR
 
index b9022d8d0105f3234f7283b0fa9c89286021da1f..5003c322e3764bfb49e1b01c71fbb20112d33543 100644 (file)
@@ -15,9 +15,6 @@ be used consistently when querying and updating the database.
 This module provides the functions to create and configure a new tokenizer
 as well as instantiating the appropriate tokenizer for updating an existing
 database.
-
-A tokenizer usually also includes PHP code for querying. The appropriate PHP
-normalizer module is installed, when the tokenizer is created.
 """
 from typing import Optional
 import logging
index 7cd96d591fcec97483a721542829f4da90e52430..1b95a90174841f00f552e8023c6ab4ffaef25280 100644 (file)
@@ -13,7 +13,6 @@ from typing import Optional, Sequence, List, Tuple, Mapping, Any, cast, \
 import itertools
 import logging
 from pathlib import Path
-from textwrap import dedent
 
 from psycopg.types.json import Jsonb
 from psycopg import sql as pysql
@@ -64,7 +63,6 @@ class ICUTokenizer(AbstractTokenizer):
         """
         self.loader = ICURuleLoader(config)
 
-        self._install_php(config.lib_dir.php, overwrite=True)
         self._save_config()
 
         if init_db:
@@ -81,8 +79,6 @@ class ICUTokenizer(AbstractTokenizer):
         with connect(self.dsn) as conn:
             self.loader.load_config_from_db(conn)
 
-        self._install_php(config.lib_dir.php, overwrite=False)
-
 
     def finalize_import(self, config: Configuration) -> None:
         """ Do any required postprocessing to make the tokenizer data ready
@@ -281,22 +277,6 @@ class ICUTokenizer(AbstractTokenizer):
             return list(s[0].split('@')[0] for s in cur)
 
 
-    def _install_php(self, phpdir: Optional[Path], overwrite: bool = True) -> None:
-        """ Install the php script for the tokenizer.
-        """
-        if phpdir is not None:
-            assert self.loader is not None
-            php_file = self.data_dir / "tokenizer.php"
-
-            if not php_file.exists() or overwrite:
-                php_file.write_text(dedent(f"""\
-                    <?php
-                    @define('CONST_Max_Word_Frequency', 10000000);
-                    @define('CONST_Term_Normalization_Rules', "{self.loader.normalization_rules}");
-                    @define('CONST_Transliteration', "{self.loader.get_search_rules()}");
-                    require_once('{phpdir}/tokenizer/icu_tokenizer.php');"""), encoding='utf-8')
-
-
     def _save_config(self) -> None:
         """ Save the configuration that needs to remain stable for the given
             database as database properties.
index 04b7b8814c64eb716e44b23ffb89a57f1c6a2c78..788053322741c5b7cf7403f03520e0d33bffae06 100644 (file)
@@ -14,7 +14,6 @@ import logging
 from pathlib import Path
 import re
 import shutil
-from textwrap import dedent
 
 from icu import Transliterator
 import psycopg
@@ -120,8 +119,6 @@ class LegacyTokenizer(AbstractTokenizer):
 
         self.normalization = config.TERM_NORMALIZATION
 
-        self._install_php(config, overwrite=True)
-
         with connect(self.dsn) as conn:
             _check_module(module_dir, conn)
             self._save_config(conn, config)
@@ -145,8 +142,6 @@ class LegacyTokenizer(AbstractTokenizer):
                             config.lib_dir.module,
                             config.project_dir / 'module')
 
-        self._install_php(config, overwrite=False)
-
     def finalize_import(self, config: Configuration) -> None:
         """ Do any required postprocessing to make the tokenizer data ready
             for use.
@@ -272,21 +267,6 @@ class LegacyTokenizer(AbstractTokenizer):
             return list(s[0] for s in cur)
 
 
-    def _install_php(self, config: Configuration, overwrite: bool = True) -> None:
-        """ Install the php script for the tokenizer.
-        """
-        if config.lib_dir.php is not None:
-            php_file = self.data_dir / "tokenizer.php"
-
-            if not php_file.exists() or overwrite:
-                php_file.write_text(dedent(f"""\
-                    <?php
-                    @define('CONST_Max_Word_Frequency', {config.MAX_WORD_FREQUENCY});
-                    @define('CONST_Term_Normalization_Rules', "{config.TERM_NORMALIZATION}");
-                    require_once('{config.lib_dir.php}/tokenizer/legacy_tokenizer.php');
-                    """), encoding='utf-8')
-
-
     def _init_db_tables(self, config: Configuration) -> None:
         """ Set up the word table and fill it with pre-computed word
             frequencies.
index 1adcc777b053bf7507ffaf8f6bff8fd8e84e8977..4cbbf95d9b650c2e8d11f6c2b36b4d5c32e78c60 100644 (file)
@@ -14,19 +14,12 @@ import re
 import subprocess
 import shutil
 
-from ..typing import StrPath
 from ..db.connection import get_pg_env
 from ..errors import UsageError
 from ..version import OSM2PGSQL_REQUIRED_VERSION
 
 LOG = logging.getLogger()
 
-def run_php_server(server_address: str, base_dir: StrPath) -> None:
-    """ Run the built-in server from the given directory.
-    """
-    subprocess.run(['/usr/bin/env', 'php', '-S', server_address],
-                   cwd=str(base_dir), check=True)
-
 
 def run_osm2pgsql(options: Mapping[str, Any]) -> None:
     """ Run osm2pgsql with the given options.
index 2831f84f1bc801d690966827bc2f741f4a440471..d42df50a760066f972628817b830c67899dea04a 100644 (file)
@@ -37,15 +37,6 @@ def test_cli_version(cli_call, capsys):
     assert captured.out.startswith('Nominatim version')
 
 
-def test_cli_serve_php(cli_call, mock_func_factory):
-    func = mock_func_factory(nominatim_db.cli, 'run_php_server')
-
-    cli_call('serve', '--engine', 'php') == 0
-
-    assert func.called == 1
-
-
-
 class TestCliWithDb:
 
     @pytest.fixture(autouse=True)