diff options
author | Zac Medico <zmedico@gentoo.org> | 2006-04-03 03:59:26 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2006-04-03 03:59:26 +0000 |
commit | 09a00db962e429d0247ab6209ec312dde5b00866 (patch) | |
tree | bf19e589cee023393d1cde88eb3e265b2953bee6 /pym/portage.py | |
parent | 1de0260346ad4c9862b5699d9e82a2d1c74eef2d (diff) | |
download | portage-09a00db962e429d0247ab6209ec312dde5b00866.tar.gz portage-09a00db962e429d0247ab6209ec312dde5b00866.tar.bz2 portage-09a00db962e429d0247ab6209ec312dde5b00866.zip |
Move DISTDIR initialization from doebuild to fetch and handle read-only file system errors for bug #128506.
svn path=/main/trunk/; revision=3058
Diffstat (limited to 'pym/portage.py')
-rw-r--r-- | pym/portage.py | 52 |
1 files changed, 27 insertions, 25 deletions
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 :/ |