filemode=060, filemask=0)
return retval
elif mydo == "preinst":
- mysettings["IMAGE"] = mysettings["D"]
phase_retval = spawn(" ".join((EBUILD_SH_BINARY, mydo)),
mysettings, debug=debug, free=1, logfile=logfile)
if phase_retval == os.EX_OK:
if phase_retval != os.EX_OK:
writemsg("!!! post preinst failed; exiting.\n",
noiselevel=-1)
- del mysettings["IMAGE"]
return phase_retval
elif mydo == "postinst":
mysettings.load_infodir(mysettings["O"])
if myroot == os.path.sep:
myroot = None
pos = 0
- for line in mylines:
- pos += 1
+ errors = []
+ for pos, line in enumerate(mylines):
if null_byte in line:
# Null bytes are a common indication of corruption.
- writemsg("!!! Null byte found in contents " + \
- "file, line %d: '%s'\n" % (pos, contents_file),
- noiselevel=-1)
+ errors.append((pos + 1, "Null byte found in CONTENTS entry"))
continue
line = line.rstrip("\n")
# Split on " " so that even file paths that
try:
splitter = mydat.index("->", 2, len(mydat) - 2)
except ValueError:
- writemsg("!!! Unrecognized CONTENTS entry on " + \
- "line %d: '%s'\n" % (pos, line), noiselevel=-1)
+ errors.append((pos + 1, "Unrecognized CONTENTS entry"))
continue
spaces_in_path = splitter - 2
spaces_in_target = spaces_total - spaces_in_path
#format: type
pkgfiles[mydat[1]] = [mydat[0]]
else:
- writemsg("!!! Unrecognized CONTENTS entry on " + \
- "line %d: '%s'\n" % (pos, line), noiselevel=-1)
+ errors.append((pos + 1, "Unrecognized CONTENTS entry"))
except (KeyError, IndexError):
- writemsg("!!! Unrecognized CONTENTS entry on " + \
- "line %d: '%s'\n" % (pos, line), noiselevel=-1)
+ errors.append((pos + 1, "Unrecognized CONTENTS entry"))
+ if errors:
+ writemsg("!!! Parse error in '%s'\n" % contents_file, noiselevel=-1)
+ for pos, e in errors:
+ writemsg("!!! line %d: %s\n" % (pos, e), noiselevel=-1)
self.contentscache = pkgfiles
return pkgfiles