-
Notifications
You must be signed in to change notification settings - Fork 148
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
New asyncio-based execution engine (PR#196 1/3) #248
Closed
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…et characters. This fixes output issues in some non-ANSI-compatible contexts.
…nvalid keys in the saved context. Also adding some helper functions to standardize constructing package-specific workspace paths.
jbohren
force-pushed
the
pre-0.4.0-executor
branch
7 times, most recently
from
December 15, 2015 04:02
70406f0
to
cad16ed
Compare
25 tasks
…ixup Jbohren forks pre 0.4.0 cleanup fixup
jbohren
force-pushed
the
pre-0.4.0-executor
branch
from
December 15, 2015 09:04
cad16ed
to
aadf139
Compare
This was referenced Dec 15, 2015
This has been superseded by #249. |
Thanks for your work on separating this! I just saw a unicode exception here:
The unicode character 2018 is "LEFT SINGLE QUOTATION MARK", emitted by gcc on my system:
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR is the first set of refactored partial changes from PR #196 relating only to the execution engine and I/O handling, without the "linked" develspace support nor improved
catkin clean
support. It also includes the changes from #247. This is meant to be a "functional" PR and it is expected that it might need further small revisions before being merged. This also adds a Travis CI configuration that builds on Linux as well as OS X.Main Module Changes
catkin_tools/common.py
The changes in
catkin_tools.common
include the following:FakeLock
get_recursive_build_dependants_in_workspace
function which gives the packages that depend on a given package in the workspace. (This is used in the future)os.Popen
withsubprocess.Popen
slice_to_printed_length
fails if the length is larger than the length of the lookup array.sigint
during awide_log
messagemkdir_p
function which recursively makes directoriescatkin_tools/resultspace.py
The main change to
catkin_tools.resultspace
is the addition of environment and env hook checksum caching. This enables faster builds by using theresultspace
mechanism instead of thebuild_env.sh
mechanism. Theresultspace
loading can also cache the environment, and updates the cache when a resultspace's Catkin env_hooks change in any way.It also adds a
strict
flag which controls whether or not to check for a.catkin
file before loading the environment.catkin_tools/argument_parsing.py
The changes in
catkin_tools.argument_parsing
mainly support the new job server, which is initialized even when there isn't any support for the GNU Make jobserver, to allow for future extensions to the jobserver in other contexts (distcc, ninja, etc).Execution Engine
The execution engine consists of the main asyncio-based
Executor
,Job
s, and jobStage
s described in #196. Jobs for different catkin build types are defined via setuptoolsentry_points
. This improves job parallelism, but also provides a mechanism for capturingstdout
andstderr
independently. As such, warnings and errors are now detected and printed in a much clearer manner.This PR improves on the CMake and Catkin jobs defined in #196 by forgoing using the
build_env.sh
script, and instead using thecatkin_tools.resultspace
-based environment loading. This not only speeds up builds, but it also fixes a bug that prevented single-pass workspace building as described in this thread.More details on the design of the execution engine are forthcoming via a documentation PR.