Skip to content

Commit c7d44c2

Browse files
Lukasdoejungmair
authored andcommitted
add tabs to Dependencies.md documentation and macos setup info
Users can now switch between "Ubuntu/Linux" or "MacOS" dependency information using tabs. Additionally, I updated the dependencies to match the current state of the repo.
1 parent 61f5695 commit c7d44c2

File tree

1 file changed

+93
-14
lines changed

1 file changed

+93
-14
lines changed

docs/ForDevelopers/Dependencies.md

Lines changed: 93 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
import Tabs from '@theme/Tabs';
2+
import TabItem from '@theme/TabItem';
3+
14
LingoDB relies on three main external dependencies:
25
* [LLVM/MLIR 20](https://github.com/llvm/llvm-project)
3-
* [Apache Arrow 19](https://arrow.apache.org/release/19.0.0.html)
6+
* [Apache Arrow 20](https://arrow.apache.org/release/19.0.0.html)
47
* [Boost Context 1.83](https://www.boost.org/doc/libs/1_83_0/libs/context/doc/html/index.html)
58

69
**Additional tools and libraries required:**
@@ -14,7 +17,9 @@ We also provide a [Dockerfile](https://github.com/lingo-db/lingo-db/pkgs/contain
1417
When building dependencies from source, make sure that either the cmake config files are installed in a system-wide locations, or for example, the `CMAKE_PREFIX_PATH` is set accordingly.
1518

1619
## LLVM/MLIR
17-
### Ubuntu/Linux
20+
21+
<Tabs groupId="os-tabs">
22+
<TabItem value="linux" label="Ubuntu/Linux">
1823
Follow the instructions on [https://apt.llvm.org/](https://apt.llvm.org/) to install the repository on your system.
1924
Then install the following packages: `clang-20 llvm-20 libclang-20-dev llvm-20-dev libmlir-20-dev mlir-20-tools clang-tidy-20`
2025

@@ -24,45 +29,119 @@ For other recent Linux distributions, you can also rely on the pre-built binarie
2429
### Building from Source
2530

2631
```shell
27-
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.0-rc1/llvm-project-20.1.0-rc1.src.tar.xz
28-
tar -xf llvm-project-20.1.0-rc1.src.tar.xz
32+
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.0-rc1/llvm-project-20.1.0-rc1.src.tar.xz
33+
tar -xf llvm-project-20.1.0-rc1.src.tar.xz
2934
mkdir llvm-project-20.1.0-rc1.src/build
3035
cd llvm-project-20.1.0-rc1.src
31-
env VIRTUAL_ENV=/venv cmake -B build -DLLVM_ENABLE_PROJECTS="llvm;mlir;clang;clang-tools-extra" -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -G Ninja -DLLVM_ENABLE_ASSERTIONS=OFF -DLLVM_BUILD_TESTS=OFF -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=OFF -DLLVM_ENABLE_DUMP=ON -DLLVM_ENABLE_FFI=ON -DCMAKE_CXX_FLAGS="-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" -DLLVM_PARALLEL_LINK_JOBS=1 -DLLVM_PARALLEL_TABLEGEN_JOBS=10 -DBUILD_SHARED_LIBS=OFF -DLLVM_INSTALL_UTILS=ON -DLLVM_ENABLE_ZLIB=OFF -DCMAKE_INSTALL_PREFIX=[output-dir] llvm/
32-
RUN cmake --build build --target install -j$(nproc)
36+
export INSTALL_PREFIX=[install_prefix]
37+
env VIRTUAL_ENV=/venv cmake -B build -DLLVM_ENABLE_PROJECTS="llvm;mlir;clang;clang-tools-extra" -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -G Ninja -DLLVM_ENABLE_ASSERTIONS=OFF -DLLVM_BUILD_TESTS=OFF -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=OFF -DLLVM_ENABLE_DUMP=ON -DLLVM_ENABLE_FFI=ON -DCMAKE_CXX_FLAGS="-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" -DLLVM_PARALLEL_LINK_JOBS=1 -DLLVM_PARALLEL_TABLEGEN_JOBS=10 -DBUILD_SHARED_LIBS=OFF -DLLVM_INSTALL_UTILS=ON -DLLVM_ENABLE_ZLIB=OFF -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX llvm/
38+
cmake --build build --target install -j$(nproc)
39+
```
40+
41+
</TabItem>
42+
<TabItem value="macos" label="MacOS">
43+
Install LLVM/MLIR using Homebrew and make it available system-wide:
44+
45+
```shell
46+
brew install llvm@20
47+
brew link --force llvm@20
3348
```
3449

50+
### Binaries
51+
⚠️ **Caution**: the pre-built binaries provided by the LLVM project on the Github release pages **DO NOT** serve as a replacement, since they lack the required MLIR support.
52+
53+
### Building from Source
54+
55+
1. Install XCode (through the App Store).
56+
2. Install the build requisites: `brew install cmake ninja z3`
57+
2. Make sure to replace [install_prefix] with your preferred install path of LLVM.
58+
```shell
59+
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.4/llvm-project-20.1.4.src.tar.xz
60+
tar -xf llvm-project-20.1.4.src.tar.xz
61+
mkdir llvm-project-20.1.4.src/build
62+
cd llvm-project-20.1.4.src
63+
export INSTALL_PREFIX=[install_prefix]
64+
export SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
65+
env VIRTUAL_ENV=/venv cmake -B build -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;mlir;polly;lldb" -DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind;pstl;openmp" -DLLVM_TARGETS_TO_BUILD="AArch64" -DLLVM_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -G Ninja -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_BUILD_TESTS=OFF -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DLLVM_ENABLE_DUMP=ON -DLLVM_ENABLE_FFI=ON -DCMAKE_CXX_FLAGS="-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" -DLLVM_PARALLEL_LINK_JOBS=1 -DLLVM_PARALLEL_TABLEGEN_JOBS=10 -DBUILD_SHARED_LIBS=OFF -DLLVM_INSTALL_UTILS=ON -DLLVM_ENABLE_ZLIB=OFF -DLLVM_POLLY_LINK_INTO_TOOLS=ON -DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON -DLLVM_ENABLE_EH=OFF -DLLVM_ENABLE_RTTI=ON -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_USE_RELATIVE_PATHS_IN_FILES=ON -DLLVM_SOURCE_PREFIX=. -DLLDB_USE_SYSTEM_DEBUGSERVER=ON -DLIBOMP_INSTALL_ALIASES=OFF -DLIBCXX_INSTALL_MODULES=ON -DLLVM_CREATE_XCODE_TOOLCHAIN=OFF -DCLANG_FORCE_MATCHING_LIBCLANG_SOVERSION=OFF -DLLVM_BUILD_LLVM_C_DYLIB=ON -DLLVM_ENABLE_LIBCXX=ON -DLIBCXX_PSTL_BACKEND=libdispatch -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/opt/homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DCMAKE_OSX_SYSROOT=$(xcrun --sdk macosx --show-sdk-path) -DLLVM_ENABLE_Z3_SOLVER=ON -DFFI_INCLUDE_DIR=$(xcrun --sdk macosx --show-sdk-path)/usr/include/ffi -DFFI_LIBRARY_DIR=$(xcrun --sdk macosx --show-sdk-path)/usr/lib -DLIBCXX_INSTALL_LIBRARY_DIR=$INSTALL_PREFIX/lib/c++ -DLIBUNWIND_INSTALL_LIBRARY_DIR=$INSTALL_PREFIX/lib/unwind -DLIBCXXABI_INSTALL_LIBRARY_DIR=$INSTALL_PREFIX/c++ -DRUNTIMES_CMAKE_ARGS="-DCMAKE_INSTALL_RPATH=@loader_path|@loader_path/../unwind" -DBUILTINS_CMAKE_ARGS="-DCOMPILER_RT_ENABLE_IOS=OFF;-DCOMPILER_RT_ENABLE_WATCHOS=OFF;-DCOMPILER_RT_ENABLE_TVOS=OFF" -DCMAKE_PREFIX_PATH=/opt/homebrew -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX llvm/
66+
cmake --build build --target install -j$(sysctl -n hw.logicalcpu)
67+
```
68+
</TabItem>
69+
</Tabs>
3570

3671
## Apache Arrow
37-
### Ubuntu/Linux
72+
73+
<Tabs groupId="os-tabs">
74+
<TabItem value="linux" label="Ubuntu/Linux">
75+
3876
```shell
3977
wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
4078
apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
4179
apt-get update
42-
apt-get install libarrow-dev=19.*
80+
apt-get install libarrow-dev=20.*
4381
```
82+
4483
### Binaries
4584
For other recent Linux distributions, you can also rely on the pre-built binaries provided by the Apache Arrow project.
4685

4786
### Building from Source
4887

4988
```shell
50-
wget https://dlcdn.apache.org/arrow/arrow-19.0.1/apache-arrow-19.0.1.tar.gz
51-
tar -xf apache-arrow-19.0.1.tar.gz
52-
RUN cd apache-arrow-19.0.1/cpp
53-
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=[output-dir] -DARROW_DEPENDENCY_SOURCE=BUNDLED -DARROW_BUILD_STATIC=ON -DARROW_CSV=ON -DARROW_COMPUTE=ON
89+
wget https://github.com/apache/arrow/releases/download/apache-arrow-20.0.0/apache-arrow-20.0.0.tar.gz
90+
tar -xf apache-arrow-20.0.0.tar.gz
91+
cd apache-arrow-20.0.0/cpp
92+
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=[output-dir] -DARROW_DEPENDENCY_SOURCE=BUNDLED -DARROW_BUILD_STATIC=ON -DARROW_CSV=ON -DARROW_JSON=ON -DARROW_COMPUTE=ON apache-arrow-20.0.0/cpp
5493
cmake --build build --target install -j$(nproc)
5594
```
95+
96+
</TabItem>
97+
<TabItem value="macos" label="MacOS">
98+
99+
Install Apache Arrow using Homebrew:
100+
101+
```shell
102+
brew tap lingo-db/homebrew https://github.com/lingo-db/homebrew.git
103+
brew install lingo-db/homebrew/apache-arrow@20
104+
```
105+
106+
### Building from Source
107+
108+
```shell
109+
wget https://github.com/apache/arrow/releases/download/apache-arrow-20.0.0/apache-arrow-20.0.0.tar.gz
110+
tar -xf apache-arrow-20.0.0.tar.gz
111+
cd apache-arrow-20.0.0/cpp
112+
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=[output-dir] -DARROW_DEPENDENCY_SOURCE=BUNDLED -DARROW_BUILD_STATIC=ON -DARROW_CSV=ON -DARROW_JSON=ON -DARROW_COMPUTE=ON -DCMAKE_PREFIX_PATH=/opt/homebrew/ -DCMAKE_CXX_COMPILER=/opt/homebrew/bin/clang++ -DCMAKE_C_COMPILER=/opt/homebrew/bin/clang
113+
cmake --build build --target install -j$(sysctl -n hw.logicalcpu)
114+
```
115+
116+
</TabItem>
117+
</Tabs>
118+
56119
## Boost Context
57-
### Ubuntu/Linux
120+
121+
<Tabs groupId="os-tabs">
122+
<TabItem value="linux" label="Ubuntu/Linux">
123+
58124
```shell
59125
apt-get install libboost-context1.83-dev
60126
```
127+
61128
### Build from Source
62129
```shell
63130
wget https://archives.boost.io/release/1.83.0/source/boost_1_83_0.tar.gz
64131
tar -xf boost_1_83_0.tar.gz
65132
cd boost_1_83_0
66133
./bootstrap.sh --prefix=/usr # or any other directory in the PATH/LD_LIBRARY_PATH
67134
./b2 install --with-context
68-
```
135+
```
136+
137+
</TabItem>
138+
<TabItem value="macos" label="MacOS">
139+
140+
Install Boost Context using Homebrew:
141+
142+
```shell
143+
brew install boost
144+
```
145+
146+
</TabItem>
147+
</Tabs>

0 commit comments

Comments
 (0)