-
Notifications
You must be signed in to change notification settings - Fork 0
test_launch_ros.test_node failures #266
Comments
@jacobperron and @ivanpauno could y'all take a look at this? You were the last to touch ros2/launch and ros2/launch_ros, I believe. |
I almost thought these failures were unique to ros2/launch_ros#122 (comment) 😅 Looks like the tests are having a problem finding
I just did a fresh build from source and can't reproduce locally... |
I can keep investigating, but extra eyes are welcome. |
I wasn't able to reproduce locally, either, but it has commonly appeared for the last several builds. I'm not sure what differences may exist. |
My money is on a pip dependency update... maybe setuptools 🤔 |
I have also seen this in CI, but I couldn't reproduce it locally either.
That's a good bet.
Have you been able to reproduce it? |
Sadly, no I haven't been able to repro yet. (Sorry forgot to post my result). |
I can reproduce it very easily using the nightly docker image. See the instructions in the closed issue ros2/launch_ros#125 |
One additional clue:
And the folder looks like this:
When you build from source, you'll see there's an extra libs directory:
It appears to contain the executable scripts
And the other directory appears to match what's in /opt/ in the nightly docker image:
Edit If I search for the python add_two_ints_client program, I find it in |
Testing to see how this affects ros2/build_farmer#266
The first exhibition of this is co-incidental with the first nightlies to run with ros2/ci#385. This made me a bit nervous so I pushed a branch which uses virtualenv and got the same results. The executables for demo_nodes_py are being installed into |
I've been able to reproduce both the correct and incorrect behavior in different workspaces on a copy of a CI docker image but I have yet to determine what the difference between them is. I'll keep looking at it in the morning. |
Can you check if |
There's no symlinking or copying of setup.py or setup.cfg into the build directory in either the passing (installation to libexec) or failing (installing to bin) cases on my system. In all cases I've seen that behavior within the virtualenv is incorrect while behavior outside is correct. This has been true even when using pip to install the exact same versions of packages reported with I've started using pdb on the setup function and I'm seeing something interesting I'm about to pry into further. When installing via the system, after parsing the setup.cfg I get this result:
When within a virtualenv I get instead:
So the setup.cfg is being parsed but for whatever reason when parsing inside the virtualenv the install command's options aren't being picked up. |
This is the code that's biting us. But this function was adapted/vendored from a similar one in distutils that was being used directly in earlier versions of setuptools so I'm not yet sure what has changed that we're only triggering this codepath now.
In classic fashion I've now advanced from "why isn't this working?" to "how did this ever work?" so progress! |
|
While the solution we've arrived at is not my favorite. It does get these tests passing and our packages back to functional so it has gone in. I've opened ros2/ci#400 to continue the discussion of how to get off of virtualenv 16.x and am closing this issue. Thanks everyone who contributed to the investigation and especially @pbaughman who noticed the binaries in the incorrect path. That was a huge lead! |
New failures in
nightly_linux_release
since at least Friday, Feb 14th, 2020.https://ci.ros2.org/view/nightly/job/nightly_linux_release/1444/
The text was updated successfully, but these errors were encountered: