A minimalistic tool to automate source code cloning and building
Project description
forest
The forest project aims at automatizing the clone and build process for open source software. Differently from other systems such as Conda, or Conan, it is a non-intrusive system which does not aim at environment management.
Quickstart
Setup a new workspace and add new recipes. Optional arguments are surrounded by [square brackets].
[sudo] pip3 install hhcm-forestmkdir my_ws && cd my_wsforest initsource setup.bashforest add-recipes git@github.com:advrhumanoids/multidof_recipes.git [--tag master]
Install the xbot2_examples recipe with its dependencies.
forest grow xbot2_examples [-j8] [--clone-protocol https]
Command line interface
Forest's CLI is divided into three main verbs, i.e. init, add-recipes, and grow.
forest init
Initialize the current folder as a forest workspace, i.e. it creates
- a
srcfolder that will contain source code - a
recipesfolder that will contain forest's recipe files (more on this later) - a
buildfolder to carry out compilation and store build artifacts - an
installfolder - a
setup.bashfile which makes installed items visible to the system
forest add-recipes
Adds recipes from a remote.
usage: forest add-recipes [-h] [--tag TAG] [--verbose] url
positional arguments:
url url of the remote (e.g. git@github.com:<username>/<reponame>.git
or https://github.com/<username>/<reponame>.git)
optional arguments:
-h, --help show this help message and exit
--tag TAG, -t TAG
--verbose, -v print additional information
forest grow
Builds a project according to the given recipe name, alongside its dependencies.
usage: forest grow [-h] [--jobs JOBS] [--mode MODE [MODE ...]]
[--config CONFIG [CONFIG ...]]
[--default-build-type {None,RelWithDebInfo,Release,Debug}]
[--force-reconfigure] [--list-eval-locals]
[--clone-protocol {ssh,https}] [--clone-depth CLONE_DEPTH]
[--cmake-args CMAKE_ARGS [CMAKE_ARGS ...]] [--no-deps]
[--uninstall] [--clean] [--pwd PWD] [--verbose]
[RECIPE]
positional arguments:
RECIPE name of recipe with fetch and build information
optional arguments:
-h, --help show this help message and exit
--jobs JOBS, -j JOBS parallel jobs for building
--mode MODE [MODE ...], -m MODE [MODE ...]
specify modes that are used to set conditional
compilation flags (e.g., cmake args)
--config CONFIG [CONFIG ...], -c CONFIG [CONFIG ...]
specify configuration variables that can be used
inside recipes
--default-build-type {None,RelWithDebInfo,Release,Debug}, -t {None,RelWithDebInfo,Release,Debug}
build type for cmake, it is overridden by recipe
--force-reconfigure force calling cmake before building with args from the
recipe
--list-eval-locals print available attributes when using conditional
build args
--clone-protocol {ssh,https}
override clone protocol
--clone-depth CLONE_DEPTH
set maximum history depth to save bandwidth
--cmake-args CMAKE_ARGS [CMAKE_ARGS ...]
specify additional cmake args to be appended to each
recipe (leading -D must be omitted)
--no-deps, -n skip dependency fetch and build step
--uninstall uninstall recipe
--clean uninstall recipe and remove build
--pwd PWD, -p PWD user password to be used when sudo permission is
required (if empty, user is prompted for password);
note: to be used with care, as exposing your password
might be harmful!
--verbose, -v print additional information
--src-only, -s only clone sources, skip build step
--tag-override FILE, -o FILE
yaml file containing a {pkgname: tag} dictionary;
overrides the tag/branch/commit specified in each
recipe for the listed packages. Useful in combination
with forest.lock to reproduce a known-good build:
forest grow my_package --tag-override forest.lock
forest freeze
Snapshots the current HEAD commit of every repository under src/ into a forest.lock file at the workspace root. The lock file is a YAML dictionary of pkgname: sha1 entries.
The command fails if any src/ subdirectory is not a git repository, or if any repository has uncommitted local changes.
usage: forest freeze [-h] [--append] [--ignore-errors]
optional arguments:
-h, --help show this help message and exit
--append, -a update existing forest.lock in place instead of overwriting it
--ignore-errors write forest.lock even if some repos are invalid or have local changes
Example forest.lock:
my_package: 4a7f3c1d2e8b0a9f6c5d3e2b1a0f9e8d7c6b5a4f
other_package: 1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hhcm_forest-1.1.25.tar.gz.
File metadata
- Download URL: hhcm_forest-1.1.25.tar.gz
- Upload date:
- Size: 28.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
735ca9e6b9f72df26e1a7b98b9e3f9ed99f17850fc94d501d178bcddaac2d06a
|
|
| MD5 |
cf22d39a5f6220a4fbcc073d22e5ec79
|
|
| BLAKE2b-256 |
10e7c1138f62c5ececcdf9383a400af994a5e194eee60cd2969e1fe94b76f40f
|
File details
Details for the file hhcm_forest-1.1.25-py3-none-any.whl.
File metadata
- Download URL: hhcm_forest-1.1.25-py3-none-any.whl
- Upload date:
- Size: 33.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
541b221eb347cf820288946723551650d182b3c071a5c7e099e56c08759b8cdc
|
|
| MD5 |
d4a7cd6e89f2d201de6b90f61a605467
|
|
| BLAKE2b-256 |
b528f1d5af7f9f2e0d64c71b9b9b61f088eaecad0dc7212af3426e8eb2b8190b
|