diff options
author | ruro <ruro.ruro@ya.ru> | 2021-08-18 01:46:59 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-18 08:46:59 +1000 |
commit | 3b28178deb7a42a2df8c19b9bf190bb5da732b33 (patch) | |
tree | bbffcc4752948a0f5a52c31930f3ada863e67f44 /lib/python/qmk/commands.py | |
parent | 999391f3ae6bab3fe1784d0f53bffd0320a9e076 (diff) | |
download | qmk_firmware-3b28178deb7a42a2df8c19b9bf190bb5da732b33.tar.gz qmk_firmware-3b28178deb7a42a2df8c19b9bf190bb5da732b33.zip |
`--parallel` improvements (#13800)
* improve make parallel jobs support
* document the --parallel option
* disable the output-sync for interactive targets
Diffstat (limited to 'lib/python/qmk/commands.py')
-rw-r--r-- | lib/python/qmk/commands.py | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/lib/python/qmk/commands.py b/lib/python/qmk/commands.py index 8c66228b2..421453d83 100644 --- a/lib/python/qmk/commands.py +++ b/lib/python/qmk/commands.py | |||
@@ -52,7 +52,7 @@ def create_make_target(target, parallel=1, **env_vars): | |||
52 | for key, value in env_vars.items(): | 52 | for key, value in env_vars.items(): |
53 | env.append(f'{key}={value}') | 53 | env.append(f'{key}={value}') |
54 | 54 | ||
55 | return [make_cmd, '-j', str(parallel), *env, target] | 55 | return [make_cmd, *get_make_parallel_args(parallel), *env, target] |
56 | 56 | ||
57 | 57 | ||
58 | def create_make_command(keyboard, keymap, target=None, parallel=1, **env_vars): | 58 | def create_make_command(keyboard, keymap, target=None, parallel=1, **env_vars): |
@@ -112,6 +112,24 @@ def get_git_version(current_time, repo_dir='.', check_dir='.'): | |||
112 | return current_time | 112 | return current_time |
113 | 113 | ||
114 | 114 | ||
115 | def get_make_parallel_args(parallel=1): | ||
116 | """Returns the arguments for running the specified number of parallel jobs. | ||
117 | """ | ||
118 | parallel_args = [] | ||
119 | |||
120 | if int(parallel) <= 0: | ||
121 | # 0 or -1 means -j without argument (unlimited jobs) | ||
122 | parallel_args.append('--jobs') | ||
123 | else: | ||
124 | parallel_args.append('--jobs=' + str(parallel)) | ||
125 | |||
126 | if int(parallel) != 1: | ||
127 | # If more than 1 job is used, synchronize parallel output by target | ||
128 | parallel_args.append('--output-sync=target') | ||
129 | |||
130 | return parallel_args | ||
131 | |||
132 | |||
115 | def create_version_h(skip_git=False, skip_all=False): | 133 | def create_version_h(skip_git=False, skip_all=False): |
116 | """Generate version.h contents | 134 | """Generate version.h contents |
117 | """ | 135 | """ |
@@ -185,8 +203,7 @@ def compile_configurator_json(user_keymap, bootloader=None, parallel=1, **env_va | |||
185 | make_command.append('-s') | 203 | make_command.append('-s') |
186 | 204 | ||
187 | make_command.extend([ | 205 | make_command.extend([ |
188 | '-j', | 206 | *get_make_parallel_args(parallel), |
189 | str(parallel), | ||
190 | '-r', | 207 | '-r', |
191 | '-R', | 208 | '-R', |
192 | '-f', | 209 | '-f', |