summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/portage_checksum.py22
1 files changed, 8 insertions, 14 deletions
diff --git a/pym/portage_checksum.py b/pym/portage_checksum.py
index 001eed8ff..66f6f181d 100644
--- a/pym/portage_checksum.py
+++ b/pym/portage_checksum.py
@@ -111,24 +111,18 @@ def perform_checksum(filename, hash_function=md5hash, calc_prelink=0):
if calc_prelink and prelink_capable:
mylock = portage_locks.lockfile(prelink_tmpfile, wantnewlockfile=1)
- # Create non-prelinked temporary file to md5sum.
- # Raw data is returned on stdout, errors on stderr.
- # Non-prelinks are just returned.
- try:
- shutil.copy2(filename,prelink_tmpfile)
- except SystemExit, e:
- raise
- except Exception,e:
- portage_util.writemsg("!!! Unable to copy file '"+str(filename)+"'.\n")
- portage_util.writemsg("!!! "+str(e)+"\n")
- raise
- portage_exec.spawn(PRELINK_BINARY+" --undo "+prelink_tmpfile,fd_pipes={})
- myfilename=prelink_tmpfile
+ # Create non-prelinked temporary file to checksum.
+ # Files rejected by prelink are summed in place.
+ retval=portage_exec.spawn([PRELINK_BINARY,"--undo","-o",prelink_tmpfile,filename],fd_pipes={})
+ if retval==0:
+ #portage_util.writemsg(">>> prelink checksum '"+str(filename)+"'.\n")
+ myfilename=prelink_tmpfile
myhash, mysize = hash_function(myfilename)
if calc_prelink and prelink_capable:
- os.unlink(prelink_tmpfile)
+ if os.path.exists(prelink_tmpfile):
+ os.unlink(prelink_tmpfile)
portage_locks.unlockfile(mylock)
return (myhash,mysize)