Envoy Proxy: Compiling on Fedora 38
It took me a while to get Envoy Proxy to compile natively on Fedora 38 so I am documenting it in order that I don't forget.
# Installing Prerequisites
Install all the dependencies:
sudo dnf groupinstall -y "Development Tools"
sudo dnf update -y
sudo dnf install -y \
aspell-en \
binutils-gold \
ccache \
cmake \
ncurses-compat-libs \
ninja-build \
python3-pip \
jq \
wget \
curl \
git \
libcxx libcxx-devel \
libatomic \
libstdc++ \
libstdc++-static \
libtool \
lld \
patch \
python3-pip
wget "https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz"
mkdir ~/llvm
tar -xvf clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz -C ~/llvm
~/llvm/clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-16.04/bin/llvm-config --version # Output: 11.0.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Download Bazelisk\Bazel:
curl -Lo /tmp/bazelisk "https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-$([ $(uname -m) = "aarch64" ] && echo "arm64" || echo "amd64")"
chmod +x /tmp/bazelisk
sudo mkdir -pv /usr/local/bin
sudo install -o root -g root -m 0755 /tmp/bazelisk /usr/local/bin/bazel
export PATH="/usr/local/bin:${PATH}" # If required
bazel version # Output: Bazelisk version: v1.18.0
1
2
3
4
5
6
2
3
4
5
6
# Get Envoy Proxy source code
mkdir -pv ~/src
cd ~/src
git clone git@github.com:envoyproxy/envoy.git # Or https://github.com/envoyproxy/envoy.git
cd envoy
git checkout release/v1.23
1
2
3
4
5
2
3
4
5
# Compile Envoy Proxy
Configure it:
cd ~/src/envoy
export PATH="${HOME}/llvm/clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-16.04/bin:${PATH}"
bazel/setup_clang.sh ~/llvm/clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-16.04
echo "build --config=clang" > user.bazelrc
echo "build --config=libc++" >> user.bazelrc
echo "build --copt=-fno-limit-debug-info" >> user.bazelrc
1
2
3
4
5
6
2
3
4
5
6
Build it:
bazel build --jobs=64 -c fastbuild --verbose_failures --sandbox_debug --spawn_strategy=local //source/exe:envoy-static
1
# Run Envoy Proxy
$ bazel-bin/source/exe/envoy-static --version
bazel-bin/source/exe/envoy-static version: 9689bc57f80fe56dbb16a4e0d632cde5363d1811/1.23.12/Clean/DEBUG/BoringSSL
1
2
2
# Running Tests TODO
TODO.