aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/CMakeLists.txt2
-rw-r--r--data/Makefile.am12
-rw-r--r--data/generate_proj_db.cmake5
-rw-r--r--data/sql/commit.sql3
-rw-r--r--data/sql/metadata.sql4
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}');