This repository contains the orchestra configuration for rev.ng.
- Clone orchestra
git clone https://github.com/revng/orchestra cd orchestra
- Install dependencies (currently Ubuntu-only):
./.orchestra/ci/install-dependencies.sh
- Install orchestra script
pip3 cache remove orchestra pip3 install --user --force-reinstall https://github.com/revng/revng-orchestra/archive/master.zip
- Make sure
orc
is in PATHexport PATH="$HOME/.local/bin:$PATH"
- Initialize default configuration (and list components)
orc components
If you do not want to install orchestra globally, you can use a virtualenv
.
- Create and activate a virtualenv
python3 -m venv venv source venv/bin/activate
- Install and upgrade wheel inside the virtualenv
pip install --upgrade pip wheel
- Install orchestra
pip cache remove orchestra pip install --force-reinstall https://github.com/revng/revng-orchestra/archive/master.zip
- Install dependencies (Ubuntu only)
./.orchestra/ci/install-dependencies.sh
The default configuration gives you read-only access to the rev.ng open source components.
If you want to work a fork of certain components the suggested workflow is to add your remote to the
repository as cloned by orchestra.
For example, to fork the revng
project do the following:
# Ensure the revng component is cloned
orc clone revng
cd sources/revng
git remote add myremote <your-remote-url>
If you have access to rev.ng GitLab, in order to access private components, your configuration should be similar to the following:
#@data/values
---
#@overlay/match missing_ok=True
remote_base_urls:
- public: "git@github.com:revng"
- private: "git@rev.ng:revng-private"
#@overlay/match missing_ok=True
binary_archives:
- origin: "git@rev.ng:revng/binary-archives.git"
- private: "git@rev.ng:revng-private/binary-archives.git"
- Update
binary-archives
and information about remote repositories:orc update
- Install
revng
orc install revng
In order to build from source certain components, as opposed to fetch them from binary-archives, you need to list them in .orchestra/config/user_options.yml
:
#@overlay/replace
build_from_source:
- revng
- Install and test
revng
orc install --test revng
- Manually build:
orc shell -c revng ninja ctest -j$(nproc)
The recommended workflow is:
- Clone the component you want to fork
orc clone <component>
- Add a remote to the component
cd sources/<component> git remote add <myremotename> <remote-url> git fetch --all
- Switch to your branch
cd sources/<component> git switch <myremotename>/<branch> git checkout -b <branch> <myremotename>/<branch>
- Update orchestra
orc update
-
Q: How do I set the number of parallel jobs for
make
/ninja
?A: In
.orchestra/config/user_options.yml
:parallelism: 4
-
Q: How do I print the dependency graph to build a component?
A:
orc graph $COMPONENT | xdot -
-
Q: How do I uninstall a component?
A:
orc uninstall $COMPONENT
-
Q: Does orchestra leave files around my
$HOME
or elsewhere?A: No! By default orchestra places everything inside the folder containing the configuration
See docs/writing_components.md
.