1
0
Fork 0
mirror of https://gitlab.alpinelinux.org/alpine/aports.git synced 2025-07-23 11:15:13 +03:00
aports/testing/libmdbx/0001-mdbx-Remove-all-checks-for-amalgated-or-git-source-i.patch
2021-08-13 15:19:42 +00:00

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