default_use = []
for myflag in myaux["IUSE"].split():
flag_name = myflag.lstrip("+-")
+ used_useflags.add(flag_name)
if myflag != flag_name:
default_use.append(myflag)
if flag_name not in uselist:
myuse.append(flag_name)
- used_useflags.update(myuse)
# uselist checks - metadata
for mypos in range(len(myuse)-1,-1,-1):
for myflag in muselist.difference(used_useflags):
stats["metadata.warning"] += 1
fails["metadata.warning"].append(
- "unused local USE-description: '%s'" % myflag)
+ "%s/metadata.xml: unused local USE-description: '%s'" % \
+ (x, myflag))
if options.mode == "manifest":
sys.exit(dofail)
import errno, os, stat, time, types
from portage.exception import DirectoryNotFound, FileNotFound, \
- InvalidData, TryAgain
+ InvalidData, TryAgain, OperationNotPermitted, PermissionDenied
from portage.data import portage_gid
from portage.output import EOutput
from portage.util import writemsg
if type(mypath) == types.StringType:
if not os.path.exists(os.path.dirname(mypath)):
raise DirectoryNotFound(os.path.dirname(mypath))
- if not os.path.exists(lockfilename):
- old_mask=os.umask(000)
- myfd = os.open(lockfilename, os.O_CREAT|os.O_RDWR,0660)
+ preexisting = os.path.exists(lockfilename)
+ old_mask = os.umask(000)
+ try:
try:
- if os.stat(lockfilename).st_gid != portage_gid:
- os.chown(lockfilename,os.getuid(),portage_gid)
+ myfd = os.open(lockfilename, os.O_CREAT|os.O_RDWR, 0660)
except OSError, e:
- if e[0] == 2: # No such file or directory
- return lockfile(mypath, wantnewlockfile=wantnewlockfile,
- unlinkfile=unlinkfile, waiting_msg=waiting_msg,
- flags=flags)
+ func_call = "open('%s')" % lockfilename
+ if e.errno == OperationNotPermitted.errno:
+ raise OperationNotPermitted(func_call)
+ elif e.errno == PermissionDenied.errno:
+ raise PermissionDenied(func_call)
else:
- writemsg("Cannot chown a lockfile. This could cause inconvenience later.\n");
+ raise
+
+ if not preexisting:
+ try:
+ if os.stat(lockfilename).st_gid != portage_gid:
+ os.chown(lockfilename, -1, portage_gid)
+ except OSError, e:
+ if e.errno == errno.ENOENT: # No such file or directory
+ return lockfile(mypath,
+ wantnewlockfile=wantnewlockfile,
+ unlinkfile=unlinkfile, waiting_msg=waiting_msg,
+ flags=flags)
+ else:
+ writemsg("Cannot chown a lockfile. This could " + \
+ "cause inconvenience later.\n")
+
+ finally:
os.umask(old_mask)
- else:
- myfd = os.open(lockfilename, os.O_CREAT|os.O_RDWR,0660)
elif type(mypath) == types.IntType:
myfd = mypath