pkg_path = self._pkg_path
dir_mode = 0o755
- for mydir in (dir_path, self._image_dir, infloc):
+ for mydir in (dir_path, self._image_dir, self._work_dir, infloc):
portage.util.ensure_dirs(mydir, uid=portage.data.portage_uid,
gid=portage.data.portage_gid, mode=dir_mode)
# if the prefix differs, we copy it to the image after
# extraction using chpathtool
if (self._buildprefix != EPREFIX):
- pkgloc = self._image_dir
- else:
pkgloc = self._work_dir
+ else:
+ pkgloc = self._image_dir
extractor = BinpkgExtractorAsync(background=self.background,
image_dir=pkgloc,
chpathtool = BinpkgChpathtoolAsync(background=self.background,
image_dir=self._image_dir, work_dir=self._work_dir,
buildprefix=self._buildprefix, eprefix=EPREFIX,
- scheduler=self.scheduler)
+ pkg=self.pkg, scheduler=self.scheduler)
self._writemsg_level(">>> Adjusting Prefix to %s\n" % EPREFIX)
self._start_task(chpathtool, self._chpathtool_exit)
else:
import portage
class BinpkgChpathtoolAsync(SpawnProcess):
- __slots__ = ("buildprefix", "eprefix", "image_dir", "work_dir")
+ __slots__ = ("buildprefix", "eprefix", "image_dir", "pkg", "work_dir")
_shell_binary = portage.const.BASH_BINARY
+ _chpathtool_binary = \
+ os.path.join(portage.const.PORTAGE_BIN_PATH, "chpathtool")
def _start(self):
b = os.path.join(self.work_dir, self.buildprefix.lstrip(os.path.sep))
portage.util.ensure_dirs(i)
os.rmdir(i)
self.args = [self._shell_binary, "-c",
- "chpathtool -q '%s' '%s' '%s' '%s'" % \
- (b, i, self.buildprefix, self.eprefix)]
+ "%s -q '%s' '%s' '%s' '%s'" % \
+ (self._chpathtool_binary, b, i, self.buildprefix, self.eprefix)]
self.env = self.pkg.root_config.settings.environ()
SpawnProcess._start(self)