diff --git a/pythonbrew/define.py b/pythonbrew/define.py index 4b8b97b..71e33a5 100644 --- a/pythonbrew/define.py +++ b/pythonbrew/define.py @@ -1,4 +1,6 @@ import os +import re +import ConfigParser VERSION = "0.6.8" @@ -28,38 +30,31 @@ PATH_PATCHES_MACOSX_PYTHON24 = os.path.join(PATH_PATCHES_MACOSX,"python24") PATH_BIN_PYTHONBREW = os.path.join(PATH_BIN,'pythonbrew') PATH_ETC_CURRENT = os.path.join(PATH_ETC,'current') PATH_ETC_TEMP = os.path.join(PATH_ETC,'temp') +PATH_ETC_CONFIG = os.path.join(PATH_ETC,'config.cfg') + +# read config.cfg +config = ConfigParser.SafeConfigParser() +config.read([PATH_ETC_CONFIG, os.path.join(INSTALLER_ROOT,'etc','config.cfg')]) # setuptools download -DISTRIBUTE_SETUP_DLSITE = "http://python-distribute.org/distribute_setup.py" +DISTRIBUTE_SETUP_DLSITE = config.get('distribute', 'url') # pythonbrew download -PYTHONBREW_UPDATE_URL_HEAD = "http://github.com/utahta/pythonbrew/tarball/master" -PYTHONBREW_UPDATE_URL_PYPI = "http://pypi.python.org/packages/source/p/pythonbrew/pythonbrew-%s.tar.gz" +PYTHONBREW_UPDATE_URL_HEAD = config.get('pythonbrew', 'head') +PYTHONBREW_UPDATE_URL_PYPI = config.get('pythonbrew', 'pypi') # stable version text -PYTHONBREW_STABLE_VERSION_URL = "https://github.com/utahta/pythonbrew/raw/master/stable-version.txt" +PYTHONBREW_STABLE_VERSION_URL = config.get('pythonbrew', 'stable-version') # python download +LATEST_VERSIONS_OF_PYTHON = [] PYTHON_VERSION_URL = {} -PYTHON_VERSION_URL["1.5.2"] = "http://www.python.org/ftp/python/src/py152.tgz" -PYTHON_VERSION_URL["1.6.1"] = "http://www.python.org/download/releases/1.6.1/Python-1.6.1.tar.gz" -_PYTHON_VERSIONS_LIST = [ - "2.0", "2.0.1", - "2.1", "2.1.1", "2.1.2", "2.1.3", - "2.2", "2.2.1", "2.2.2", "2.2.3", - "2.3", "2.3.1", "2.3.2", "2.3.4", "2.3.5", "2.3.6", "2.3.7", - "2.4", "2.4.1", "2.4.2", "2.4.3", "2.4.4", "2.4.5", "2.4.6", - "2.5", "2.5.1", "2.5.2", "2.5.3", "2.5.4", "2.5.5", - "2.6", "2.6.1", "2.6.2", "2.6.3", "2.6.4", "2.6.5", "2.6.6", - "2.7", "2.7.1", - "3.0", "3.0.1", - "3.1", "3.1.1", "3.1.2", "3.1.3", - "3.2", -] -for version in _PYTHON_VERSIONS_LIST: - PYTHON_VERSION_URL[version] = "http://www.python.org/ftp/python/%s/Python-%s.tgz" % (version, version) -del _PYTHON_VERSIONS_LIST - -LATEST_VERSIONS_OF_PYTHON = ['1.5.2', '1.6.1', - '2.0.1', '2.1.3', '2.2.3', '2.3.7', '2.4.6', '2.5.5', '2.6.6', '2.7.1', - '3.0.1', '3.1.3', '3.2'] +PYTHON_VERSION_URL["1.5.6"] = config.get('Python-1.5.6', 'url') +PYTHON_VERSION_URL["1.6.1"] = config.get('Python-1.6.1', 'url') +for section in sorted(config.sections()): + m = re.search("^Python-(.*)$", section) + if m: + version = m.group(1) + PYTHON_VERSION_URL[version] = config.get(section, 'url') + if config.has_option(section, 'latest') and config.getboolean(section, 'latest'): + LATEST_VERSIONS_OF_PYTHON.append(version) diff --git a/pythonbrew/scripts/bashrc b/pythonbrew/etc/bashrc similarity index 100% rename from pythonbrew/scripts/bashrc rename to pythonbrew/etc/bashrc diff --git a/pythonbrew/etc/config.cfg b/pythonbrew/etc/config.cfg new file mode 100644 index 0000000..a03efd2 --- /dev/null +++ b/pythonbrew/etc/config.cfg @@ -0,0 +1,165 @@ +[distribute] +url = "http://python-distribute.org/distribute_setup.py" + +[pythonbrew] +head = 'http://github.com/utahta/pythonbrew/tarball/master' +pypi = 'http://pypi.python.org/packages/source/p/pythonbrew/pythonbrew-%%s.tar.gz' +stable-version = 'https://github.com/utahta/pythonbrew/raw/master/stable-version.txt' + +[Python-1.5.6] +url = http://www.python.org/ftp/python/src/py152.tgz +latest = True + +[Python-1.6.1] +url = http://www.python.org/download/releases/1.6.1/Python-1.6.1.tar.gz +latest = True + +[Python-2.0] +url = http://www.python.org/ftp/python/2.0/Python-2.0.tgz + +[Python-2.0.1] +url = http://www.python.org/ftp/python/2.0.1/Python-2.0.1.tgz +latest = True + +[Python-2.1] +url = http://www.python.org/ftp/python/2.1/Python-2.1.tgz + +[Python-2.1.1] +url = http://www.python.org/ftp/python/2.1.1/Python-2.1.1.tgz + +[Python-2.1.2] +url = http://www.python.org/ftp/python/2.1.2/Python-2.1.2.tgz + +[Python-2.1.3] +url = http://www.python.org/ftp/python/2.1.3/Python-2.1.3.tgz +latest = True + +[Python-2.2] +url = http://www.python.org/ftp/python/2.2/Python-2.2.tgz + +[Python-2.2.1] +url = http://www.python.org/ftp/python/2.2.1/Python-2.2.1.tgz + +[Python-2.2.2] +url = http://www.python.org/ftp/python/2.2.2/Python-2.2.2.tgz + +[Python-2.2.3] +url = http://www.python.org/ftp/python/2.2.3/Python-2.2.3.tgz +latest = True + +[Python-2.3] +url = http://www.python.org/ftp/python/2.3/Python-2.3.tgz + +[Python-2.3.1] +url = http://www.python.org/ftp/python/2.3.1/Python-2.3.1.tgz + +[Python-2.3.2] +url = http://www.python.org/ftp/python/2.3.2/Python-2.3.2.tgz + +[Python-2.3.4] +url = http://www.python.org/ftp/python/2.3.4/Python-2.3.4.tgz + +[Python-2.3.5] +url = http://www.python.org/ftp/python/2.3.5/Python-2.3.5.tgz + +[Python-2.3.6] +url = http://www.python.org/ftp/python/2.3.6/Python-2.3.6.tgz + +[Python-2.3.7] +url = http://www.python.org/ftp/python/2.3.7/Python-2.3.7.tgz +latest = True + +[Python-2.4] +url = http://www.python.org/ftp/python/2.4/Python-2.4.tgz + +[Python-2.4.1] +url = http://www.python.org/ftp/python/2.4.1/Python-2.4.1.tgz + +[Python-2.4.2] +url = http://www.python.org/ftp/python/2.4.2/Python-2.4.2.tgz + +[Python-2.4.3] +url = http://www.python.org/ftp/python/2.4.3/Python-2.4.3.tgz + +[Python-2.4.4] +url = http://www.python.org/ftp/python/2.4.4/Python-2.4.4.tgz + +[Python-2.4.5] +url = http://www.python.org/ftp/python/2.4.5/Python-2.4.5.tgz + +[Python-2.4.6] +url = http://www.python.org/ftp/python/2.4.6/Python-2.4.6.tgz +latest = True + +[Python-2.5] +url = http://www.python.org/ftp/python/2.5/Python-2.5.tgz + +[Python-2.5.1] +url = http://www.python.org/ftp/python/2.5.1/Python-2.5.1.tgz + +[Python-2.5.2] +url = http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz + +[Python-2.5.3] +url = http://www.python.org/ftp/python/2.5.3/Python-2.5.3.tgz + +[Python-2.5.4] +url = http://www.python.org/ftp/python/2.5.4/Python-2.5.4.tgz + +[Python-2.5.5] +url = http://www.python.org/ftp/python/2.5.5/Python-2.5.5.tgz +latest = True + +[Python-2.6] +url = http://www.python.org/ftp/python/2.6/Python-2.6.tgz + +[Python-2.6.1] +url = http://www.python.org/ftp/python/2.6.1/Python-2.6.1.tgz + +[Python-2.6.2] +url = http://www.python.org/ftp/python/2.6.2/Python-2.6.2.tgz + +[Python-2.6.3] +url = http://www.python.org/ftp/python/2.6.3/Python-2.6.3.tgz + +[Python-2.6.4] +url = http://www.python.org/ftp/python/2.6.4/Python-2.6.4.tgz + +[Python-2.6.5] +url = http://www.python.org/ftp/python/2.6.5/Python-2.6.5.tgz + +[Python-2.6.6] +url = http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz +latest = True + +[Python-2.7] +url = http://www.python.org/ftp/python/2.7/Python-2.7.tgz + +[Python-2.7.1] +url = http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz +latest = True + +[Python-3.0] +url = http://www.python.org/ftp/python/3.0/Python-3.0.tgz + +[Python-3.0.1] +url = http://www.python.org/ftp/python/3.0.1/Python-3.0.1.tgz +latest = True + +[Python-3.1] +url = http://www.python.org/ftp/python/3.1/Python-3.1.tgz + +[Python-3.1.1] +url = http://www.python.org/ftp/python/3.1.1/Python-3.1.1.tgz + +[Python-3.1.2] +url = http://www.python.org/ftp/python/3.1.2/Python-3.1.2.tgz + +[Python-3.1.3] +url = http://www.python.org/ftp/python/3.1.3/Python-3.1.3.tgz +latest = True + +[Python-3.2] +url = http://www.python.org/ftp/python/3.2/Python-3.2.tgz +latest = True + diff --git a/pythonbrew/installer.py b/pythonbrew/installer.py index b917192..d2724b6 100644 --- a/pythonbrew/installer.py +++ b/pythonbrew/installer.py @@ -13,21 +13,16 @@ from pythonbrew.define import PATH_BUILD, PATH_BIN, PATH_DISTS, PATH_PYTHONS,\ PATH_ETC, PATH_SCRIPTS, PATH_SCRIPTS_PYTHONBREW,\ PATH_SCRIPTS_PYTHONBREW_COMMANDS, INSTALLER_ROOT, PATH_BIN_PYTHONBREW,\ ROOT, PATH_LOG, DISTRIBUTE_SETUP_DLSITE, PATH_PATCHES,\ - PATH_PATCHES_MACOSX_PYTHON25, PATH_PATCHES_MACOSX_PYTHON24 + PATH_PATCHES_MACOSX_PYTHON25, PATH_PATCHES_MACOSX_PYTHON24, PATH_ETC_CONFIG from pythonbrew.downloader import get_python_version_url, Downloader,\ get_headerinfo_from_url from pythonbrew.log import logger def install_pythonbrew(): PythonbrewInstaller().install(INSTALLER_ROOT) - - m = re.search("(t?csh)", os.environ.get("SHELL")) - if m: - shrc = "cshrc" - yourshrc = m.group(1)+"rc" - else: - shrc = yourshrc = "bashrc" + # pythonbrew is only for bash + shrc = yourshrc = "bashrc" logger.info(""" Well-done! Congratulations! @@ -84,7 +79,7 @@ class PythonbrewInstaller(object): rm_r(PATH_PATCHES) shutil.copytree(os.path.join(installer_root,"patches"), PATH_PATCHES) - # create main file + # create a main file fp = open("%s/pythonbrew_main.py" % PATH_SCRIPTS, "w") fp.write("""import pythonbrew if __name__ == "__main__": @@ -92,7 +87,7 @@ if __name__ == "__main__": """) fp.close() - # create entry point + # create entry point file fp = open(PATH_BIN_PYTHONBREW, "w") fp.write("""#!/usr/bin/env bash %s %s/pythonbrew_main.py "$@" @@ -100,13 +95,15 @@ if __name__ == "__main__": fp.close() os.chmod(PATH_BIN_PYTHONBREW, 0755) - # create bashrc + # create a bashrc for pythonbrew fp = open(os.path.join(PATH_ETC,'bashrc'), 'w') - for line in open(os.path.join(installer_root,'scripts','bashrc')): + for line in open(os.path.join(installer_root,'etc','bashrc')): line = line.replace('@ROOT@', ROOT) fp.write(line) fp.close() - os.system("echo 'setenv PATH %s/bin:%s/current/bin:$PATH' > %s/cshrc" % (ROOT, PATH_PYTHONS, PATH_ETC)) + + # copy config.cfg + shutil.copy(os.path.join(installer_root,'etc','config.cfg'), PATH_ETC_CONFIG) class PythonInstaller(object): def __init__(self, arg, options):