mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-04 18:54:13 +08:00
daa7f04f61
The stable release with fixes for large and huge databases sized of 4..128 TiB. Acknowledgements: ----------------- - Ledgerwatch, Binance and Positive Technologies teams for reporting, assistance in investigation and testing. - Alex Sharov for reporting, testing and provide resources for remote debugging/investigation. - Kris Zyp for Deno support. New features, extensions and improvements: ------------------------------------------ - Added treating the `UINT64_MAX` value as maximum for given option inside `mdbx_env_set_option()`. - Added `to_hex/to_base58/to_base64::output(std::ostream&)` overloads without using temporary string objects as buffers. - Added `--geometry-jitter=YES|no` option to the test framework. - Added support for [Deno](https://deno.land/) support by [Kris Zyp](https://github.com/kriszyp). Fixes: ------ - Fixed handling `MDBX_opt_rp_augment_limit` for GC's records from huge transactions (Erigon/Akula/Ethereum). - [Fixed](https://github.com/erthink/libmdbx/issues/258) build on Android (avoid including `sys/sem.h`). - [Fixed](https://github.com/erthink/libmdbx/pull/261) missing copy assignment operator for `mdbx::move_result`. - Fixed missing `&` for `std::ostream &operator<<()` overloads. - Fixed unexpected `EXDEV` (Cross-device link) error from `mdbx_env_copy()`. - Fixed base64 encoding/decoding bugs in auxillary C++ API. - Fixed overflow of `pgno_t` during checking PNL on 64-bit platforms. - [Fixed](https://github.com/erthink/libmdbx/issues/260) excessive PNL checking after sort for spilling. - Reworked checking `MAX_PAGENO` and DB upper-size geometry limit. - [Fixed](https://github.com/erthink/libmdbx/issues/265) build for some combinations of versions of MSVC and Windows SDK. Minors: ------- - Added workaround for CLANG bug [D79919/PR42445](https://reviews.llvm.org/D79919). - Fixed build test on Android (using `pthread_barrier_t` stub). - Disabled C++20 concepts for CLANG < 14 on Android. - Fixed minor `unused parameter` warning. - Added CI for Android. - Refine/cleanup internal logging. - Refined line splitting inside hex/base58/base64 encoding to avoid `\n` at the end. - Added workaround for modern libstdc++ with CLANG < 4.x - Relaxed txn-check rules for auxiliary functions. - Clarified a comments and descriptions, etc. - Using the `-fno-semantic interposition` option to reduce the overhead to calling self own public functions. Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>
114 lines
4.3 KiB
YAML
114 lines
4.3 KiB
YAML
version: 0.11.4.{build}
|
|
|
|
environment:
|
|
matrix:
|
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
|
CMAKE_GENERATOR: Visual Studio 14 2015
|
|
TOOLSET: 140
|
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
CMAKE_GENERATOR: Visual Studio 16 2019
|
|
TOOLSET: 142
|
|
MDBX_BUILD_SHARED_LIBRARY: OFF
|
|
MDBX_WITHOUT_MSVC_CRT: OFF
|
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
CMAKE_GENERATOR: Visual Studio 16 2019
|
|
TOOLSET: 142
|
|
MDBX_BUILD_SHARED_LIBRARY: ON
|
|
MDBX_WITHOUT_MSVC_CRT: ON
|
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
CMAKE_GENERATOR: Visual Studio 16 2019
|
|
TOOLSET: 142
|
|
MDBX_BUILD_SHARED_LIBRARY: OFF
|
|
MDBX_WITHOUT_MSVC_CRT: ON
|
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
CMAKE_GENERATOR: Visual Studio 16 2019
|
|
TOOLSET: 142
|
|
MDBX_BUILD_SHARED_LIBRARY: ON
|
|
MDBX_WITHOUT_MSVC_CRT: OFF
|
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
|
CMAKE_GENERATOR: Visual Studio 15 2017
|
|
TOOLSET: 141
|
|
|
|
branches:
|
|
except:
|
|
- coverity_scan
|
|
|
|
configuration:
|
|
- Debug
|
|
# MSVC-2019 hangs during code generation/optimization due to its own internal errors.
|
|
# I have found out that the problem occurs because of the /Ob2 option (see https://github.com/erthink/libmdbx/issues/116).
|
|
# So the simplest workaround is to using RelWithDebiInfo configuration for testing (cmake will uses /Ob1 option), instead of Release.
|
|
# - Release
|
|
- RelWithDebInfo
|
|
|
|
platform:
|
|
- Win32
|
|
- x64
|
|
|
|
# MSVC-2019 may hang up during code generation/optimization due to its own internal errors.
|
|
matrix:
|
|
allow_failures:
|
|
- image: Visual Studio 2019
|
|
configuration: Release
|
|
|
|
# Enable RDP for troubleshooting
|
|
#init:
|
|
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
|
|
|
before_build:
|
|
- git clean -x -f -d
|
|
- git submodule sync
|
|
- git fetch --tags --prune --force
|
|
- git submodule update --init --recursive
|
|
- git submodule foreach --recursive git fetch --tags --prune --force
|
|
- cmake --version
|
|
|
|
build_script:
|
|
- ps: |
|
|
Write-Output "*******************************************************************************"
|
|
Write-Output "Configuration: $env:CONFIGURATION"
|
|
Write-Output "Platform: $env:PLATFORM"
|
|
Write-Output "Toolchain: $env:CMAKE_GENERATOR v$env:TOOLSET"
|
|
Write-Output "Options: MDBX_WITHOUT_MSVC_CRT=$env:MDBX_WITHOUT_MSVC_CRT MDBX_BUILD_SHARED_LIBRARY=$env:MDBX_BUILD_SHARED_LIBRARY"
|
|
Write-Output "*******************************************************************************"
|
|
|
|
md _build -Force | Out-Null
|
|
cd _build
|
|
|
|
$generator = $env:CMAKE_GENERATOR
|
|
if ($env:TOOLSET -lt 142) {
|
|
if ($env:PLATFORM -eq "x64") {
|
|
$generator = "$generator Win64"
|
|
}
|
|
& cmake -G "$generator" -D CMAKE_CONFIGURATION_TYPES="Debug;Release;RelWithDebInfo" -D MDBX_WITHOUT_MSVC_CRT:BOOL=$env:MDBX_WITHOUT_MSVC_CRT -D MDBX_BUILD_SHARED_LIBRARY:BOOL=$env:MDBX_BUILD_SHARED_LIBRARY ..
|
|
} else {
|
|
& cmake -G "$generator" -A $env:PLATFORM -D CMAKE_CONFIGURATION_TYPES="Debug;Release;RelWithDebInfo" -DMDBX_WITHOUT_MSVC_CRT:BOOL=$env:MDBX_WITHOUT_MSVC_CRT -D MDBX_BUILD_SHARED_LIBRARY:BOOL=$env:MDBX_BUILD_SHARED_LIBRARY ..
|
|
}
|
|
if ($LastExitCode -ne 0) {
|
|
throw "Exec: $ErrorMessage"
|
|
}
|
|
Write-Output "*******************************************************************************"
|
|
|
|
& cmake --build . --config $env:CONFIGURATION
|
|
if ($LastExitCode -ne 0) {
|
|
throw "Exec: $ErrorMessage"
|
|
}
|
|
Write-Output "*******************************************************************************"
|
|
|
|
test_script:
|
|
- ps: |
|
|
if (($env:PLATFORM -ne "ARM") -and ($env:PLATFORM -ne "ARM64")) {
|
|
& ./$env:CONFIGURATION/mdbx_test.exe --progress --console=no --pathname=test.db --dont-cleanup-after basic > test.log
|
|
Get-Content test.log | Select-Object -last 42
|
|
if ($LastExitCode -ne 0) {
|
|
throw "Exec: $ErrorMessage"
|
|
} else {
|
|
& ./$env:CONFIGURATION/mdbx_chk.exe -nvv test.db | Tee-Object -file chk.log | Select-Object -last 42
|
|
}
|
|
}
|
|
|
|
on_failure:
|
|
- ps: Push-AppveyorArtifact \projects\libmdbx\_build\test.log
|
|
- ps: Push-AppveyorArtifact \projects\libmdbx\_build\test.db
|
|
- ps: Push-AppveyorArtifact \projects\libmdbx\_build\chk.log
|