mirror of
https://github.com/isar/libmdbx.git
synced 2024-12-29 09:38:49 +08:00
70933d81a8
Acknowledgements: ----------------- - [Alex Sharov](https://github.com/AskAlexSharov) for reporting and testing. - [Andrea Lanfranchi](https://github.com/AndreaLanfranchi) for reporting bugs. - [Lionel Debroux](https://github.com/debrouxl) for fuzzing tests and reporting bugs. - [Sergey Fedotov](https://github.com/SergeyFromHell/) for [`node-mdbx` NodeJS bindings](https://www.npmjs.com/package/node-mdbx). - [Kris Zyp](https://github.com/kriszyp) for [`lmdbx-store` NodeJS bindings](https://github.com/kriszyp/lmdbx-store). - [Noel Kuntze](https://github.com/Thermi) for [draft Python bindings](https://github.com/erthink/libmdbx/commits/python-bindings). New features, extensions and improvements: ------------------------------------------ - [Allow to predefine/override `MDBX_BUILD_TIMESTAMP` for builds reproducibility](https://github.com/erthink/libmdbx/issues/201). - Added options support for `long-stochastic` script. - Avoided `MDBX_TXN_FULL` error for large transactions when possible. - The `MDBX_READERS_LIMIT` increased to `32767`. - Raise `MDBX_TOO_LARGE` under Valgrind/ASAN if being opened DB is 100 larger than RAM (to avoid hangs and OOM). - Minimized the size of poisoned/unpoisoned regions to avoid Valgrind/ASAN stuck. - Added more workarounds for QEMU for testing builds for 32-bit platforms, Alpha and Sparc architectures. - `mdbx_chk` now skips iteration & checking of DB' records if corresponding page-tree is corrupted (to avoid `SIGSEGV`, ASAN failures, etc). - Added more checks for [rare/fuzzing corruption cases](https://github.com/erthink/libmdbx/issues/217). Backward compatibility break: ----------------------------- - Use file `VERSION.txt` for version information instead of `VERSION` to avoid collision with `#include <version>`. - Rename `slice::from/to_FOO_bytes()` to `slice::envisage_from/to_FOO_length()'. - Rename `MDBX_TEST_EXTRA` make's variable to `MDBX_SMOKE_EXTRA`. - Some details of the C++ API have been changed for subsequent freezing. Fixes: ------ - Fixed excess meta-pages checks in case `mdbx_chk` is called to check the DB for a specific meta page and thus could prevent switching to the selected meta page, even if the check passed without errors. - Fixed [recursive use of SRW-lock on Windows cause by `MDBX_NOTLS` option](https://github.com/erthink/libmdbx/issues/203). - Fixed [log a warning during a new DB creation](https://github.com/erthink/libmdbx/issues/205). - Fixed [false-negative `mdbx_cursor_eof()` result](https://github.com/erthink/libmdbx/issues/207). - Fixed [`make install` with non-GNU `install` utility (OSX, BSD)](https://github.com/erthink/libmdbx/issues/208). - Fixed [installation by `CMake` in special cases by complete use `GNUInstallDirs`'s variables](https://github.com/erthink/libmdbx/issues/209). - Fixed [C++ Buffer issue with `std::string` and alignment](https://github.com/erthink/libmdbx/issues/191). - Fixed `safe64_reset()` for platforms without atomic 64-bit compare-and-swap. - Fixed hang/shutdown on big-endian platforms without `__cxa_thread_atexit()`. - Fixed [using bad meta-pages if DB was partially/recoverable corrupted](https://github.com/erthink/libmdbx/issues/217). - Fixed extra `noexcept` for `buffer::&assign_reference()`. - Fixed `bootid` generation on Windows for case of change system' time. - Fixed [test framework keygen-related issue](https://github.com/erthink/libmdbx/issues/127).
114 lines
4.2 KiB
YAML
114 lines
4.2 KiB
YAML
version: 0.10.2.{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
|