GithubHelp home page GithubHelp logo

ros-humble's Introduction

Contributing

Many thanks for taking the time to read this and for contributing to RoboStack!

This project is in early stages and we are looking for contributors to help it grow. The developers are on gitter where we discuss steps forward.

We welcome all kinds of contribution -- code or non-code -- and value them highly. We pledge to treat everyones contribution fairly and with respect and we are here to help awesome pull requests over the finish line.

Please note we have a code of conduct, and follow it in all your interactions with the project.

We follow the NumFOCUS code of conduct.

Adding new packages via pull requests

You can open a pull request that will get build automatically in our CI.

An example can be found here. Simply add the required packages to the vinca_*.yaml files, where the * indicates the desired platform (linux_64, osx, win or linux_aarch64). Ideally, try to add packages to all of these platforms.

Sometimes, it may be required to patch the packages. An example of how to do so can be found in this PR.

Testing changes locally

  1. Install conda build tools in base environemnt:
conda install -n base conda-build mamba
  1. Create a new conda environment and add the conda-forge and robostack channels:
conda create -n ros_humble python=3.9
conda activate ros_humble
conda config --append channels defaults
conda config --add channels conda-forge
conda config --add channels robostack-experimental
conda config --set channel_priority strict
  1. Install some dependencies:
mamba install anaconda-client catkin_pkg ruamel_yaml rosdistro empy networkx requests ruamel ruamel.yaml boa
  1. Install vinca: pip install git+https://github.com/RoboStack/vinca.git@master --no-deps
  2. Clone this repo: git clone https://github.com/RoboStack/ros-humble.git
  3. cd ros-humble
  4. cp vinca_linux_64.yaml vinca.yaml (replace with your platform as necessary)
  5. Modify vinca.yaml as you please, e.g. add new packages to be built.
  6. Run vinca to generate the recipe by executing vinca --multiple
  7. Copy the generated recipe to the current folder: cp recipes/ros-humble-XXX.yaml recipe.yaml - note that at least one package needs to be (re)build for this folder to show up. See more info below.
  8. Build the recipe using boa: boa build . -m ./.ci_support/conda_forge_pinnings.yaml -m ./conda_build_config.yaml

How does it work?

  • The vinca.yaml file specifies which packages should be built.
    • Add the desired package under packages_select_by_deps. This will automatically pull in all dependencies of that package, too.
    • Note that all packages that are already build in one of the channels listed under skip_existing will be skipped. You can also add your local channel to that list by e.g. adding /home/ubuntu/miniconda3/conda-bld/linux-64/repodata.json.
    • If you want to manually skip packages, you can list them under packages_skip_by_deps.
    • If you set skip_all_deps to True, you will only build packages listed under packages_select_by_deps but none of their dependencies.
    • The packages_remove_from_deps list allows you to never build packages, even if they are listed as dependencies of other packages. We use it for e.g. the stage simulator which is not available in conda-forge, but is listed as one of the dependencies of the ros-simulator metapackage.
    • If you want to manually rebuild a package that already exists, you need to comment out the channels listed under skip_existing. You probably want to set skip_all_deps: true, otherwise all dependencies will be rebuilt in this case.
  • If the package does not build successfully out of the box, you might need to patch it. To do so, create a new file ros-humble-$PACKAGENAME.patch in the patch directory (replace $PACKAGENAME$ with the name of the package, and replace any underscores with hyphens). You can also use platform specifiers to only apply the patch on a specific platform, e.g. ros-humble-$PACKAGENAME.win.patch.
  • The robostack.yaml and packages-ignore.yaml files are the equivalent of the rosdep.yaml and translate ROS dependencies into conda package names (or in the case of the dependencies listed in packages-ignore.yaml the dependencies are ignored by specifying an empty list).

ros-humble's People

Contributors

wolfv avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.