- Inspired by #38684, this commit removes the list of used third-party
libraries + licenses from the development documentation.
- The tips how to speed up the build is independent of the OS. Move it
from the "Linux" section to the "Getting Started" guide. Also extend
it with further useful build options to make the build faster.
When it had been added, initially, it was autogenerated - #14711
Later, after documentation rework, it had been removed, in #37441.
And this makes documentation out dated, and out dated documentation may
provide more harm then help, so let's remove it.
Also it has links to the code in github that does not contain commit
SHA1, so those links may point in the wrong place.
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
This commit migrates ClickHouse to Vectorscan. The first 10 min of
[0] explain the reasons for it.
(*) Addresses (but does not resolve) #38046
(*) Config parameter names (e.g. "max_hyperscan_regexp_length") are
preserved for compatibility. Likewise, error codes (e.g.
"ErrorCodes::HYPERSCAN_CANNOT_SCAN_TEXT") and function/class names (e.g.
"HyperscanDeleter") are preserved as vectorscan aims to be a drop-in
replacement.
[0] https://www.youtube.com/watch?v=KlZWmmflW6M
- list-licenses.sh assumed GNU versions (e.g. the "-printf" flag of
find) but Mac ships with a non-GNU version
- this led to error
[8677/8942] Generating StorageSystemLicenses.generated.cpp
find: -printf: unknown primary or operator
find: -printf: unknown primary or operator
find: -printf: unknown primary or operator
find: -printf: unknown primary or operator
during build and as a result, an empty system.licenses table
- As a fix, force the GNU versions of find and grep on Mac
WEVERYTHING enables on Clang literally every warning. People on the
internet are divided if this is a good thing or not but ClickHouse
compiles with -Weverything + some exceptions for noisy warnings since at
least a year.
I tried to build with WEVERYTHING = OFF and the build was badly broken.
It seems nobody actually turns WEVERYTHING off. Actually, why would one
if the CI builds (configured with WEVERYTHING = ON) potentially generate
errors not generated in local development.
To simplify the build scripts and to remove the need to maintain two
sets of compiler warnings, I made WEVERYTHING the default and threw
WEVERYTHING = OFF out.
On Darwin, the build script tries to
1. use llvm-objcopy/llvm-strip from $PATH,
2. if not found by 1., use standard objcopy/strip from $PATH
The brew install instructions recommends to set $PATH to brew's binary
dir, so 2. will find something (assuming binutils is installed from
brew). If $PATH additionally points to brew's LLVM binary dir (which is
different from brew's binary dir), 1. will find the llvm versions of the
tools.
This commit removes additional logic which repeats above steps in a more
implicit way by calling brew internally and figuring out the paths once
more if 1. and 2. cannot find them in the $PATH. This removes
duplication and simplifies the script. Maybe it even helps with
reproducibility.
- instead of repeating Homebrew's installation steps (which may become
outdated), just point to their homepage
- Specify CC and CXX env variables instead of internal CMake variables,
CMake figure out paths to ar, ranlib and objcopy automatically
- use -S and -B parameters available in recent CMake versions to build
directly from the source directory