Changeset - 2182a2005278
[Not reviewed]
default
0 6 0
Marcin Kuzminski - 15 years ago 2011-04-08 00:47:20
marcin@python-works.com
merged some docs, and fixed setup.py platform check
6 files changed with 147 insertions and 133 deletions:
0 comments (0 inline, 0 general)
development.ini
Show inline comments
 
@@ -32,7 +32,7 @@ threadpool_workers = 5
 
threadpool_max_requests = 6
 

	
 
##option to use threads of process
 
use_threadpool = false
 
use_threadpool = true
 

	
 
use = egg:Paste#http
 
host = 0.0.0.0
 
@@ -45,6 +45,7 @@ static_files = true
 
lang=en
 
cache_dir = %(here)s/data
 
index_dir = %(here)s/data/index
 
app_instance_uuid = develop
 
cut_off_limit = 256000
 
force_https = false
 

	
 
@@ -70,7 +71,7 @@ celery.result.serialier = json
 
celeryd.concurrency = 2
 
#celeryd.log.file = celeryd.log
 
celeryd.log.level = debug
 
celeryd.max.tasks.per.child = 3
 
celeryd.max.tasks.per.child = 1
 

	
 
#tasks will never be sent to the queue, but executed locally instead.
 
celery.always.eager = false
 
@@ -78,8 +79,9 @@ celery.always.eager = false
 
####################################
 
###         BEAKER CACHE        ####
 
####################################
 
beaker.cache.data_dir=/%(here)s/data/cache/data
 
beaker.cache.lock_dir=/%(here)s/data/cache/lock
 
beaker.cache.data_dir=%(here)s/data/cache/data
 
beaker.cache.lock_dir=%(here)s/data/cache/lock
 

	
 
beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
 

	
 
beaker.cache.super_short_term.type=memory
 
@@ -138,21 +140,21 @@ logview.pylons.util = #eee
 
### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG    ###
 
#########################################################
 
sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db
 
#sqlalchemy.db1.echo = False
 
#sqlalchemy.db1.pool_recycle = 3600
 
sqlalchemy.db1.echo = True
 
sqlalchemy.db1.pool_recycle = 3600
 
sqlalchemy.convert_unicode = true
 

	
 
################################
 
### LOGGING CONFIGURATION   ####
 
################################
 
[loggers]
 
keys = root, routes, rhodecode, sqlalchemy,beaker,templates
 
keys = root, routes, rhodecode, sqlalchemy, beaker, templates
 

	
 
[handlers]
 
keys = console
 
keys = console, console_sql
 

	
 
[formatters]
 
keys = generic,color_formatter
 
keys = generic, color_formatter, color_formatter_sql
 

	
 
#############
 
## LOGGERS ##
 
@@ -163,32 +165,32 @@ handlers = console
 

	
 
[logger_routes]
 
level = DEBUG
 
handlers = console
 
handlers = 
 
qualname = routes.middleware
 
# "level = DEBUG" logs the route matched and routing variables.
 
propagate = 0
 
propagate = 1
 

	
 
[logger_beaker]
 
level = ERROR
 
handlers = console
 
level = DEBUG
 
handlers = 
 
qualname = beaker.container
 
propagate = 0
 
propagate = 1
 

	
 
[logger_templates]
 
level = INFO
 
handlers = console
 
handlers = 
 
qualname = pylons.templating
 
propagate = 0
 
propagate = 1
 

	
 
[logger_rhodecode]
 
level = DEBUG
 
handlers = console
 
handlers = 
 
qualname = rhodecode
 
propagate = 0
 
propagate = 1
 

	
 
[logger_sqlalchemy]
 
level = ERROR
 
handlers = console
 
level = INFO
 
handlers = console_sql
 
qualname = sqlalchemy.engine
 
propagate = 0
 

	
 
@@ -202,6 +204,12 @@ args = (sys.stderr,)
 
level = NOTSET
 
formatter = color_formatter
 

	
 
[handler_console_sql]
 
class = StreamHandler
 
args = (sys.stderr,)
 
level = NOTSET
 
formatter = color_formatter_sql
 

	
 
################
 
## FORMATTERS ##
 
################
 
@@ -213,4 +221,9 @@ datefmt = %Y-%m-%d %H:%M:%S
 
[formatter_color_formatter]
 
class=rhodecode.lib.colored_formatter.ColorFormatter
 
format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
 
datefmt = %Y-%m-%d %H:%M:%S
 

	
 
[formatter_color_formatter_sql]
 
class=rhodecode.lib.colored_formatter.ColorFormatterSql
 
format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
 
datefmt = %Y-%m-%d %H:%M:%S
 
\ No newline at end of file
docs/index.rst
Show inline comments
 
@@ -53,5 +53,4 @@ Other topics
 
.. _git: http://git-scm.com/
 
.. _celery: http://celeryproject.org/
 
.. _Sphinx: http://sphinx.pocoo.org/
 
.. _GPL: http://www.gnu.org/licenses/gpl.html
 
.. _vcs: http://pypi.python.org/pypi/vcs
 
.. _vcs: http://pypi.python.org/pypi/vcs
 
\ No newline at end of file
docs/setup.rst
Show inline comments
 
@@ -10,7 +10,7 @@ Setting up RhodeCode
 
First, you will need to create a RhodeCode configuration file. Run the following
 
command to do this::
 
 
 
 paster make-config RhodeCode production.ini
 
    paster make-config RhodeCode production.ini
 

	
 
- This will create the file `production.ini` in the current directory. This
 
  configuration file contains the various settings for RhodeCode, e.g proxy port,
 
@@ -23,7 +23,7 @@ default ensure you properly adjust the d
 
configuration file to use this other database. Create the databases by running
 
the following command::
 

	
 
 paster setup-app production.ini
 
    paster setup-app production.ini
 

	
 
This will prompt you for a "root" path. This "root" path is the location where
 
RhodeCode will store all of its repositories on the current machine. After
 
@@ -43,7 +43,7 @@ for the initial admin account which ``se
 

	
 
You are now ready to use RhodeCode, to run it simply execute::
 
 
 
 paster serve production.ini
 
    paster serve production.ini
 
 
 
- This command runs the RhodeCode server. The web app should be available at the 
 
  127.0.0.1:5000. This ip and port is configurable via the production.ini 
 
@@ -60,7 +60,7 @@ repositories. Then choose Add New Reposi
 
the root. Test that you can browse your repository from within RhodeCode and then
 
try cloning your repository from RhodeCode with::
 

	
 
  hg clone http://127.0.0.1:5000/<repository name>
 
    hg clone http://127.0.0.1:5000/<repository name>
 

	
 
where *repository name* is replaced by the name of your repository.
 

	
 
@@ -307,12 +307,11 @@ http://wiki.pylonshq.com/display/pylonsc
 
Apache as subdirectory
 
----------------------
 

	
 

	
 
Apache subdirectory part::
 

	
 
    <Location /rhodecode>
 
      ProxyPass http://127.0.0.1:59542/rhodecode
 
      ProxyPassReverse http://127.0.0.1:59542/rhodecode
 
    <Location /<someprefix> >
 
      ProxyPass http://127.0.0.1:5000/<someprefix>
 
      ProxyPassReverse http://127.0.0.1:5000/<someprefix>
 
      SetEnvIf X-Url-Scheme https HTTPS=1
 
    </Location> 
 

	
 
@@ -327,6 +326,8 @@ Add the following at the end of the .ini
 
    prefix = /<someprefix> 
 

	
 

	
 
then change <someprefix> into your choosen prefix
 

	
 
Apache's example FCGI config
 
----------------------------
 

	
ez_setup.py
Show inline comments
 
@@ -15,7 +15,8 @@ This file can also be run as a script to
 
"""
 
import sys
 
DEFAULT_VERSION = "0.6c9"
 
DEFAULT_URL     = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
 
DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" \
 
    % sys.version[:3]
 

	
 
md5_data = {
 
    'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca',
 
@@ -54,25 +55,27 @@ md5_data = {
 
    'setuptools-0.6c9-py2.6.egg': 'ca37b1ff16fa2ede6e19383e7b59245a',
 
}
 

	
 
import sys, os
 
try: from hashlib import md5
 
except ImportError: from md5 import md5
 
import os
 

	
 
try:
 
    from hashlib import md5
 
except ImportError:
 
    from md5 import md5
 

	
 

	
 
def _validate_md5(egg_name, data):
 
    if egg_name in md5_data:
 
        digest = md5(data).hexdigest()
 
        if digest != md5_data[egg_name]:
 
            print >>sys.stderr, (
 
            print >> sys.stderr, (
 
                "md5 validation of %s failed!  (Possible download problem?)"
 
                % egg_name
 
            )
 
                % egg_name)
 
            sys.exit(2)
 
    return data
 

	
 
def use_setuptools(
 
    version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
 
    download_delay=15
 
):
 

	
 
def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
 
                   to_dir=os.curdir, download_delay=15):
 
    """Automatically find/download setuptools and make it available on sys.path
 

	
 
    `version` should be a valid setuptools version number that is available
 
@@ -84,25 +87,29 @@ def use_setuptools(
 
    this routine will print a message to ``sys.stderr`` and raise SystemExit in
 
    an attempt to abort the calling script.
 
    """
 
    was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules
 
    was_imported = 'pkg_resources' in sys.modules or ('setuptools' in
 
                                                      sys.modules)
 

	
 
    def do_download():
 
        egg = download_setuptools(version, download_base, to_dir, download_delay)
 
        egg = download_setuptools(version, download_base, to_dir,
 
                                  download_delay)
 
        sys.path.insert(0, egg)
 
        import setuptools; setuptools.bootstrap_install_from = egg
 
        import setuptools
 
        setuptools.bootstrap_install_from = egg
 
    try:
 
        import pkg_resources
 
    except ImportError:
 
        return do_download()       
 
        return do_download()
 
    try:
 
        pkg_resources.require("setuptools>="+version); return
 
        pkg_resources.require("setuptools>=" + version)
 
        return
 
    except pkg_resources.VersionConflict, e:
 
        if was_imported:
 
            print >>sys.stderr, (
 
            print >> sys.stderr, (
 
            "The required version of setuptools (>=%s) is not available, and\n"
 
            "can't be installed while this script is running. Please install\n"
 
            " a more recent version first, using 'easy_install -U setuptools'."
 
            "\n\n(Currently using %r)"
 
            ) % (version, e.args[0])
 
            "\n\n(Currently using %r)") % (version, e.args[0])
 
            sys.exit(2)
 
        else:
 
            del pkg_resources, sys.modules['pkg_resources']    # reload ok
 
@@ -110,19 +117,20 @@ def use_setuptools(
 
    except pkg_resources.DistributionNotFound:
 
        return do_download()
 

	
 
def download_setuptools(
 
    version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
 
    delay = 15
 
):
 

	
 
def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
 
                        to_dir=os.curdir, delay=15):
 
    """Download setuptools from a specified location and return its filename
 

	
 
    `version` should be a valid setuptools version number that is available
 
    as an egg for download under the `download_base` URL (which should end
 
    with a '/'). `to_dir` is the directory where the egg will be downloaded.
 
    `delay` is the number of seconds to pause before an actual download attempt.
 
    `delay` is the number of seconds to pause before an actual download
 
    attempt.
 
    """
 
    import urllib2, shutil
 
    egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3])
 
    import urllib2
 

	
 
    egg_name = "setuptools-%s-py%s.egg" % (version, sys.version[:3])
 
    url = download_base + egg_name
 
    saveto = os.path.join(to_dir, egg_name)
 
    src = dst = None
 
@@ -144,54 +152,24 @@ I will start the download in %d seconds.
 

	
 
and place it in this directory before rerunning this script.)
 
---------------------------------------------------------------------------""",
 
                    version, download_base, delay, url
 
                ); from time import sleep; sleep(delay)
 
                    version, download_base, delay, url)
 
                from time import sleep
 
                sleep(delay)
 
            log.warn("Downloading %s", url)
 
            src = urllib2.urlopen(url)
 
            # Read/write all in one block, so we don't create a corrupt file
 
            # if the download is interrupted.
 
            data = _validate_md5(egg_name, src.read())
 
            dst = open(saveto,"wb"); dst.write(data)
 
            dst = open(saveto, "wb")
 
            dst.write(data)
 
        finally:
 
            if src: src.close()
 
            if dst: dst.close()
 
            if src:
 
                src.close()
 
            if dst:
 
                dst.close()
 
    return os.path.realpath(saveto)
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 
def main(argv, version=DEFAULT_VERSION):
 
    """Install or upgrade setuptools and EasyInstall"""
 
    try:
 
@@ -200,21 +178,21 @@ def main(argv, version=DEFAULT_VERSION):
 
        egg = None
 
        try:
 
            egg = download_setuptools(version, delay=0)
 
            sys.path.insert(0,egg)
 
            sys.path.insert(0, egg)
 
            from setuptools.command.easy_install import main
 
            return main(list(argv)+[egg])   # we're done here
 
            return main(list(argv) + [egg])   # we're done here
 
        finally:
 
            if egg and os.path.exists(egg):
 
                os.unlink(egg)
 
    else:
 
        if setuptools.__version__ == '0.0.1':
 
            print >>sys.stderr, (
 
            print >> sys.stderr, (
 
            "You have an obsolete version of setuptools installed.  Please\n"
 
            "remove it from your system entirely before rerunning this script."
 
            )
 
            "remove it from your system entirely before rerunning"
 
            " this script.")
 
            sys.exit(2)
 

	
 
    req = "setuptools>="+version
 
    req = "setuptools>=" + version
 
    import pkg_resources
 
    try:
 
        pkg_resources.require(req)
 
@@ -223,16 +201,18 @@ def main(argv, version=DEFAULT_VERSION):
 
            from setuptools.command.easy_install import main
 
        except ImportError:
 
            from easy_install import main
 
        main(list(argv)+[download_setuptools(delay=0)])
 
        sys.exit(0) # try to force an exit
 
        main(list(argv) + [download_setuptools(delay=0)])
 
        sys.exit(0)  # try to force an exit
 
    else:
 
        if argv:
 
            from setuptools.command.easy_install import main
 
            main(argv)
 
        else:
 
            print "Setuptools version",version,"or greater has been installed."
 
            print "Setuptools version", version, ("or greater has "
 
                                                  "been installed.")
 
            print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)'
 

	
 

	
 
def update_md5(filenames):
 
    """Update our built-in md5 registry"""
 

	
 
@@ -240,7 +220,7 @@ def update_md5(filenames):
 

	
 
    for name in filenames:
 
        base = os.path.basename(name)
 
        f = open(name,'rb')
 
        f = open(name, 'rb')
 
        md5_data[base] = md5(f.read()).hexdigest()
 
        f.close()
 

	
 
@@ -250,27 +230,23 @@ def update_md5(filenames):
 

	
 
    import inspect
 
    srcfile = inspect.getsourcefile(sys.modules[__name__])
 
    f = open(srcfile, 'rb'); src = f.read(); f.close()
 
    f = open(srcfile, 'rb')
 
    src = f.read()
 
    f.close()
 

	
 
    match = re.search("\nmd5_data = {\n([^}]+)}", src)
 
    if not match:
 
        print >>sys.stderr, "Internal error!"
 
        print >> sys.stderr, "Internal error!"
 
        sys.exit(2)
 

	
 
    src = src[:match.start(1)] + repl + src[match.end(1):]
 
    f = open(srcfile,'w')
 
    f = open(srcfile, 'w')
 
    f.write(src)
 
    f.close()
 

	
 

	
 
if __name__=='__main__':
 
    if len(sys.argv)>2 and sys.argv[1]=='--md5update':
 
if __name__ == '__main__':
 
    if len(sys.argv) > 2 and sys.argv[1] == '--md5update':
 
        update_md5(sys.argv[2:])
 
    else:
 
        main(sys.argv[1:])
 

	
 

	
 

	
 

	
 

	
 

	
production.ini
Show inline comments
 
################################################################################
 
################################################################################
 
# rhodecode - Pylons environment configuration                                 #
 
# RhodeCode - Pylons environment configuration                                 #
 
#                                                                              # 
 
# The %(here)s variable will be replaced with the parent directory of this file#
 
################################################################################
 
@@ -10,7 +10,7 @@ debug = true
 
################################################################################
 
## Uncomment and replace with the address which should receive                ## 
 
## any error reports after application crash                                  ##
 
## Additionally those settings will be used by rhodecode mailing system       ##
 
## Additionally those settings will be used by RhodeCode mailing system       ##
 
################################################################################
 
#email_to = admin@localhost
 
#error_email_from = paste_error@localhost
 
@@ -78,8 +78,9 @@ celery.always.eager = false
 
####################################
 
###         BEAKER CACHE        ####
 
####################################
 
beaker.cache.data_dir=/%(here)s/data/cache/data
 
beaker.cache.lock_dir=/%(here)s/data/cache/lock
 
beaker.cache.data_dir=%(here)s/data/cache/data
 
beaker.cache.lock_dir=%(here)s/data/cache/lock
 

	
 
beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
 

	
 
beaker.cache.super_short_term.type=memory
 
@@ -147,37 +148,49 @@ sqlalchemy.convert_unicode = true
 
### LOGGING CONFIGURATION   ####
 
################################
 
[loggers]
 
keys = root, routes, rhodecode, sqlalchemy
 
keys = root, routes, rhodecode, sqlalchemy, beaker, templates
 

	
 
[handlers]
 
keys = console
 
keys = console, console_sql
 

	
 
[formatters]
 
keys = generic,color_formatter
 
keys = generic, color_formatter, color_formatter_sql
 

	
 
#############
 
## LOGGERS ##
 
#############
 
[logger_root]
 
level = INFO
 
level = NOTSET
 
handlers = console
 

	
 
[logger_routes]
 
level = INFO
 
handlers = console
 
level = DEBUG
 
handlers = 
 
qualname = routes.middleware
 
# "level = DEBUG" logs the route matched and routing variables.
 
propagate = 0
 
propagate = 1
 

	
 
[logger_beaker]
 
level = DEBUG
 
handlers = 
 
qualname = beaker.container
 
propagate = 1
 

	
 
[logger_templates]
 
level = INFO
 
handlers = 
 
qualname = pylons.templating
 
propagate = 1
 

	
 
[logger_rhodecode]
 
level = DEBUG
 
handlers = console
 
handlers = 
 
qualname = rhodecode
 
propagate = 0
 
propagate = 1
 

	
 
[logger_sqlalchemy]
 
level = ERROR
 
handlers = console
 
level = INFO
 
handlers = console_sql
 
qualname = sqlalchemy.engine
 
propagate = 0
 

	
 
@@ -188,9 +201,15 @@ propagate = 0
 
[handler_console]
 
class = StreamHandler
 
args = (sys.stderr,)
 
level = NOTSET
 
level = INFO
 
formatter = color_formatter
 

	
 
[handler_console_sql]
 
class = StreamHandler
 
args = (sys.stderr,)
 
level = WARN
 
formatter = color_formatter_sql
 

	
 
################
 
## FORMATTERS ##
 
################
 
@@ -202,4 +221,9 @@ datefmt = %Y-%m-%d %H:%M:%S
 
[formatter_color_formatter]
 
class=rhodecode.lib.colored_formatter.ColorFormatter
 
format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
 
datefmt = %Y-%m-%d %H:%M:%S
 

	
 
[formatter_color_formatter_sql]
 
class=rhodecode.lib.colored_formatter.ColorFormatterSql
 
format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
 
datefmt = %Y-%m-%d %H:%M:%S
 
\ No newline at end of file
setup.py
Show inline comments
 
@@ -2,6 +2,7 @@ import sys
 
from rhodecode import get_version
 
from rhodecode import __platform__
 
from rhodecode import __license__
 
from rhodecode import PLATFORM_OTHERS
 

	
 
py_version = sys.version_info
 

	
 
@@ -36,7 +37,7 @@ if py_version < (2, 6):
 
    requirements.append("simplejson")
 
    requirements.append("pysqlite")
 

	
 
if __platform__ in ('Linux', 'Darwin'):
 
if __platform__ in PLATFORM_OTHERS:
 
    requirements.append("py-bcrypt")
 

	
 

	
0 comments (0 inline, 0 general)