changeset 1227:2182a2005278

merged some docs, and fixed setup.py platform check
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 08 Apr 2011 00:47:20 +0200
parents ca614631c2f8
children 73434499fa72
files development.ini docs/index.rst docs/setup.rst ez_setup.py production.ini setup.py
diffstat 6 files changed, 147 insertions(+), 133 deletions(-) [+]
line wrap: on
line diff
--- a/development.ini	Tue Apr 05 20:09:34 2011 +0200
+++ b/development.ini	Fri Apr 08 00:47:20 2011 +0200
@@ -32,7 +32,7 @@
 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 @@
 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 @@
 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 @@
 ####################################
 ###         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 @@
 ### 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 @@
 
 [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 @@
 level = NOTSET
 formatter = color_formatter
 
+[handler_console_sql]
+class = StreamHandler
+args = (sys.stderr,)
+level = NOTSET
+formatter = color_formatter_sql
+
 ################
 ## FORMATTERS ##
 ################
@@ -213,4 +221,9 @@
 [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
--- a/docs/index.rst	Tue Apr 05 20:09:34 2011 +0200
+++ b/docs/index.rst	Fri Apr 08 00:47:20 2011 +0200
@@ -53,5 +53,4 @@
 .. _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
--- a/docs/setup.rst	Tue Apr 05 20:09:34 2011 +0200
+++ b/docs/setup.rst	Fri Apr 08 00:47:20 2011 +0200
@@ -10,7 +10,7 @@
 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 @@
 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 @@
 
 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 @@
 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 @@
 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 @@
     prefix = /<someprefix> 
 
 
+then change <someprefix> into your choosen prefix
+
 Apache's example FCGI config
 ----------------------------
 
--- a/ez_setup.py	Tue Apr 05 20:09:34 2011 +0200
+++ b/ez_setup.py	Fri Apr 08 00:47:20 2011 +0200
@@ -15,7 +15,8 @@
 """
 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 @@
     '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 @@
     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 @@
     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 @@
 
 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 @@
         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 @@
             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 @@
 
     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 @@
 
     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:])
-
-
-
-
-
-
--- a/production.ini	Tue Apr 05 20:09:34 2011 +0200
+++ b/production.ini	Fri Apr 08 00:47:20 2011 +0200
@@ -1,6 +1,6 @@
 ################################################################################
 ################################################################################
-# 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 @@
 ################################################################################
 ## 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 @@
 ####################################
 ###         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 @@
 ### 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 @@
 [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 @@
 [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
--- a/setup.py	Tue Apr 05 20:09:34 2011 +0200
+++ b/setup.py	Fri Apr 08 00:47:20 2011 +0200
@@ -2,6 +2,7 @@
 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 @@
     requirements.append("simplejson")
     requirements.append("pysqlite")
 
-if __platform__ in ('Linux', 'Darwin'):
+if __platform__ in PLATFORM_OTHERS:
     requirements.append("py-bcrypt")