diff options
Diffstat (limited to '0001-mdbx-Remove-all-checks-for-amalgated-or-git-source-i.patch')
-rw-r--r-- | 0001-mdbx-Remove-all-checks-for-amalgated-or-git-source-i.patch | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/0001-mdbx-Remove-all-checks-for-amalgated-or-git-source-i.patch b/0001-mdbx-Remove-all-checks-for-amalgated-or-git-source-i.patch new file mode 100644 index 000000000000..8fb2bcddae57 --- /dev/null +++ b/0001-mdbx-Remove-all-checks-for-amalgated-or-git-source-i.patch @@ -0,0 +1,207 @@ +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 + |