commit: dd377fc68bfb78c283d35b2173b47ce4837b0d35 Author: André Erdmann <dywi <AT> mailerd <DOT> de> AuthorDate: Wed Jun 25 16:06:00 2014 +0000 Commit: André Erdmann <dywi <AT> mailerd <DOT> de> CommitDate: Wed Jun 25 16:06:00 2014 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=dd377fc6
distroot, handle_file_collision(): restore src_uri_dest ... if the file collision cannot be resolved Also adds some safety checks (distfile name must not be empty and should not be rename_prefix). --- roverlay/overlay/pkgdir/distroot/distroot.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/roverlay/overlay/pkgdir/distroot/distroot.py b/roverlay/overlay/pkgdir/distroot/distroot.py index 654c1f6..9872aad 100644 --- a/roverlay/overlay/pkgdir/distroot/distroot.py +++ b/roverlay/overlay/pkgdir/distroot/distroot.py @@ -657,22 +657,33 @@ class PersistentDistroot ( DistrootBase ): if self.distmap.get_distfile_slot ( package_dir, package_info ): return True else: - distfile = package_info.get_src_uri_dest().rpartition ( os.sep ) - rename_prefix = package_info ['repo_name'].lower() + '_' - - if distfile[2][:len(rename_prefix)] == rename_prefix: + orig_src_uri_dest = package_info.get_src_uri_dest() + # distfile_dirname, distfile_os_sep, distfile_basename + distfile = orig_src_uri_dest.rpartition ( os.sep ) + rename_prefix = package_info ['repo_name'].lower() + '_' + rename_prefix_len = len ( rename_prefix ) + + assert distfile[2] + + if ( + len(distfile[2]) > rename_prefix_len + and distfile[2][:rename_prefix_len] == rename_prefix + ): # already prefixed with the repo name return False + else: package_info.update ( src_uri_dest=( distfile[0] + distfile[1] + rename_prefix + distfile[2] ) ) - #return self.distmap.get_distfile_slot(...) + if self.distmap.get_distfile_slot ( package_dir, package_info ): return True else: + # restore src_uri_dest + package_info.update ( src_uri_dest=orig_src_uri_dest ) return False # --- end of handle_file_collision (...) ---