summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-02-12 03:53:07 +0000
committerZac Medico <zmedico@gentoo.org>2009-02-12 03:53:07 +0000
commitf3c52f0bc6869e92ff888387fed3c95048f77eda (patch)
tree28eecfadc27480b4d758243b51933352695d5d69
parent676495936bdde5a8992e867d963381fcfecbeec6 (diff)
downloadportage-f3c52f0bc6869e92ff888387fed3c95048f77eda.tar.gz
portage-f3c52f0bc6869e92ff888387fed3c95048f77eda.tar.bz2
portage-f3c52f0bc6869e92ff888387fed3c95048f77eda.zip
Inside portage.fetch(), check for the case where FETCOMMAND creates a
directory where a file is expected. This can happen if FETCHCOMMAND erroneously contains wget's -P option where it should instead have -O, as reported in bug #258433, comment #16. svn path=/main/trunk/; revision=12601
-rw-r--r--pym/portage/__init__.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py
index 3c4ceb819..de36e060b 100644
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@ -3816,6 +3816,14 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks",
pass
if mystat is not None:
+ if stat.S_ISDIR(mystat.st_mode):
+ portage.util.writemsg_level(
+ ("!!! Unable to fetch file since " + \
+ "a directory is in the way: \n" + \
+ "!!! %s\n") % myfile_path,
+ level=logging.ERROR, noiselevel=-1)
+ return 0
+
if mystat.st_size == 0:
if distdir_writable:
try:
@@ -4065,9 +4073,11 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks",
#resume mode:
writemsg(">>> Resuming download...\n")
locfetch=resumecommand
+ command_var = resumecommand_var
else:
#normal mode:
locfetch=fetchcommand
+ command_var = fetchcommand_var
writemsg_stdout(">>> Downloading '%s'\n" % \
re.sub(r'//(.+):.+@(.+)/',r'//\1:*password*@\2/', loc))
variables = {
@@ -4115,6 +4125,25 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks",
del e
fetched = 0
else:
+
+ if stat.S_ISDIR(mystat.st_mode):
+ # This can happen if FETCHCOMMAND erroneously
+ # contains wget's -P option where it should
+ # instead have -O.
+ portage.util.writemsg_level(
+ ("!!! The command specified in the " + \
+ "%s variable appears to have\n!!! " + \
+ "created a directory instead of a " + \
+ "normal file.\n") % command_var,
+ level=logging.ERROR, noiselevel=-1)
+ portage.util.writemsg_level(
+ "!!! Refer to the make.conf(5) " + \
+ "man page for information about how " + \
+ "to\n!!! correctly specify " + \
+ "FETCHCOMMAND and RESUMECOMMAND.\n",
+ level=logging.ERROR, noiselevel=-1)
+ return 0
+
# no exception? file exists. let digestcheck() report
# an appropriately for size or checksum errors