Giter Club home page Giter Club logo

ros-get's Introduction

ros-get Build Status

ros-env is a collection of simple tools for working with ROS source packages.

Installation

The ros-get software uses pip to install itself. If you don't have it yet, it is available as python-pip at Debian and Ubuntu. (Install using sudo apt install python-pip.)

Installation from PyPI

pip install ros-get

For development it is recommended to install ros-get with pip install -e. This installs a package in editable mode.

Installation from source

If you like to both use and hack ros-get, you can 'install' the software by pointing the installation to the development code.

  1. Make ros-get available locally, eg by download or cloning the repository, for example

    git clone https://github.com/Rayman/ros-get.git
  2. Install using pip with the editable option -e DIR.

    cd ros-get
    pip install --user -e .

    The final . says that pip should redirect the ros-get command relative to this directory (to ./src/ros-get).

Usage

TODO: create a workspace

ros-get install tue_config
ros-get remove tue_config
ros-get update

Comparison with tue-env

  • Separation between distro definition and the tool
  • Distro definition according to REP 143
  • Dependency definition according to REP 112
  • Parallel git clone/pull
  • Python (instead of bash)

Uninstall

pip uninstall ros-get

ros-get's People

Contributors

alberth avatar jorritsmit avatar rayman avatar reinzor avatar rokusottervanger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ros-get's Issues

ros-get remove non existing package unexpected logging

[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

Installation command failes if pip is not installed

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

Installation commands not working

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

Error print could be more clear

```[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).

expand user ~

specifying a ros-distro-url with a tilde is not being expanded

ros-get update should be less spammy

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.

pkg marked as installed even if installation fails

$ 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

Installation unsuccesfull, binary not installed

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

add `ros-get help`

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')

Logging too verbose

[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

TODO

Commands

  • ws-create
    • save ws under ~/.config/ros-get/
    • rosdistro url as argument
    • generate setup.sh
  • ws-save ?
  • ws-list
  • ws-switch
  • ws-locate
  • [ ] ws-cleanup (maybe do it as part of list?) Moved to #74
  • install (mark as installed & update)
    • recursive git clone
    • mark as installed
    • create symlinks from src to repos
    • recursive checkout bug
  • update
    • rosdistro pull
    • rosdep update
  • status
  • upgrade
  • remove
  • autoremove

Questions

  • create a new distro or overlay an existing one? (overlaying is a good solution and works fine)

Installation

  • [ ] installation should install /etc/ros/rosdep/sources.list.d/80*
  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

Assert

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

Feature request: Choose version of package.

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.

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.