diff options
-rw-r--r-- | pym/portage.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/pym/portage.py b/pym/portage.py index 8f0609c17..acaefa30b 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -6495,8 +6495,7 @@ class dblink: myabsto=abssymlink(mysrc) if myabsto.startswith(srcroot): myabsto=myabsto[len(srcroot):] - if myabsto[0]!="/": - myabsto="/"+myabsto + myabsto = myabsto.lstrip(sep) myto=os.readlink(mysrc) if self.settings and self.settings["D"]: if myto.startswith(self.settings["D"]): @@ -6517,12 +6516,17 @@ class dblink: pass elif self.isprotected(mydest): # Use md5 of the target in ${D} if it exists... - if os.path.exists(os.path.normpath(srcroot+myabsto)): - mydest = new_protect_filename(mydest, - newmd5=portage_checksum.perform_md5(srcroot+myabsto)) - else: - mydest = new_protect_filename(mydest, - newmd5=portage_checksum.perform_md5(myabsto)) + try: + newmd5 = portage_checksum.perform_md5( + join(srcroot, myabsto)) + except portage_exception.FileNotFound: + # Maybe the target is merged already. + try: + newmd5 = portage_checksum.perform_md5( + myrealto) + except portage_exception.FileNotFound: + newmd5 = None + mydest = new_protect_filename(mydest,newmd5=newmd5) # if secondhand is None it means we're operating in "force" mode and should not create a second hand. if (secondhand!=None) and (not os.path.exists(myrealto)): |