summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Chrétien2014-05-25 22:16:29 +0200
committerBenjamin Chrétien2015-06-20 02:25:12 +0900
commitd85ef0dd40e18fa41329fda6bc2df898ff41e568 (patch)
treec236ba691a3bc415452a8c4c716f17c9f7c71015
parent3ada161a62fa21a77a43f43e0777d5133f8291ed (diff)
downloadaur-d85ef0dd40e18fa41329fda6bc2df898ff41e568.tar.gz
Improve import_catkin_packages.py.
-rw-r--r--.SRCINFO2
-rw-r--r--PKGBUILD2
-rwxr-xr-ximport_catkin_packages.py29
3 files changed, 28 insertions, 5 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 980a82932020..23368001bde8 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -26,7 +26,7 @@ pkgbase = ros-build-tools
md5sums = d257f7f20384e894b0431ee61068aa96
md5sums = 563c9d1320a3a997db25d3087303dcfb
md5sums = 8d6d7eb89a12c449497b209f1a06655b
- md5sums = 9101e246852bf67e2e64e16817062455
+ md5sums = 064fdc1a2bf83d29d7c5bfcc6c7334f7
md5sums = 07f5253eb3f8cb5295c32026a20ab6c0
pkgname = ros-build-tools
diff --git a/PKGBUILD b/PKGBUILD
index d8cc48047fbd..4c290aecb290 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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.')