Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ros-infrastructure/superflore
An extended platform release manager for Robot Operating System
https://github.com/ros-infrastructure/superflore
Last synced: 3 months ago
JSON representation
An extended platform release manager for Robot Operating System
- Host: GitHub
- URL: https://github.com/ros-infrastructure/superflore
- Owner: ros-infrastructure
- License: apache-2.0
- Created: 2017-05-22T21:13:25.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-03-29T11:19:03.000Z (7 months ago)
- Last Synced: 2024-07-12T06:43:04.423Z (4 months ago)
- Language: Python
- Homepage:
- Size: 457 KB
- Stars: 49
- Watchers: 10
- Forks: 31
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-robotic-tooling - superflore - An extended platform release manager for Robot Operating System. (Development Environment / Build and Deploy)
- awesome-robotic-tooling - superflore - An extended platform release manager for Robot Operating System (Development Environment / Build and Deploy)
README
Super Flore:
=================
Latin for "Super Bloom", this is an extended release manager for
ROS.Supported Platforms:
--------------------
* Gentoo
* OpenEmbeddedInstallation:
=============Dependencies:
--------------
* Python 3
* Docker
* GitInstructions:
-------------
To automatically create a pull-request, you need to generate an [OAuth token](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) for this application.After you have created the token, place it in the
environment variable `SUPERFLORE_GITHUB_TOKEN`.If you're running it with `--dry-run` enabled, then `SUPERFLORE_GITHUB_TOKEN` isn't needed.
Then install and run the application.
```
$ sudo python3 ./setup.py install
```Gentoo Usage:
=============### Generating Gentoo Ebuilds
```
$ superflore-gen-ebuilds -h
usage: superflore-gen-ebuilds [-h] [--ros-distro ROS_DISTRO] [--all]
[--dry-run] [--pr-only] [--no-branch]
[--output-repository-path OUTPUT_REPOSITORY_PATH]
[--only ONLY [ONLY ...]]
[--pr-comment PR_COMMENT]
[--upstream-repo UPSTREAM_REPO]
[--upstream-branch UPSTREAM_BRANCH]
[--skip-keys SKIP_KEYS [SKIP_KEYS ...]]Deploy ROS packages into Gentoo Linux
optional arguments:
-h, --help show this help message and exit
--ros-distro ROS_DISTRO
regenerate packages for the specified distro
--all regenerate all packages in all distros
--dry-run run without filing a PR to remote
--pr-only ONLY file a PR to remote
--no-branch Do not create a new branch automatically
--output-repository-path OUTPUT_REPOSITORY_PATH
location of the Git repo
--only ONLY [ONLY ...]
generate only the specified packages
--pr-comment PR_COMMENT
comment to add to the PR
--upstream-repo UPSTREAM_REPO
location of the upstream repository as in
https://github.com//
--upstream-branch UPSTREAM_BRANCH
branch of the upstream repository
--skip-keys SKIP_KEYS [SKIP_KEYS ...]
packages to skip during regeneration
```### Testing Gentoo Ebuilds
```
$ superflore-check-ebuilds -h
usage: superflore-check-ebuilds [-h]
[--ros-distro ROS_DISTRO [ROS_DISTRO ...]]
[--pkgs PKGS [PKGS ...]] [-f F] [-v]
[--log-file LOG_FILE]Check if ROS packages are building for Gentoo Linux
optional arguments:
-h, --help show this help message and exit
--ros-distro ROS_DISTRO [ROS_DISTRO ...]
distro(s) to check
--pkgs PKGS [PKGS ...]
packages to build
-f F build packages specified by the input file
-v, --verbose show output from docker
--log-file LOG_FILE location to store the log file
```If a file is to be passed as input, it is expected to be in proper yaml format, such as the below.
```
indigo:
- catkin
- p2os_msgs
kinetic:
- catkin
lunar:
- catkin
```Common Usage:
--------------
To update the gentoo ebuilds, run the following:```
$ superflore-gen-ebuilds
```This command will clone the `ros/ros-overlay` repo into
a subfolder within `/tmp`. This can be thought of as an
update mode. *Note: this mode will file a PR with ros/ros-overlay.*If you don't want to file a PR with ros/ros-overlay, you should add
the `--dry-run` flag. You can later decide to file the PR after inspection
by using the `--pr-only` flag.To regenerate only the specified packages, use the `--only [pkg1] [pkg2] ... [pkgn]` flag (**note:** you will need to also use the `--ros-distro [distro]` flag.
*If you want to use an existing repo instead of cloning one,
add `--output-repository-path [path]`.*Regenerating:
--------------
In the case that you wish to regenerate an entire rosdistro, you may do
so by adding the `--ros-distro [distro name]` flag. *Note: this is very
time consuming.*If you wish to regenerate _all_ installers for _all_ ros distros, you
should pass the `--all` flag in place of the `--ros-distro` flag. *Note:
this takes an _extremely_ long amount of time.*OpenEmbedded Usage:
===================### Generating OpenEmbedded Recipes
**NOTE:** The instructions
[here](https://github.com/ros/meta-ros/wiki/Superflore-OE-Recipe-Generation-Scheme#usage)
should be followed to generate the OpenEmbedded recipes for `meta-ros`.```
$ superflore-gen-oe-recipes -h
usage: superflore-gen-oe-recipes [-h] --ros-distro ROS_DISTRO --dry-run
[--pr-only] [--no-branch]
[--output-repository-path OUTPUT_REPOSITORY_PATH]
[--only ONLY [ONLY ...]]
[--pr-comment PR_COMMENT]
[--upstream-repo UPSTREAM_REPO]
[--upstream-branch UPSTREAM_BRANCH]
[--skip-keys SKIP_KEYS [SKIP_KEYS ...]]
[--tar-archive-dir TAR_ARCHIVE_DIR]Generate OpenEmbedded recipes for ROS packages
optional arguments:
-h, --help show this help message and exit
--ros-distro ROS_DISTRO
regenerate packages for the specified distro
--dry-run run without filing a PR to remote
--pr-only ONLY file a PR to remote
--no-branch Do not create a new branch automatically
--output-repository-path OUTPUT_REPOSITORY_PATH
location of the Git repo
--only ONLY [ONLY ...]
generate only the specified packages
--pr-comment PR_COMMENT
comment to add to the PR
--upstream-repo UPSTREAM_REPO
location of the upstream repository as in
https://github.com//
--upstream-branch UPSTREAM_BRANCH
branch of the upstream repository
--skip-keys SKIP_KEYS [SKIP_KEYS ...]
packages to skip during regeneration
--tar-archive-dir TAR_ARCHIVE_DIR
location to store archived packages
```Common Usage:
--------------
To update the OpenEmbedded recipes for a ROS distro, run the following:```
$ superflore-gen-oe-recipes --ros-distro ROS_DISTRO
```This command will clone the `ros/meta-ros` repo into a subfolder under
`/tmp/superflore`, generate the recipes and other files for the specified
distro, commit them, and issue a pull request for `ros/meta-ros`. The
`--ros-distro` flag must be supplied. ROS 1 distros prior to "melodic" are
not supported.Generating bitbake recipes without specifying `--dry-run` is not
supported. This is because it is almost inevitable that
changes to the metadata under recipes-bbappend will be required.
Only when these have been made and the images build and pass
the sanity test should a pull request be created.
You can issue the PR later by using the `--pr-only` flag.If you want to use an existing repo instead of cloning one, specify
`--output-repository-path OUTPUT_REPOSITORY_PATH`.Note that the `--only` flag currently generates bogus files under `conf` and
`files`.F.A.Q.:
=========
Here are some specific use cases for Superflore.Gentoo:
--------**Q**: _I need to patch this package. What are the steps involved here?_
**A**: It's relatively simple to generate a patch for a package. From a
contributor standpoint, superflore does most of the heavy lifting for you.We'll assume you have already patched your source code, and your patch is
named `fix-pkg.patch`. Also, we'll assume you're patching the package `foo`,
and that you have a fork of ros/ros-overlay on its master branch within
you home directory.```
$ cd ${HOME}/ros-overlay/ros-[distro]/foo
$ mkdir files
$ cp /path/to/patch/fix-pkg.patch ./files
$ git add files
$ git commit -m "Add patch to fix package [foo] in [distro]."
```Next, use Superflore to regenerate the package.
```
$ superflore-gen-ebuilds --only [foo] --ros-distro [distro] --output-repository-path ~/ros-overlay
```After that command runs, a pull request will be filed on your behalf into
the ROS overlay repository. **Note:** If you don't want a pull request to be
filed, add the `--dry-run` flag to the above command, and, after you are ready
to file the pr, run `superflore-gen-ebuilds --pr-only`.