mirror of
https://github.com/kennethreitz-archive/python-build.git
synced 2026-06-05 15:20:16 +00:00
bug fix
This commit is contained in:
@@ -1,7 +1,14 @@
|
||||
import sys
|
||||
import os
|
||||
from pythonbrew.basecommand import command_dict, load_all_commands
|
||||
from pythonbrew.baseparser import parser
|
||||
from pythonbrew.log import logger
|
||||
from pythonbrew.define import PATH_HOME_ETC
|
||||
from pythonbrew.util import makedirs
|
||||
|
||||
def init_home():
|
||||
if not os.path.isdir(PATH_HOME_ETC):
|
||||
makedirs(PATH_HOME_ETC)
|
||||
|
||||
def main():
|
||||
options, args = parser.parse_args(sys.argv[1:])
|
||||
@@ -10,13 +17,10 @@ def main():
|
||||
if not args:
|
||||
args = ['help'] # as default
|
||||
|
||||
init_home()
|
||||
load_all_commands()
|
||||
command = args[0].lower()
|
||||
if command not in command_dict:
|
||||
if command == 'clean':
|
||||
# note: for some time
|
||||
logger.log('\nDEPRECATION WARNING: `pythonbrew clean` has been renamed. Please run `pythonbrew cleanup` instead.\n')
|
||||
return
|
||||
parser.error("Unknown command: `%s`" % command)
|
||||
return
|
||||
command = command_dict[command]
|
||||
|
||||
@@ -2,7 +2,7 @@ import os
|
||||
import sys
|
||||
import subprocess
|
||||
from pythonbrew.basecommand import Command
|
||||
from pythonbrew.define import PATH_PYTHONS, BOOTSTRAP_DLSITE, PATH_DISTS
|
||||
from pythonbrew.define import PATH_PYTHONS, BOOTSTRAP_DLSITE
|
||||
from pythonbrew.util import Package, get_using_python_pkgname, Link, is_installed
|
||||
from pythonbrew.log import logger
|
||||
from pythonbrew.downloader import Downloader
|
||||
@@ -38,12 +38,13 @@ class BuildoutCommand(Command):
|
||||
# Download bootstrap.py
|
||||
download_url = BOOTSTRAP_DLSITE
|
||||
filename = Link(download_url).filename
|
||||
bootstrap = os.path.join(PATH_DISTS, filename)
|
||||
bootstrap = os.path.join(os.getcwd(), filename) # fetching into current directory
|
||||
try:
|
||||
d = Downloader()
|
||||
d.download(filename, download_url, bootstrap)
|
||||
except:
|
||||
logger.error("Failed to download. `%s`" % download_url)
|
||||
e = sys.exc_info()[1]
|
||||
logger.error("%s" % (e))
|
||||
sys.exit(1)
|
||||
|
||||
# call bootstrap.py
|
||||
|
||||
@@ -56,7 +56,7 @@ class ListCommand(Command):
|
||||
for pkgname in pkgs:
|
||||
logger.log("%s" % pkgname)
|
||||
else:
|
||||
logger.error("Python version not found. `%s`" % pkg.name)
|
||||
logger.error("`%s` was not found." % pkg.name)
|
||||
else:
|
||||
for pkgname in self._get_packages_name(options):
|
||||
logger.log("%s" % pkgname)
|
||||
|
||||
@@ -63,7 +63,7 @@ class SymlinkCommand(Command):
|
||||
venv_pkgdir = os.path.join(PATH_VENVS, pkgname)
|
||||
venv_dir = os.path.join(venv_pkgdir, options.venv)
|
||||
if not os.path.isdir(venv_dir):
|
||||
logger.error("`%s` environment not found in %s." % (options.venv, venv_pkgdir))
|
||||
logger.error("`%s` environment was not found in %s." % (options.venv, venv_pkgdir))
|
||||
sys.exit(1)
|
||||
pkg = Package(pkgname)
|
||||
if args:
|
||||
@@ -105,7 +105,7 @@ class SymlinkCommand(Command):
|
||||
if os.path.isfile(src):
|
||||
symlink(src, dst)
|
||||
else:
|
||||
logger.error("%s: File not found" % src)
|
||||
logger.error("%s was not found in your path." % src)
|
||||
|
||||
def _get_pythons(self, _pythons):
|
||||
"""Get the installed python versions list.
|
||||
|
||||
@@ -81,7 +81,7 @@ class UpdateCommand(Command):
|
||||
|
||||
download_url = get_pythonbrew_update_url(version)
|
||||
if not download_url:
|
||||
logger.error("`%s` of pythonbrew not found." % version)
|
||||
logger.error("`pythonbrew-%s` was not found in pypi." % version)
|
||||
sys.exit(1)
|
||||
headinfo = get_headerinfo_from_url(download_url)
|
||||
content_type = headinfo['content-type']
|
||||
|
||||
@@ -83,7 +83,7 @@ class VenvCommand(Command):
|
||||
logger.info('venv command is already initialized.')
|
||||
return
|
||||
if not os.access(PATH_DISTS, os.W_OK):
|
||||
logger.error("Can not write to %s: Permission denied." % PATH_DISTS)
|
||||
logger.error("Can not initialize venv command: Permission denied.")
|
||||
sys.exit(1)
|
||||
d = Downloader()
|
||||
download_file = os.path.join(PATH_DISTS, 'virtualenv.tar.gz')
|
||||
|
||||
+4
-3
@@ -4,6 +4,7 @@ import subprocess
|
||||
from subprocess import Popen, PIPE
|
||||
from pythonbrew.log import logger
|
||||
from pythonbrew.util import to_str
|
||||
from pythonbrew.exceptions import CurlFetchException
|
||||
|
||||
class Curl(object):
|
||||
def __init__(self):
|
||||
@@ -16,14 +17,14 @@ class Curl(object):
|
||||
p = Popen("curl -skL %s" % url, stdout=PIPE, shell=True)
|
||||
p.wait()
|
||||
if p.returncode:
|
||||
raise
|
||||
raise Exception('Failed to read.')
|
||||
return p.stdout.read()
|
||||
|
||||
def readheader(self, url):
|
||||
p = Popen("curl --head -skL %s" % url, stdout=PIPE, shell=True)
|
||||
p.wait()
|
||||
if p.returncode:
|
||||
raise
|
||||
raise Exception('Failed to readheader.')
|
||||
respinfo = {}
|
||||
for line in p.stdout:
|
||||
line = to_str(line.strip())
|
||||
@@ -39,4 +40,4 @@ class Curl(object):
|
||||
p = Popen("curl -# -kL %s -o %s" % (url, filename), shell=True)
|
||||
p.wait()
|
||||
if p.returncode:
|
||||
raise
|
||||
raise CurlFetchException('Failed to fetch.')
|
||||
|
||||
@@ -130,7 +130,7 @@ pybrew()
|
||||
|
||||
sudopybrew()
|
||||
{
|
||||
pythonbrew="sudo PYTHONBREW_ROOT=$PATH_ROOT $PY_PYTHONBREW"
|
||||
pythonbrew="sudo PYTHONBREW_ROOT=$PATH_ROOT PATH=$PATH_PYTHONBREW:$PATH_WITHOUT_PYTHONBREW $PY_PYTHONBREW"
|
||||
__pythonbrew_run "$@"
|
||||
}
|
||||
|
||||
|
||||
@@ -11,4 +11,6 @@ class AlreadyInstalledException(Exception):
|
||||
"""General exception during installing"""
|
||||
class NotSupportedVersionException(Exception):
|
||||
"""General exception during installing"""
|
||||
|
||||
|
||||
class CurlFetchException(Exception):
|
||||
"""Exception curl during fetching"""
|
||||
|
||||
@@ -107,7 +107,7 @@ class PythonInstaller(object):
|
||||
dl.download(base_url, self.download_url, self.download_file)
|
||||
except:
|
||||
unlink(self.download_file)
|
||||
logger.log("\nInterrupt to abort. `%s`" % (self.download_url))
|
||||
logger.error("\n%s" % (sys.exc_info()[1]))
|
||||
sys.exit(1)
|
||||
# extracting
|
||||
if not extract_downloadfile(self.content_type, self.download_file, self.build_dir):
|
||||
@@ -154,7 +154,7 @@ class PythonInstaller(object):
|
||||
else:
|
||||
s.shell("patch -p0 < %s" % patch)
|
||||
except:
|
||||
logger.error("Failed to patch `%s`" % self.build_dir)
|
||||
logger.error("Failed to patch `%s`.\n%s" % (self.build_dir, sys.exc_info()[1]))
|
||||
sys.exit(1)
|
||||
|
||||
def _add_patches_to_list(self, patch_dir, patch_files):
|
||||
|
||||
@@ -271,6 +271,11 @@ def is_str(val):
|
||||
return isinstance(val, str)
|
||||
return False
|
||||
|
||||
def is_sequence(val):
|
||||
if is_str(val):
|
||||
return False
|
||||
return (hasattr(val, "__getitem__") or hasattr(val, "__iter__"))
|
||||
|
||||
def bltin_any(iter):
|
||||
try:
|
||||
return any(iter)
|
||||
@@ -294,6 +299,8 @@ class Subprocess(object):
|
||||
def shell(self, cmd):
|
||||
if self._debug:
|
||||
logger.log(cmd)
|
||||
if is_sequence(cmd):
|
||||
cmd = ''.join(cmd)
|
||||
if self._log:
|
||||
if self._verbose:
|
||||
cmd = "(%s) 2>&1 | tee '%s'" % (cmd, self._log)
|
||||
|
||||
Reference in New Issue
Block a user