Bug 224895

Summary: New port: devel/ros-rosdep Multi-package manager system dependency tool for ROS
Product: Ports & Packages Reporter: Trenton Schulz <trueos>
Component: Individual Port(s)Assignee: Kurt Jaeger <pi>
Status: Closed FIXED    
Severity: Affects Some People CC: emaste, pi, swills
Priority: --- Keywords: needs-patch, needs-qa
Version: Latest   
Hardware: Any   
OS: Any   
Bug Depends on: 235843, 235844, 235845    
Bug Blocks:    
Attachments:
Description Flags
sharfile for devel/ros-rosdep
none
Updated shar
none
Updated shar to address issues from comment 3.
none
Updated shar to address issues from comment #6.
none
Updated sharfile none

Description Trenton Schulz 2018-01-04 14:04:16 UTC
Created attachment 189396 [details]
sharfile for devel/ros-rosdep

This is one of the tools that is required for the Robot Operating System (ROS) to work on FreeBSD. There are many other parts that are required, but I thought I would add the first steps.
Comment 1 Trenton Schulz 2018-01-21 09:51:59 UTC
Created attachment 189943 [details]
Updated shar

Updated shar file, the previous version didn't stage correctly.
Comment 2 Trenton Schulz 2018-01-21 09:54:34 UTC
*Sigh* Sorry I didn't obsolete the earlier file. I clicked too fast. The new file should have everything.
Comment 3 Tobias Kortkamp freebsd_committer freebsd_triage 2019-01-18 11:30:03 UTC
Comment on attachment 189943 [details]
Updated shar

Hi,

it has been a year since anybody has said anything here.  I don't
know if this is still relevant, but I'm doing a quick review as
there seem to be a couple of issues here.

XWWW=	http://docs.ros.org/independent/api/rosdep/html/

WWW goes into pkg-descr on FreeBSD.

XUSES=	python
XUSE_PYHTON=	distutils autoplist

Typo.  USE_PYTHON.  With this fixed pkg-plist could probably be
dropped thanks to autoplist here.

XGH_TAGNAME=	0.11.8

Should be removed as GH_TAGNAME defaults to ${DISTVERSION}.


Xdo-install:
X	(cd ${WRKSRC} && python setup.py install --root ${STAGEDIR})
X

After fixing the USE_PYTHON typo this can probably be removed too.

XTaken from the rosdep documentation.
X

I would not start pkg-descr with that.  Usually you have a WWW line
at the bottom of pkg-descr which also doubles as a source for the
description.
Comment 4 Trenton Schulz 2019-01-19 14:09:49 UTC
Thanks for the comments. This can still be relevant. Plus, it would be nice to get this into the ports tree as I actually was able to push fixes upstream for FreeBSD in rosdep, but I may need to do an update as there's a new version of ROS out.

Unfortunately, I don't have access to my FreeBSD machine until the beginning of February, but I'll send an updated patch when I have access to it.
Comment 5 Trenton Schulz 2019-02-10 16:30:00 UTC
Created attachment 201897 [details]
Updated shar to address issues from comment 3.

Thank you for the comments. I updated the shar file. While, there are newer versions of rosdep, I would rather submit a new bug report for them and get this in first.
Comment 6 Tobias Kortkamp freebsd_committer freebsd_triage 2019-02-10 19:06:21 UTC
Looks better but there are still some issues.  I consider the dependencies
problem a blocking issue.

XPKGNAMEPREFIX=	${PY_FLAVOR}-

Use

PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}

here.

XLICENSE=	BSD3CLAUSE

Consider adding LICENSE_FILE here too.

When I run it this happens

Traceback (most recent call last):
  File "/usr/local/bin/rosdep", line 3, in <module>
    from rosdep2.main import rosdep_main
  File "/usr/local/lib/python2.7/site-packages/rosdep2/__init__.py", line 40, in <module>
    from .installers import InstallerContext, Installer, \
  File "/usr/local/lib/python2.7/site-packages/rosdep2/installers.py", line 36, in <module>
    from rospkg.os_detect import OsDetect
ImportError: No module named rospkg.os_detect

Looks like there are some dependencies missing. setup.py has this

install_requires=['catkin_pkg', 'rospkg >= 1.0.37', 'rosdistro >= 0.4.0', 'PyYAML >= 3.1'],
Comment 7 Trenton Schulz 2019-02-11 07:53:06 UTC
Ah, thanks for the catch! It reminds me I need to test building these ports as a "blank" user.

I have ports for these dependencies too, but they are all python and I suspect they need the same flavor fixing as this one. I'll try to get to those and submit an updated patch for everything later this week.
Comment 8 Trenton Schulz 2019-02-18 20:18:58 UTC
Created attachment 202139 [details]
Updated shar to address issues from comment #6.

Updated shar to address issues from comment #6. It should work better now.

I had to make bug reports for the dependencies. They bug reports are:

bug #235843
bug #235844
bug #235845
Comment 9 Steve Wills freebsd_committer freebsd_triage 2019-02-18 20:39:00 UTC
Thanks for looking at this, I had actually considered adding some ROS things to ports myself. That said, given what I understand of rosdep, i'm not sure i understand the use case of adding it to ports. Reading this page:

https://answers.ros.org/question/287544/when-should-i-use-rosdep-and-when-should-i-use-apt-or-pip/

it sounds like it does the same thing ports/pkgs do. Am I misunderstanding? What's the use case?
Comment 10 Trenton Schulz 2019-02-19 09:14:27 UTC
(In reply to Steve Wills from comment #9)

Thank you for adding the dependencies in the correct field. I'm still new to these things.

rosdep is a cross platform tool for handling packages and I've updated it to use pkg on FreeBSD[1].

So, no, you don't *need* rosdep per se assuming you know how to navigate dependencies or build things yourself. But, say, you are someone who only knows ROS and not necessarily the operating system below. Then you can use rosdep to ensure that a package is installed. And having rosdep in the ports tree at least would make the "how do I install rosdep on FreeBSD?" part easy.

Also, if you want to build ROS from source (e.g., http://wiki.ros.org/kinetic/Installation/Source), then you need a working rosdep because several scripts depend on rosdep to see if you have all the dependencies met. You can hack around the scripts, but if you are building from source, you have other issues to work with. 

At the beginning of 2018 (i.e., when I submitted these ports initially). I had managed to build the minimal part of ROS Kinetic Kame. So, at least getting the basic node up is possible. But spending a day on rosdep was part of it, and I would be glad if others could at least skip that part, which is the reason of ports.

I'm glad there are others interested in ROS on FreeBSD. It makes it worthwhile to get this and other ports finished even if I can't make direct use of them at this exact moment.
Comment 11 Trenton Schulz 2019-02-19 09:18:13 UTC
(In reply to Trenton Schulz from comment #10)

… and I hit submit before finishing the footnote for commend #10.

[1] There was an older version of ROS for FreeBSD and rosdep worked with that too, but it was before modern pkg and it just used the pkg_* tools. However, back then, I think ROS only came as a giant package.
Comment 12 Trenton Schulz 2019-09-17 10:43:52 UTC
Created attachment 207565 [details]
Updated sharfile

Updated sharfile for newer version of software.
Comment 13 Kurt Jaeger freebsd_committer freebsd_triage 2019-09-22 10:48:09 UTC
Committed, thanks!
Comment 14 commit-hook freebsd_committer freebsd_triage 2019-09-22 10:48:12 UTC
A commit references this bug:

Author: pi
Date: Sun Sep 22 10:48:03 UTC 2019
New revision: 512577
URL: https://svnweb.freebsd.org/changeset/ports/512577

Log:
  New port: devel/ros-rosdep

  rosdep is a command-line tool for installing system dependencies

  rosdep uses the backend of operating system for installing
  packages. For end-users, rosdep helps you install system dependencies
  for software that you are building from source. For developers, rosdep
  simplifies the problem of installing system dependencies on different
  platforms.

  On FreeBSD, the pkg system is used.

  WWW: http://docs.ros.org/independent/api/rosdep/html/

  PR:		224895
  Submitted by:	Trenton Schulz <trueos@norwegianrockcat.com>

Changes:
  head/devel/Makefile
  head/devel/ros-rosdep/
  head/devel/ros-rosdep/Makefile
  head/devel/ros-rosdep/distinfo
  head/devel/ros-rosdep/files/
  head/devel/ros-rosdep/files/patch-src_rosdep2_sources__list.py
  head/devel/ros-rosdep/pkg-descr