mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-23 11:15:13 +03:00
207 lines
8.1 KiB
Diff
207 lines
8.1 KiB
Diff
From b4acc32ca535c93b3a80ebfaddf898250ca12916 Mon Sep 17 00:00:00 2001
|
|
From: Noel Kuntze <noel.kuntze@thermi.consulting>
|
|
Date: Thu, 8 Jul 2021 17:01:30 +0200
|
|
Subject: [PATCH] mdbx: Remove all checks for amalgated or git source,
|
|
implement tests into CMakeLists.txt
|
|
|
|
---
|
|
CMakeLists.txt | 152 ++++++++++++++++++++++++++++++++++++++-----------
|
|
GNUmakefile | 12 +---
|
|
2 files changed, 121 insertions(+), 43 deletions(-)
|
|
|
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index e74432b0..7b7f2898 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -55,38 +55,8 @@ else()
|
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_AVAILABLE FALSE)
|
|
endif()
|
|
|
|
-if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git" AND
|
|
- EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt" AND
|
|
- EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/core.c" AND
|
|
- EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/alloy.c" AND
|
|
- EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.in" AND
|
|
- EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/version.c.in" AND
|
|
- EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/man1" AND
|
|
- EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/mdbx_chk.c" AND
|
|
- EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/mdbx.c++")
|
|
- set(MDBX_AMALGAMATED_SOURCE FALSE)
|
|
- find_program(GIT git)
|
|
- if(NOT GIT)
|
|
- message(SEND_ERROR "Git command-line tool not found")
|
|
- endif()
|
|
- set(MDBX_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
|
-elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/VERSION.txt" AND
|
|
- EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx.c" AND
|
|
- EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx.c++" AND
|
|
- EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" AND
|
|
- EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/man1" AND
|
|
- EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/mdbx_chk.c")
|
|
- set(MDBX_AMALGAMATED_SOURCE TRUE)
|
|
- set(MDBX_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
-else()
|
|
- message(FATAL_ERROR "\n"
|
|
- "Please don't use tarballs nor zips which are automatically provided by Github! "
|
|
- "These archives do not contain version information and thus are unfit to build libmdbx. "
|
|
- "You can vote for ability of disabling auto-creation such unsuitable archives at https://github.community/t/disable-tarball\n"
|
|
- "Instead of above, just clone the git repository, either download a tarball or zip with the properly amalgamated source core. "
|
|
- "For embedding libmdbx use a git-submodule or the amalgamated source code.\n"
|
|
- "Please, avoid using any other techniques.")
|
|
-endif()
|
|
+set(MDBX_AMALGAMATED_SOURCE FALSE)
|
|
+set(MDBX_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
|
|
|
if(DEFINED PROJECT_NAME)
|
|
set(SUBPROJECT ON)
|
|
@@ -677,6 +647,124 @@ endif()
|
|
|
|
################################################################################
|
|
|
|
+# example
|
|
+add_executable(mdbx_example mdbx.h example/example-mdbx.c)
|
|
+target_setup_options(mdbx_example)
|
|
+target_link_libraries(mdbx_example mdbx)
|
|
+if(MDBX_C_STANDARD)
|
|
+ set_target_properties(mdbx_example PROPERTIES
|
|
+ C_STANDARD ${MDBX_C_STANDARD} C_STANDARD_REQUIRED ON)
|
|
+endif()
|
|
+
|
|
+################################################################################
|
|
+
|
|
+# add targets for tests
|
|
+
|
|
+if(CMAKE_GENERATOR_PLATFORM MATCHES CYGWIN.* OR
|
|
+ CMAKE_GENERATOR_PLATFORM MATCHES MINGW.* OR
|
|
+ CMAKE_GENERATOR_PLATFORM MATCHES MSYS.* OR
|
|
+ CMAKE_GENERATOR_PLATFORM MATCHES Windows.*)
|
|
+ set(TEST_SRC
|
|
+ test/osal-windows.cc)
|
|
+else()
|
|
+ set(TEST_SRC
|
|
+ test/osal-unix.cc)
|
|
+endif()
|
|
+
|
|
+if(CMAKE_GENERATOR_PLATFORM MATCHES Darwin.* OR
|
|
+ CMAKE_GENERATOR_PLATFORM MATCHES Mach.*)
|
|
+ set(TEST_ITER
|
|
+ 2)
|
|
+else()
|
|
+ set(TEST_ITER
|
|
+ 12)
|
|
+endif()
|
|
+
|
|
+if(NOT TEST_DB)
|
|
+ set(TEST_DB
|
|
+ /tmp/mdbx-test.db
|
|
+ )
|
|
+endif()
|
|
+if(NOT TEST_LOG)
|
|
+ set(TEST_LOG
|
|
+ /tmp/mdbx-test.log
|
|
+ )
|
|
+endif()
|
|
+
|
|
+if(MDBX_ENABLE_TESTS)
|
|
+ add_custom_target(build-test ALL
|
|
+ DEPENDS mdbx_example mdbx_test mdbx_chk
|
|
+ )
|
|
+
|
|
+ add_custom_target(mdbx-test
|
|
+ COMMAND
|
|
+ rm -f "${TEST_DB}" "${TEST_LOG}.gz"
|
|
+ COMMAND
|
|
+ ./mdbx_test --table=+data.integer --keygen.split=29 --datalen.min=min --datalen.max=max --progress --console=no "--repeat=${TEST_ITER}" "--pathname=${TEST_DB}" --dont-cleanup-after ${MDBX_TEST_EXTRA} basic | gzip >> "${TEST_LOG}.gz"
|
|
+ COMMAND
|
|
+ ./mdbx_test --mode=-writemap,-nosync-safe,-lifo --progress --console=no --repeat=12 "--pathname=${TEST_DB}" --dont-cleanup-after ${MDBX_TEST_EXTRA} basic | gzip >> "${TEST_LOG}.gz"
|
|
+ COMMAND
|
|
+ ./mdbx_chk -vvn "${TEST_DB}"
|
|
+ COMMAND
|
|
+ ./mdbx_chk -vvn "${TEST_DB}-copy"
|
|
+ DEPENDS mdbx build-test
|
|
+ )
|
|
+ add_custom_target(test-singleprocess
|
|
+ COMMAND
|
|
+ rm -f "${TEST_DB}" "${TEST_LOG}.gz"
|
|
+ COMMAND
|
|
+ ./mdbx_test --table=+data.integer --keygen.split=29 --datalen.min=min --datalen.max=max --progress --console=no --repeat=42 "--pathname=${TEST_DB}" --dont-cleanup-after ${MDBX_TEST_EXTRA} --hill| gzip >> "${TEST_LOG}.gz"
|
|
+ COMMAND
|
|
+ ./mdbx_test --progress --console=no --repeat=2 "--pathname=${TEST_DB}" --dont-cleanup-before --dont-cleanup-after --copy | gzip >> "${TEST_LOG}.gz"
|
|
+ COMMAND
|
|
+ ./mdbx_test --mode=-writemap,-nosync-safe,-lifo --progress --console=no --repeat=42 "--pathname=${TEST_DB}" --dont-cleanup-after ${MDBX_TEST_EXTRA} --nested| gzip >> ${TEST_LOG}.gz
|
|
+ COMMAND
|
|
+ ./mdbx_chk -vvn "${TEST_DB}"
|
|
+ COMMAND
|
|
+ ./mdbx_chk -vvn "${TEST_DB}-copy"
|
|
+ DEPENDS build-test
|
|
+ )
|
|
+ add_custom_target(test-fault
|
|
+ COMMAND
|
|
+ rm -f "${TEST_DB}" "${TEST_LOG}.gz"
|
|
+ COMMAND
|
|
+ ./mdbx_test --progress --console=no "--pathname=${TEST_DB}" --inject-writefault=42 --dump-config --dont-cleanup-after ${MDBX_TEST_EXTRA} basic | gzip >> "${TEST_LOG}.gz"
|
|
+ COMMAND
|
|
+ ./mdbx_chk -vvnw "${TEST_DB}"
|
|
+ COMMAND
|
|
+ [ -e "${TEST_DB}-copy" ] && ./mdbx_chk -vvn "${TEST_DB}-copy"
|
|
+ DEPENDS build-test
|
|
+ )
|
|
+
|
|
+ if(USE_VALGRIND)
|
|
+ set_target_properties(build-test
|
|
+ PROPERTIES
|
|
+ CFLAGS_EXTRA "-Ofast -DMDBX_USE_VALGRIND")
|
|
+ add_custom_target(memcheck
|
|
+ DEPENDS valgrind)
|
|
+ add_custom_target(valgrind
|
|
+ COMMAND
|
|
+ rm -f valgrind-*.log "${TEST_DB}" "${TEST_LOG}.gz"
|
|
+ COMMAND
|
|
+ ${VALGRIND_EXE} ./mdbx_test --table=+data.integer --keygen.split=29 --datalen.min=min --datalen.max=max --progress --console=no --repeat=2 "--pathname=${TEST_DB}" --dont-cleanup-after ${MDBX_TEST_EXTRA} basic | gzip >> "${TEST_LOG}.gz" &&
|
|
+ ${VALGRIND_EXE} ./mdbx_test --progress --console=no "--pathname=${TEST_DB}" --dont-cleanup-before --dont-cleanup-after --copy | gzip >> "${TEST_LOG}.gz" &&
|
|
+ ${VALGRIND_EXE} ./mdbx_test --mode=-writemap,-nosync-safe,-lifo --progress --console=no --repeat=4 "--pathname=${TEST_DB}" --dont-cleanup-after ${MDBX_TEST_EXTRA} basic | gzip >> "${TEST_LOG}.gz" &&
|
|
+ ${VALGRIND_EXE} ./mdbx_chk -vvn "${TEST_DB}" &&
|
|
+ ${VALGRIND_EXE} ./mdbx_chk -vvn "${TEST_DB}-copy"
|
|
+ DEPENDS build-test
|
|
+ )
|
|
+ endif()
|
|
+
|
|
+ if(USE_GCC_ANALYZER)
|
|
+ set_target_properties(build-test
|
|
+ PROPERTIES
|
|
+ CFLAGS_EXTRA "-Og -fanalyzer -Wno-error")
|
|
+ endif()
|
|
+
|
|
+endif()
|
|
+
|
|
+################################################################################
|
|
+
|
|
# mdbx-shared-lib installation
|
|
if(NOT DEFINED MDBX_DLL_INSTALL_DESTINATION)
|
|
if(WIN32)
|
|
diff --git a/GNUmakefile b/GNUmakefile
|
|
index 509a0923..cbe43b23 100644
|
|
--- a/GNUmakefile
|
|
+++ b/GNUmakefile
|
|
@@ -397,17 +397,7 @@ mdbx_test: $(TEST_OBJ) libmdbx.$(SO_SUFFIX)
|
|
$(QUIET)$(CXX) $(CXXFLAGS) $(TEST_OBJ) -Wl,-rpath . -L . -l mdbx $(EXE_LDFLAGS) $(LIBS) -o $@
|
|
|
|
$(git_DIR)/HEAD $(git_DIR)/index $(git_DIR)/refs/tags:
|
|
- @echo '*** ' >&2
|
|
- @echo '*** Please don''t use tarballs nor zips which are automatically provided by Github !' >&2
|
|
- @echo '*** These archives do not contain version information and thus are unfit to build libmdbx.' >&2
|
|
- @echo '*** You can vote for ability of disabling auto-creation such unsuitable archives at https://github.community/t/disable-tarball' >&2
|
|
- @echo '*** ' >&2
|
|
- @echo '*** Instead of above, just clone the git repository, either download a tarball or zip with the properly amalgamated source core.' >&2
|
|
- @echo '*** For embedding libmdbx use a git-submodule or the amalgamated source code.' >&2
|
|
- @echo '*** ' >&2
|
|
- @echo '*** Please, avoid using any other techniques.' >&2
|
|
- @echo '*** ' >&2
|
|
- @false
|
|
+ @true
|
|
|
|
src/version.c: src/version.c.in $(lastword $(MAKEFILE_LIST)) $(git_DIR)/HEAD $(git_DIR)/index $(git_DIR)/refs/tags
|
|
@echo ' MAKE $@'
|
|
--
|
|
2.32.0
|
|
|