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

Add minimal alpine rosdeps for ros_core #18474

Merged
merged 4 commits into from
Jul 30, 2018

Conversation

at-wat
Copy link
Contributor

@at-wat at-wat commented Jul 13, 2018

With ros-infrastructure/rospkg#148 and ros-infrastructure/rosdep#616,
all packages required by ros_core can be installed by rosdep on Alpine Linux (edge version)

Tested with https://github.com/at-wat/alpine-ros/tree/master/melodic-ros-core-alpine

With ros-infrastructure/rospkg#148 and ros-infrastructure/rosdep#616,
all packages required by ros_core can be installed by rosdep on Alpine Linux (edge version)
rosdep/base.yaml Outdated
@@ -986,6 +990,9 @@ golang-go:
gentoo: [dev-lang/go]
ubuntu: [golang-go]
google-mock:
alpine:
source:
uri: 'https://github.com/at-wat/alpine-ros-sources/raw/master/googletest/googletest.rdmanifest'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see https://pkgs.alpinelinux.org/package/edge/main/x86/gtest-dev which looks like it should resolve the dependency.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This gtest-dev package doesn't contain gmock, and gmock is not provided in alpine package repository.

Since gmock requires to be built with gtest source, I think it's not easy to coexist source built gmock with binary installed gtest.
(Patching CMakeLists.txt of gmock might enable to build it using binary installed gtest. I would like to try it.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tfoote I changed it to use alpine package version of 'gtest' and source rosdep version of 'google-mock'.
(It would be better to register google-mock to upstream apk repository in near future.)

@@ -1531,6 +1541,9 @@ libconfig-dev:
gentoo: ['dev-libs/libconfig[cxx]']
ubuntu: [libconfig-dev]
libconsole-bridge-dev:
alpine:
source:
uri: 'https://github.com/at-wat/alpine-ros-sources/raw/master/console-bridge/console-bridge.rdmanifest'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Related, it we can probably go ahead and merge this as is if it's working. But for greater maintainability and better use experience it would be great to submit this upstream for packing.

@@ -3543,6 +3559,9 @@ lm-sensors:
gentoo: [sys-apps/lm_sensors]
ubuntu: [lm-sensors]
log4cxx:
alpine:
source:
uri: 'https://github.com/at-wat/alpine-ros-sources/raw/master/log4cxx/log4cxx.rdmanifest'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've found that source rosdeps generally end up being more work than their worth. I thought we'd officially deprecated them but I can't find a reference. But either way they're strongly discouraged. If you've tested them as working we can merge them for now until a better solution is available.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that using source rosdeps lacks maintainability pretty much.
Registering them to the upstream package repository would be necessary. But until completing them, keeping source rosdeps would be helpful for testing.

@at-wat
Copy link
Contributor Author

at-wat commented Jul 14, 2018

Currently, released versions (non 'edge' version) of alpine repository lack a lot of necessary packages.

e.g. poco-dev was registered at April 2017 and only available at edge/testing repository at now. I have to understand package life cycle in Alpine well.
(openssl1.0-dev, sbcl and py-coverage are also only in edge.)

So, I think I should define package names for each alpine release versions.

Copy link
Contributor Author

@at-wat at-wat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I commented package availability information of the packages which is not provided in Alpine v3.5 (oldest currently supported release).

@@ -2532,6 +2546,7 @@ libpng12-dev:
slackware: [libpng]
ubuntu: [libpng12-dev]
libpoco-dev:
alpine: [poco-dev]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

provided only in edge branch testing repository

rosdep/base.yaml Outdated
@@ -2979,6 +2994,7 @@ libssh2-dev:
gentoo: [net-libs/libssh2]
ubuntu: [libssh2-1-dev]
libssl-dev:
alpine: [openssl1.0-dev]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

openssl1.0-dev: in edge branch main repository
openssl-dev: in 3.5-3.8 branch main repository

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alpine looks recommending to use libressl instead of openssl (https://bugs.alpinelinux.org/issues/4970).
Using openssl may cause conflict with libressl.

@@ -4314,6 +4335,7 @@ rtmidi:
fedora: [rtmidi-devel]
ubuntu: [librtmidi-dev]
sbcl:
alpine: [sbcl]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in edge branch testing repository

@@ -4732,6 +4755,7 @@ tinyxml:
slackware: [tinyxml]
ubuntu: [libtinyxml-dev]
tinyxml2:
alpine: [tinyxml2-dev]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in 3.7 branch community repository
in 3.8- branch main repository

@@ -5053,6 +5077,7 @@ yaml:
macports: [libyaml]
ubuntu: [libyaml-dev]
yaml-cpp:
alpine: [yaml-cpp-dev]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in 3.6- branch community repository

@@ -315,6 +317,7 @@ python-argh:
gentoo: [dev-python/argh]
ubuntu: [python-argh]
python-argparse:
alpine: [py-argparse]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in 3.6- branch community repository

@@ -791,6 +797,7 @@ python-couchdb:
gentoo: [dev-python/couchdb-python]
ubuntu: [python-couchdb]
python-coverage:
alpine: [py-coverage]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in edge branch testing repository

@@ -940,6 +948,7 @@ python-defer-pip:
pip:
packages: [defer]
python-defusedxml:
alpine: [py-defusedxml]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in 3.8- branch community repository

@@ -1935,6 +1952,7 @@ python-netaddr:
yakkety: [python-netaddr]
zesty: [python-netaddr]
python-netifaces:
alpine: [py-netifaces]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in 3.6- branch community repository

@at-wat at-wat changed the title Add minimal alpine rosdeps for ros_core [WIP] Add minimal alpine rosdeps for ros_core Jul 17, 2018
@at-wat
Copy link
Contributor Author

at-wat commented Jul 18, 2018

So, I think I should define package names for each alpine release versions.

Since FdoDetect in rospkg uses full version including patch version, to specify package name for each Alpine release, rosdep/base.yaml should be like:

libssl-dev:
  alpine:
    3.8.0: [openssl1.0-dev]  # 'edge' has same os_version with latest release.
                             # **it works on edge but not on 3.8**
    3.7.0: [openssl-dev]
    3.6.2: [openssl-dev]
    3.6.1: [openssl-dev]
    3.6.0: [openssl-dev]
    ...

I guess there is no nice way to support non-edge Alpine version at this moment. (any idea?)
I would like to keep os_version not specified for alpine.

@at-wat at-wat changed the title [WIP] Add minimal alpine rosdeps for ros_core Add minimal alpine rosdeps for ros_core Jul 18, 2018
since Alpine Linux recommends to use libressl instead of openssl
(https://bugs.alpinelinux.org/issues/4970)
@at-wat
Copy link
Contributor Author

at-wat commented Jul 20, 2018

@tfoote I think it is ready as a starting point for discussing and testing ROS on Alpine Linux.
Please take another look.

Copy link
Member

@tfoote tfoote left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To get started we could only support the current edge and newer for testing. And once edge becomes a release it could be the low water mark. I'm assuming that coverage will grow.

Note that there are things like '*' syntax you can use to make different version simpler, but in general I'd suggest the low water mark will be a better approach in the long term until things change above that point there's no need to define support for older versions that are known not supported.

I'd also encourage you to push hard on getting upstream to package the things that are currently installed from source too. The source rosdeps will make things much more painful in the long run.

@at-wat
Copy link
Contributor Author

at-wat commented Jul 27, 2018

@tfoote Thanks for your comments. I'm learning the packaging system of Alpine. I'll start working to register them to the upstream. Also, I'd like to start a discussion at the discourse toward enabling all ROS features on Alpine.

I have found one mistake that python must be python2-dev, not python2.
I'll quickly fix it.

@mikaelarguedas mikaelarguedas merged commit 2c29578 into ros:master Jul 30, 2018
@at-wat at-wat deleted the add-alpine-ros-core-deps branch January 3, 2020 23:53
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

Successfully merging this pull request may close these issues.

3 participants