This describes how to set up a development environment for various development tasks.
We first list the requirements of specific development tasks, and secondly how to obtain them.
- Run BASIL integration tests
- Scala, Boogie, Mill
- Lift Integration test examples, add new test case
- ddisasm, gtirb_semantics, bap, clang-15, gcc-aarch64-linux-gnu, gnu make
- Lift an example binary to gtirb
- ddisam, gtirb_semantics
- Scala
- depends: java 20
- Install coursier
cs install scala
- Mill
- depends: Scala
cs install mill
./mill
script in repo root
- Dotnet6
- usually available from system repositories
sudo apt-get install dotnet-sdk-6.0
- gtirb_semantics
- use nix derivation depends: nix
- Boogie
- depends: Dotnet6, z3 It is recommended to use Boogie version 3.0.4 and Z3 version 4.8.8 (which is recommended by Boogie). Other versions and combinations may not have been tested.
dotnet tool install --global Boogie [--version <version>]
- ddisasm
- use nix derivation depends: nix
- bap
- use nix derivation. depends: nix
- OR use
basil-dev
docker container. depends: podman, podman-compose
depends: podman, podman-composepodman-compose run basil-dev
- Compile from source
- nix
- Follow the single-user installation instructions here
Follow first-time setup instructions here to setup the build cache of PAC packages.sh <(curl -L https://nixos.org/nix/install) --no-daemon
- java
- Use system packages
sudo apt install openjdk-20-jdk
- Use coursier
- Use
basil-dev
docker container
- Use system packages
- basil-dev docker container
podman-compose run basil-dev
- depends: podman, podman-compose
- see also
- Podman / docker
- Available from package repositories
sudo apt-get install podman podman-compose
- clang
- available from package repositories
- gcc cross
- Available from system repositories
gcc-aarch64-linux-gnu
- Available from system repositories
- z3
- available from system repositories