-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Offer pre-built drake-visualizer in Drake's Bazel WORKSPACE #5621
Comments
Certainly Jenkins could push binaries to S3 on continuous/nightly builds now. We could also proxy uploads and downloads from S3 through a separate server using GitHub auth. I am very much against granting direct write access to buckets to anyone other than service accounts and administrators unless there is no other choice. |
I'm hesitant to claim that Drake should lean on director's CI effort quite so much. I think at the least if we're going to consider going down that road we should think about how Drake's vastly better staffed CI effort could help instead of asking for more director features in support of our interests in refactoring the Drake build. (apologies if I misunderstood your proposal, just thinking about the fact that the existence of drake-visualizer binaries and other director artifacts are the result of a volunteer effort). |
I like the idea of having the Drake CI produce binary releases of I guess I'm a little hesitant to upload every nightly though (nevermind Continuous) -- that seems like it would grow big fast? I imagine it changing perhaps monthly or less. Is there any easy way in Jenkins UI to push a "request build" button with some kind of tickbox that the result should be archived? In the meantime, perhaps it would make sense to make a hand-rolled release for all platforms and get it uploaded? Then I could work on the Bazel integration and testing, and someone else could work on automating the building of new releases? |
Starting with hand-rolled releases on github might be the shortest reasonable path forward. Tentative +1. |
From conversation with @jwnimmer-tri: Jeremy has tried hand-rolling a
The long pole there is of course (2). |
Another option for consideration- the |
(One clarification from David's note: for "hand-rolling" what I actually did was run director's
I tried this (in Docker), but the resulting package on Xenial did not load correctly for some reason. It had a Qt-related segfault that I couldn't figure out before I ran out of time. Given that we want to move away from VTK5 with high priority, I figured it was worth waiting for the prebuilt VTKs to be integrated into director's superbuild first, before returning to the question of non-system VTK in release images. |
Yup, that make sense. I think the packaging part will look similar, whether it's using vtk5 currently or vtk7 down the road. Thanks for noting the segfault. Setting |
Ah interesting. If you have a link to some work-around recipe, I can try it locally -- I already have in place a launcher wrapper to glue the |
EDIT: The issue discussed in this comment has now been resolved in director/master. The issue is that the vtk install step does not actually install the vtk python libs. The workaround has been to set the http://drake.mit.edu/from_source_ros_kinetic.html#drake-ros-kinetic-build-workspace But, the correct fix is to run the install step for vtk's python modules. This will copy the vtk python libraries into the correct location so that setting I haven't tested it myself, but it's something like:
|
I'd like to do a first PR that integrates Pat's already-built binaries into Bazel, to get this solution bootstrapped. Speak up if anyone objects. The hazard that if the release ever needed an update for some reason, we might not have an immediate solution, so we'd have to fall back to running CMake director builds by hand. I think that seems better than always having to run CMake builds, like we do now. I think we can revisit some release engineering improvements after #5564 has landed. |
Sounds good. I will offer Dockerfiles to automate the packaging of |
Yes, I think it will very useful, thanks! I expect I'll run it on my workstation for now (and have a buddy check to make sure a second workstation can do it), and medium-term try to get Drake's cloud to do it somehow, one some time there frees up. |
if you want to try, here are some ubuntu 16 binaries: experimental- director with vtk7 (depends on system qt5) |
My (somewhat stale) WIP branch is at https://github.com/jwnimmer-tri/drake/tree/bazel-drake-visualizer-prebuilt. |
@mwoehlke-kitware and/or @sankhesh will create a drake-visualizer binary using the binary VTK 8 pre-release packages that we are building. |
very interested to hear progress updates if you have a chance, this sounds great! for me in the near future, i hope to use director with vtk 7.1 (and hopefully move to 8 when a stable release is available), qt 4 (not 5 quite yet) and python 3. |
@jamiesnape @mwoehlke-kitware @sankhesh I suspect you know this, but to be clear: while creating and hosting the binary is a meaningful chunk of the work, we already could have pointed at existing Director pre-built releases that are mostly fine. The remaining challenge in resolving this issue is preparing the repeatable build and release process (code and doc, e.g., Docker and then docs or automation for how to push new tarballs). I do not think we should point |
@patmarion I am working on adding support for VTK 8 with Qt5 with the |
Bazel logic should be up shortly. For the automated builds, how often should drake-visualizer be refreshed. What would the trigger for a rebuild be? New tagged release of Director created? Some other change in Director? Some change in Drake? |
bump @jamiesnape for the bazel logic PR, @jwnimmer-tri for a decision on how you'd like builds to automate/trigger. |
👍 |
If the refresh were free, it should happen on every PR that merges into Director master, because that means we'll find out immediately if there was a (detected) error in the binary release process, and we'd (likely) trivially be able to bump up to a new visualizer release anytime we needed one. If we don't re-release on every merged PR, then we'd want at least the ability for any Drake Developer to launch a new binary release, after a certain PR merges. So there would be some kind of opt-in system. |
@jamiesnape is there any technical obstacle that would force one or the other? |
We can hook Jenkins into the Director repo to build and upload to S3 on each merge with just a one-off setup cost really. The remaining question is more how to handle the SHA bumps in Drake, which in part depends on how much Director is expected to change. It would not be especially difficult for Jenkins to open a PR automatically on Drake, but if Director changes frequently, that may get annoying. |
I am okay with not PR'ing the sha-bump to Drake right away. If we find ourselves with late-breaking integration defects then we can revisit, but given that the Director PR will have passed Director's CI, hopefully the likelihood of a broken |
Just took this for a spin on mac... ran all of the latest homebrew instructions on our install page, but still get
|
@RussTedrake , could you try the following and test it again? brew uninstall pyqt@4 qwt-qt4 vtk5 |
that solved it. thanks! but note that our installation instructions tell people to install all of those? |
ah. i see now that (of course) calling
isn't actually a workflow, because i get
i know that a more user-friendly launch instructions were in flight. did they land? |
For now, IIRC, cmake build is still requiring those packages while they interfere with bazel build (as you experienced). AFAIK, @jamiesnape is working on this issue. |
Thanks. To be clear about my understanding: i think the automotive demos have a python launch script that brings up both drake-visualizer and the sim, etc. so that would work fine (one invocation of bazel). But my traditional workflow has been to launch drake_visualizer once for my system, and run many simulations, etc. Launching drake_visualizer manually from in bazel-bin is not working for me yet. |
Until we can fully switch over Director, unfortunately we have to support both VTK versions. We are very close to switching, but we have a backlog of platform reviews in Drake and some of RobotLocomotion/director#508 was unfortunately removed from RobotLocomotion/director#518. |
The implicit feature request also buried in the above is that |
Sorry, that was unhelpful. In #6319, I already added this feature for Linux. I guess someone on OSX can re-implement it to work for them, as well. |
See #6391. |
Closing this, as it is presently provided. #7050 addresses CI needs. |
As part of #3129, I am on my way to putting a
drake-visualizer
binary into Drake's BazelWORKSPACE
using pre-compiled releases (https://github.com/jwnimmer-tri/drake/tree/bazel-drake-visualizer-prebuilt). This is likely to be both easier and more robust than trying to recompiledrake-visualizer
from within Bazel, at least for a while.For now, I'm prototyping using Pat's binaries (http://people.csail.mit.edu/patmarion/software/director/releases/) -- thanks, Pat! Those builds are good enough for spike testing, but not quite good enough for Drake
master
. For ourWORKSPACE
on master, we need anyone on the drake-developers team to be able to reliably rebuild all of the binaries, get them uploaded to thedrake-provisioning
S3 bucket, and update the DrakeWORKSPACE
to refer to the new builds.Does anyone have opinions on how to get from here to there?
To me, the best option seems that Director CI should create the binary archives (I believe it already does this, at least on request), and either that CI or some manual process can push those into S3. Possibly this could be related to
WORKSPACE
-related backups and mirroring that we should also be developing concurrently, for allhttp_archive
-related repositories (which is basically everything).Of much lower priority, it would also be slightly better to have only
drake-visualizer
in the pre-built release, vs of all of Director. I think it would be a smaller download, and it seems to me like we should encourage Director users to use the Director build system and/or its own releases and/or the Drake superbuild, instead of sideloading Director pre-built into the DrakeWORKSPACE
. So a visualizer-only binary archive would be a nice extra feature to eventually add to Director CI, if its not already there./CC @patmarion @david-german-tri @jamiesnape
The text was updated successfully, but these errors were encountered: