From 61921aa02bc6bd78555c77d5a22dc8714df6e39a Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 21 Jul 2007 00:24:06 +0000 Subject: [PATCH] When digest verification of a distfile fails, rename instead of unlinking it in case it's a large download and the user wants to salvage it due to a bad digest. (trunk r7325) svn path=/main/branches/2.1.2/; revision=7326 --- pym/portage.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/pym/portage.py b/pym/portage.py index cde08aa7e..b7d938237 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -2654,9 +2654,15 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks", if reason[0] == "Insufficient data for checksum verification": return 0 if can_fetch and not restrict_fetch: - writemsg("Refetching...\n\n", - noiselevel=-1) - os.unlink(myfile_path) + from tempfile import mkstemp + fd, temp_filename = mkstemp("", + myfile + "._checksum_failure_.", + mysettings["DISTDIR"]) + os.close(fd) + os.rename(myfile_path, temp_filename) + writemsg_stdout("Refetching... " + \ + "File renamed to '%s'\n\n" % \ + temp_filename, noiselevel=-1) else: eout = output.EOutput() eout.quiet = \ @@ -2819,8 +2825,15 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks", (reason[1], reason[2]), noiselevel=-1) if reason[0] == "Insufficient data for checksum verification": return 0 - writemsg("Removing corrupt distfile...\n", noiselevel=-1) - os.unlink(mysettings["DISTDIR"]+"/"+myfile) + from tempfile import mkstemp + fd, temp_filename = mkstemp("", + myfile + "._checksum_failure_.", + mysettings["DISTDIR"]) + os.close(fd) + os.rename(myfile_path, temp_filename) + writemsg_stdout("Refetching... " + \ + "File renamed to '%s'\n\n" % \ + temp_filename, noiselevel=-1) fetched=0 else: eout = output.EOutput() -- 2.26.2