Skip to content
This repository has been archived by the owner on Jun 18, 2018. It is now read-only.

rosinstall_generator time machine workflow #2

Closed
gavanderhoorn opened this issue Dec 9, 2017 · 43 comments
Closed

rosinstall_generator time machine workflow #2

gavanderhoorn opened this issue Dec 9, 2017 · 43 comments

Comments

@gavanderhoorn
Copy link
Owner

gavanderhoorn commented Dec 9, 2017

mkdir /tmp/some_scratch_dir && cd /tmp/some_scratch_dir

# setup venv with needed tools
python3 -m venv --without-pip ritm_venv
. ritm_venv/bin/activate
curl https://bootstrap.pypa.io/get-pip.py | python3

# use custom version of rosdistro scripts
pip3 install 'git+https://github.com/gavanderhoorn/rosdistro_python.git@rosin_bughunt_0.6.8'
pip3 install rosinstall_generator

# get a copy of the rosdistro db
git clone https://github.com/ros/rosdistro.git

# go back to some point in time.
# If you know the commit, check it out directly.
# if you don't, but have a date, use something like:
#  git -C rosdistro checkout `git -C rosdistro rev-list -n 1 --before="2016-04-02 01:00 GMT+2" master`
#
# here in this example we just go back to 5000 commits before current HEAD
git -C rosdistro checkout HEAD~5000

# update the rosdistro cache
# this will hang a few times, asking for 'github' password (terraranger repos),
# just press enter 'til it continues
# note: add '--debug' for more info
rosdistro_build_cache --ignore-local --ignore-errors rosdistro/index.yaml indigo

# TODO: this is quite resource intensive, and can take quite some time,
# depending on how far back we've gone (because of increased cache misses)

# update rosdistro db cache entries with the just generated one
sed -i "s|http://repositories.ros.org/rosdistro_cache|file://`pwd`|g" rosdistro/index.yaml

# alternatively: replace rosdistro/index.yaml with a minimal one for the
#                $ROS_VERSION we're targetting and no other entries

# make rosinstall_generator use rosdistro from the past
ROSDISTRO_INDEX_URL=file://`pwd`/rosdistro/index.yaml \
  rosinstall_generator \
  fanuc_driver \
  --rosdistro=indigo \
  --deps \
  --tar > fanuc_driver.rosinstall
@gavanderhoorn
Copy link
Owner Author

@ChrisTimperley: literally 5 mins after we discussed my failure I got it to work.

I'll probably automate this a bit further (probably an extension to rosinstall_generator making it accept rosdistro commit hashes / dates or something, like your script).

This should already work though. Could I bother you to see whether the above instructions also work for you?

@gavanderhoorn
Copy link
Owner Author

It makes sense to re-use the cache as much as possible when going back even further. Suffixing cache files with the commit they were created for would make this manageable.

The fewer cache misses, the fewer times rosdistro_build_cache has to reach out to the VCS the release artefacts are stored in.

I feel that would be beneficial.

@gavanderhoorn
Copy link
Owner Author

gavanderhoorn commented Dec 9, 2017

I still have to address the issue of rosdistro_build_cache stalling whenever it encounters a package that was hosted in a repository that no longer exists / has been made private (ie: requires authentication).

Deep down, rosdistro directly calls git ls-remote .. (here), and that is prompting me for a username/pw combo. Haven't found a way around that yet, unfortunately. Perhaps replacing that with a suitable Python git API that allows us to disable / circumvent that could help, but not sure.

@ChrisTimperley
Copy link

@gavanderhoorn, perhaps you could use GitPython? The documentation isn't great but it's a fairly capable tool.

To deal with renaming, I was thinking of having the user supply a mapping between old and new repository URLs -- there's a bit of manual work involved but it shouldn't be too much.

@ChrisTimperley
Copy link

ChrisTimperley commented Dec 9, 2017

Here's the contents of the fanuc_driver.rosinstall that I produced by following your instructions:

- tar:
    local-name: actionlib
    uri: https://github.com/ros-gbp/actionlib-release/archive/release/indigo/actionlib/1.11.5-0.tar.gz
    version: actionlib-release-release-indigo-actionlib-1.11.5-0
- tar:
    local-name: catkin
    uri: https://github.com/ros-gbp/catkin-release/archive/release/indigo/catkin/0.6.18-0.tar.gz
    version: catkin-release-release-indigo-catkin-0.6.18-0
- tar:
    local-name: class_loader
    uri: https://github.com/ros-gbp/class_loader-release/archive/release/indigo/class_loader/0.3.3-1.tar.gz
    version: class_loader-release-release-indigo-class_loader-0.3.3-1
- tar:
    local-name: cmake_modules
    uri: https://github.com/ros-gbp/cmake_modules-release/archive/release/indigo/cmake_modules/0.3.3-0.tar.gz
    version: cmake_modules-release-release-indigo-cmake_modules-0.3.3-0
- tar:
    local-name: common_msgs/actionlib_msgs
    uri: https://github.com/ros-gbp/common_msgs-release/archive/release/indigo/actionlib_msgs/1.11.9-0.tar.gz
    version: common_msgs-release-release-indigo-actionlib_msgs-1.11.9-0
- tar:
    local-name: common_msgs/geometry_msgs
    uri: https://github.com/ros-gbp/common_msgs-release/archive/release/indigo/geometry_msgs/1.11.9-0.tar.gz
    version: common_msgs-release-release-indigo-geometry_msgs-1.11.9-0
- tar:
    local-name: common_msgs/sensor_msgs
    uri: https://github.com/ros-gbp/common_msgs-release/archive/release/indigo/sensor_msgs/1.11.9-0.tar.gz
    version: common_msgs-release-release-indigo-sensor_msgs-1.11.9-0
- tar:
    local-name: common_msgs/trajectory_msgs
    uri: https://github.com/ros-gbp/common_msgs-release/archive/release/indigo/trajectory_msgs/1.11.9-0.tar.gz
    version: common_msgs-release-release-indigo-trajectory_msgs-1.11.9-0
- tar:
    local-name: control_msgs
    uri: https://github.com/ros-gbp/control_msgs-release/archive/release/indigo/control_msgs/1.3.1-0.tar.gz
    version: control_msgs-release-release-indigo-control_msgs-1.3.1-0
- tar:
    local-name: fanuc/fanuc_driver
    uri: https://github.com/ros-industrial-release/fanuc-release/archive/release/indigo/fanuc_driver/0.4.0-1.tar.gz
    version: fanuc-release-release-indigo-fanuc_driver-0.4.0-1
- tar:
    local-name: gencpp
    uri: https://github.com/ros-gbp/gencpp-release/archive/release/indigo/gencpp/0.5.4-0.tar.gz
    version: gencpp-release-release-indigo-gencpp-0.5.4-0
- tar:
    local-name: genlisp
    uri: https://github.com/ros-gbp/genlisp-release/archive/release/indigo/genlisp/0.4.15-0.tar.gz
    version: genlisp-release-release-indigo-genlisp-0.4.15-0
- tar:
    local-name: genmsg
    uri: https://github.com/ros-gbp/genmsg-release/archive/release/indigo/genmsg/0.5.7-0.tar.gz
    version: genmsg-release-release-indigo-genmsg-0.5.7-0
- tar:
    local-name: genpy
    uri: https://github.com/ros-gbp/genpy-release/archive/release/indigo/genpy/0.5.8-0.tar.gz
    version: genpy-release-release-indigo-genpy-0.5.8-0
- tar:
    local-name: industrial_core/industrial_msgs
    uri: https://github.com/ros-industrial-release/industrial_core-release/archive/release/indigo/industrial_msgs/0.4.3-0.tar.gz
    version: industrial_core-release-release-indigo-industrial_msgs-0.4.3-0
- tar:
    local-name: industrial_core/industrial_robot_client
    uri: https://github.com/ros-industrial-release/industrial_core-release/archive/release/indigo/industrial_robot_client/0.4.3-0.tar.gz
    version: industrial_core-release-release-indigo-industrial_robot_client-0.4.3-0
- tar:
    local-name: industrial_core/industrial_utils
    uri: https://github.com/ros-industrial-release/industrial_core-release/archive/release/indigo/industrial_utils/0.4.3-0.tar.gz
    version: industrial_core-release-release-indigo-industrial_utils-0.4.3-0
- tar:
    local-name: industrial_core/simple_message
    uri: https://github.com/ros-industrial-release/industrial_core-release/archive/release/indigo/simple_message/0.4.3-0.tar.gz
    version: industrial_core-release-release-indigo-simple_message-0.4.3-0
- tar:
    local-name: message_generation
    uri: https://github.com/ros-gbp/message_generation-release/archive/release/indigo/message_generation/0.2.10-0.tar.gz
    version: message_generation-release-release-indigo-message_generation-0.2.10-0
- tar:
    local-name: message_runtime
    uri: https://github.com/ros-gbp/message_runtime-release/archive/release/indigo/message_runtime/0.4.12-0.tar.gz
    version: message_runtime-release-release-indigo-message_runtime-0.4.12-0
- tar:
    local-name: pluginlib
    uri: https://github.com/ros-gbp/pluginlib-release/archive/release/indigo/pluginlib/1.10.2-0.tar.gz
    version: pluginlib-release-release-indigo-pluginlib-1.10.2-0
- tar:
    local-name: robot_model/urdf
    uri: https://github.com/ros-gbp/robot_model-release/archive/release/indigo/urdf/1.11.10-0.tar.gz
    version: robot_model-release-release-indigo-urdf-1.11.10-0
- tar:
    local-name: robot_model/urdf_parser_plugin
    uri: https://github.com/ros-gbp/robot_model-release/archive/release/indigo/urdf_parser_plugin/1.11.10-0.tar.gz
    version: robot_model-release-release-indigo-urdf_parser_plugin-1.11.10-0
- tar:
    local-name: ros/rosbuild
    uri: https://github.com/ros-gbp/ros-release/archive/release/indigo/rosbuild/1.11.12-0.tar.gz
    version: ros-release-release-indigo-rosbuild-1.11.12-0
- tar:
    local-name: ros/rosclean
    uri: https://github.com/ros-gbp/ros-release/archive/release/indigo/rosclean/1.11.12-0.tar.gz
    version: ros-release-release-indigo-rosclean-1.11.12-0
- tar:
    local-name: ros/roslang
    uri: https://github.com/ros-gbp/ros-release/archive/release/indigo/roslang/1.11.12-0.tar.gz
    version: ros-release-release-indigo-roslang-1.11.12-0
- tar:
    local-name: ros/roslib
    uri: https://github.com/ros-gbp/ros-release/archive/release/indigo/roslib/1.11.12-0.tar.gz
    version: ros-release-release-indigo-roslib-1.11.12-0
- tar:
    local-name: ros/rosunit
    uri: https://github.com/ros-gbp/ros-release/archive/release/indigo/rosunit/1.11.12-0.tar.gz
    version: ros-release-release-indigo-rosunit-1.11.12-0

@gavanderhoorn
Copy link
Owner Author

@ChrisTimperley wrote:

@gavanderhoorn, perhaps you could use GitPython? The documentation isn't great but it's a fairly capable tool.

yeah, I looked at that already, but some googling suggests it doesn't actually support something like git ls-remote. I'll take another look though.

To deal with renaming, I was thinking of having the user supply a mapping between old and new repository URLs -- there's a bit of manual work involved but it shouldn't be too much.

It would need some more work on the rosdistro_build_cache side, but that could work.

Right now I just ignore them, but if the repositories that vanished are actually needed, a remap might allow us to continue.

@gavanderhoorn
Copy link
Owner Author

re: .rosinstall; yep, that is the expected contents.

Nice. Thanks for testing.

@wasowski
Copy link

wasowski commented Jan 2, 2018

This kind of makes sense, to the extent I understand what is going on (as really not a ROS dev). I tried to repeat the same steps for ros/geometry2@1957a44 (switched the date, instead of HEAD~5000, I selected the commit by date) and switched fanuc_driver to geometry2 in the last command.

At that point I failed with the following problem:

The following not released packages/stacks will be ignored: geometry2

The rosinstall file created is empty. I gather that tf2 was not released yet at that point (April 2, 2016). should I just clone geometry2 to the working dir, aside rosdistro/, and try to build/test it as if it was a catking workspace?

@gavanderhoorn
Copy link
Owner Author

gavanderhoorn commented Jan 2, 2018

geometry2 was definitely released at that point: for April 2, 2016 it would be between 0.5.13 and 0.5.14 (see ros/geometry2/releases).

Perhaps something else is not working as it should? If rosinstall_generator complains a pkg isn't released, that would suggest it can't find it in the distribution.yaml. Can you check that the pkg is listed?

@wasowski
Copy link

wasowski commented Jan 2, 2018

While checking distribution.yaml, let me share that I used this line

rosdistro_build_cache --ignore-local --ignore-errors rosdistro/index.yaml indigo
literally.

But is indigo the right distro?

@wasowski
Copy link

wasowski commented Jan 2, 2018

rosdistro/indigo/distribution.yaml has this

geometry2:
    doc:
      type: git
      url: https://github.com/ros/geometry2.git
      version: indigo-devel
    release:
      packages:
      - geometry_experimental
      - tf2
      - tf2_bullet
      - tf2_eigen
      - tf2_geometry_msgs
      - tf2_kdl
      - tf2_msgs
      - tf2_py
      - tf2_ros
      - tf2_sensor_msgs
      - tf2_tools
      tags:
        release: release/indigo/{package}/{version}
      url: https://github.com/ros-gbp/geometry2-release.git
      version: 0.5.13-0
    source:
      test_pull_requests: true
      type: git
      url: https://github.com/ros/geometry2.git
      version: indigo-devel
    status: maintained

@gavanderhoorn
Copy link
Owner Author

gavanderhoorn commented Jan 2, 2018

Ah. geometry2 is not a package name, it's the repository.

rosinstall_generator works with packages, not repositories (that's why the cache is needed in the first place: it's a mapping pkg->repository).

@wasowski
Copy link

wasowski commented Jan 2, 2018

ok. it appears that my bug is in tf2_ros. Giving it a shot.

It worked: so should I just run rosinstall filename.rosinstall ?

@gavanderhoorn
Copy link
Owner Author

gavanderhoorn commented Jan 2, 2018

Ok, let me know.

Btw: you don't need to redo all the steps every time: you should be able to just git -C rosdistro checkout $some_commit and continue from there. The virtualenv and everything can be reused.

You'll probably have to reset some changes to your rosdistro clone though.

@gavanderhoorn
Copy link
Owner Author

gavanderhoorn commented Jan 2, 2018

A possible optimisation could be to reuse the cache that you've created if it's "closer" to your new target commit than the current HEAD would be.

That should speed up cache generation, as there are less changes between the cache that you already have and the one that would be built for the new rosdistro target commit.

But only if you need to regenerate the cache, obviously. If you just want to use rosinstall_generate on a different package, then all of this should be unnecessary.

@gavanderhoorn
Copy link
Owner Author

gavanderhoorn commented Jan 2, 2018

I would do:

# optional: source base ROS install, but only if you have it / want to use it
source /opt/ros/indigo/setup.bash

# create scratch workspace
mkdir /tmp/catkin_ws && cd /tmp/catkin_ws

# create src space in workspace and download all pkgs
wstool init /tmp/catkin_ws/src /path/to/your/generated.rosinstall

# install all system deps
rosdep update
rosdep install --from-paths --ignore-src /tmp/catkin_ws/src

at this point you have a system (or Docker container, which I would recommend, don't clobber your own system with this) that has all system dependencies (ie: libs, headers) installed for the packages that have been downloaded by wstool into the source space of the tmp workspace you created.

Will the workspace pick up the virtual environment if I stay in the same session? Or do I need to set up some scripts? (devel/setup etc)

the virtualenv is only needed to generate the cache and for rosinstall_generator. It's not needed for anything else.

@gavanderhoorn
Copy link
Owner Author

Note that the rosdep install .. steps is obviously a weak spot here: if the rosdep db has changed sufficiently (compared to the state of the system at the time of the bug report & fix), rosdep might not be able to resolve all the keys in the package manifests.

But let's worry about that when we run into it.

@wasowski
Copy link

wasowski commented Jan 2, 2018

I only start to understand now. So the rosinstall file is the only important outcome of the procedure in the original post? This means that I should also install indigo on my machine (if the bug is in indigo?) Otherwise the first source command in #2 (comment) would fail, wouldn't it?

@gavanderhoorn
Copy link
Owner Author

gavanderhoorn commented Jan 2, 2018

So the rosinstall file is the only important outcome of the procedure in the original post?

yes, exactly.

After you have the .rosinstall file you could build the workspace on an entirely different machine that doesn't have any of the virtualenv stuff if that would be more convenient.

This means that I should also install indigo on my machine (if the bug is in indigo?)

Well .. not really. The .rosinstall file actually contains every ROS pkg that was listed as a dependency, recursively, so down to ros_comm and all the core. So technically you don't need to have ROS installed at all. The workspace will contain a full from-source build of ROS - at the version that you specified, but just the pkgs that were part of the dependency tree.

Having ROS installed will make things go faster though, but it's not needed. Technically you shouldn't even need an Ubuntu platform to build the workspace, as long as rosdep (or some other tool, or you do it manually) can resolve and install all the system dependencies.

@gavanderhoorn
Copy link
Owner Author

gavanderhoorn commented Jan 2, 2018

For reference: you can compare the workflow documented in #2 (comment) with a regular ROS from-source installation. That also uses wstool, rosdep and rosinstall_generator to setup a workspace based on a .rosinstall file. In our case that .rosinstall file just happens to be generated based on a older state of the rosdistro, but the idea is the same.

See wiki/kinetic/Installation/Source.


Edit: you can also take a look at build.sh in this repository. It does about the same thing, but uses a bare ros:lunar-ros-core base Docker image to speed-up some things (especially system dependency management).

But it's not what we'd want I believe: the Docker images are continuously rebuilt, so they're a moving target, and they will contain the newest versions of everything.

@wasowski
Copy link

wasowski commented Jan 2, 2018

Still confused why do I need the indigo distro (source /opt/ros/indigo/setup.bash). Isn't the rosinstall file complete for the package?

(BTW. having trouble installing indigo on ubuntu 16.04 - perhaps unrelated; but we would also like to eliminate this trouble for the users).

@gavanderhoorn
Copy link
Owner Author

gavanderhoorn commented Jan 2, 2018

I've edited my responses to your questions a few times. Have you read those?

Still confused why do I need the indigo distro (source /opt/ros/indigo/setup.bash). Isn't the rosinstall file complete for the package?

The .rosinstall file should contain everything for a full from-source build of a ROS 'distro' that contains just the pkg you're interested in and all its recursive dependencies.

(BTW. having trouble installing indigo on ubuntu 16.04 [..]

Indigo is not supported on 16.04, only on Ubuntu 14.04 (and 13.10, but that is EOL). See REP-3.

perhaps unrelated; but we would also like to eliminate this trouble for the users)

I don't believe users will have to do any of what we're doing here, right? As @ChrisTimperley suggested: we should provide them with Docker images, completely avoiding any exposure to ROS setup or related tasks.

@wasowski
Copy link

wasowski commented Jan 2, 2018

Yes, I have re-read them several times now, but the source to /opt installation of indigo is still there :) which confuses me.

@gavanderhoorn
Copy link
Owner Author

Yes, I have re-read them several times now, but the source to /opt installation of indigo is still there :) which confuses me.

The comment does now say optional :)

@wasowski
Copy link

wasowski commented Jan 2, 2018

Hmmm ... I must have messed something up. So I did create the workspace, did NOT source the indigo setup, but did set ROS_DISTRO to be indigo (by default in my environment this is set to kinetic), then catkin_init_workspace and catkin_make. Only made 4% of the build :(

This looks like a dependency build, so it seems I do have some problems with the procedure:

[  4%] Built target _std_msgs_generate_messages_check_deps_Float32MultiArray
Traceback (most recent call last):
  File "/opt/ros/kinetic/share/genjava/cmake/../../../lib/genjava/genjava_gradle_project.py", line 11, in <module>
    import genjava
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/genjava/__init__.py", line 39, in <module>
    from .genjava_main import main, standalone_main
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/genjava/genjava_main.py", line 45, in <module>
    import rosjava_build_tools
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosjava_build_tools/__init__.py", line 7, in <module>
    import console
ImportError: No module named 'console'
std_msgs/CMakeFiles/std_msgs_generate_messages_java_gradle.dir/build.make:171: recipe for target 'std_msgs/java/std_msgs/build.gradle' failed
make[2]: *** [std_msgs/java/std_msgs/build.gradle] Error 1
CMakeFiles/Makefile2:7531: recipe for target 'std_msgs/CMakeFiles/std_msgs_generate_messages_java_gradle.dir/all' failed
make[1]: *** [std_msgs/CMakeFiles/std_msgs_generate_messages_java_gradle.dir/all] Error 2

EDIT: it still seems to pick up some of my kinetic stuff. This is bound to go wrong...

@gavanderhoorn
Copy link
Owner Author

I see /opt/ros/kinetic in that output several times. Do you have your .bashrc configured to source /opt/ros/kinetic/setup.bash for all sessions? If so, that is not going to work.

You can try and do this in a clean terminal (no source /opt/ros/..) or in a Docker container. The latter is probably more reproducable.

@wasowski
Copy link

wasowski commented Jan 2, 2018

I eventually wanna do this in a docker container. Perhaps I should start there right away.
Indeed I have a bashrc setup to source kinetic. I have now unset ROS_PACJAGE_PATH, ROS_ROOT, ROS_ETC_DIR, and ROS_MAVEN_DEPLOYMENT_REPOSITORY, and it did not help :)
I guess I look into creating some jail.

@gavanderhoorn
Copy link
Owner Author

Did you also remove the build and devel folders in your workspace? If you didn't, the old values may have been cached in there somewhere.

To get a clean terminal, just comment the source /opt/ros/kinetic/.. and start a new bash session.

@wasowski
Copy link

wasowski commented Jan 2, 2018

I think the docker way will need to be. When I remove the kinetic setup, then I no longer have a working catkin that I need to build :(. Is there a standard docker image that we should be starting from?

@gavanderhoorn
Copy link
Owner Author

gavanderhoorn commented Jan 2, 2018

When I remove the kinetic setup, then I no longer have a working catkin that I need to build

there should be one in the source space of your workspace. Check the wiki/kinetic/Installation/Source, section Building the catkin Workspace.

Is there a standard docker image that we should be starting from?

If we don't want to start from a ROS image, we could use the appropriate ubuntu:trusty image (or similar, from library/ubuntu). If we do want to start from a ROS image, it could be ros:indigo-ros-core (from library/ros).

build.sh shows how you can build an image using a .rosinstall file (and starting from ros:lunar-ros-core).

@gavanderhoorn
Copy link
Owner Author

One thing to consider: we should probably generate .rosinstall files with everything in there except the package-under-test (so for the test that @wasowski is running, that would mean everything except tf2_ros).

As we're looking to build containers with and without the bug present (I assume), having the PUT in the main .rosinstall file would complicate things.

@gavanderhoorn
Copy link
Owner Author

gavanderhoorn commented Jan 3, 2018

@wasowski: I've worked a bit on a Dockerfile that you could use. See rosin_bug_hunt_l3/tree/l3_time_machine_tf2_ros.

It should probably work with any .rosinstall file you give it, but I've only tested it with a .rosinstall file for tf2_ros at (I believe) the commit in rosdistro that you were testing as well.

Note: this Dockerfile does include tf2_ros itself, I haven't done anything with my comment in #2 (comment).

@gavanderhoorn
Copy link
Owner Author

Have you had any success in using the Dockerfile @wasowski?

@wasowski
Copy link

I have use this to go back in time:

git -C rosdistro checkout `git -C rosdistro rev-list -n 1 --before="2016-04-02 01:00 GMT+2" master`

The time in --before= is the time of the parent commit. Perhaps this would be good to edit in the original post, @gavanderhoorn (or add it there as a comment). Guessing by number of commits is impractical.

@gavanderhoorn
Copy link
Owner Author

Perhaps this would be good to edit in the original post,

yes, it would.

Guessing by number of commits is impractical.

of course. I never suggested we would do that.

@wasowski
Copy link

I meant: can you add it? (I don't think I can)

@gavanderhoorn
Copy link
Owner Author

Done.

@wasowski
Copy link

wasowski commented Feb 16, 2018

Another problem so now trying:

git -C rosdistro checkout `git -C rosdistro rev-list -n 1 --before="2013-02-14 12:18 GMT+1" master`

for a bug 5 years old. When I did this commit index.yaml does not exist. So the next command:

rosdistro_build_cache --ignore-local --ignore-errors rosdistro/index.yaml indigo

fails.

Ideas?

EDIT: the index.yaml seems to contain references to the distribution yaml files. Can I just list them all explicitly on the command line. Something like:

rosdistro_build_cache --ignore-local --ignore-errors releases/*.yaml indigo

(unfortunately, this crashes)

@gavanderhoorn
Copy link
Owner Author

Ouch. I had not considered going back this far.

At that point the ros buildfarm and tools like rosdep were using a different format to store this info in. See rosdistro/releases/groovy.yaml fi.

Theoretically we could use that info -- with either a custom script or an old version of rosdep -- to do what we are now doing with rosdistro_build_cache, but I'm not sure we will be successful.

I would have to look into this. I wasn't so into ROS at that point that I have in-depth knowledge of how things work(ed).

@wasowski
Copy link

OK. I think for the time being, I am just flagging this. Should I create a separate issue track these cases? I will not do L3 for this particular bug then.

@gavanderhoorn
Copy link
Owner Author

Yes. Let's track these cases with issues.

Probably want to do that on the bitbucket repo?

@gavanderhoorn
Copy link
Owner Author

Note that this workflow is currently a bit broken as pip uninstalls the patched rosdistro due to changes upstream. I'm looking into fixing that.

If you already have a virtualenv setup this isn't a problem, but for new ones it won't work.

@gavanderhoorn
Copy link
Owner Author

With the publication of rosinstall_generator_time_machine I think we can close this one.

That tool essentially automates the steps in the OP.

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

No branches or pull requests

3 participants