Bazel Setup and Rationale
This guide explains the project’s use of the Bazel build tool and provides the official, recommended instructions for its installation on Debian-based systems like Ubuntu.
Design Decision: Why Bazel?
The decision to use Bazel is inherited from the core C++ engine, glmnetpp.
The glmnetpp library uses Bazel for all its build, test, and benchmark
operations. By adopting Bazel for our project, we ensure a consistent,
reproducible, and reliable process for compiling the C++ code exactly as its
original authors intended.
Installation using the Official Apt Repository
This is the recommended method for installing a specific, stable version of Bazel. These commands should be run from your terminal.
Note
These instructions require sudo privileges to modify system package sources.
Step 1: Install Prerequisite Packages
Ensure your system has the necessary tools to manage new software repositories.
sudo apt update && sudo apt install apt-transport-https curl gnupg -y
Step 2: Add Bazel’s GPG Key
This step securely adds the key that your system will use to verify the authenticity of the Bazel packages.
curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel-archive-keyring.gpg
sudo mv bazel-archive-keyring.gpg /usr/share/keyrings
Step 3: Add the Bazel Repository
Next, add the Bazel package repository to your system’s sources list.
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/bazel-archive-keyring.gpg] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
Step 4: Install Bazel
Finally, update your package list and install a specific long-term support (LTS) version of Bazel. For this project, we recommend a version from the 7.x series for stability.
sudo apt update && sudo apt install bazel-7.x
To verify a successful installation, run:
bazel --version