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() |