-
Hunter Hansen authored
# Description ~Adds a new package `orbit_hooks` to `/orbit/docker/orbit_hooks`. This is a small library of `setuptools.Command` child classes, built at the beginning of `Dockerfile.base`. They can be referenced in the `setup.py` of extensions which want hooks, such as ROS or apt packages installed at Dockerfile build time.~ ~The currently existing hooks are `InstallAptDeps` and `InstallRosDeps`. These will automatically perform certain installation processes:~ ~`InstallAptDeps` looks in the extension's `extension.toml` for an `orbit_hooks` `apt_deps` list, which will be installed during the `Dockerfile.base` build procedure.~ ~`InstallRosDeps` looks in the extension's `extension.toml` for an `orbit_hooks` `ros_ws` path. In building `Dockerfile.ros2`, we will perform a `rosdep` installation of any dependencies in ros packages beneath `ros_ws`.~ ~Additionally, I have added the script `check_and_install_deps.py`, which scans all subdirs in `orbit/source/extensions` for the existence of certain setup.py cmdclasses (`install_apt_deps`,`install_ros_deps`) and calls them if they exist.~ ~For an extension to make use of this optional install procedure, they will need to `import orbit_hooks` in their `setup.py` the relevant command class dict (`INSTALL_ALL_DEPS`, `INSTALL_APT_DEPS`, `INSTALL_ROS_DEPS`) and to have the corresponding values in their `extension.toml`. For an example, [this PR](https://github.com/bdaiinstitute/orbit.eval_sim/pull/36) has the related modifications to its `extension.toml` and its `setup.py`.~ **Update**: Adds a new script `/tools/install_deps.py` which has commands for installing ros and apt dependencies in extensions via options set in the `extension.toml`. `install_apt_packages` looks in the extension's `extension.toml` for an `orbit_settings` `apt_deps` list, which will be installed during the `Dockerfile.base` build procedure. `install_rosdep_packages` looks in the extension's `extension.toml` for an `orbit_settings` `ros_ws` path. In building `Dockerfile.ros2`, we will perform a `rosdep` installation of any dependencies in ros packages beneath `ros_ws`. Added section about this in `developers.rst`, as well as reference to it in the this [draft PR](https://github.com/isaac-orbit/orbit.ext_template/pull/18) for `orbit.ext_template` ## Type of change - New feature (non-breaking change which adds functionality) ## Checklist - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./orbit.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have run all the tests with `./orbit.sh --test` and they pass - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there --------- Signed-off-by:
Hunter Hansen <50837800+hhansen-bdai@users.noreply.github.com>