ros-infrastructure / ros_buildfarm

ROS buildfarm based on Docker
Apache License 2.0
81 stars 96 forks source link

Prerelease test with kinetic : " RuntimeError: Could not resolve the rosdep key 'catkin' " #914

Closed torydebra closed 2 years ago

torydebra commented 2 years ago

Hi,

Following the steps in http://prerelease.ros.org/kinetic, I generated a prerelease script, but when I run it (./prerelease.sh) :

Traceback (most recent call last):
  File "/tmp/ros_buildfarm/scripts/devel/create_devel_task_generator.py", line 271, in resolve_names
    rosdep_key, view, installer, os_name, os_code_name)
  File "/usr/lib/python3/dist-packages/rosdep2/catkin_support.py", line 87, in resolve_for_os
    d = view.lookup(rosdep_key)
  File "/usr/lib/python3/dist-packages/rosdep2/lookup.py", line 200, in lookup
    return self.rosdep_defs[rosdep_name]
KeyError: 'catkin'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/tmp/ros_buildfarm/scripts/devel/create_devel_task_generator.py", line 287, in <module>
    main()
  File "/tmp/ros_buildfarm/scripts/devel/create_devel_task_generator.py", line 124, in main
    debian_pkg_names += resolve_names(['catkin'], **context)
  File "/tmp/ros_buildfarm/scripts/devel/create_devel_task_generator.py", line 274, in resolve_names
    "Could not resolve the rosdep key '%s'" % rosdep_key)
RuntimeError: Could not resolve the rosdep key 'catkin'

Indeed, it seems that the Rosdepview object does not contain some keys, like the 'catkin' one.

It may be that rosdep skips the kinetic version?

Skip end-of-life distro "kinetic"

in this case, is it still possible to run the prerelease tests for kinetic?


I was trying with a repository of mine, but the problem occurs also for other repos, like _moveitmsgs. You should be able to replicate the issue with (command generated by the website):

mkdir -p /tmp/prerelease_job
cd /tmp/prerelease_job
generate_prerelease_script.py \
  https://raw.githubusercontent.com/ros-infrastructure/ros_buildfarm_config/production/index.yaml \
  kinetic default ubuntu xenial amd64 \
  --custom-repo \
    moveit_msgs:git:https://github.com/ros-gbp/moveit_msgs-release.git:release/kinetic/moveit_msgs \
  --level 0 \
  --output-dir ./
clalancette commented 2 years ago

Because kinetic is end-of-life, my understanding is that the rosdep keys for it are no longer available. @nuclearsandwich can confirm this.

I'll suggest you migrate to Melodic or Noetic, where you should be able to resolve all of the keys properly. We should really merge https://github.com/ros-infrastructure/prerelease_website/pull/64 so that Kinetic no longer exists on https://prerelease.ros.org .

torydebra commented 2 years ago

Ok, thanks to let me know, I did not notice the pull request you mentioned so I was asking myself why the kinetic prerelease generation was still online.

BTW, do not worry! I already migrated to Melodic (Noetic soon)

nuclearsandwich commented 2 years ago

Because kinetic is end-of-life, my understanding is that the rosdep keys for it are no longer available. @nuclearsandwich can confirm this.

rosdep requires an additional --include-eol-distros flag in order to fetch distributions marked eol. There isn't currently a way to propagate that option to the prerelease scripts.