diff --git a/README.md b/README.md index 5a34d59..a8fe6fc 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,58 @@ And so I'm going the other way; Bazel in a monorepo with subprojects so I'm able - [Flowmetal](projects/flowmetal) - [Lilith](projects/lilith) +## Hacking (Ubuntu) + +### Step 1 - Install bazel + +As usual, Ubuntu's packaging of the Bazel bootstrap script is ... considerably stale. +Add the upstream Bazel ppa so we can get reasonably fresh builds. + +``` sh +sudo apt install apt-transport-https curl gnupg +curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg +sudo mv bazel.gpg /etc/apt/trusted.gpg.d/ +echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list +``` + +### Step 2 - Create a canonical `python` + +Bazel, sadly, expects that a platform `python` exists for things. +Due to Bazel's plugins model, changing this is miserable. +So just create one. + +``` sh +if ! `which python > /dev/null`; then + sudo ln -s `which python3` /usr/bin/python +fi +``` + +### Step 3 - Non-hermetic build deps + +The way that Bazel's Python toolchain(s) work is that ultimately they go out to the non-hermetic platform. +So, in order to be able to use the good tools we have to have some things on the host filesystem. + +``` sh +if [[ "$(sqlite3 --version | awk -F'.' '/^3/ {print $2; exit}')" -lt 35 ]]; then + echo "SQLite 3.35.0 or later (select ... returning support) required" + exit 1 +fi + +sudo apt install \ + python3-setuptools \ + postgresql libpq-dev \ + sqlite3 libsqlite3-dev +``` + +### Working in source + +`source activate.sh` is the key. +It automates a number of tasks - +1. Building a virtualenv +2. Synchronizing the virtualenv from the requirements.txt +3. Updating the virtualenv with all project paths +4. Activating that virtualenv + ## License Copyright Reid 'arrdem' McKenzie, 4/8/2021. diff --git a/activate.sh b/activate.sh new file mode 100644 index 0000000..b9e0b10 --- /dev/null +++ b/activate.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +mkvirtualenv source + +workon source + +pip install -r tools/python/requirements.txt + +for d in $(find . -type d -path "*/src/python"); do + d="$(realpath "${d}")" + echo "Adding subproject ${d}" + add2virtualenv "${d}" +done