Skip to content
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 should allow building individual packages #322

Merged
merged 1 commit into from
Jan 24, 2013

Conversation

wjwwood
Copy link
Member

@wjwwood wjwwood commented Jan 24, 2013

Currently going into build_isolated/packagename and running make or cmake does not work, nor do I see any other easy way of running that build in isolation, I guess the env.sh file is required, but it should be easier to do this, IMO.

Would be less urgent if catkin_make_isolated had rosbuild parallelity.

@tkruse
Copy link
Member Author

tkruse commented Jan 18, 2013

I think at some point on build errors, the make command invocation was printed for easy reproduction on a failed build. That would also be helpful if nothing else is provided.

@wjwwood
Copy link
Member

wjwwood commented Jan 18, 2013

Every command that is run is presented as 'cmd' in 'dir' and at the beginning of each build it says using env: '/path/to/env.sh'.

You can do cd <dir> && /path/to/env.sh <cmd> for any step in the process.

That being said, having it build up to a given package would be a nice feature.

Telling it to explicitly build one package (ignoring the state of the packages which proceed it) is not possible, because the env.sh from the previous packages might not exist. This was possible in rosmake because the exporting of flags between packages was manual and static, so the state of the package you are getting them from wasn't checked, i.e. one of your dependencies could give you -lfoo when foo hasn't been built.

I can also add the exact command to run to reproduce the most recent error when a build fails, I think that would be useful.

@ghost ghost assigned wjwwood Jan 18, 2013
@tkruse
Copy link
Member Author

tkruse commented Jan 18, 2013

Ah, I see, I use a black-on-white color scheme, I guess you assigned a very bright color to the message with env.sh, so I cannot see it in my terminal. Don't you know that white on black is sooo 20th century? :-)

In any case, that's not too great, want me to open a different ticket on the color scheme?

@wjwwood
Copy link
Member

wjwwood commented Jan 18, 2013

Yeah, the problem is that the color scheme should really be tailored to the terminal...

Black on white hurts my eyes 👀.

I spent a bit of time trying with different colors.

You can open another ticket, and screenshots would be useful for me to see how I might change it.

I think I can just use the uncolored text more effectively.

@wjwwood
Copy link
Member

wjwwood commented Jan 19, 2013

@tkruse can you open a separate issue for the improved command failure error message which provides the user with a complete command to reproduce the latest error?

We can leave this issue explicitly for invoking individual packages and what ever that might entail.

@tkruse
Copy link
Member Author

tkruse commented Jan 19, 2013

I think #320 fixed error message already. Still having some command would
be nice, for users who did not run into a failure yet still wnat to rebuild
a single package.

On Sat, Jan 19, 2013 at 1:36 AM, William Woodall
notifications@github.comwrote:

@tkruse https://github.com/tkruse can you open a separate issue for the
improved command failure error message which provides the user with a
complete command to reproduce the latest error?

We can leave this issue explicitly for invoking individual packages and
what ever that might entail.


Reply to this email directly or view it on GitHubhttps://github.com//issues/322#issuecomment-12447378.

@tkruse
Copy link
Member Author

tkruse commented Jan 22, 2013

Coming back to the original question, you said: "Telling it to explicitly build one package (ignoring the state of the packages which proceed it) is not possible, because the env.sh from the previous packages might not exist. This was possible in rosmake because the exporting of flags between packages was manual and static, so the state of the package you are getting them from wasn't checked, i.e. one of your dependencies could give you -lfoo when foo hasn't been built."

Now I am quite fine if the build of a single package fails if a prerequisite is not met.
The thing is if there is a workspace with 100 packages, and I work on the last one of them, then invoking catkin_make_isolated over and over as development cycle is cumbersome. It just takes too long. So in that case I want an easy way to invoke make just in the package I made changes in. In case of a failure the user gets a command to copy&paste, but in case of no failure, the user has to construct that command by himself, that's what I would like to see improved.

@wjwwood
Copy link
Member

wjwwood commented Jan 22, 2013

So would that mean that just adding an easy to see and copy one line command would be sufficient? Or does cmi need to support directly building one package for you?

In rosmake if you build a single package all of the deps are checked/built, and in order to directly build one package you have to invoke make directly in the package folder, circumventing the rosmake stuff. So, I think that having a clear command to reproduce the various commands used in each package build would be sufficient.

@tkruse
Copy link
Member Author

tkruse commented Jan 22, 2013

As I said, my use-case is that of developping in one package, and just
making that one package over and over again. Rebuilding all packages up to
a certain one is also a nice feature, but does not match the use-case.

For that, I want an easily visible command to do that. this could be part
of the log, or a shell script, or even a readme file in the build space. i
don't expect to be spoiled here.

If it were possible I'd love to just call make in
build_isolated/foo_package, but I am not sure whether that can be made
possible without setting the env manually beforehand.
Possibly calling make in build_isolated/foo_package without a suitable env
could raise an error explaining how to easily use or setup an env. That
would also be fine.

On Tue, Jan 22, 2013 at 7:37 PM, William Woodall
notifications@github.comwrote:

So would that mean that just adding an easy to see and copy one line
command would be sufficient? Or does cmi need to support directly building
one package for you?

In rosmake if you build a single package all of the deps are
checked/built, and in order to directly build one package you have to
invoke make directly in the package folder, circumventing the rosmake
stuff. So, I think that having a clear command to reproduce the various
commands used in each package build would be sufficient.


Reply to this email directly or view it on GitHubhttps://github.com//issues/322#issuecomment-12559028.

@wjwwood
Copy link
Member

wjwwood commented Jan 24, 2013

@dirk-thomas and @tkruse for review

dirk-thomas added a commit that referenced this pull request Jan 24, 2013
catkin_make_isolated should allow building individual packages
@dirk-thomas dirk-thomas merged commit 5a1a5c7 into groovy-devel Jan 24, 2013
@dirk-thomas dirk-thomas deleted the issue_322 branch January 24, 2013 23:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants