1 |
commit: fcc2ea15a521f82319570ca2bb54928a39514e0c |
2 |
Author: André Erdmann <dywi <AT> mailerd <DOT> de> |
3 |
AuthorDate: Thu Aug 29 12:34:27 2013 +0000 |
4 |
Commit: André Erdmann <dywi <AT> mailerd <DOT> de> |
5 |
CommitDate: Thu Aug 29 12:35:05 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=fcc2ea15 |
7 |
|
8 |
packagedir_base: set distfile owner while scanning |
9 |
|
10 |
+ use overlay base object |
11 |
|
12 |
calling set_distfile_owner() is a no-op, currently. |
13 |
|
14 |
--- |
15 |
roverlay/overlay/pkgdir/packagedir_base.py | 29 ++++++++++++++++++++--------- |
16 |
1 file changed, 20 insertions(+), 9 deletions(-) |
17 |
|
18 |
diff --git a/roverlay/overlay/pkgdir/packagedir_base.py b/roverlay/overlay/pkgdir/packagedir_base.py |
19 |
index 425f31b..e8567b9 100644 |
20 |
--- a/roverlay/overlay/pkgdir/packagedir_base.py |
21 |
+++ b/roverlay/overlay/pkgdir/packagedir_base.py |
22 |
@@ -33,14 +33,14 @@ import roverlay.tools.ebuildenv |
23 |
import roverlay.tools.patch |
24 |
|
25 |
import roverlay.overlay.additionsdir |
26 |
- |
27 |
+import roverlay.overlay.base |
28 |
import roverlay.overlay.pkgdir.distroot.static |
29 |
import roverlay.overlay.pkgdir.metadata |
30 |
|
31 |
# TODO: proper reading of $SRC_URI when importing (or scanning) ebuilds |
32 |
# This would make manifest creation being more controlled |
33 |
|
34 |
-class PackageDirBase ( object ): |
35 |
+class PackageDirBase ( roverlay.overlay.base.OverlayObject ): |
36 |
"""The PackageDir base class that implements most functionality except |
37 |
for Manifest file creation.""" |
38 |
|
39 |
@@ -108,12 +108,14 @@ class PackageDirBase ( object ): |
40 |
* parent (pointer to) the object that is creating this |
41 |
instance |
42 |
""" |
43 |
- self.logger = logger.getChild ( name ) |
44 |
+ super ( PackageDirBase, self ).__init__ ( |
45 |
+ name, logger, directory, parent |
46 |
+ ) |
47 |
+ |
48 |
self.name = name |
49 |
self._lock = threading.RLock() |
50 |
# { <version> : <PackageInfo> } |
51 |
self._packages = dict() |
52 |
- self.physical_location = directory |
53 |
self.get_header = get_header |
54 |
self.runtime_incremental = runtime_incremental |
55 |
|
56 |
@@ -134,6 +136,10 @@ class PackageDirBase ( object ): |
57 |
self._need_metadata = False |
58 |
# --- end of __init__ (...) --- |
59 |
|
60 |
+ def set_category ( self, category ): |
61 |
+ self.set_parent ( category ) |
62 |
+ # --- end of set_category (...) --- |
63 |
+ |
64 |
def iter_package_info ( self, pkg_filter=None ): |
65 |
if pkg_filter is None: |
66 |
return self._packages.values() |
67 |
@@ -163,7 +169,7 @@ class PackageDirBase ( object ): |
68 |
return False |
69 |
# --- end of remove_ebuild_file (...) --- |
70 |
|
71 |
- def _scan_add_package ( self, efile, pvr ): |
72 |
+ def _scan_add_package ( self, efile, pvr, LINK_DISTMAP=False ): |
73 |
"""Called for each ebuild that is found during scan(). |
74 |
Creates a PackageInfo for the ebuild and adds it to self._packages. |
75 |
|
76 |
@@ -176,7 +182,11 @@ class PackageDirBase ( object ): |
77 |
p = roverlay.packageinfo.PackageInfo ( |
78 |
physical_only=True, pvr=pvr, ebuild_file=efile, name=self.name |
79 |
) |
80 |
- # TODO/FIXME: parse SRC_URI, knowledge of distfile path would be good... |
81 |
+ |
82 |
+ # link distfiles to distmap |
83 |
+ for distfile in p.parse_ebuild_distfiles ( self.get_parent().name ): |
84 |
+ self.DISTROOT.set_distfile_owner ( self.get_ref(), distfile ) |
85 |
+ |
86 |
self._packages [ p ['ebuild_verstr'] ] = p |
87 |
return p |
88 |
# --- end of _scan_add_package (...) --- |
89 |
@@ -254,10 +264,10 @@ class PackageDirBase ( object ): |
90 |
if added: |
91 |
# add a link to this PackageDir into the package info, |
92 |
# !! package_info <-> self (double-linked) |
93 |
- package_info.overlay_package_ref = weakref.ref ( self ) |
94 |
+ package_info.overlay_package_ref = self.get_ref() |
95 |
return True |
96 |
elif added is None: |
97 |
- return weakref.ref ( self ) |
98 |
+ return self.get_ref() |
99 |
else: |
100 |
return added |
101 |
# --- end of add (...) --- |
102 |
@@ -486,7 +496,8 @@ class PackageDirBase ( object ): |
103 |
"$PN {!r} does not match directory name, ignoring {!r}.".\ |
104 |
format ( pn, f ) |
105 |
) |
106 |
- except: |
107 |
+ except Exception as err: |
108 |
+ self.logger.exception ( err ) |
109 |
self.logger.warning ( |
110 |
"ebuild {!r} has an invalid file name!".format ( f ) |
111 |
) |