annotate setup.py @ 6532:33b71a130b16

templates: properly escape inline JavaScript values TLDR: Kallithea has issues with escaping values for use in inline JS. Despite judicious poking of the code, no actual security vulnerabilities have been found, just lots of corner-case bugs. This patch fixes those, and hardens the code against actual security issues. The long version: To embed a Python value (typically a 'unicode' plain-text value) in a larger file, it must be escaped in a context specific manner. Example: >>> s = u'<script>alert("It\'s a trap!");</script>' 1) Escaped for insertion into HTML element context >>> print cgi.escape(s) &lt;script&gt;alert("It's a trap!");&lt;/script&gt; 2) Escaped for insertion into HTML element or attribute context >>> print h.escape(s) &lt;script&gt;alert(&#34;It&#39;s a trap!&#34;);&lt;/script&gt; This is the default Mako escaping, as usually used by Kallithea. 3) Encoded as JSON >>> print json.dumps(s) "<script>alert(\"It's a trap!\");</script>" 4) Escaped for insertion into a JavaScript file >>> print '(' + json.dumps(s) + ')' ("<script>alert(\"It's a trap!\");</script>") The parentheses are not actually required for strings, but may be needed to avoid syntax errors if the value is a number or dict (object). 5) Escaped for insertion into a HTML inline <script> element >>> print h.js(s) ("\x3cscript\x3ealert(\"It's a trap!\");\x3c/script\x3e") Here, we need to combine JS and HTML escaping, further complicated by the fact that "<script>" tag contents can either be parsed in XHTML mode (in which case '<', '>' and '&' must additionally be XML escaped) or HTML mode (in which case '</script>' must be escaped, but not using HTML escaping, which is not available in HTML "<script>" tags). Therefore, the XML special characters (which can only occur in string literals) are escaped using JavaScript string literal escape sequences. (This, incidentally, is why modern web security best practices ban all use of inline JavaScript...) Unsurprisingly, Kallithea does not do (5) correctly. In most cases, Kallithea might slap a pair of single quotes around the HTML escaped Python value. A typical benign example: $('#child_link').html('${_('No revisions')}'); This works in English, but if a localized version of the string contains an apostrophe, the result will be broken JavaScript. In the more severe cases, where the text is user controllable, it leaves the door open to injections. In this example, the script inserts the string as HTML, so Mako's implicit HTML escaping makes sense; but in many other cases, HTML escaping is actually an error, because the value is not used by the script in an HTML context. The good news is that the HTML escaping thwarts attempts at XSS, since it's impossible to inject syntactically valid JavaScript of any useful complexity. It does allow JavaScript errors and gibberish to appear on the page, though. In these cases, the escaping has been fixed to use either the new 'h.js' helper, which does JavaScript escaping (but not HTML escaping), OR the new 'h.jshtml' helper (which does both), in those cases where it was unclear if the value might be used (by the script) in an HTML context. Some of these can probably be "relaxed" from h.jshtml to h.js later, but for now, using h.jshtml fixes escaping and doesn't introduce new errors. In a few places, Kallithea JSON encodes values in the controller, then inserts the JSON (without any further escaping) into <script> tags. This is also wrong, and carries actual risk of XSS vulnerabilities. However, in all cases, security vulnerabilities were narrowly avoided due to other filtering in Kallithea. (E.g. many special characters are banned from appearing in usernames.) In these cases, the escaping has been fixed and moved to the template, making it immediately visible that proper escaping has been performed. Mini-FAQ (frequently anticipated questions): Q: Why do everything in one big, hard to review patch? Q: Why add escaping in specific case FOO, it doesn't seem needed? Because the goal here is to have "escape everywhere" as the default policy, rather than identifying individual bugs and fixing them one by one by adding escaping where needed. As such, this patch surely introduces a lot of needless escaping. This is no different from how Mako/Pylons HTML escape everything by default, even when not needed: it's errs on the side of needless work, to prevent erring on the side of skipping required (and security critical) work. As for reviewability, the most important thing to notice is not where escaping has been introduced, but any places where it might have been missed (or where h.jshtml is needed, but h.js is used). Q: The added escaping is kinda verbose/ugly. That is not a question, but yes, I agree. Hopefully it'll encourage us to move away from inline JavaScript altogether. That's a significantly larger job, though; with luck this patch will keep us safe and secure until such a time as we can implement the real fix. Q: Why not use Mako filter syntax ("${val|h.js}")? Because of long-standing Mako bug #140, preventing use of 'h' in filters. Q: Why not work around bug #140, or even use straight "${val|js}"? Because Mako still applies the default h.escape filter before the explicitly specified filters. Q: Where do we go from here? Longer term, we should stop doing variable expansions in script blocks, and instead pass data to JS via e.g. data attributes, or asynchronously using AJAX calls. Once we've done that, we can remove inline JavaScript altogether in favor of separate script files, and set a strict Content Security Policy explicitly blocking inline scripting, and thus also the most common kind of cross-site scripting attack.
author Søren Løvborg <sorenl@unity3d.com>
date Tue, 28 Feb 2017 17:19:00 +0100
parents 1f43d08ce5a8
children 2c3d30095d5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4267
bf011c9f7f58 minor fixes - mainly wording
Mads Kiilerich <madski@unity3d.com>
parents: 4253
diff changeset
1 #!/usr/bin/env python2
4005
266a3cbc0302 Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents: 3960
diff changeset
2 # -*- coding: utf-8 -*-
2563
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
3 import os
553
65c27fd21769 small fixes for distutils
Marcin Kuzminski <marcin@python-works.com>
parents: 552
diff changeset
4 import sys
2563
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
5 import platform
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
6
6033
a922e91a4f02 setup: drop ez_setup
Mads Kiilerich <madski@unity3d.com>
parents: 6032
diff changeset
7 if sys.version_info < (2, 6) or sys.version_info >= (3,):
4522
a9a1560dad79 setup: clarify that we only support 2.6 and 2.7
Mads Kiilerich <madski@unity3d.com>
parents: 4503
diff changeset
8 raise Exception('Kallithea requires python 2.6 or 2.7')
2563
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
9
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
10
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
11 here = os.path.abspath(os.path.dirname(__file__))
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
12
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
13
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
14 def _get_meta_var(name, data, callback_handler=None):
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
15 import re
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
16 matches = re.compile(r'(?:%s)\s*=\s*(.*)' % name).search(data)
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
17 if matches:
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
18 if not callable(callback_handler):
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
19 callback_handler = lambda v: v
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
20
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
21 return callback_handler(eval(matches.groups()[0]))
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
22
4186
7e5f8c12a3fc First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4185
diff changeset
23 _meta = open(os.path.join(here, 'kallithea', '__init__.py'), 'rb')
2563
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
24 _metadata = _meta.read()
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
25 _meta.close()
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
26
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
27 callback = lambda V: ('.'.join(map(str, V[:3])) + '.'.join(V[3:]))
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
28 __version__ = _get_meta_var('VERSION', _metadata, callback)
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
29 __license__ = _get_meta_var('__license__', _metadata)
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
30 __author__ = _get_meta_var('__author__', _metadata)
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
31 __url__ = _get_meta_var('__url__', _metadata)
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
32 # defines current platform
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
33 __platform__ = platform.system()
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
34
3892
3a1cf70e0f42 Fix check statements from () which had no effect really
Marcin Kuzminski <marcin@python-works.com>
parents: 3840
diff changeset
35 is_windows = __platform__ in ['Windows']
1078
2d7a94f3eaae added docs to manifest, updated setup script
Marcin Kuzminski <marcin@python-works.com>
parents: 1069
diff changeset
36
2563
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
37 requirements = [
6017
7894a440e134 db: add Alembic "migration environment"
Søren Løvborg <sorenl@unity3d.com>
parents: 6016
diff changeset
38 "alembic>=0.8.0,<0.9",
6045
9ec73e01e5b1 setup: support later waitress versions
domruf <dominikruf@gmail.com>
parents: 6037
diff changeset
39 "waitress>=0.8.8,<1.0",
6484
1f43d08ce5a8 setup: bump WebOb to >=1.7
Mads Kiilerich <mads@kiilerich.com>
parents: 6483
diff changeset
40 "webob>=1.7,<2",
5356
f6fcb21db7b3 pylons: support Pylons 1.0.2
Mads Kiilerich <madski@unity3d.com>
parents: 5004
diff changeset
41 "Pylons>=1.0.0,<=1.0.2",
6480
de37fcbce8c5 setup: really support latest Beaker version (1.8.1) after 5a5bab2b773c
Mads Kiilerich <mads@kiilerich.com>
parents: 6459
diff changeset
42 "Beaker>=1.7.0,<2",
2563
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
43 "WebHelpers==1.3",
4418
ed11cb3e905e Support using newer versions of formencode.
Jelmer Vernooij <jelmer@samba.org>
parents: 4416
diff changeset
44 "formencode>=1.2.4,<=1.2.6",
6024
1a080d4e926e db: use consistent key/index/constraint names when creating database
Søren Løvborg <sorenl@unity3d.com>
parents: 6017
diff changeset
45 "SQLAlchemy>=1.0,<1.1",
4414
8c2e96646545 Loosen dependency on Mako to include mako 1.0.
Jelmer Vernooij <jelmer@samba.org>
parents: 4267
diff changeset
46 "Mako>=0.9.0,<=1.0.0",
2715
298bac3757a7 requirements updates
Marcin Kuzminski <marcin@python-works.com>
parents: 2685
diff changeset
47 "pygments>=1.5",
6483
5cf18f89ab3e setup: bump whoosh and bcrypt minimum versions
Mads Kiilerich <mads@kiilerich.com>
parents: 6480
diff changeset
48 "whoosh>=2.5.0,<=2.5.7",
6174
4f2e231df222 celery: upgrade to Celery 3
Mads Kiilerich <madski@unity3d.com>
parents: 6173
diff changeset
49 "celery>=3.1,<3.2",
6459
175813f77851 setup: bump babel version to <2.4
Andrew Shadura <andrew@shadura.me>
parents: 6458
diff changeset
50 "babel>=0.9.6,<2.4",
2563
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
51 "python-dateutil>=1.5.0,<2.0.0",
3000
4034eb731b33 bumped dependencies versions
Marcin Kuzminski <marcin@python-works.com>
parents: 2999
diff changeset
52 "markdown==2.2.1",
6458
d1d9d249846b setup: don't constrain docutils version
Andrew Shadura <andrew@shadura.me>
parents: 6456
diff changeset
53 "docutils>=0.8.1",
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4084
diff changeset
54 "URLObject==2.3.4",
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4084
diff changeset
55 "Routes==1.13",
6006
b5859022ac69 setup: bump dulwich dependency to 0.14.1
Andrew Shadura <andrew@shadura.me>
parents: 6000
diff changeset
56 "dulwich>=0.14.1",
6455
f19d8fd8e35a hg: support Mercurial 4.1
Mads Kiilerich <mads@kiilerich.com>
parents: 6174
diff changeset
57 "mercurial>=2.9,<4.2",
2563
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
58 ]
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
59
2772
d4f6dc38d625 fixed condition for installing unittests2
Marcin Kuzminski <marcin@python-works.com>
parents: 2715
diff changeset
60 if sys.version_info < (2, 7):
4116
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4084
diff changeset
61 requirements.append("importlib==1.0.1")
3230
bda2bd2558b1 added argparse for python version <2.7
Marcin Kuzminski <marcin@python-works.com>
parents: 3130
diff changeset
62 requirements.append("argparse")
2563
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
63
4820
953ee49f3b30 setup: remove duplicate logic for mercurial dependency
Sean Farley <sean.michael.farley@gmail.com>
parents: 4560
diff changeset
64 if not is_windows:
6483
5cf18f89ab3e setup: bump whoosh and bcrypt minimum versions
Mads Kiilerich <mads@kiilerich.com>
parents: 6480
diff changeset
65 requirements.append("bcrypt>=3.1.0")
2563
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
66
1456
880a39e5d8df fixed setup so it'll fetch tip of vcs for easier installation of beta version
Marcin Kuzminski <marcin@python-works.com>
parents: 1449
diff changeset
67 dependency_links = [
880a39e5d8df fixed setup so it'll fetch tip of vcs for easier installation of beta version
Marcin Kuzminski <marcin@python-works.com>
parents: 1449
diff changeset
68 ]
880a39e5d8df fixed setup so it'll fetch tip of vcs for easier installation of beta version
Marcin Kuzminski <marcin@python-works.com>
parents: 1449
diff changeset
69
1966
fc6063e6630b code cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 1964
diff changeset
70 classifiers = [
4246
cc48c1541c7e Fixes for pypi - increment version to 0.0
Mads Kiilerich <madski@unity3d.com>
parents: 4245
diff changeset
71 'Development Status :: 4 - Beta',
1966
fc6063e6630b code cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 1964
diff changeset
72 'Environment :: Web Environment',
fc6063e6630b code cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 1964
diff changeset
73 'Framework :: Pylons',
fc6063e6630b code cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 1964
diff changeset
74 'Intended Audience :: Developers',
fc6063e6630b code cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 1964
diff changeset
75 'License :: OSI Approved :: GNU General Public License (GPL)',
fc6063e6630b code cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 1964
diff changeset
76 'Operating System :: OS Independent',
fc6063e6630b code cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 1964
diff changeset
77 'Programming Language :: Python',
fc6063e6630b code cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 1964
diff changeset
78 'Programming Language :: Python :: 2.6',
fc6063e6630b code cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 1964
diff changeset
79 'Programming Language :: Python :: 2.7',
4246
cc48c1541c7e Fixes for pypi - increment version to 0.0
Mads Kiilerich <madski@unity3d.com>
parents: 4245
diff changeset
80 'Topic :: Software Development :: Version Control',
1966
fc6063e6630b code cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 1964
diff changeset
81 ]
572
a60cd29ba7e2 more docs update
Marcin Kuzminski <marcin@python-works.com>
parents: 565
diff changeset
82
1118
b0e2c949c34b Fixed Windows installation based on work of Mantis406 fork: "Replace py-bcrypt to make Windows installation easier"
Marcin Kuzminski <marcin@python-works.com>
parents: 1103
diff changeset
83
1792
2afa6b8c2ade code garden
Marcin Kuzminski <marcin@python-works.com>
parents: 1790
diff changeset
84 # additional files from project that goes somewhere in the filesystem
2afa6b8c2ade code garden
Marcin Kuzminski <marcin@python-works.com>
parents: 1790
diff changeset
85 # relative to sys.prefix
553
65c27fd21769 small fixes for distutils
Marcin Kuzminski <marcin@python-works.com>
parents: 552
diff changeset
86 data_files = []
65c27fd21769 small fixes for distutils
Marcin Kuzminski <marcin@python-works.com>
parents: 552
diff changeset
87
4212
24c0d584ba86 General renaming to Kallithea
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4189
diff changeset
88 description = ('Kallithea is a fast and powerful management tool '
4937
326a9336fbe5 spelling: use correct Git capitalisation where appropriate
Andrew Shadura <andrew@shadura.me>
parents: 4830
diff changeset
89 'for Mercurial and Git with a built in push/pull server, '
3310
faad9dd06b58 fixed broken syntax in setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 3305
diff changeset
90 'full text search and code-review.')
4005
266a3cbc0302 Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents: 3960
diff changeset
91
266a3cbc0302 Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents: 3960
diff changeset
92 keywords = ' '.join([
4186
7e5f8c12a3fc First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4185
diff changeset
93 'kallithea', 'mercurial', 'git', 'code review',
4005
266a3cbc0302 Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents: 3960
diff changeset
94 'repo groups', 'ldap', 'repository management', 'hgweb replacement',
266a3cbc0302 Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents: 3960
diff changeset
95 'hgwebdir', 'gitweb replacement', 'serving hgweb',
266a3cbc0302 Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents: 3960
diff changeset
96 ])
266a3cbc0302 Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents: 3960
diff changeset
97
1792
2afa6b8c2ade code garden
Marcin Kuzminski <marcin@python-works.com>
parents: 1790
diff changeset
98 # long description
4005
266a3cbc0302 Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents: 3960
diff changeset
99 README_FILE = 'README.rst'
553
65c27fd21769 small fixes for distutils
Marcin Kuzminski <marcin@python-works.com>
parents: 552
diff changeset
100 try:
6037
7c732f2047f8 docs: drop empty Changelog in the documentation
Mads Kiilerich <madski@unity3d.com>
parents: 6033
diff changeset
101 long_description = open(README_FILE).read()
5374
d69aa464f373 cleanup: consistently use 'except ... as ...:'
Mads Kiilerich <madski@unity3d.com>
parents: 5357
diff changeset
102 except IOError as err:
4005
266a3cbc0302 Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents: 3960
diff changeset
103 sys.stderr.write(
6037
7c732f2047f8 docs: drop empty Changelog in the documentation
Mads Kiilerich <madski@unity3d.com>
parents: 6033
diff changeset
104 "[WARNING] Cannot find file specified as long_description (%s)\n"
7c732f2047f8 docs: drop empty Changelog in the documentation
Mads Kiilerich <madski@unity3d.com>
parents: 6033
diff changeset
105 % README_FILE
4005
266a3cbc0302 Fixes some issues with keywords generation, and cleaned the code
Marcin Kuzminski <marcin@python-works.com>
parents: 3960
diff changeset
106 )
565
ad2e97c6f17f small fix for setup
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
107 long_description = description
552
2642f128ad46 removed egg info, update files for distutils build
Marcin Kuzminski <marcin@python-works.com>
parents: 549
diff changeset
108
6033
a922e91a4f02 setup: drop ez_setup
Mads Kiilerich <madski@unity3d.com>
parents: 6032
diff changeset
109 import setuptools
5501
c79e4f89bfd3 setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents: 5461
diff changeset
110
c79e4f89bfd3 setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents: 5461
diff changeset
111 # monkey patch setuptools to use distutils owner/group functionality
c79e4f89bfd3 setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents: 5461
diff changeset
112 from setuptools.command import sdist
c79e4f89bfd3 setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents: 5461
diff changeset
113 sdist_org = sdist.sdist
c79e4f89bfd3 setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents: 5461
diff changeset
114 class sdist_new(sdist_org):
c79e4f89bfd3 setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents: 5461
diff changeset
115 def initialize_options(self):
c79e4f89bfd3 setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents: 5461
diff changeset
116 sdist_org.initialize_options(self)
c79e4f89bfd3 setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents: 5461
diff changeset
117 self.owner = self.group = 'root'
c79e4f89bfd3 setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents: 5461
diff changeset
118 sdist.sdist = sdist_new
c79e4f89bfd3 setup: monkey patch setuptools to make distutils set owner/group to root
Mads Kiilerich <madski@unity3d.com>
parents: 5461
diff changeset
119
6033
a922e91a4f02 setup: drop ez_setup
Mads Kiilerich <madski@unity3d.com>
parents: 6032
diff changeset
120 packages = setuptools.find_packages(exclude=['ez_setup'])
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
121
6033
a922e91a4f02 setup: drop ez_setup
Mads Kiilerich <madski@unity3d.com>
parents: 6032
diff changeset
122 setuptools.setup(
4212
24c0d584ba86 General renaming to Kallithea
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4189
diff changeset
123 name='Kallithea',
2563
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
124 version=__version__,
565
ad2e97c6f17f small fix for setup
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
125 description=description,
552
2642f128ad46 removed egg info, update files for distutils build
Marcin Kuzminski <marcin@python-works.com>
parents: 549
diff changeset
126 long_description=long_description,
1078
2d7a94f3eaae added docs to manifest, updated setup script
Marcin Kuzminski <marcin@python-works.com>
parents: 1069
diff changeset
127 keywords=keywords,
1205
f4807acf643d added __license__ into main of rhodecode, PEP8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1204
diff changeset
128 license=__license__,
2563
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
129 author=__author__,
4245
3315e9263a53 Use Conservancy's Kallithea Committee address as author_email.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4212
diff changeset
130 author_email='kallithea@sfconservancy.org',
1456
880a39e5d8df fixed setup so it'll fetch tip of vcs for easier installation of beta version
Marcin Kuzminski <marcin@python-works.com>
parents: 1449
diff changeset
131 dependency_links=dependency_links,
2563
9382e88eae22 removed import rhodecode from setup.py
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
132 url=__url__,
552
2642f128ad46 removed egg info, update files for distutils build
Marcin Kuzminski <marcin@python-works.com>
parents: 549
diff changeset
133 install_requires=requirements,
572
a60cd29ba7e2 more docs update
Marcin Kuzminski <marcin@python-works.com>
parents: 565
diff changeset
134 classifiers=classifiers,
6026
dd676fdeda0f setup: move test dependencies to dev_requirements.txt to make them optional
Mads Kiilerich <madski@unity3d.com>
parents: 6024
diff changeset
135 setup_requires=['PasteScript>=1.6.3'],
552
2642f128ad46 removed egg info, update files for distutils build
Marcin Kuzminski <marcin@python-works.com>
parents: 549
diff changeset
136 data_files=data_files,
553
65c27fd21769 small fixes for distutils
Marcin Kuzminski <marcin@python-works.com>
parents: 552
diff changeset
137 packages=packages,
127
20dc7a5eb748 Html changes and cleanups, made folders for html templates, implemented tags and branches pages
Marcin Kuzminski <marcin@python-works.com>
parents: 0
diff changeset
138 include_package_data=True,
4186
7e5f8c12a3fc First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4185
diff changeset
139 message_extractors={'kallithea': [
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
140 ('**.py', 'python', None),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
141 ('templates/**.mako', 'mako', {'input_encoding': 'utf-8'}),
1143
0e6035a85980 added changes made in production branch back into beta
Marcin Kuzminski <marcin@python-works.com>
parents: 1118
diff changeset
142 ('templates/**.html', 'mako', {'input_encoding': 'utf-8'}),
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
143 ('public/**', 'ignore', None)]},
127
20dc7a5eb748 Html changes and cleanups, made folders for html templates, implemented tags and branches pages
Marcin Kuzminski <marcin@python-works.com>
parents: 0
diff changeset
144 zip_safe=False,
20dc7a5eb748 Html changes and cleanups, made folders for html templates, implemented tags and branches pages
Marcin Kuzminski <marcin@python-works.com>
parents: 0
diff changeset
145 paster_plugins=['PasteScript', 'Pylons'],
20dc7a5eb748 Html changes and cleanups, made folders for html templates, implemented tags and branches pages
Marcin Kuzminski <marcin@python-works.com>
parents: 0
diff changeset
146 entry_points="""
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents: 2289
diff changeset
147 [console_scripts]
4189
9793473d74be Rename helper tools (and fix inconsistent naming)
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4186
diff changeset
148 kallithea-api = kallithea.bin.kallithea_api:main
9793473d74be Rename helper tools (and fix inconsistent naming)
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4186
diff changeset
149 kallithea-gist = kallithea.bin.kallithea_gist:main
9793473d74be Rename helper tools (and fix inconsistent naming)
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4186
diff changeset
150 kallithea-config = kallithea.bin.kallithea_config:main
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents: 2289
diff changeset
151
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
152 [paste.app_factory]
4186
7e5f8c12a3fc First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4185
diff changeset
153 main = kallithea.config.middleware:make_app
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
154
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
155 [paste.app_install]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
156 main = pylons.util:PylonsInstaller
683
341beaa9edba Implemented whoosh index building as paster command.
Marcin Kuzminski <marcin@python-works.com>
parents: 682
diff changeset
157
341beaa9edba Implemented whoosh index building as paster command.
Marcin Kuzminski <marcin@python-works.com>
parents: 682
diff changeset
158 [paste.global_paster_command]
4186
7e5f8c12a3fc First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4185
diff changeset
159 setup-db=kallithea.lib.paster_commands.setup_db:Command
4560
b1679034b6c4 cleanup-repos: reintroduce paster command
Mads Kiilerich <madski@unity3d.com>
parents: 4554
diff changeset
160 cleanup-repos=kallithea.lib.paster_commands.cleanup:Command
4186
7e5f8c12a3fc First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4185
diff changeset
161 update-repoinfo=kallithea.lib.paster_commands.update_repoinfo:Command
7e5f8c12a3fc First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4185
diff changeset
162 make-rcext=kallithea.lib.paster_commands.make_rcextensions:Command
7e5f8c12a3fc First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4185
diff changeset
163 repo-scan=kallithea.lib.paster_commands.repo_scan:Command
7e5f8c12a3fc First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4185
diff changeset
164 cache-keys=kallithea.lib.paster_commands.cache_keys:Command
7e5f8c12a3fc First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4185
diff changeset
165 ishell=kallithea.lib.paster_commands.ishell:Command
7e5f8c12a3fc First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4185
diff changeset
166 make-index=kallithea.lib.paster_commands.make_index:Command
6016
c436f337e253 paster: add informational/dummy "upgrade-db" command
Søren Løvborg <sorenl@unity3d.com>
parents: 6014
diff changeset
167 upgrade-db=kallithea.lib.dbmigrate:UpgradeDb
6173
cf73bd884a53 celeryd: move the celeryd paster command to the place where paster commands live
Mads Kiilerich <madski@unity3d.com>
parents: 6137
diff changeset
168 celeryd=kallithea.lib.paster_commands.celeryd:Command
4554
2dad9708c89f paster: add install-iis command to automate IIS handler generation
Henrik Stuart <hg@hstuart.dk>
parents: 4522
diff changeset
169 install-iis=kallithea.lib.paster_commands.install_iis:Command
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
170 """,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
171 )