def _start(self): pkg = self.pkg scheduler = self.scheduler settings = self.settings cleanup = 0 portage.prepare_build_dirs(pkg.root, settings, cleanup) if eapi_exports_replace_vars(settings["EAPI"]): vardb = pkg.root_config.trees["vartree"].dbapi settings["REPLACING_VERSIONS"] = " ".join( set( portage.versions.cpv_getversion(match) for match in vardb.match(pkg.slot_atom) + vardb.match("=" + pkg.cpv))) setup_phase = EbuildPhase( background=self.background, phase="setup", scheduler=scheduler, settings=settings, ) setup_phase.addExitListener(self._setup_exit) self._task_queued(setup_phase) self.scheduler.scheduleSetup(setup_phase)
def _start(self): pkg = self.pkg scheduler = self.scheduler settings = self.settings cleanup = 0 portage.prepare_build_dirs(pkg.root, settings, cleanup) alist = settings.configdict["pkg"].get("A", "").split() _prepare_fake_distdir(settings, alist) if eapi_exports_replace_vars(settings['EAPI']): vardb = pkg.root_config.trees['vartree'].dbapi settings["REPLACING_VERSIONS"] = " ".join( set(portage.versions.cpv_getversion(match) \ for match in vardb.match(pkg.slot_atom) + \ vardb.match('='+pkg.cpv))) setup_phase = EbuildPhase(background=self.background, phase="setup", scheduler=scheduler, settings=settings) setup_phase.addExitListener(self._setup_exit) self._task_queued(setup_phase) self.scheduler.scheduleSetup(setup_phase)
def _start(self): pkg = self.pkg scheduler = self.scheduler settings = self.settings cleanup = 0 portage.prepare_build_dirs(pkg.root, settings, cleanup) portdb = pkg.root_config.trees['porttree'].dbapi ebuild_path = settings['EBUILD'] mytree = os.path.dirname(os.path.dirname(os.path.dirname(ebuild_path))) alist = portdb.getFetchMap(pkg.cpv, useflags=pkg.use.enabled, mytree=mytree) aalist = portdb.getFetchMap(pkg.cpv, mytree=mytree) settings.configdict["pkg"]["A"] = " ".join(alist) settings.configdict["pkg"]["AA"] = " ".join(aalist) _prepare_fake_distdir(settings, alist) if eapi_exports_replace_vars(settings['EAPI']): vardb = pkg.root_config.trees['vartree'].dbapi settings["REPLACING_VERSIONS"] = " ".join( set(portage.versions.cpv_getversion(match) \ for match in vardb.match(pkg.slot_atom) + \ vardb.match('='+pkg.cpv))) setup_phase = EbuildPhase(background=self.background, phase="setup", scheduler=scheduler, settings=settings) setup_phase.addExitListener(self._setup_exit) self._current_task = setup_phase self.scheduler.scheduleSetup(setup_phase)
def _start(self): pkg = self.pkg scheduler = self.scheduler settings = self.settings cleanup = 0 portage.prepare_build_dirs(pkg.root, settings, cleanup) portdb = pkg.root_config.trees['porttree'].dbapi ebuild_path = settings['EBUILD'] mytree = os.path.dirname(os.path.dirname( os.path.dirname(ebuild_path))) alist = portdb.getFetchMap(pkg.cpv, useflags=pkg.use.enabled, mytree=mytree) aalist = portdb.getFetchMap(pkg.cpv, mytree=mytree) settings.configdict["pkg"]["A"] = " ".join(alist) settings.configdict["pkg"]["AA"] = " ".join(aalist) _prepare_fake_distdir(settings, alist) if eapi_exports_replace_vars(settings['EAPI']): vardb = pkg.root_config.trees['vartree'].dbapi settings["REPLACING_VERSIONS"] = " ".join( set(portage.versions.cpv_getversion(match) \ for match in vardb.match(pkg.slot_atom) + \ vardb.match('='+pkg.cpv))) setup_phase = EbuildPhase(background=self.background, phase="setup", scheduler=scheduler, settings=settings) setup_phase.addExitListener(self._setup_exit) self._current_task = setup_phase self.scheduler.scheduleSetup(setup_phase)
def _start(self): pkg = self.pkg scheduler = self.scheduler settings = self.settings cleanup = 0 portage.prepare_build_dirs(pkg.root, settings, cleanup) portdb = pkg.root_config.trees['porttree'].dbapi ebuild_path = settings['EBUILD'] alist = settings.configdict["pkg"].get("A", "").split() _prepare_fake_distdir(settings, alist) if eapi_exports_replace_vars(settings['EAPI']): vardb = pkg.root_config.trees['vartree'].dbapi settings["REPLACING_VERSIONS"] = " ".join( set(portage.versions.cpv_getversion(match) \ for match in vardb.match(pkg.slot_atom) + \ vardb.match('='+pkg.cpv))) setup_phase = EbuildPhase(background=self.background, phase="setup", scheduler=scheduler, settings=settings) setup_phase.addExitListener(self._setup_exit) self._task_queued(setup_phase) self.scheduler.scheduleSetup(setup_phase)
def _install_exit(self, install_phase): if self._default_exit(install_phase) != os.EX_OK: self.wait() return if not os.path.exists(self.settings["D"]): pkg = self.pkg scheduler = self.scheduler settings = self.settings cleanup = 1 # This initializes PORTAGE_LOG_FILE. portage.prepare_build_dirs(pkg.root, settings, cleanup) setup_phase = EbuildPhase(background=self.background, pkg=pkg, phase="setup", scheduler=scheduler, settings=settings, tree=self._tree) setup_phase.addExitListener(self._setup_exit) self._current_task = setup_phase self.scheduler.scheduleSetup(setup_phase) else: self.returncode = os.EX_OK self.wait() return
def _env_extractor_exit(self, env_extractor): if self._default_exit(env_extractor) != os.EX_OK: self._async_unlock_builddir(returncode=self.returncode) return setup_phase = EbuildPhase(background=self.background, phase="setup", scheduler=self.scheduler, settings=self.settings) setup_phase.addExitListener(self._setup_exit) self._task_queued(setup_phase) self.scheduler.scheduleSetup(setup_phase)
def _unpack_metadata_exit(self, unpack_metadata): if self._default_exit(unpack_metadata) != os.EX_OK: unpack_metadata.future.result() self._async_unlock_builddir(returncode=self.returncode) return setup_phase = EbuildPhase(background=self.background, phase="setup", scheduler=self.scheduler, settings=self.settings) setup_phase.addExitListener(self._setup_exit) self._task_queued(setup_phase) self.scheduler.scheduleSetup(setup_phase)
def _setup_exit(self, setup_phase): if self._default_exit(setup_phase) != os.EX_OK: self.wait() return unpack_phase = EbuildPhase(background=self.background, phase="unpack", scheduler=self.scheduler, settings=self.settings) if self._live_eclasses.intersection(self.pkg.inherited): # Serialize $DISTDIR access for live ebuilds since # otherwise they can interfere with eachother. unpack_phase.addExitListener(self._unpack_exit) self._current_task = unpack_phase self.scheduler.scheduleUnpack(unpack_phase) else: self._start_task(unpack_phase, self._unpack_exit)
def _env_extractor_exit(self, env_extractor): if self._default_exit(env_extractor) != os.EX_OK: self._unlock_builddir() self.wait() return # This gives bashrc users an opportunity to do various things # such as remove binary packages after they're installed. settings = self.settings settings.setcpv(self.pkg) settings["PORTAGE_BINPKG_FILE"] = self._pkg_path settings.backup_changes("PORTAGE_BINPKG_FILE") setup_phase = EbuildPhase(background=self.background, phase="setup", scheduler=self.scheduler, settings=settings) setup_phase.addExitListener(self._setup_exit) self._current_task = setup_phase self.scheduler.scheduleSetup(setup_phase)
def _setup_exit(self, setup_phase): if self._default_exit(setup_phase) != os.EX_OK: self.wait() return unpack_phase = EbuildPhase(background=self.background, phase="unpack", scheduler=self.scheduler, settings=self.settings) if self._live_eclasses.intersection(self.pkg.inherited): # Serialize $DISTDIR access for live ebuilds since # otherwise they can interfere with eachother. unpack_phase.addExitListener(self._unpack_exit) self._task_queued(unpack_phase) self.scheduler.scheduleUnpack(unpack_phase) else: self._start_task(unpack_phase, self._unpack_exit)
def _setup_exit(self, setup_phase): if self._default_exit(setup_phase) != os.EX_OK: self.wait() return unpack_phase = EbuildPhase(background=self.background, phase="unpack", scheduler=self.scheduler, settings=self.settings) if "live" in self.settings.get("PROPERTIES", "").split(): # Serialize $DISTDIR access for live ebuilds since # otherwise they can interfere with eachother. unpack_phase.addExitListener(self._unpack_exit) self._task_queued(unpack_phase) self.scheduler.scheduleUnpack(unpack_phase) else: self._start_task(unpack_phase, self._unpack_exit)
def _clean_phase_exit(self, clean_phase): if self._default_exit(clean_phase) != os.EX_OK: self.wait() return pkg = self.pkg scheduler = self.scheduler settings = self.settings cleanup = 1 # This initializes PORTAGE_LOG_FILE. portage.prepare_build_dirs(pkg.root, settings, cleanup) setup_phase = EbuildPhase(background=self.background, pkg=pkg, phase="setup", scheduler=scheduler, settings=settings, tree=self._tree) setup_phase.addExitListener(self._setup_exit) self._current_task = setup_phase self.scheduler.scheduleSetup(setup_phase)
def _clean_exit(self, clean_phase): if self._default_exit(clean_phase) != os.EX_OK: self._unlock_builddir() self.wait() return dir_path = self._build_dir.dir_path infloc = self._infloc pkg = self.pkg pkg_path = self._pkg_path dir_mode = 0o755 for mydir in (dir_path, self._image_dir, infloc): portage.util.ensure_dirs(mydir, uid=portage.data.portage_uid, gid=portage.data.portage_gid, mode=dir_mode) # This initializes PORTAGE_LOG_FILE. portage.prepare_build_dirs(self.settings["ROOT"], self.settings, 1) self._writemsg_level(">>> Extracting info\n") pkg_xpak = portage.xpak.tbz2(self._pkg_path) check_missing_metadata = ("CATEGORY", "PF") missing_metadata = set() for k in check_missing_metadata: v = pkg_xpak.getfile(_unicode_encode(k, encoding=_encodings['repo.content'])) if not v: missing_metadata.add(k) pkg_xpak.unpackinfo(infloc) for k in missing_metadata: if k == "CATEGORY": v = pkg.category elif k == "PF": v = pkg.pf else: continue f = codecs.open(_unicode_encode(os.path.join(infloc, k), encoding=_encodings['fs'], errors='strict'), mode='w', encoding=_encodings['content'], errors='replace') try: f.write(v + "\n") finally: f.close() # Store the md5sum in the vdb. f = codecs.open(_unicode_encode(os.path.join(infloc, 'BINPKGMD5'), encoding=_encodings['fs'], errors='strict'), mode='w', encoding=_encodings['content'], errors='strict') try: f.write(str(portage.checksum.perform_md5(pkg_path)) + "\n") finally: f.close() # This gives bashrc users an opportunity to do various things # such as remove binary packages after they're installed. settings = self.settings settings.setcpv(self.pkg) settings["PORTAGE_BINPKG_FILE"] = pkg_path settings.backup_changes("PORTAGE_BINPKG_FILE") phase = "setup" setup_phase = EbuildPhase(background=self.background, pkg=self.pkg, phase=phase, scheduler=self.scheduler, settings=settings, tree=self._tree) setup_phase.addExitListener(self._setup_exit) self._current_task = setup_phase self.scheduler.scheduleSetup(setup_phase)