1 |
commit: c456433d70dae2e58fb0297ab1b82822b2405b2d |
2 |
Author: André Erdmann <dywi <AT> mailerd <DOT> de> |
3 |
AuthorDate: Tue Jul 24 16:58:40 2012 +0000 |
4 |
Commit: André Erdmann <dywi <AT> mailerd <DOT> de> |
5 |
CommitDate: Tue Jul 24 16:58:40 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=c456433d |
7 |
|
8 |
add "ebuild uncreatable" event |
9 |
|
10 |
Immediately removes the PackageInfo object from the overlay |
11 |
structure to save some memory. |
12 |
|
13 |
geändert: roverlay/overlay/creator.py |
14 |
geändert: roverlay/overlay/package.py |
15 |
|
16 |
--- |
17 |
roverlay/overlay/creator.py | 1 + |
18 |
roverlay/overlay/package.py | 22 ++++++++++++++++++++-- |
19 |
2 files changed, 21 insertions(+), 2 deletions(-) |
20 |
|
21 |
diff --git a/roverlay/overlay/creator.py b/roverlay/overlay/creator.py |
22 |
index 60e9517..5b0a973 100644 |
23 |
--- a/roverlay/overlay/creator.py |
24 |
+++ b/roverlay/overlay/creator.py |
25 |
@@ -382,6 +382,7 @@ class OverlayCreator ( object ): |
26 |
if package_info.overlay_package_ref.new_ebuild(): |
27 |
self.overlay_added.inc() |
28 |
else: |
29 |
+ package_info.overlay_package_ref.ebuild_uncreateable ( package_info ) |
30 |
self.create_fail.inc() |
31 |
|
32 |
# --- end of _add_to_overlay (...) --- |
33 |
|
34 |
diff --git a/roverlay/overlay/package.py b/roverlay/overlay/package.py |
35 |
index bedbce3..cb5cf72 100644 |
36 |
--- a/roverlay/overlay/package.py |
37 |
+++ b/roverlay/overlay/package.py |
38 |
@@ -145,6 +145,25 @@ class PackageDir ( object ): |
39 |
return False |
40 |
# --- end of check_empty (...) --- |
41 |
|
42 |
+ def ebuild_uncreateable ( self, package_info ): |
43 |
+ """Called when ebuild creation (finally) failed for a PackageInfo |
44 |
+ object of this PackageDir. |
45 |
+ |
46 |
+ arguments: |
47 |
+ * package_info -- |
48 |
+ """ |
49 |
+ try: |
50 |
+ self._lock.acquire() |
51 |
+ pvr = package_info ['ebuild_verstr'] |
52 |
+ # FIXME debug print |
53 |
+ print ( "removing {PVR} from {PN}".format ( PVR=pvr, PN=self.name ) ) |
54 |
+ del self._packages [pvr] |
55 |
+ except KeyError: |
56 |
+ pass |
57 |
+ finally: |
58 |
+ self._lock.release() |
59 |
+ # --- end of uncreateable_ebuild (...) --- |
60 |
+ |
61 |
def empty ( self ): |
62 |
"""Returns True if no ebuilds stored, else False. |
63 |
Note that "not empty" doesn't mean "has ebuilds to write" or "has |
64 |
@@ -255,12 +274,11 @@ class PackageDir ( object ): |
65 |
return self._packages.keys() |
66 |
# --- end of list_versions (...) --- |
67 |
|
68 |
- def new_ebuild ( self, write=False ): |
69 |
+ def new_ebuild ( self ): |
70 |
"""Called when a new ebuild has been created for this PackageDir.""" |
71 |
self._need_manifest = True |
72 |
self._need_metadata = True |
73 |
self.modified = True |
74 |
- # FIXME: delete PackageInfo if ebuild creation did not succeed |
75 |
if self.runtime_incremental: |
76 |
with self._lock: |
77 |
return self.write_ebuilds ( overwrite=False ) |