diff options
author | Benjamin Chrétien | 2014-05-25 22:16:29 +0200 |
---|---|---|
committer | Benjamin Chrétien | 2015-06-20 02:25:12 +0900 |
commit | d85ef0dd40e18fa41329fda6bc2df898ff41e568 (patch) | |
tree | c236ba691a3bc415452a8c4c716f17c9f7c71015 | |
parent | 3ada161a62fa21a77a43f43e0777d5133f8291ed (diff) | |
download | aur-d85ef0dd40e18fa41329fda6bc2df898ff41e568.tar.gz |
Improve import_catkin_packages.py.
-rw-r--r-- | .SRCINFO | 2 | ||||
-rw-r--r-- | PKGBUILD | 2 | ||||
-rwxr-xr-x | import_catkin_packages.py | 29 |
3 files changed, 28 insertions, 5 deletions
@@ -26,7 +26,7 @@ pkgbase = ros-build-tools md5sums = d257f7f20384e894b0431ee61068aa96 md5sums = 563c9d1320a3a997db25d3087303dcfb md5sums = 8d6d7eb89a12c449497b209f1a06655b - md5sums = 9101e246852bf67e2e64e16817062455 + md5sums = 064fdc1a2bf83d29d7c5bfcc6c7334f7 md5sums = 07f5253eb3f8cb5295c32026a20ab6c0 pkgname = ros-build-tools @@ -41,5 +41,5 @@ md5sums=('8b2e864de97e97298ebfb8da471f2df1' 'd257f7f20384e894b0431ee61068aa96' '563c9d1320a3a997db25d3087303dcfb' '8d6d7eb89a12c449497b209f1a06655b' - '9101e246852bf67e2e64e16817062455' + '064fdc1a2bf83d29d7c5bfcc6c7334f7' '07f5253eb3f8cb5295c32026a20ab6c0') diff --git a/import_catkin_packages.py b/import_catkin_packages.py index fc3678ab3884..63de68c9a66d 100755 --- a/import_catkin_packages.py +++ b/import_catkin_packages.py @@ -12,6 +12,11 @@ import yaml import re from collections import OrderedDict from termcolor import colored, cprint +import pickle + +updates_packages_dir = "/tmp/import_catkin_packages" +updated_packages_file = os.path.join(updates_packages_dir, + "updated_packages.dump") class PackageBase(object): @@ -455,10 +460,10 @@ def generate_pkgbuild(distro, package, directory, force=False, no_overwrite=False, recursive=False, update=False, exclude_dependencies=[], rosdep_urls=[], generated=None): if generated is None: - generated = [] + generated = set() elif package.name in generated: return - generated.append(package.name) + generated.add(package.name) if package.packages: for child_package in package.packages: generate_pkgbuild(distro, child_package, directory, @@ -539,13 +544,31 @@ def main(): list_packages(distro) return elif args: + generated = set() + if os.path.isfile(updated_packages_file): + # Load dump of already updated packages to speedup updates + print('Loading set of previously updated packages: %s' + % (colored(updated_packages_file, 'white', + attrs=['bold']))) + updated_packages = open(updated_packages_file, "r") + generated = pickle.load(updated_packages) + updated_packages.close() + for package in generated: + print('Ignoring %s' + % (colored(package, 'yellow', attrs=['bold']))) + for package in args: generate_pkgbuild(distro, distro.package(package), os.path.abspath(options.output_directory), exclude_dependencies=options.exclude_dependencies.split(','), force=options.force, no_overwrite=options.no_overwrite, update=options.update, recursive=options.recursive, - rosdep_urls=options.rosdep_urls) + rosdep_urls=options.rosdep_urls, generated=generated) + if not os.path.exists(updates_packages_dir): + os.makedirs(updates_packages_dir) + updated_packages = open(updated_packages_file, "w+") + pickle.dump(generated, updated_packages) + updated_packages.close() else: parser.error('No package specified.') |