mirror of
				https://gitlab.alpinelinux.org/alpine/aports.git
				synced 2025-10-31 16:31:40 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			208 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			208 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
 | |
| 
 |