# dep_wordreduce and dep_eval calls.
try:
portage.dep._dep_check_strict = False
- success, atoms = portage.dep_check(depstr,
- final_db, pkgsettings, myuse=myuse,
- trees=dep_check_trees, myroot=myroot)
+ try:
+ success, atoms = portage.dep_check(depstr,
+ final_db, pkgsettings, myuse=myuse,
+ trees=dep_check_trees, myroot=myroot)
+ except Exception, e:
+ if isinstance(e, SystemExit):
+ raise
+ # This is helpful, for example, if a ValueError
+ # is thrown from cpv_expand due to multiple
+ # matches (this can happen if an atom lacks a
+ # category).
+ show_invalid_depstring_notice(
+ ("installed", myroot, pkg, "nomerge"),
+ depstr, str(e))
+ del e
+ raise
finally:
portage.dep._dep_check_strict = True
if not success:
.br
Defaults to /var/tmp.
.TP
+\fBPORTAGE_WORKDIR_MODE\fR = \fI"0700"\fR
+This variable controls permissions for \fIWORKDIR\fR (see \fBebuild\fR(5)).
+.TP
\fBPORTDIR\fR = \fI[path]\fR
Defines the location of your Portage tree.
.br
# exist before and after the transition.
required_hash_types = set(portage.const.MANIFEST1_HASH_FUNCTIONS
).intersection(portage.const.MANIFEST2_HASH_FUNCTIONS)
+ required_hash_types.add(portage.const.MANIFEST2_REQUIRED_HASH)
required_hash_types.add("size")
dist_hashes = mf.fhashdict.get("DIST", {})
missing_hashes = set()
if not hasattr(__builtins__, "set"):
from sets import Set as set
-import portage.exception, portage.versions, portage.const
+import portage.versions, portage.const
from portage.checksum import *
from portage.exception import *
from portage.util import write_atomic
except FileNotFound:
pass
+ def checkIntegrity(self):
+ for t in self.fhashdict.keys():
+ for f in self.fhashdict[t]:
+ if not portage.const.MANIFEST2_REQUIRED_HASH in self.fhashdict[t][f].keys():
+ raise MissingParameter("Missing %s checksum: %s %s" % (portage.const.MANIFEST2_REQUIRED_HASH, t, f))
+
def write(self, sign=False, force=False):
""" Write Manifest instance to disk, optionally signing it """
+ self.checkIntegrity()
try:
if self.compat:
self._writeDigests()
(assumeDistHashesAlways and mystat is None) or \
(assumeDistHashesAlways and mystat is not None and \
len(distfilehashes[f]) == len(self.hashes) and \
- distfilehashes[f]["size"] == mystat.st_size)):
+ distfilehashes[f]["size"] == mystat.st_size)) and \
+ portage.const.MANIFEST2_REQUIRED_HASH in distfilehashes[f].keys():
self.fhashdict["DIST"][f] = distfilehashes[f]
else:
try: