diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/combo-layer | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/scripts/combo-layer b/scripts/combo-layer index 37d1f4712d..851003d855 100755 --- a/scripts/combo-layer +++ b/scripts/combo-layer | |||
@@ -26,6 +26,7 @@ import logging | |||
26 | import subprocess | 26 | import subprocess |
27 | import ConfigParser | 27 | import ConfigParser |
28 | import re | 28 | import re |
29 | from collections import OrderedDict | ||
29 | 30 | ||
30 | __version__ = "0.2.1" | 31 | __version__ = "0.2.1" |
31 | 32 | ||
@@ -347,7 +348,13 @@ def action_update(conf, args): | |||
347 | generate the patch list | 348 | generate the patch list |
348 | apply the generated patches | 349 | apply the generated patches |
349 | """ | 350 | """ |
350 | repos = get_repos(conf, args[1:]) | 351 | components = [arg.split(':')[0] for arg in args[1:]] |
352 | revisions = [] | ||
353 | for arg in args[1:]: | ||
354 | revision= arg.split(':', 1)[1] if ':' in arg else None | ||
355 | revisions.append(revision) | ||
356 | # Map commitishes to repos | ||
357 | repos = OrderedDict(zip(get_repos(conf, components), revisions)) | ||
351 | 358 | ||
352 | # make sure combo repo is clean | 359 | # make sure combo repo is clean |
353 | check_repo_clean(os.getcwd()) | 360 | check_repo_clean(os.getcwd()) |
@@ -361,9 +368,9 @@ def action_update(conf, args): | |||
361 | if conf.nopull: | 368 | if conf.nopull: |
362 | logger.info("Skipping pull (-n)") | 369 | logger.info("Skipping pull (-n)") |
363 | else: | 370 | else: |
364 | action_pull(conf, args) | 371 | action_pull(conf, ['arg0'] + components) |
365 | 372 | ||
366 | for name in repos: | 373 | for name, revision in repos.iteritems(): |
367 | repo = conf.repos[name] | 374 | repo = conf.repos[name] |
368 | ldir = repo['local_repo_dir'] | 375 | ldir = repo['local_repo_dir'] |
369 | dest_dir = repo['dest_dir'] | 376 | dest_dir = repo['dest_dir'] |
@@ -372,18 +379,21 @@ def action_update(conf, args): | |||
372 | 379 | ||
373 | # Step 2: generate the patch list and store to patch dir | 380 | # Step 2: generate the patch list and store to patch dir |
374 | logger.info("Generating patches from %s..." % name) | 381 | logger.info("Generating patches from %s..." % name) |
382 | top_revision = revision or branch | ||
383 | if not check_rev_branch(name, ldir, top_revision, branch): | ||
384 | sys.exit(1) | ||
375 | if dest_dir != ".": | 385 | if dest_dir != ".": |
376 | prefix = "--src-prefix=a/%s/ --dst-prefix=b/%s/" % (dest_dir, dest_dir) | 386 | prefix = "--src-prefix=a/%s/ --dst-prefix=b/%s/" % (dest_dir, dest_dir) |
377 | else: | 387 | else: |
378 | prefix = "" | 388 | prefix = "" |
379 | if repo['last_revision'] == "": | 389 | if repo['last_revision'] == "": |
380 | logger.info("Warning: last_revision of component %s is not set, starting from the first commit" % name) | 390 | logger.info("Warning: last_revision of component %s is not set, starting from the first commit" % name) |
381 | patch_cmd_range = "--root %s" % branch | 391 | patch_cmd_range = "--root %s" % top_revision |
382 | rev_cmd_range = branch | 392 | rev_cmd_range = top_revision |
383 | else: | 393 | else: |
384 | if not check_rev_branch(name, ldir, repo['last_revision'], branch): | 394 | if not check_rev_branch(name, ldir, repo['last_revision'], branch): |
385 | sys.exit(1) | 395 | sys.exit(1) |
386 | patch_cmd_range = "%s..%s" % (repo['last_revision'], branch) | 396 | patch_cmd_range = "%s..%s" % (repo['last_revision'], top_revision) |
387 | rev_cmd_range = patch_cmd_range | 397 | rev_cmd_range = patch_cmd_range |
388 | 398 | ||
389 | file_filter = repo.get('file_filter',"") | 399 | file_filter = repo.get('file_filter',"") |