-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
Conversation
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' |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.)
There was a problem hiding this comment.
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' |
There was a problem hiding this comment.
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' |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
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. So, I think I should define package names for each alpine release versions. |
There was a problem hiding this 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] |
There was a problem hiding this comment.
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] |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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] |
There was a problem hiding this comment.
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] |
There was a problem hiding this comment.
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] |
There was a problem hiding this comment.
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] |
There was a problem hiding this comment.
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] |
There was a problem hiding this comment.
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] |
There was a problem hiding this comment.
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] |
There was a problem hiding this comment.
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
Since 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?) |
since Alpine Linux recommends to use libressl instead of openssl (https://bugs.alpinelinux.org/issues/4970)
@tfoote I think it is ready as a starting point for discussing and testing ROS on Alpine Linux. |
There was a problem hiding this 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.
@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 |
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