Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r10827 - main/trunk/pym/_emerge
Date: Sat, 28 Jun 2008 04:21:01
Message-Id: E1KCRvi-0007CU-UC@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-06-28 04:20:53 +0000 (Sat, 28 Jun 2008)
3 New Revision: 10827
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 Log:
8 Split out a BinpkgFetcher class.
9
10
11 Modified: main/trunk/pym/_emerge/__init__.py
12 ===================================================================
13 --- main/trunk/pym/_emerge/__init__.py 2008-06-28 02:53:36 UTC (rev 10826)
14 +++ main/trunk/pym/_emerge/__init__.py 2008-06-28 04:20:53 UTC (rev 10827)
15 @@ -1451,6 +1451,66 @@
16 mydbapi=portdb, tree="porttree")
17 return retval
18
19 +class BinpkgFetcher(Task):
20 +
21 + __slots__ = ("use_locks", "pkg", "pretend",
22 + "pkg_path", "remote")
23 +
24 + def __init__(self, **kwargs):
25 + Task.__init__(self, **kwargs)
26 + pkg = self.pkg
27 + self.pkg_path = pkg.root_config.trees["bintree"].getname(pkg.cpv)
28 +
29 + def _get_hash_key(self):
30 + hash_key = getattr(self, "_hash_key", None)
31 + if hash_key is None:
32 + self._hash_key = ("BinpkgFetcher", self.ebuild._get_hash_key())
33 + return self._hash_key
34 +
35 + def execute(self):
36 + tbz2_lock = None
37 + use_locks = self.use_locks
38 + pkg = self.pkg
39 + pretend = self.pretend
40 + bintree = pkg.root_config.trees["bintree"]
41 + pkgdir = bintree.pkgdir
42 + pkg_path = self.pkg_path
43 + rval = os.EX_OK
44 +
45 + try:
46 + try:
47 + if not pretend and use_locks and os.access(pkgdir, os.W_OK):
48 + portage.util.ensure_dirs(os.path.dirname(pkg_path))
49 + tbz2_lock = portage.locks.lockfile(pkg_path,
50 + wantnewlockfile=1)
51 + if bintree.isremote(pkg.cpv):
52 + self.remote = True
53 + if not pretend:
54 + bintree.gettbz2(pkg.cpv)
55 + finally:
56 + if tbz2_lock is not None:
57 + portage.locks.unlockfile(tbz2_lock)
58 + except portage.exception.FileNotFound:
59 + writemsg("!!! Fetching Binary failed " + \
60 + "for '%s'\n" % pkg.cpv, noiselevel=-1)
61 + rval = 1
62 + except portage.exception.DigestException, e:
63 + writemsg("\n!!! Digest verification failed:\n",
64 + noiselevel=-1)
65 + writemsg("!!! %s\n" % e.value[0],
66 + noiselevel=-1)
67 + writemsg("!!! Reason: %s\n" % e.value[1],
68 + noiselevel=-1)
69 + writemsg("!!! Got: %s\n" % e.value[2],
70 + noiselevel=-1)
71 + writemsg("!!! Expected: %s\n" % e.value[3],
72 + noiselevel=-1)
73 + if not pretend:
74 + os.unlink(pkg_path)
75 + rval = 1
76 + return rval
77 +
78 +
79 class DependencyArg(object):
80 def __init__(self, arg=None, root_config=None):
81 self.arg = arg
82 @@ -6412,48 +6472,23 @@
83
84 elif x[0]=="binary":
85 #merge the tbz2
86 - mytbz2 = self.trees[myroot]["bintree"].getname(pkg_key)
87 + fetcher = BinpkgFetcher(pkg=pkg, pretend=pretend,
88 + use_locks=("distlocks" in pkgsettings.features))
89 + mytbz2 = fetcher.pkg_path
90 if "--getbinpkg" in self.myopts:
91 - tbz2_lock = None
92 - try:
93 - if "distlocks" in pkgsettings.features and \
94 - os.access(pkgsettings["PKGDIR"], os.W_OK):
95 - portage.util.ensure_dirs(os.path.dirname(mytbz2))
96 - tbz2_lock = portage.locks.lockfile(mytbz2,
97 - wantnewlockfile=1)
98 - if self.trees[myroot]["bintree"].isremote(pkg_key):
99 - msg = " --- (%s of %s) Fetching Binary (%s::%s)" %\
100 - (mergecount, len(mymergelist), pkg_key, mytbz2)
101 - short_msg = "emerge: (%s of %s) %s Fetch" % \
102 - (mergecount, len(mymergelist), pkg_key)
103 - emergelog(xterm_titles, msg, short_msg=short_msg)
104 - try:
105 - self.trees[myroot]["bintree"].gettbz2(pkg_key)
106 - except portage.exception.FileNotFound:
107 - writemsg("!!! Fetching Binary failed " + \
108 - "for '%s'\n" % pkg_key, noiselevel=-1)
109 - if not fetchonly:
110 - raise self._pkg_failure()
111 - failed_fetches.append(pkg_key)
112 - except portage.exception.DigestException, e:
113 - writemsg("\n!!! Digest verification failed:\n",
114 - noiselevel=-1)
115 - writemsg("!!! %s\n" % e.value[0],
116 - noiselevel=-1)
117 - writemsg("!!! Reason: %s\n" % e.value[1],
118 - noiselevel=-1)
119 - writemsg("!!! Got: %s\n" % e.value[2],
120 - noiselevel=-1)
121 - writemsg("!!! Expected: %s\n" % e.value[3],
122 - noiselevel=-1)
123 - os.unlink(mytbz2)
124 - if not fetchonly:
125 - raise self._pkg_failure()
126 - failed_fetches.append(pkg_key)
127 - finally:
128 - if tbz2_lock:
129 - portage.locks.unlockfile(tbz2_lock)
130 + retval = fetcher.execute()
131 + if fetcher.remote:
132 + msg = " --- (%s of %s) Fetching Binary (%s::%s)" %\
133 + (mergecount, len(mymergelist), pkg_key, mytbz2)
134 + short_msg = "emerge: (%s of %s) %s Fetch" % \
135 + (mergecount, len(mymergelist), pkg_key)
136 + emergelog(xterm_titles, msg, short_msg=short_msg)
137
138 + if retval != os.EX_OK:
139 + failed_fetches.append(pkg.cpv)
140 + if not fetchonly:
141 + raise self._pkg_failure()
142 +
143 if "--fetchonly" in self.myopts or \
144 "--fetch-all-uri" in self.myopts:
145 self.curval += 1
146
147 --
148 gentoo-commits@l.g.o mailing list