##// END OF EJS Templates
merged some docs, and fixed setup.py platform check
marcink -
r1227:2182a200 default
parent child Browse files
Show More
@@ -32,7 +32,7 b' threadpool_workers = 5'
32 32 threadpool_max_requests = 6
33 33
34 34 ##option to use threads of process
35 use_threadpool = false
35 use_threadpool = true
36 36
37 37 use = egg:Paste#http
38 38 host = 0.0.0.0
@@ -45,6 +45,7 b' static_files = true'
45 45 lang=en
46 46 cache_dir = %(here)s/data
47 47 index_dir = %(here)s/data/index
48 app_instance_uuid = develop
48 49 cut_off_limit = 256000
49 50 force_https = false
50 51
@@ -70,7 +71,7 b' celery.result.serialier = json'
70 71 celeryd.concurrency = 2
71 72 #celeryd.log.file = celeryd.log
72 73 celeryd.log.level = debug
73 celeryd.max.tasks.per.child = 3
74 celeryd.max.tasks.per.child = 1
74 75
75 76 #tasks will never be sent to the queue, but executed locally instead.
76 77 celery.always.eager = false
@@ -78,8 +79,9 b' celery.always.eager = false'
78 79 ####################################
79 80 ### BEAKER CACHE ####
80 81 ####################################
81 beaker.cache.data_dir=/%(here)s/data/cache/data
82 beaker.cache.lock_dir=/%(here)s/data/cache/lock
82 beaker.cache.data_dir=%(here)s/data/cache/data
83 beaker.cache.lock_dir=%(here)s/data/cache/lock
84
83 85 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
84 86
85 87 beaker.cache.super_short_term.type=memory
@@ -138,21 +140,21 b' logview.pylons.util = #eee'
138 140 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
139 141 #########################################################
140 142 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db
141 #sqlalchemy.db1.echo = False
142 #sqlalchemy.db1.pool_recycle = 3600
143 sqlalchemy.db1.echo = True
144 sqlalchemy.db1.pool_recycle = 3600
143 145 sqlalchemy.convert_unicode = true
144 146
145 147 ################################
146 148 ### LOGGING CONFIGURATION ####
147 149 ################################
148 150 [loggers]
149 keys = root, routes, rhodecode, sqlalchemy,beaker,templates
151 keys = root, routes, rhodecode, sqlalchemy, beaker, templates
150 152
151 153 [handlers]
152 keys = console
154 keys = console, console_sql
153 155
154 156 [formatters]
155 keys = generic,color_formatter
157 keys = generic, color_formatter, color_formatter_sql
156 158
157 159 #############
158 160 ## LOGGERS ##
@@ -163,32 +165,32 b' handlers = console'
163 165
164 166 [logger_routes]
165 167 level = DEBUG
166 handlers = console
168 handlers =
167 169 qualname = routes.middleware
168 170 # "level = DEBUG" logs the route matched and routing variables.
169 propagate = 0
171 propagate = 1
170 172
171 173 [logger_beaker]
172 level = ERROR
173 handlers = console
174 level = DEBUG
175 handlers =
174 176 qualname = beaker.container
175 propagate = 0
177 propagate = 1
176 178
177 179 [logger_templates]
178 180 level = INFO
179 handlers = console
181 handlers =
180 182 qualname = pylons.templating
181 propagate = 0
183 propagate = 1
182 184
183 185 [logger_rhodecode]
184 186 level = DEBUG
185 handlers = console
187 handlers =
186 188 qualname = rhodecode
187 propagate = 0
189 propagate = 1
188 190
189 191 [logger_sqlalchemy]
190 level = ERROR
191 handlers = console
192 level = INFO
193 handlers = console_sql
192 194 qualname = sqlalchemy.engine
193 195 propagate = 0
194 196
@@ -202,6 +204,12 b' args = (sys.stderr,)'
202 204 level = NOTSET
203 205 formatter = color_formatter
204 206
207 [handler_console_sql]
208 class = StreamHandler
209 args = (sys.stderr,)
210 level = NOTSET
211 formatter = color_formatter_sql
212
205 213 ################
206 214 ## FORMATTERS ##
207 215 ################
@@ -213,4 +221,9 b' datefmt = %Y-%m-%d %H:%M:%S'
213 221 [formatter_color_formatter]
214 222 class=rhodecode.lib.colored_formatter.ColorFormatter
215 223 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
224 datefmt = %Y-%m-%d %H:%M:%S
225
226 [formatter_color_formatter_sql]
227 class=rhodecode.lib.colored_formatter.ColorFormatterSql
228 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
216 229 datefmt = %Y-%m-%d %H:%M:%S No newline at end of file
@@ -53,5 +53,4 b' Other topics'
53 53 .. _git: http://git-scm.com/
54 54 .. _celery: http://celeryproject.org/
55 55 .. _Sphinx: http://sphinx.pocoo.org/
56 .. _GPL: http://www.gnu.org/licenses/gpl.html
57 .. _vcs: http://pypi.python.org/pypi/vcs
56 .. _vcs: http://pypi.python.org/pypi/vcs No newline at end of file
@@ -10,7 +10,7 b' Setting up RhodeCode'
10 10 First, you will need to create a RhodeCode configuration file. Run the following
11 11 command to do this::
12 12
13 paster make-config RhodeCode production.ini
13 paster make-config RhodeCode production.ini
14 14
15 15 - This will create the file `production.ini` in the current directory. This
16 16 configuration file contains the various settings for RhodeCode, e.g proxy port,
@@ -23,7 +23,7 b' default ensure you properly adjust the d'
23 23 configuration file to use this other database. Create the databases by running
24 24 the following command::
25 25
26 paster setup-app production.ini
26 paster setup-app production.ini
27 27
28 28 This will prompt you for a "root" path. This "root" path is the location where
29 29 RhodeCode will store all of its repositories on the current machine. After
@@ -43,7 +43,7 b' for the initial admin account which ``se'
43 43
44 44 You are now ready to use RhodeCode, to run it simply execute::
45 45
46 paster serve production.ini
46 paster serve production.ini
47 47
48 48 - This command runs the RhodeCode server. The web app should be available at the
49 49 127.0.0.1:5000. This ip and port is configurable via the production.ini
@@ -60,7 +60,7 b' repositories. Then choose Add New Reposi'
60 60 the root. Test that you can browse your repository from within RhodeCode and then
61 61 try cloning your repository from RhodeCode with::
62 62
63 hg clone http://127.0.0.1:5000/<repository name>
63 hg clone http://127.0.0.1:5000/<repository name>
64 64
65 65 where *repository name* is replaced by the name of your repository.
66 66
@@ -307,12 +307,11 b' http://wiki.pylonshq.com/display/pylonsc'
307 307 Apache as subdirectory
308 308 ----------------------
309 309
310
311 310 Apache subdirectory part::
312 311
313 <Location /rhodecode>
314 ProxyPass http://127.0.0.1:59542/rhodecode
315 ProxyPassReverse http://127.0.0.1:59542/rhodecode
312 <Location /<someprefix> >
313 ProxyPass http://127.0.0.1:5000/<someprefix>
314 ProxyPassReverse http://127.0.0.1:5000/<someprefix>
316 315 SetEnvIf X-Url-Scheme https HTTPS=1
317 316 </Location>
318 317
@@ -327,6 +326,8 b' Add the following at the end of the .ini'
327 326 prefix = /<someprefix>
328 327
329 328
329 then change <someprefix> into your choosen prefix
330
330 331 Apache's example FCGI config
331 332 ----------------------------
332 333
@@ -15,7 +15,8 b' This file can also be run as a script to'
15 15 """
16 16 import sys
17 17 DEFAULT_VERSION = "0.6c9"
18 DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
18 DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" \
19 % sys.version[:3]
19 20
20 21 md5_data = {
21 22 'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca',
@@ -54,25 +55,27 b' md5_data = {'
54 55 'setuptools-0.6c9-py2.6.egg': 'ca37b1ff16fa2ede6e19383e7b59245a',
55 56 }
56 57
57 import sys, os
58 try: from hashlib import md5
59 except ImportError: from md5 import md5
58 import os
59
60 try:
61 from hashlib import md5
62 except ImportError:
63 from md5 import md5
64
60 65
61 66 def _validate_md5(egg_name, data):
62 67 if egg_name in md5_data:
63 68 digest = md5(data).hexdigest()
64 69 if digest != md5_data[egg_name]:
65 print >>sys.stderr, (
70 print >> sys.stderr, (
66 71 "md5 validation of %s failed! (Possible download problem?)"
67 % egg_name
68 )
72 % egg_name)
69 73 sys.exit(2)
70 74 return data
71 75
72 def use_setuptools(
73 version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
74 download_delay=15
75 ):
76
77 def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
78 to_dir=os.curdir, download_delay=15):
76 79 """Automatically find/download setuptools and make it available on sys.path
77 80
78 81 `version` should be a valid setuptools version number that is available
@@ -84,25 +87,29 b' def use_setuptools('
84 87 this routine will print a message to ``sys.stderr`` and raise SystemExit in
85 88 an attempt to abort the calling script.
86 89 """
87 was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules
90 was_imported = 'pkg_resources' in sys.modules or ('setuptools' in
91 sys.modules)
92
88 93 def do_download():
89 egg = download_setuptools(version, download_base, to_dir, download_delay)
94 egg = download_setuptools(version, download_base, to_dir,
95 download_delay)
90 96 sys.path.insert(0, egg)
91 import setuptools; setuptools.bootstrap_install_from = egg
97 import setuptools
98 setuptools.bootstrap_install_from = egg
92 99 try:
93 100 import pkg_resources
94 101 except ImportError:
95 return do_download()
102 return do_download()
96 103 try:
97 pkg_resources.require("setuptools>="+version); return
104 pkg_resources.require("setuptools>=" + version)
105 return
98 106 except pkg_resources.VersionConflict, e:
99 107 if was_imported:
100 print >>sys.stderr, (
108 print >> sys.stderr, (
101 109 "The required version of setuptools (>=%s) is not available, and\n"
102 110 "can't be installed while this script is running. Please install\n"
103 111 " a more recent version first, using 'easy_install -U setuptools'."
104 "\n\n(Currently using %r)"
105 ) % (version, e.args[0])
112 "\n\n(Currently using %r)") % (version, e.args[0])
106 113 sys.exit(2)
107 114 else:
108 115 del pkg_resources, sys.modules['pkg_resources'] # reload ok
@@ -110,19 +117,20 b' def use_setuptools('
110 117 except pkg_resources.DistributionNotFound:
111 118 return do_download()
112 119
113 def download_setuptools(
114 version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
115 delay = 15
116 ):
120
121 def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
122 to_dir=os.curdir, delay=15):
117 123 """Download setuptools from a specified location and return its filename
118 124
119 125 `version` should be a valid setuptools version number that is available
120 126 as an egg for download under the `download_base` URL (which should end
121 127 with a '/'). `to_dir` is the directory where the egg will be downloaded.
122 `delay` is the number of seconds to pause before an actual download attempt.
128 `delay` is the number of seconds to pause before an actual download
129 attempt.
123 130 """
124 import urllib2, shutil
125 egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3])
131 import urllib2
132
133 egg_name = "setuptools-%s-py%s.egg" % (version, sys.version[:3])
126 134 url = download_base + egg_name
127 135 saveto = os.path.join(to_dir, egg_name)
128 136 src = dst = None
@@ -144,54 +152,24 b' I will start the download in %d seconds.'
144 152
145 153 and place it in this directory before rerunning this script.)
146 154 ---------------------------------------------------------------------------""",
147 version, download_base, delay, url
148 ); from time import sleep; sleep(delay)
155 version, download_base, delay, url)
156 from time import sleep
157 sleep(delay)
149 158 log.warn("Downloading %s", url)
150 159 src = urllib2.urlopen(url)
151 160 # Read/write all in one block, so we don't create a corrupt file
152 161 # if the download is interrupted.
153 162 data = _validate_md5(egg_name, src.read())
154 dst = open(saveto,"wb"); dst.write(data)
163 dst = open(saveto, "wb")
164 dst.write(data)
155 165 finally:
156 if src: src.close()
157 if dst: dst.close()
166 if src:
167 src.close()
168 if dst:
169 dst.close()
158 170 return os.path.realpath(saveto)
159 171
160 172
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195 173 def main(argv, version=DEFAULT_VERSION):
196 174 """Install or upgrade setuptools and EasyInstall"""
197 175 try:
@@ -200,21 +178,21 b' def main(argv, version=DEFAULT_VERSION):'
200 178 egg = None
201 179 try:
202 180 egg = download_setuptools(version, delay=0)
203 sys.path.insert(0,egg)
181 sys.path.insert(0, egg)
204 182 from setuptools.command.easy_install import main
205 return main(list(argv)+[egg]) # we're done here
183 return main(list(argv) + [egg]) # we're done here
206 184 finally:
207 185 if egg and os.path.exists(egg):
208 186 os.unlink(egg)
209 187 else:
210 188 if setuptools.__version__ == '0.0.1':
211 print >>sys.stderr, (
189 print >> sys.stderr, (
212 190 "You have an obsolete version of setuptools installed. Please\n"
213 "remove it from your system entirely before rerunning this script."
214 )
191 "remove it from your system entirely before rerunning"
192 " this script.")
215 193 sys.exit(2)
216 194
217 req = "setuptools>="+version
195 req = "setuptools>=" + version
218 196 import pkg_resources
219 197 try:
220 198 pkg_resources.require(req)
@@ -223,16 +201,18 b' def main(argv, version=DEFAULT_VERSION):'
223 201 from setuptools.command.easy_install import main
224 202 except ImportError:
225 203 from easy_install import main
226 main(list(argv)+[download_setuptools(delay=0)])
227 sys.exit(0) # try to force an exit
204 main(list(argv) + [download_setuptools(delay=0)])
205 sys.exit(0) # try to force an exit
228 206 else:
229 207 if argv:
230 208 from setuptools.command.easy_install import main
231 209 main(argv)
232 210 else:
233 print "Setuptools version",version,"or greater has been installed."
211 print "Setuptools version", version, ("or greater has "
212 "been installed.")
234 213 print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)'
235 214
215
236 216 def update_md5(filenames):
237 217 """Update our built-in md5 registry"""
238 218
@@ -240,7 +220,7 b' def update_md5(filenames):'
240 220
241 221 for name in filenames:
242 222 base = os.path.basename(name)
243 f = open(name,'rb')
223 f = open(name, 'rb')
244 224 md5_data[base] = md5(f.read()).hexdigest()
245 225 f.close()
246 226
@@ -250,27 +230,23 b' def update_md5(filenames):'
250 230
251 231 import inspect
252 232 srcfile = inspect.getsourcefile(sys.modules[__name__])
253 f = open(srcfile, 'rb'); src = f.read(); f.close()
233 f = open(srcfile, 'rb')
234 src = f.read()
235 f.close()
254 236
255 237 match = re.search("\nmd5_data = {\n([^}]+)}", src)
256 238 if not match:
257 print >>sys.stderr, "Internal error!"
239 print >> sys.stderr, "Internal error!"
258 240 sys.exit(2)
259 241
260 242 src = src[:match.start(1)] + repl + src[match.end(1):]
261 f = open(srcfile,'w')
243 f = open(srcfile, 'w')
262 244 f.write(src)
263 245 f.close()
264 246
265 247
266 if __name__=='__main__':
267 if len(sys.argv)>2 and sys.argv[1]=='--md5update':
248 if __name__ == '__main__':
249 if len(sys.argv) > 2 and sys.argv[1] == '--md5update':
268 250 update_md5(sys.argv[2:])
269 251 else:
270 252 main(sys.argv[1:])
271
272
273
274
275
276
@@ -1,6 +1,6 b''
1 1 ################################################################################
2 2 ################################################################################
3 # rhodecode - Pylons environment configuration #
3 # RhodeCode - Pylons environment configuration #
4 4 # #
5 5 # The %(here)s variable will be replaced with the parent directory of this file#
6 6 ################################################################################
@@ -10,7 +10,7 b' debug = true'
10 10 ################################################################################
11 11 ## Uncomment and replace with the address which should receive ##
12 12 ## any error reports after application crash ##
13 ## Additionally those settings will be used by rhodecode mailing system ##
13 ## Additionally those settings will be used by RhodeCode mailing system ##
14 14 ################################################################################
15 15 #email_to = admin@localhost
16 16 #error_email_from = paste_error@localhost
@@ -78,8 +78,9 b' celery.always.eager = false'
78 78 ####################################
79 79 ### BEAKER CACHE ####
80 80 ####################################
81 beaker.cache.data_dir=/%(here)s/data/cache/data
82 beaker.cache.lock_dir=/%(here)s/data/cache/lock
81 beaker.cache.data_dir=%(here)s/data/cache/data
82 beaker.cache.lock_dir=%(here)s/data/cache/lock
83
83 84 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
84 85
85 86 beaker.cache.super_short_term.type=memory
@@ -147,37 +148,49 b' sqlalchemy.convert_unicode = true'
147 148 ### LOGGING CONFIGURATION ####
148 149 ################################
149 150 [loggers]
150 keys = root, routes, rhodecode, sqlalchemy
151 keys = root, routes, rhodecode, sqlalchemy, beaker, templates
151 152
152 153 [handlers]
153 keys = console
154 keys = console, console_sql
154 155
155 156 [formatters]
156 keys = generic,color_formatter
157 keys = generic, color_formatter, color_formatter_sql
157 158
158 159 #############
159 160 ## LOGGERS ##
160 161 #############
161 162 [logger_root]
162 level = INFO
163 level = NOTSET
163 164 handlers = console
164 165
165 166 [logger_routes]
166 level = INFO
167 handlers = console
167 level = DEBUG
168 handlers =
168 169 qualname = routes.middleware
169 170 # "level = DEBUG" logs the route matched and routing variables.
170 propagate = 0
171 propagate = 1
172
173 [logger_beaker]
174 level = DEBUG
175 handlers =
176 qualname = beaker.container
177 propagate = 1
178
179 [logger_templates]
180 level = INFO
181 handlers =
182 qualname = pylons.templating
183 propagate = 1
171 184
172 185 [logger_rhodecode]
173 186 level = DEBUG
174 handlers = console
187 handlers =
175 188 qualname = rhodecode
176 propagate = 0
189 propagate = 1
177 190
178 191 [logger_sqlalchemy]
179 level = ERROR
180 handlers = console
192 level = INFO
193 handlers = console_sql
181 194 qualname = sqlalchemy.engine
182 195 propagate = 0
183 196
@@ -188,9 +201,15 b' propagate = 0'
188 201 [handler_console]
189 202 class = StreamHandler
190 203 args = (sys.stderr,)
191 level = NOTSET
204 level = INFO
192 205 formatter = color_formatter
193 206
207 [handler_console_sql]
208 class = StreamHandler
209 args = (sys.stderr,)
210 level = WARN
211 formatter = color_formatter_sql
212
194 213 ################
195 214 ## FORMATTERS ##
196 215 ################
@@ -202,4 +221,9 b' datefmt = %Y-%m-%d %H:%M:%S'
202 221 [formatter_color_formatter]
203 222 class=rhodecode.lib.colored_formatter.ColorFormatter
204 223 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
224 datefmt = %Y-%m-%d %H:%M:%S
225
226 [formatter_color_formatter_sql]
227 class=rhodecode.lib.colored_formatter.ColorFormatterSql
228 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
205 229 datefmt = %Y-%m-%d %H:%M:%S No newline at end of file
@@ -2,6 +2,7 b' import sys'
2 2 from rhodecode import get_version
3 3 from rhodecode import __platform__
4 4 from rhodecode import __license__
5 from rhodecode import PLATFORM_OTHERS
5 6
6 7 py_version = sys.version_info
7 8
@@ -36,7 +37,7 b' if py_version < (2, 6):'
36 37 requirements.append("simplejson")
37 38 requirements.append("pysqlite")
38 39
39 if __platform__ in ('Linux', 'Darwin'):
40 if __platform__ in PLATFORM_OTHERS:
40 41 requirements.append("py-bcrypt")
41 42
42 43
General Comments 0
You need to be logged in to leave comments. Login now