diff options
| -rw-r--r-- | data/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | data/Makefile.am | 12 | ||||
| -rw-r--r-- | data/generate_proj_db.cmake | 5 | ||||
| -rw-r--r-- | data/sql/commit.sql | 3 | ||||
| -rw-r--r-- | data/sql/metadata.sql | 4 |
5 files changed, 20 insertions, 6 deletions
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 613dab42..d460d371 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -36,7 +36,7 @@ include(sql_filelist.cmake) add_custom_command( OUTPUT ${PROJ_DB} COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJ_DB} - COMMAND ${CMAKE_COMMAND} "-DALL_SQL_IN=${ALL_SQL_IN}" "-DEXE_SQLITE3=${EXE_SQLITE3}" "-DPROJ_DB=${PROJ_DB}" + COMMAND ${CMAKE_COMMAND} "-DALL_SQL_IN=${ALL_SQL_IN}" "-DEXE_SQLITE3=${EXE_SQLITE3}" "-DPROJ_DB=${PROJ_DB}" "-DPROJ_VERSION=${PROJ_VERSION}" -P "${CMAKE_CURRENT_SOURCE_DIR}/generate_proj_db.cmake" COMMAND ${CMAKE_COMMAND} -E copy ${PROJ_DB} ${CMAKE_CURRENT_BINARY_DIR}/for_tests DEPENDS ${SQL_FILES} "${CMAKE_CURRENT_SOURCE_DIR}/generate_proj_db.cmake" diff --git a/data/Makefile.am b/data/Makefile.am index c1d0f8f8..b4ebf3d2 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -147,14 +147,15 @@ proj.db: $(DATAPATH)/sql/*.sql $(RM) proj.db @export SQL_EXPANDED_LIST=""; \ for x in $(SQL_ORDERED_LIST); do \ - export SQL_EXPANDED_LIST="$${SQL_EXPANDED_LIST} $(DATAPATH)/$$x"; \ + export SQL_EXPANDED_LIST="$${SQL_EXPANDED_LIST} $(DATAPATH)/$$x"; \ done; \ + cat $${SQL_EXPANDED_LIST} | sed 's/$${PROJ_VERSION}/${PACKAGE_VERSION}/' > all.sql.in; \ if test "x$(PROJ_DB_CACHE_DIR)" != "x" -a -x "$$(command -v md5sum)" -a -f "$(PROJ_DB_CACHE_DIR)/proj.db" -a -f "$(PROJ_DB_CACHE_DIR)/proj.db.sql.md5" ; then \ - cat $${SQL_EXPANDED_LIST} | md5sum | diff - "$(PROJ_DB_CACHE_DIR)/proj.db.sql.md5" > /dev/null \ + cat all.sql.in | md5sum | diff - "$(PROJ_DB_CACHE_DIR)/proj.db.sql.md5" > /dev/null \ && (echo "Reusing cached proj.db"; cp "$(PROJ_DB_CACHE_DIR)/proj.db" proj.db); \ fi; \ if test ! -f proj.db ; then \ - cat $${SQL_EXPANDED_LIST} | sqlite3 proj.db; \ + cat all.sql.in | sqlite3 proj.db; \ fi; \ if [ $$? -ne 0 ] ; then \ echo "Build of proj.db failed"; \ @@ -163,9 +164,10 @@ proj.db: $(DATAPATH)/sql/*.sql fi; \ if test "x$(PROJ_DB_CACHE_DIR)" != "x" -a -x "$$(command -v md5sum)" ; then \ mkdir -p "$(PROJ_DB_CACHE_DIR)"; \ - cat $${SQL_EXPANDED_LIST} | md5sum > "$(PROJ_DB_CACHE_DIR)/proj.db.sql.md5"; \ + cat all.sql.in | md5sum > "$(PROJ_DB_CACHE_DIR)/proj.db.sql.md5"; \ cp proj.db "$(PROJ_DB_CACHE_DIR)"; \ - fi + fi; \ + $(RM) all.sql.in # For out-of-tree builds, link all file of the source data dir to the generated data # Also link select resource files in a for_tests subdirectory so that we are not diff --git a/data/generate_proj_db.cmake b/data/generate_proj_db.cmake index 734dbe1e..95f1668c 100644 --- a/data/generate_proj_db.cmake +++ b/data/generate_proj_db.cmake @@ -9,6 +9,11 @@ foreach(SQL_FILE ${SQL_FILES}) cat(${SQL_FILE} "${ALL_SQL_IN}") endforeach() +# Do ${PROJ_VERSION} substitution +file(READ ${ALL_SQL_IN} CONTENTS) +string(REPLACE "\${PROJ_VERSION}" "${PROJ_VERSION}" CONTENTS_MOD "${CONTENTS}") +file(WRITE "${ALL_SQL_IN}" "${CONTENTS_MOD}") + execute_process(COMMAND "${EXE_SQLITE3}" "${PROJ_DB}" INPUT_FILE "${ALL_SQL_IN}" RESULT_VARIABLE STATUS) diff --git a/data/sql/commit.sql b/data/sql/commit.sql index 7a4b74ad..80f5d7ba 100644 --- a/data/sql/commit.sql +++ b/data/sql/commit.sql @@ -191,6 +191,9 @@ FOR EACH ROW BEGIN SELECT RAISE(ABORT, 'missing au_ga_AUSGeoid98.tif') WHERE NOT EXISTS(SELECT 1 FROM grid_alternatives WHERE proj_grid_name = 'au_ga_AUSGeoid98.tif'); + -- check PROJ.VERSION value + SELECT RAISE(ABORT, 'Value of PROJ.VERSION entry of metadata tables not substituted by actual value') + WHERE (SELECT 1 FROM metadata WHERE key = 'PROJ.VERSION' AND value LIKE '$%'); END; INSERT INTO dummy DEFAULT VALUES; diff --git a/data/sql/metadata.sql b/data/sql/metadata.sql index bb8e3095..5a196c0b 100644 --- a/data/sql/metadata.sql +++ b/data/sql/metadata.sql @@ -11,3 +11,7 @@ INSERT INTO "metadata" VALUES('DATABASE.LAYOUT.VERSION.MINOR', 0); INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v10.018'); INSERT INTO "metadata" VALUES('EPSG.DATE', '2021-04-02'); + +-- The value of ${PROJ_VERSION} is substituted at build time by the actual +-- value. +INSERT INTO "metadata" VALUES('PROJ.VERSION', '${PROJ_VERSION}'); |
