From b0f8b86d81642a17a4858d815e1dff5cf7559643 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 13 Jul 2006 06:54:14 +0000 Subject: Fix incorrect path handling in parts of symlink merge logic. svn path=/main/trunk/; revision=3843 --- pym/portage.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'pym/portage.py') 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)): -- cgit v1.2.3-1-g7c22