- Robotics software engineer @nobleo
- Master Control Systems Technology @ TU/e
rayman / ros-get Goto Github PK
View Code? Open in Web Editor NEWSimple tools for working with ROS source packages
License: MIT License
Simple tools for working with ROS source packages
License: MIT License
rosdep update is quite slow, might want to option to skip this.
ERROR: your rosdep installation has not been initialized yet. Please run:
rosdep update
For now we compile twist_mux from source (just an example).
It would be nice if we can choose between debian and source versions of packages (and that this choice is remembered over ros-get updates)
In future also convenient when you release debian files for whatever reason, you can then choose to develop or use a package.
Easy switching is key in this I think.
[INFO] ros_get.commands: found 'move_base_flex/mbf_costmap_core'
[INFO] ros_get.commands: found 'move_base_flex/mbf_abstract_core'
[INFO] ros_get.commands: found 'move_base_flex/mbf_abstract_nav'
[INFO] ros_get.commands: found 'move_base_flex/mbf_simple_nav'
[INFO] ros_get.commands: found 'move_base_flex/mbf_utility'
[INFO] ros_get.commands: found 'move_base_flex/mbf_costmap_nav'
[INFO] ros_get.commands: found 'move_base_flex/move_base_flex'
[INFO] ros_get.commands: found 'move_base_flex/mbf_msgs'
[INFO] root: symlink '../repos/move_base_flex/mbf_abstract_nav' => '/home/ruvu/ruvu/src/mbf_abstract_nav'
[INFO] root: symlink '../repos/common/utils/ruvu_teleop' => '/home/ruvu/ruvu/src/ruvu_teleop'
[INFO] root: symlink '../repos/elevation-mapping/elevation_mapping' => '/home/ruvu/ruvu/src/elevation_mapping'
[INFO] root: symlink '../repos/common/simulation/ruvu_gazebo_plugins' => '/home/ruvu/ruvu/src/ruvu_gazebo_plugins'
[INFO] root: symlink '../repos/move_base_flex/mbf_utility' => '/home/ruvu/ruvu/src/mbf_utility'
[INFO] root: symlink '../repos/project-exr1/exr1_description' => '/home/ruvu/ruvu/src/exr1_description'
[INFO] root: symlink '../repos/common/test/ruvu_rostest' => '/home/ruvu/ruvu/src/ruvu_rostest'
[INFO] root: symlink '../repos/move_base_flex/mbf_abstract_core' => '/home/ruvu/ruvu/src/mbf_abstract_core'
[INFO] root: symlink '../repos/common/bringup/ruvu_bringup' => '/home/ruvu/ruvu/src/ruvu_bringup'
[INFO] root: symlink '../repos/common/simulation/ruvu_sensor_descriptions' => '/home/ruvu/ruvu/src/ruvu_sensor_descriptions'
[INFO] root: symlink '../repos/move_base_flex/mbf_msgs' => '/home/ruvu/ruvu/src/mbf_msgs'
[INFO] root: symlink '../repos/move_base_flex/mbf_costmap_core' => '/home/ruvu/ruvu/src/mbf_costmap_core'
[INFO] root: symlink '../repos/kindr' => '/home/ruvu/ruvu/src/kindr'
[INFO] root: symlink '../repos/common/intelligence/ruvu_networkx' => '/home/ruvu/ruvu/src/ruvu_networkx'
[INFO] root: symlink '../repos/move_base_flex/mbf_costmap_nav' => '/home/ruvu/ruvu/src/mbf_costmap_nav'
[INFO] root: symlink '../repos/project-exr1/exr1_intelligence_bringup' => '/home/ruvu/ruvu/src/exr1_intelligence_bringup'
[INFO] root: symlink '../repos/project-exr1/exr1_hardware' => '/home/ruvu/ruvu/src/exr1_hardware'
[INFO] root: symlink '../repos/kindr-ros/kindr_ros' => '/home/ruvu/ruvu/src/kindr_ros'
[INFO] root: symlink '../repos/project-exr1/exr1_simulation_bringup' => '/home/ruvu/ruvu/src/exr1_simulation_bringup'
[INFO] root: symlink '../repos/project-exr1/exr1_hardware_bringup' => '/home/ruvu/ruvu/src/exr1_hardware_bringup'
[INFO] root: symlink '../repos/common/utils/ruvu_msg_converters' => '/home/ruvu/ruvu/src/ruvu_msg_converters'
[INFO] root: symlink '../repos/swiftnav_ros' => '/home/ruvu/ruvu/src/swiftnav_ros'
Maybe this can be debug logs
http://www.ros.org/reps/rep-0140.html#version
This has an impact on how we check-out repositories.
Is this desired? This way, you can never work on a branch temporarily
xdg does not support python2 anymore: https://github.com/srstevenson/xdg/releases/tag/2.0.0
However, the program is stilled called using the python2 interpreter
specifying a ros-distro-url with a tilde is not being expanded
See also how tox-travis implemented it
Currently, failing to set up the environment variables before using ros-get fails with an error near 'cant find the thing you ask for'. It would be useful if it reported an error about missing environment variables instead.
Is this desired behavior?
Why is this option there? Do you have a use-case?
user@lime2:~$ source <(wget -O- https://raw.githubusercontent.com/Rayman/ros-get/master/install)
--2016-10-24 15:45:04-- https://raw.githubusercontent.com/Rayman/ros-get/master/install
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.60.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.60.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 404 [text/plain]
Saving to: 'STDOUT'
- 100%[================================================>] 404 --.-KB/s in 0s
2016-10-24 15:45:04 (875 KB/s) - written to stdout [404/404]
-bash: pip: command not found
Add -r option to ignore continue
Many sub-command programs also have a sub-commmand 'help' to get a little guidance with the commands (usually a list of known commands). It's a bit more helpful than throwing a usage error what it currently answers:
usage: ros-get [-h] [-v]
{install,update,list,remove,ws-create,ws-switch,ws-save,ws-list,ws-locate}
...
ros-get: error: invalid choice: 'help' (choose from 'install', 'update', 'list', 'remove', 'ws-create', 'ws-switch', 'ws-save', 'ws-list', 'ws-locate')
catkin_ws2 => /home/rein/catkin_ws2
catkin_ws => /home/rein/catkin_ws
Would be nice to highlight the active one
After the installation commands from the README.md on ubuntu 16.04 there is no ros-get command available. Probably because the .bashrc is not reloaded.
Upon opening a new terminal I get this error:
bash: /home/tim/catkin_ws/devel/setup.bash: No such file or directory
No option to delete workspaces
We do have ros-get ws-locate
but it is also useful to obtain the name of the workspace and the associated ROS_DISTRO_URL
Generate a rosdistro with specific versions
Symptom on my pc:
[~/repos/ros-get] (master=)
tim@Precision $ cd repos/ros-get/
[~/repos/ros-get] (master=)
tim@Precision $ git pull
Already up-to-date.
[~/repos/ros-get] (master=)
tim@Precision $ pip install --user -e .
Obtaining file:///home/tim/repos/ros-get
Requirement already satisfied: argcomplete in /home/tim/.local/lib/python2.7/site-packages (from ros-get==0.0.0)
Requirement already satisfied: catkin_pkg in /home/tim/.local/lib/python2.7/site-packages (from ros-get==0.0.0)
Requirement already satisfied: catkin_tools in /home/tim/.local/lib/python2.7/site-packages (from ros-get==0.0.0)
Requirement already satisfied: colorlog in /home/tim/.local/lib/python2.7/site-packages (from ros-get==0.0.0)
Requirement already satisfied: future in /home/tim/.local/lib/python2.7/site-packages (from ros-get==0.0.0)
Requirement already satisfied: mock in /home/tim/.local/lib/python2.7/site-packages (from ros-get==0.0.0)
Requirement already satisfied: rosdep in /home/tim/.local/lib/python2.7/site-packages (from ros-get==0.0.0)
Requirement already satisfied: rosdistro in /home/tim/.local/lib/python2.7/site-packages (from ros-get==0.0.0)
Requirement already satisfied: rosinstall_generator in /home/tim/.local/lib/python2.7/site-packages (from ros-get==0.0.0)
Requirement already satisfied: trollius in /home/tim/.local/lib/python2.7/site-packages (from ros-get==0.0.0)
Requirement already satisfied: vcstool in /home/tim/.local/lib/python2.7/site-packages (from ros-get==0.0.0)
Requirement already satisfied: xdg==1.0.7 in /home/tim/.local/lib/python2.7/site-packages (from ros-get==0.0.0)
Requirement already satisfied: argparse in /usr/lib/python2.7 (from catkin_pkg->ros-get==0.0.0)
Requirement already satisfied: python-dateutil in /home/tim/.local/lib/python2.7/site-packages (from catkin_pkg->ros-get==0.0.0)
Requirement already satisfied: docutils in /home/tim/.local/lib/python2.7/site-packages (from catkin_pkg->ros-get==0.0.0)
Requirement already satisfied: PyYAML in /home/tim/.local/lib/python2.7/site-packages (from catkin_tools->ros-get==0.0.0)
Requirement already satisfied: osrf-pycommon>0.1.1 in /home/tim/.local/lib/python2.7/site-packages (from catkin_tools->ros-get==0.0.0)
Requirement already satisfied: setuptools in /home/tim/.local/lib/python2.7/site-packages (from catkin_tools->ros-get==0.0.0)
Requirement already satisfied: six>=1.9 in /home/tim/.local/lib/python2.7/site-packages (from mock->ros-get==0.0.0)
Requirement already satisfied: funcsigs>=1; python_version < "3.3" in /home/tim/.local/lib/python2.7/site-packages (from mock->ros-get==0.0.0)
Requirement already satisfied: pbr>=0.11 in /home/tim/.local/lib/python2.7/site-packages (from mock->ros-get==0.0.0)
Requirement already satisfied: rospkg>=1.0.37 in /home/tim/.local/lib/python2.7/site-packages (from rosdep->ros-get==0.0.0)
Requirement already satisfied: futures in /home/tim/.local/lib/python2.7/site-packages (from trollius->ros-get==0.0.0)
Installing collected packages: ros-get
Found existing installation: ros-get 0.0.0
Uninstalling ros-get-0.0.0:
Successfully uninstalled ros-get-0.0.0
Running setup.py develop for ros-get
Successfully installed ros-get
[~/repos/ros-get] (master=)
tim@Precision $ ros-get help
ros-get: command not found
To reproduce:
docker run -it ubuntu:16.04
apt update && apt install git python-pip
git clone https://github.com/Rayman/ros-get.git
cd ros-get
pip install --user -e .
ros-get help
bash: ros-get: command not found
[rospack] Error: package 'DELETED_PACKAGE' not found
The update command (but also install, and perhaps other commands as well), is quite spammy in its output. It would be useful if it doesn't report about things that are correct already (perhaps still allowing to get the information with eg a --verbose
flag).
That way, you can more easily read what gets actually changed or updated without getting lost in all the output.
Obviously, the other way around (adding a flag to reduce the amount of output) would work too.
```[ERROR] ros_get.commands: no repository updated, package could not be found```
We should also print what package is not found and maybe in what repo (rosdistro url).
We should also report when a package cannot be found.
Could you provide more info about how to install the tooling and test?
Traceback (most recent call last):
File "/home/rein/.local/bin/ros-get", line 11, in <module>
load_entry_point('ros-get', 'console_scripts', 'ros-get')()
File "/home/rein/.ros-get/src/ros_get/__main__.py", line 126, in main
exit(func(**vars(args)))
File "/home/rein/.ros-get/src/ros_get/commands.py", line 42, in update
pkgs_done = recursive_update(pkgs, verbose)
File "/home/rein/.ros-get/src/ros_get/commands.py", line 156, in recursive_update
update_folder(target_path, {repo.name: repo}, verbose)
File "/home/rein/.ros-get/src/ros_get/utils.py", line 85, in update_folder
assert client.get_url() == url
AssertionError
I know that this feature is not yet in but we should not leave this to the user. If you are switching, you would also like to switch the distro url so we should store this in the ros-get config
~/.config/ros-get/
setup.sh
sudo sh -c "echo \"yaml file://$HOME/.ros/ros-get/rosdistro/rosdep/ros-rosdistro-kinetic.yaml kinetic\" > /etc/ros/rosdep/sources.list.d/90-ros-rosdistro-kinetic.list"
rosdep update
It only symlinks the current installed target
The ROS_DISTRO variable is now set to Rayman's default. It would be nice if this option could be given to the installer script.
Check if we have modified files somewhere
$ ros-get -v install foobar
[DEBUG] ros_get.commands: marking for installation: foobar
[DEBUG] rosdistro: Load index from "https://raw.githubusercontent.com/ros/rosdistro/master/index.yaml"
[DEBUG] rosdistro: Load file from "https://raw.githubusercontent.com/ros/rosdistro/master/kinetic/distribution.yaml"
[DEBUG] ros_get.commands: Package 'foobar' can't be found in a repository
[ERROR] ros_get.commands: no repository updated, package could not be found
$ ls $(ros-get ws-locate)/.env/installed/foobar
/home/tim/catkin_ws/.env/installed/foobar
[ERROR] ros_get.commands: unable to locate package: realsense2_camera
[WARNING] ros_get.commands: marked 1 package(s) for removal
[WARNING] ros_get.commands: please run the following command to update your workspace:
ros-get update
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.