diff --git a/tools/python/maps_generator/__main__.py b/tools/python/maps_generator/__main__.py index 842d0671e5..36f614f96c 100644 --- a/tools/python/maps_generator/__main__.py +++ b/tools/python/maps_generator/__main__.py @@ -10,7 +10,8 @@ from .maps_generator import (generate_maps, generate_coasts, reset_to_stage, ALL_STAGES, stage_download_production_external, stage_descriptions, stage_ugc, stage_popularity, stage_localads, stage_statistics, stage_srtm, - stages_as_string, stage_as_string, stage_coastline) + stages_as_string, stage_as_string, stage_coastline, + stage_update_planet) from .utils.collections import unique logger = logging.getLogger("maps_generator") @@ -220,6 +221,9 @@ def main(): raise SkipError(f"Stages {set(options['skip']) - set(ALL_STAGES)} " f"not found.") + if settings.PLANET_URL != settings.DEFAULT_PLANET_URL: + options["skip"] += stages_as_string(stage_update_planet) + if WORLD_NAME in options["countries"] and WORLD_COASTS_NAME not in options["countries"]: raise ValidationError(f"{WORLD_NAME} depends on {WORLD_COASTS_NAME}.") diff --git a/tools/python/maps_generator/generator/settings.py b/tools/python/maps_generator/generator/settings.py index 5ac8204ad7..12060161be 100644 --- a/tools/python/maps_generator/generator/settings.py +++ b/tools/python/maps_generator/generator/settings.py @@ -40,8 +40,8 @@ MAIN_OUT_PATH = os.path.join(WORK_PATH, "generation") VERSION_FILE_NAME = "version.txt" # External resources -PLANET_URL = "https://planet.openstreetmap.org/pbf/planet-latest.osm.pbf" -PLANET_MD5_URL = PLANET_URL + ".md5" +DEFAULT_PLANET_URL = "https://planet.openstreetmap.org/pbf/planet-latest.osm.pbf" +DEFAULT_PLANET_MD5_URL = DEFAULT_PLANET_URL + ".md5" PLANET_COASTS_URL = "" UGC_URL = "" HOTELS_URL = "" @@ -113,8 +113,8 @@ OSM_TOOLS_PATH = _get_opt_path(config, "Osm tools", "OSM_TOOLS_PATH", OSM_TOOLS_ LOG_FILE_PATH = _get_opt_path(config, "Logging", "MAIN_LOG", LOG_FILE_PATH) os.makedirs(os.path.dirname(os.path.abspath(LOG_FILE_PATH)), exist_ok=True) -PLANET_URL = _get_opt_path(config, "External", "PLANET_URL", PLANET_URL) -PLANET_MD5_URL = _get_opt_path(config, "External", "PLANET_MD5_URL", PLANET_MD5_URL) +PLANET_URL = _get_opt_path(config, "External", "PLANET_URL", DEFAULT_PLANET_URL) +PLANET_MD5_URL = _get_opt_path(config, "External", "PLANET_MD5_URL", DEFAULT_PLANET_MD5_URL) PLANET_COASTS_URL = _get_opt_path(config, "External", "PLANET_COASTS_URL", PLANET_COASTS_URL) UGC_URL = _get_opt_path(config, "External", "UGC_URL", UGC_URL) HOTELS_URL = _get_opt_path(config, "External", "HOTELS_URL", HOTELS_URL) diff --git a/tools/python/maps_generator/generator/stages.py b/tools/python/maps_generator/generator/stages.py index ce0a7195ab..0ed7b25ee0 100644 --- a/tools/python/maps_generator/generator/stages.py +++ b/tools/python/maps_generator/generator/stages.py @@ -25,8 +25,8 @@ def convert_planet(tool, in_planet, out_planet, output=subprocess.DEVNULL, write_md5sum(out_planet, md5(out_planet)) -def stage_download_and_convert_planet(env, **kwargs): - if not is_verified(settings.PLANET_PBF): +def stage_download_and_convert_planet(env, force_download, **kwargs): + if force_download or not is_verified(settings.PLANET_PBF): download_planet(settings.PLANET_PBF) convert_planet(env[settings.OSM_TOOL_CONVERT], diff --git a/tools/python/maps_generator/maps_generator.py b/tools/python/maps_generator/maps_generator.py index 4326f17440..a22823bd0c 100644 --- a/tools/python/maps_generator/maps_generator.py +++ b/tools/python/maps_generator/maps_generator.py @@ -38,8 +38,10 @@ def download_external(url_to_path: dict): @stage def stage_download_and_convert_planet(env, **kwargs): - if not is_verified(settings.PLANET_O5M): - stages.stage_download_and_convert_planet(env, **kwargs) + force_download = not env.is_accepted_stage(stage_update_planet) + if force_download or not is_verified(settings.PLANET_O5M): + stages.stage_download_and_convert_planet(env, force_download=force_download, + **kwargs) @stage