* Encrypt BlobGranule delta files
Description
diff-1: Address review comments
Major changes proposed by the patch are:
1. Refactor code to allow caching of 'encryption key ctx' as part of
BlobFilePointerRef. The refactoring allows snapshot and/or delta files
to store their own file encryption context.
2. Enable BlobGranule delta file encryption/decryption semantics.
Testing
BlobGranuleCorrrectness
BlobGranuleCorrectnessClean
BlobGranuleFileUnitTestToml
Description
Testing
The fdb c shim build requires python3. Let's not allow python2 to get
used there.
Otherwise we can see something like this:
```
FAILED: bindings/c/libfdb_c.so.init.c bindings/c/libfdb_c.so.tramp.S
cd /home/anoyes/workspace/foundationdb/build/bindings/c && /usr/bin/python2.7 /home/anoyes/workspace/foundationdb/contrib/Implib.so/implib-gen.py --target aarch64 --outdir /home/anoyes/workspace/foundationdb/build/bindings/c --dlopen-callback=fdb_shim_dlopen_callback /home/anoyes/workspace/foundationdb/build/lib/libfdb_c.so
File "/home/anoyes/workspace/foundationdb/contrib/Implib.so/implib-gen.py", line 27
sys.stderr.write(f'{me}: warning: {msg}\n')
```
* Adding sources of the Implib.so project
* Run C unit tests and API tests with the shim library
* Reuse compilation of C test binaries with and without shim library
* Resolve client library path from an environment variable
* Refactoring: Reusable module for downloading FDB binaries
* Testing client shim library with current version and last release version
* Tests for specifying client library over an environment variable
* Enable C shim library tests on ARM
* Restore the original path for including fdb_api.hpp
* Improve cmake dependencies on doctest
* Remove unnecessary Implib.so files
* Shim library: API to specify path to the library, additional tests
* Adding shim library to Linux distribution packages
* Update link dependencies of fdb_c_shim_lib_tester
* Add dependencies on Implib.so sources
* Abort on fatal errors of shim library
* fix typo
* Track when version not found in version vector.
* Respond to comments
* include vv in event
* Respond to review comments.
* Fix bug where we logged too many lines
* Disabled tests for ShardedRocks.
Cleaned up ShardedRocks TraceEvent.
Added assertion in ShardManager::validate().
* Added test trace.
* Make sure TraceEvent contains `ShardedRocks`.
* Exclude ShardedRocksDB when SHARD_ENCODE_LOCATION_METADATA is disabled.
Co-authored-by: He Liu <heliu@apple.com>