blob: 9028272ae8a89e98d20f3d5b55b776e68f1f7853 [file] [log] [blame]
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
import portage
from portage import os
from portage.elog.messages import eerror
from portage.util.SlotObject import SlotObject
class EbuildFetchonly(SlotObject):
__slots__ = ("fetch_all", "pkg", "pretend", "settings")
def execute(self):
settings = self.settings
pkg = self.pkg
portdb = pkg.root_config.trees["porttree"].dbapi
ebuild_path = portdb.findname(pkg.cpv, myrepo=pkg.repo)
if ebuild_path is None:
raise AssertionError("ebuild not found for '%s'" % pkg.cpv)
settings.setcpv(pkg)
debug = settings.get("PORTAGE_DEBUG") == "1"
rval = portage.doebuild(
ebuild_path,
"fetch",
settings=settings,
debug=debug,
listonly=self.pretend,
fetchonly=1,
fetchall=self.fetch_all,
mydbapi=portdb,
tree="porttree",
)
# For pretend mode, this error message is suppressed,
# and the unsuccessful return value is used to trigger
# a call to the pkg_nofetch phase.
if rval != os.EX_OK and not self.pretend:
msg = "Fetch failed for '%s'" % (pkg.cpv,)
eerror(msg, phase="unpack", key=pkg.cpv)
return rval