Gentoo Archives: gentoo-commits

From: Slava Bacherikov <slava@××××××××××××××.ua>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/
Date: Wed, 06 Jun 2012 22:49:19
Message-Id: 1339022925.d3f396a3f7553bf9d1007f532d67e7bddc4f72cc.bacher09@gentoo
1 commit: d3f396a3f7553bf9d1007f532d67e7bddc4f72cc
2 Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
3 AuthorDate: Wed Jun 6 22:48:45 2012 +0000
4 Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
5 CommitDate: Wed Jun 6 22:48:45 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=d3f396a3
7
8 Add caching in dbm
9
10 ---
11 gpackages/apps/packages/scan.py | 21 ++++++++++++++++++++-
12 1 files changed, 20 insertions(+), 1 deletions(-)
13
14 diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py
15 index f316900..9c5c193 100644
16 --- a/gpackages/apps/packages/scan.py
17 +++ b/gpackages/apps/packages/scan.py
18 @@ -6,6 +6,8 @@ import porttree
19 import herds
20 import use_info
21
22 +import anydbm
23 +
24 portage = porttree.Portage()
25
26 def _get_from_cache(cache, what):
27 @@ -207,7 +209,10 @@ arches_cache = {}
28 homepages_cache = {}
29 herds_cache = {}
30 maintainers_cache = {}
31 -def scanpackages(porttree, porttree_obj, delete = True, force_update = False):
32 +
33 +cache_dict = None
34 +def scanpackages(porttree, porttree_obj, delete = True, force_update = False,
35 + update_cache = True, use_cache = True):
36 def get_licenses_objects(ebuild):
37 licenses = ebuild.licenses
38 return _get_items(licenses, models.LicensModel, 'name', licenses_cache)
39 @@ -325,8 +330,19 @@ def scanpackages(porttree, porttree_obj, delete = True, force_update = False):
40 category_object, category_created = models.CategoryModel.objects.get_or_create(category = category)
41 existend_categorys.append(category_object.pk)
42 for package in category.iter_packages():
43 + if use_cache:
44 + key = str(porttree.name)+'/'+str(package)
45 + val = None
46 + if key in cache_dict:
47 + val = cache_dict[key]
48 + if val is not None and val == package.manifest_sha1:
49 + continue
50 print('%s [%s]' % (package, porttree))
51 package_object, package_created = models.PackageModel.objects.get_or_create(package = package, category = category_object, repository = porttree_obj)
52 + if update_cache:
53 + key = str(porttree.name)+'/'+str(package)
54 + cache_dict[key] = package.manifest_sha1
55 +
56 existend_packages.append(package_object.pk)
57 if not package_created:
58 if package_object.check_or_need_update(package) or force_update:
59 @@ -347,7 +363,10 @@ def scanpackages(porttree, porttree_obj, delete = True, force_update = False):
60
61
62 def scan_all_repos():
63 + global cache_dict
64 + cache_dict = anydbm.open('cache.db','c')
65 herds_cache, maintainers_cache = scan_herds()
66 for repo in portage.iter_trees():
67 repo_obj, repo_created = models.RepositoryModel.objects.get_or_create(name = repo.name)
68 scanpackages(repo, repo_obj)
69 + cache_dict.close()