Skip to main content

A minimalistic tool to automate source code cloning and building

Project description

forest Build Status

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

  • [sudo] pip3 install hhcm-forest
  • mkdir my_ws && cd my_ws
  • forest init
  • forest add-recipes git@github.com:advrhumanoids/multidof_recipes.git [--tag <tag>]
  • 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 src folder that will contain source code
  • a recipes folder that will contain forest's recipe files (more on this later)
  • a build folder to carry out compilation and store build artifacts
  • an install folder
  • a setup.bash file which makes installed items visible to the system

forest add-recipes

Adds recipes from a remote. TODO @MarcoRuzzon

usage: forest add-recipes [-h] [--tag TAG] [--subdir-path SUBDIR_PATH]
                         [--recipes RECIPES [RECIPES ...]]
                         [--allow-overwrite] [--verbose]
                         url

positional arguments:
 url                   url of the remote (e.g.
                       git@github.com:<username>/<reponame>.git)

optional arguments:
 -h, --help            show this help message and exit
 --tag TAG, -t TAG
 --subdir-path SUBDIR_PATH, -s SUBDIR_PATH
                       relative path to the folder in which recipes are
                       contained
 --recipes RECIPES [RECIPES ...], -r RECIPES [RECIPES ...]
                       specify which recipes to add, otherwise all recipes in
                       subdir-path are added
 --allow-overwrite, -o
                       allow overwritng local recipes with new ones
 --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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hhcm_forest-1.0.3.tar.gz (22.8 kB view hashes)

Uploaded Source

Built Distribution

hhcm_forest-1.0.3-py3-none-any.whl (27.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page