Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to make rosdep resolve both official ros and cpr binary package names #1107

Open
kbrameld opened this issue Jul 1, 2024 · 9 comments
Open
Assignees

Comments

@kbrameld
Copy link

kbrameld commented Jul 1, 2024

We have a dingo robot, and we're trying to set up a CI system using custom forks of some dingo-related packages. During the rosdep install step, it is not resolving binary packages provided by cpr. I have followed instructions on APT and rosdep configuration to set up sources.

Running rosdep resolve puma_motor_driver on the robot returns

ERROR: no rosdep rule for 'puma_motor_driver'

If I set the ROSDISTRO_INDEX_URL, I am able to resolve clearpath's packages, but then I'm unable to resolve core ros packages.

export ROSDISTRO_INDEX_URL=https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/index.yaml
rosdep resolve puma_motor_driver   # resolves correctly
rosdep resolve roscpp  # doesn't resolve

How can i set up rosdep such that both core ros packages and clearpath packages can be resolved by rosdep?


Here is a dockerfile to illustrate my issue

FROM osrf/ros:noetic-desktop-full

RUN apt update
RUN apt install python3-rosdep wget -y
RUN wget https://packages.clearpathrobotics.com/public.key -O - | apt-key add -
RUN sh -c 'echo "deb https://packages.clearpathrobotics.com/stable/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/clearpath-latest.list'
RUN apt update
RUN wget https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/50-clearpath.list -O /etc/ros/rosdep/sources.list.d/50-clearpath.list
RUN rosdep update
RUN rosdep resolve puma_motor_driver  # Returns "ERROR: no rosdep rule for 'puma_motor_driver'"
@tonybaltovski
Copy link
Member

Can you try adding it using this https://wiki.ros.org/ClearpathRobotics/Packages?

@tonybaltovski tonybaltovski self-assigned this Jul 30, 2024
@kbrameld
Copy link
Author

The steps provided in that link are identical to the steps in the dockerfile i posted above.

@tonybaltovski
Copy link
Member

Does RUN rosdep update show it is accessing /etc/ros/rosdep/sources.list.d/50-clearpath.list?

@kbrameld
Copy link
Author

kbrameld commented Aug 2, 2024

Yes, here's the output from rosdep update:

root@61ee6ad0ab6a:/#  rosdep update
reading in sources list data from /etc/ros/rosdep/sources.list.d
Warning: running 'rosdep update' as root is not recommended.
  You should run 'sudo rosdep fix-permissions' and invoke 'rosdep update' again without sudo.
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/hydro.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/indigo.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/kinetic.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/melodic.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/noetic.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/foxy.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/galactic.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/humble.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/extras.yaml
Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
Skip end-of-life distro "ardent"
Skip end-of-life distro "bouncy"
Skip end-of-life distro "crystal"
Skip end-of-life distro "dashing"
Skip end-of-life distro "eloquent"
Skip end-of-life distro "foxy"
Skip end-of-life distro "galactic"
Skip end-of-life distro "groovy"
Add distro "humble"
Skip end-of-life distro "hydro"
Skip end-of-life distro "indigo"
Add distro "iron"
Skip end-of-life distro "jade"
Add distro "jazzy"
Skip end-of-life distro "kinetic"
Skip end-of-life distro "lunar"
Skip end-of-life distro "melodic"
Add distro "noetic"
Add distro "rolling"
updated cache in /root/.ros/rosdep/sources.cache

followed by the output of rosdep resolve puma_motor_driver

root@61ee6ad0ab6a:/# rosdep resolve puma_motor_driver:
ERROR: no rosdep rule for 'puma_motor_driver'

@tonybaltovski
Copy link
Member

Sorry for the delay, I tried this today and it worked as expect:

user@laptop:~$ docker run -it osrf/ros:humble-desktop bash
root@6571ecb4d28b:/# apt update
Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]
Get:2 http://packages.ros.org/ros2/ubuntu jammy InRelease [4682 B]                                      
Get:3 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]                                         
Get:4 http://packages.ros.org/ros2/ubuntu jammy/main amd64 Packages [1605 kB]
Get:5 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [3097 kB]
Get:6 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]                             
Get:7 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [1150 kB]                
Get:8 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [127 kB]                               
Get:9 http://security.ubuntu.com/ubuntu jammy-security/multiverse amd64 Packages [44.7 kB]       
Get:10 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [2308 kB]                   
Get:11 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages [1792 kB]                             
Get:12 http://archive.ubuntu.com/ubuntu jammy/restricted amd64 Packages [164 kB]                      
Get:13 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages [17.5 MB]            
Get:14 http://archive.ubuntu.com/ubuntu jammy/multiverse amd64 Packages [266 kB]                        
Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1440 kB]                 
Get:16 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [2585 kB]                     
Get:17 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [3181 kB]               
Get:18 http://archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 Packages [51.8 kB]               
Get:19 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [81.4 kB]                   
Get:20 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [33.7 kB]               
Fetched 35.9 MB in 12s (2971 kB/s)                                                                      
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
2 packages can be upgraded. Run 'apt list --upgradable' to see them.
root@6571ecb4d28b:/# apt install python3-rosdep wget -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
python3-rosdep is already the newest version (0.25.1-1).
The following NEW packages will be installed:
  wget
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
Need to get 339 kB of archives.
After this operation, 950 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 wget amd64 1.21.2-2ubuntu1.1 [339 kB]
Fetched 339 kB in 1s (464 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package wget.
(Reading database ... 114339 files and directories currently installed.)
Preparing to unpack .../wget_1.21.2-2ubuntu1.1_amd64.deb ...
Unpacking wget (1.21.2-2ubuntu1.1) ...
Setting up wget (1.21.2-2ubuntu1.1) ...
root@6571ecb4d28b:/# sh -c 'echo "deb https://packages.clearpathrobotics.com/stable/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/clearpath-latest.list'
root@6571ecb4d28b:/# apt update
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease                                          
Get:3 https://packages.clearpathrobotics.com/stable/ubuntu jammy InRelease [3614 B]                     
Hit:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease                                        
Hit:5 http://packages.ros.org/ros2/ubuntu jammy InRelease                                      
Hit:6 http://security.ubuntu.com/ubuntu jammy-security InRelease         
Err:3 https://packages.clearpathrobotics.com/stable/ubuntu jammy InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 340FE45F8E6AFF3D
Reading package lists... Done
W: GPG error: https://packages.clearpathrobotics.com/stable/ubuntu jammy InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 340FE45F8E6AFF3D
E: The repository 'https://packages.clearpathrobotics.com/stable/ubuntu jammy InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
root@6571ecb4d28b:/# wget https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/50-clearpath.list -O /etc/ros/rosdep/sources.list.d/50-clearpath.list
--2024-09-19 14:27:24--  https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/50-clearpath.list
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.108.133, 185.199.109.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1064 (1.0K) [text/plain]
Saving to: ‘/etc/ros/rosdep/sources.list.d/50-clearpath.list’

/etc/ros/rosdep/sources.li 100%[=====================================>]   1.04K  --.-KB/s    in 0s      

2024-09-19 14:27:24 (13.4 MB/s) - ‘/etc/ros/rosdep/sources.list.d/50-clearpath.list’ saved [1064/1064]

root@6571ecb4d28b:/# rosdep update
reading in sources list data from /etc/ros/rosdep/sources.list.d
Warning: running 'rosdep update' as root is not recommended.
  You should run 'sudo rosdep fix-permissions' and invoke 'rosdep update' again without sudo.
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/hydro.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/indigo.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/kinetic.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/melodic.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/noetic.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/foxy.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/galactic.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/humble.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/jazzy.yaml
Hit https://raw.githubusercontent.com/clearpathrobotics/public-rosdistro/master/rosdep/extras.yaml
Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
Skip end-of-life distro "ardent"
Skip end-of-life distro "bouncy"
Skip end-of-life distro "crystal"
Skip end-of-life distro "dashing"
Skip end-of-life distro "eloquent"
Skip end-of-life distro "foxy"
Skip end-of-life distro "galactic"
Skip end-of-life distro "groovy"
Add distro "humble"
Skip end-of-life distro "hydro"
Skip end-of-life distro "indigo"
Add distro "iron"
Skip end-of-life distro "jade"
Add distro "jazzy"
Skip end-of-life distro "kinetic"
Skip end-of-life distro "lunar"
Skip end-of-life distro "melodic"
Add distro "noetic"
Add distro "rolling"
updated cache in /root/.ros/rosdep/sources.cache
root@6571ecb4d28b:/# rosdep resolve puma_motor_driver
#apt
ros-humble-puma-motor-driver

Anything else specific to your setup that could be causing this?

@kbrameld
Copy link
Author

Thanks for getting back - the difference is that you are using a humble image. (this won't work on noetic, iron and rolling)

Clearpath has made a public release of puma_motor_driver, just for humble only. In your example, rosdep is resolving puma_motor_driver using the official rosdistro lookup, not the clearpath specific one.

@tonybaltovski
Copy link
Member

@kbrameld it should work now, I think!

@kbrameld
Copy link
Author

kbrameld commented Dec 2, 2024

Just tested across different distros, here's the results.

Noetic - "ERROR: no rosdep rule for 'puma_motor_driver'". Same error as before.

Humble - works fine.

Jazzy, Rolling - error during apt update:

0.625 Ign:5 https://packages.clearpathrobotics.com/stable/ubuntu noble InRelease
0.680 Err:6 https://packages.clearpathrobotics.com/stable/ubuntu noble Release
0.680   404  Not Found [IP: 24.114.195.222 443]

@tonybaltovski
Copy link
Member

Did you need Noetic? We don't support Rolling and and are working on Jazzy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants