1
0
Fork 0
arangodb/3rdParty/README_maintainers.md

198 lines
6.1 KiB
Markdown

3rd Party components and what to do on update
=============================================
** EDIT ../LICENSES-OTHER-COMPONENTS.md **
## boost
https://www.boost.org/
(we don't ship the upstream documentation!)
To remove some unused doc files, you can run something as follows:
cd 3rdParty/boost/1.69.0
for i in `find -type d -name "doc"`; do git rm -r "$i"; done
## cmake
Custom boost locator
## curl
HTTP client library https://curl.haxx.se/
We apply several build system patches to avoid unneccessary recompiles, bugfixes.
For example, we commented out curl's check for nroff to avoid documentation
building (and complaining about it on Windows).
We also deactivated some of curl's install CMake commands, as we don't need
anything installed (apart from that the vanilla curl install commands don't work
when compiled as part of ArangoDB).
We also disabled adding the OpenSSL libraries via the following command:
list(APPEND CURL_LIBS OpenSSL::SSL OpenSSL::Crypto)
and instead are using the command
list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES})
from the previous version of curl's CMake file. When not applying this change,
the static builds try to look for libssl.so, which will not work.
## date
Forward port of C++20 date/time class
## fakeit
Mocking library. https://github.com/eranpeer/FakeIt
## fuerte
Our C++ Client driver capable of velocystream. Maintained at https://github.com/arangodb/fuerte
## iresearch
This contains the iresearch library and its sub-components, ICU is used from V8.
## iresearch.build
This contains statically generated files for the IResearch folder, and replaces them.
## jemalloc
Only used on Linux/Mac, still uses autofoo.
## linenoise-ng
Our maintained fork of linenoise
https://github.com/arangodb/linenoise-ng
We may want to switch to replxx (uniting our & other forks):
https://github.com/AmokHuginnsson/replxx
## lz4
https://github.com/lz4/lz4
## rocksdb
our branch is maintained at:
https://github.com/arangodb-helper/rocksdb
Most changes can be ported upstream:
https://github.com/facebook/rocksdb
On Upgrade:
- `./thirdparty.inc``needs to be adjusted to use the snappy we specify. This can be
adjusted by commenting out the section that sets Snappy-related CMake variables:
-set(SNAPPY_HOME $ENV{THIRDPARTY_HOME}/Snappy.Library)
-set(SNAPPY_INCLUDE ${SNAPPY_HOME}/build/native/inc/inc)
-set(SNAPPY_LIB_DEBUG ${SNAPPY_HOME}/lib/native/debug/amd64/snappy.lib)
-set(SNAPPY_LIB_RELEASE ${SNAPPY_HOME}/lib/native/retail/amd64/snappy.lib)
+#set(SNAPPY_HOME $ENV{THIRDPARTY_HOME}/Snappy.Library)
+#set(SNAPPY_INCLUDE ${SNAPPY_HOME}/build/native/inc/inc)
+#set(SNAPPY_LIB_DEBUG ${SNAPPY_HOME}/lib/native/debug/amd64/snappy.lib)
+#set(SNAPPY_LIB_RELEASE ${SNAPPY_HOME}/lib/native/retail/amd64/snappy.lib)
- fix timestamp in `./CMakeLists.txt` to avoid recompilation
-string(TIMESTAMP GIT_DATE_TIME "%Y/%m/%d %H:%M:%S" UTC)
+string(TIMESTAMP TS "%Y/%m/%d %H:%M:%S" UTC )
+set(GIT_DATE_TIME "${TS}" CACHE STRING "the time we first built rocksdb")
## s2geometry
http://s2geometry.io/
## snappy
Compression library
https://github.com/google/snappy
## snowball
http://snowball.tartarus.org/ stemming for IResearch. We use the latest provided cmake which we maintain.
## swagger-ui
https://github.com/swagger-api/swagger-ui/releases
Our copy of swagger-ui resides at `js/assets/swagger`. The `index.html`
contains a few tweaks to make swagger-ui work with the web interface.
To upgrade to a newer version:
1. Copy the file `js/assets/swagger/index.html` to a safe location and open it in an editor
2. Delete all existing files inside `js/assets/swagger` including `index.html`
3. Download the release bundle of swagger-ui you want to upgrade to
4. Copy all files from the bundle's `dist` folder into `js/assets/swagger`
5. Open the new `js/assets/swagger/index.html` in an editor
6. Add an HTML comment to the start of the file indicating the release version number,
e.g. `<!-- swagger-ui 1.2.3 -->`
7. Apply all changes from the old copy to the new file,
these are indicated by code comments in the following format:
`#region ArangoDB-specific changes` and `#endregion`
8. Verify the changes were applied correctly and discard the old copy of `index.html`
To verify the changes were applied correctly, start ArangoDB and
open the ArangoDB Rest API documentation in the ArangoDB web interface.
Routes can be executed by clicking on them to expand their documentation,
clicking the _Try it out_ button, filling out any required fields and clicking
the _Execute_ button.
* The Swagger top bar containing an URL field should NOT appear.
This confirms that the change hiding the top bar was applied correctly.
* The API documentation should appear, NOT an error message.
This confirms that the change inferring the URL was applied correctly.
* All sections of the API documentation should be expanded to show all
routes but NOT fully expanded to reveal descriptions and examples.
This confirms the change to `docExpansion` was applied correctly.
* When using the `POST /_api/cursor` route with a query the authenticated
user is authorized to execute, the response should not indicate an
ArangoDB authentication error.
This confirms the `requestInterceptor`-related changes were applied correctly.
* All text in the API documentation should use readable color combinations.
The API documentation should NOT look obviously "broken" or "ugly".
This indicates the stylistic CSS changes were applied correctly.
Note that to account for changes introduced by new versions of swagger-ui,
the stylistic CSS changes may need to be adjusted manually even when
applied correctly.
## V8
Javascript interpreter.
This is maintained via https://github.com/arangodb-helper/v8
Upstream is: https://chromium.googlesource.com/v8/v8.git
- On upgrade the ICU data file(s) need to be replaced with ICU upstream,
since the V8 copy doesn't contain all locales (known as full-icu, ~25 MB icudt*.dat).
## velocypack
our fast and compact format for serialization and storage
Maintained at:
https://github.com/arangodb/velocypack/
## zlib
ZLib compression library https://zlib.net/