-
Notifications
You must be signed in to change notification settings - Fork 281
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
catkin_make_isolated not isolated #367
Comments
This has nothing to do with catkin_make_isolated. It happens exactly the same way if you invoke cmake/make on these two packages. The environment of your first package exports CPATH which contains the include folder of that workspace. Therefore the included message file is found. |
I don't hink it does: EDIT: printed CPATH after calling env, of course.
So the env does export things (which is also a bug), but not the CPATH. The only other reference to the first packeg I see is here:
In any case, so is the current design of catkin_make_isolated that of a strict chain of environments, rather than using only an env that contains only the build_depend packages listed in a package's manifest? That would also be a bug to me. |
Yes, it does - CPATH is responsible that the header is found. If you remove that it fails as you expect it to be. catkin_make_isolated processes each package separately with cmake and make and than sources the resulting environment. That is as clean as it can get - that is definitely not a bug. The build_depend stuff from the package.xml has nothing to do with the resulting environment. The only arguable thing is if CPATH should be set in the environment or not. |
Hm, I get:
But.
So i guess you are right, but still just running env.sh, or sourcing it, seems to do something else to the environment that running something with it. Is that a bug? If not, I suggest chaning the the "Entering ..." message to tell users that they don't get the whole truth. Regarding sourcing the previous env regardless of what is in the package.xml, I'll discuss this in buildsystem SIG. |
There is a simple situation where this occurs: Consider a workspace where The topological order might look like:
Now, if This only occurs with catkin_make_isolated, and is probably ok, as long as there is a separate option to do the more complicated environment isolation for testing purposes. |
The scenario you describe also applied to the use case when these packages are in workspaces and you build them one after another. And in that case there is logically no way to deal with it better. Therefore I don't think that it is worth the effort to let CMI figure out a special environment for each package when we can't support the same in other scenarios. |
I don't think it should be the default, nor do I think it is required to build code, but it would be a useful development tool. I am satisfied to leave as a known issue with the isolation, and make this an enhancement ticket assigned to untargeted. |
+1 for "untargeted" - patches are welcome which implement that logic into CMI. What about dropping CPATH from the environment? I would be ok with that. Downstream stuff should anyway use find_package() and/or pkg-config and all other env variable are only for runtime environment (not for build env of downstream stuff). |
No CPATH would break simpler build systems like Make based systems. This is unlikely to be a problem, but if you are extending the PYTHONPATH then in my opinion you should extend the CPATH. From my understanding the CPATH won't be a problem if devel spaces are used and the improved environment isolation feature is implemented. |
To summarize the thread: catkin_make_isolated uses the dependencies to build a topologically ordered list and than processes the packages in order where the previous package provides the environment for the next. Since this requires a very different approach for merging environments which is not easily possible it will be marked as untargeted. Pull requests to implement this feature are highly welcome. |
Closing since the requested feature is a duplicate of #330. |
Rviz has a limit of 16384 points per marker. To get around this, each trajectory is split into multiple markers, each up to 16384 points. Fixes ros#366.
So, the behavior is weird, hopefully the cause is simple to fix. This occured using both catkin 0.5.63 as well as latest groovy-devel (19/02/2013).
The shell code below produces 2 c++ packages, foo_msgs and foo. foo_msgs defines a message Foo.msg.
foo has a c++ executable depends on foo_msgs/Foo.h
however, the CMakeLists.txt of foo does not find_package foo_msgs
To reproduce:
This build should fail, as project foo does not declare find_package(foo_msgs), but it does not fail, making isolated builds useless to detect missing find_package calls. it seems to me that catkin_INCLUDE_DIRS in this case contains an entry it should not contain, but maybe something else causes this.
The text was updated successfully, but these errors were encountered: