Fix some typos.
[portage.git] / pym / _emerge / EbuildBinpkg.py
1 # Copyright 1999-2012 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3
4 from _emerge.CompositeTask import CompositeTask
5 from _emerge.EbuildPhase import EbuildPhase
6 from portage import os
7
8 class EbuildBinpkg(CompositeTask):
9         """
10         This assumes that src_install() has successfully completed.
11         """
12         __slots__ = ('pkg', 'settings') + \
13                 ('_binpkg_tmpfile',)
14
15         def _start(self):
16                 pkg = self.pkg
17                 root_config = pkg.root_config
18                 bintree = root_config.trees["bintree"]
19                 bintree.prevent_collision(pkg.cpv)
20                 binpkg_tmpfile = os.path.join(bintree.pkgdir,
21                         pkg.cpv + ".tbz2." + str(os.getpid()))
22                 bintree._ensure_dir(os.path.dirname(binpkg_tmpfile))
23
24                 self._binpkg_tmpfile = binpkg_tmpfile
25                 self.settings["PORTAGE_BINPKG_TMPFILE"] = self._binpkg_tmpfile
26
27                 package_phase = EbuildPhase(background=self.background,
28                         phase='package', scheduler=self.scheduler,
29                         settings=self.settings)
30
31                 self._start_task(package_phase, self._package_phase_exit)
32
33         def _package_phase_exit(self, package_phase):
34
35                 self.settings.pop("PORTAGE_BINPKG_TMPFILE", None)
36                 if self._default_exit(package_phase) != os.EX_OK:
37                         try:
38                                 os.unlink(self._binpkg_tmpfile)
39                         except OSError:
40                                 pass
41                         self.wait()
42                         return
43
44                 pkg = self.pkg
45                 bintree = pkg.root_config.trees["bintree"]
46                 bintree.inject(pkg.cpv, filename=self._binpkg_tmpfile)
47
48                 self._current_task = None
49                 self.returncode = os.EX_OK
50                 self.wait()