Document working in here
This commit is contained in:
parent
8deb1bed25
commit
2ab0339e49
2 changed files with 65 additions and 0 deletions
52
README.md
52
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.
|
||||
|
|
13
activate.sh
Normal file
13
activate.sh
Normal file
|
@ -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
|
Loading…
Reference in a new issue