From 09a00db962e429d0247ab6209ec312dde5b00866 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 3 Apr 2006 03:59:26 +0000 Subject: Move DISTDIR initialization from doebuild to fetch and handle read-only file system errors for bug #128506. svn path=/main/trunk/; revision=3058 --- pym/portage.py | 52 +++++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 25 deletions(-) (limited to 'pym/portage.py') diff --git a/pym/portage.py b/pym/portage.py index 0c348bd48..3b69bebc6 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -1853,6 +1853,33 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks", del missingSourceHost can_fetch=True + + if not listonly: + dirmode = 02070 + filemode = 060 + modemask = 02 + distdir_dirs = ["", "cvs-src"] + if "distlocks" in features: + distdir_dirs.append(".locks") + try: + + for x in distdir_dirs: + mydir = os.path.join(mysettings["DISTDIR"], x) + if portage_util.ensure_dirs(mydir, gid=portage_gid, mode=dirmode, mask=modemask): + writemsg("Adjusting permissions recursively: '%s'\n" % mydir) + def onerror(e): + raise # bail out on the first error that occurs during recursion + if not apply_recursive_permissions(mydir, + gid=portage_gid, dirmode=dirmode, dirmask=modemask, + filemode=filemode, filemask=modemask, onerror=onerror): + raise portage_exception.OperationNotPermitted( + "Failed to apply recursive permissions for the portage group.") + except portage_exception.PortageException, e: + if not os.path.dir(mysettings["DISTDIR"]): + writemsg("!!! %s\n" % str(e)) + writemsg("!!! Directory Not Found: DISTDIR='%s'\n" % mysettings["DISTDIR"]) + writemsg("!!! Fetching will fail!\n") + if not os.access(mysettings["DISTDIR"]+"/",os.W_OK): if not fetch_to_ro: print "!!! No write access to %s" % mysettings["DISTDIR"]+"/" @@ -2730,31 +2757,6 @@ def doebuild(myebuild,mydo,myroot,mysettings,debug=0,listonly=0,fetchonly=0,clea fetchme=newuris[:] checkme=alist[:] - if not listonly: - dirmode = 02070 - filemode = 060 - modemask = 02 - distdir_dirs = ["", "cvs-src"] - if "distlocks" in features: - distdir_dirs.append(".locks") - try: - - for x in distdir_dirs: - mydir = os.path.join(mysettings["DISTDIR"], x) - if portage_util.ensure_dirs(mydir, gid=portage_gid, mode=dirmode, mask=modemask): - writemsg("Adjusting permissions recursively: '%s'\n" % mydir) - def onerror(e): - raise # bail out on the first error that occurs during recursion - if not apply_recursive_permissions(mydir, - gid=portage_gid, dirmode=dirmode, dirmask=modemask, - filemode=filemode, filemask=modemask, onerror=onerror): - raise portage_exception.OperationNotPermitted( - "Failed to apply recursive permissions for the portage group.") - except portage_exception.PortageException, e: - writemsg("!!! %s\n" % str(e)) - writemsg("!!! Problem adjusting permissions on DISTDIR='%s'\n" % mysettings["DISTDIR"]) - writemsg("!!! Fetching may fail!\n") - # Only try and fetch the files if we are going to need them ... otherwise, # if user has FEATURES=noauto and they run `ebuild clean unpack compile install`, # we will try and fetch 4 times :/ -- cgit v1.2.3-1-g7c22