Statistics
| Branch: | Tag: | Revision:

root / setup.py @ 41af0bcd

History | View | Annotate | Download (6.2 kB)

1 52271184 Kostas Papadimitriou
# Copyright 2012 GRNET S.A. All rights reserved.
2 52271184 Kostas Papadimitriou
#
3 52271184 Kostas Papadimitriou
# Redistribution and use in source and binary forms, with or
4 52271184 Kostas Papadimitriou
# without modification, are permitted provided that the following
5 52271184 Kostas Papadimitriou
# conditions are met:
6 52271184 Kostas Papadimitriou
#
7 52271184 Kostas Papadimitriou
#   1. Redistributions of source code must retain the above
8 52271184 Kostas Papadimitriou
#      copyright notice, this list of conditions and the following
9 52271184 Kostas Papadimitriou
#      disclaimer.
10 52271184 Kostas Papadimitriou
#
11 52271184 Kostas Papadimitriou
#   2. Redistributions in binary form must reproduce the above
12 52271184 Kostas Papadimitriou
#      copyright notice, this list of conditions and the following
13 52271184 Kostas Papadimitriou
#      disclaimer in the documentation and/or other materials
14 52271184 Kostas Papadimitriou
#      provided with the distribution.
15 52271184 Kostas Papadimitriou
#
16 52271184 Kostas Papadimitriou
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 52271184 Kostas Papadimitriou
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 52271184 Kostas Papadimitriou
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 52271184 Kostas Papadimitriou
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 52271184 Kostas Papadimitriou
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 52271184 Kostas Papadimitriou
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 52271184 Kostas Papadimitriou
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 52271184 Kostas Papadimitriou
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 52271184 Kostas Papadimitriou
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 52271184 Kostas Papadimitriou
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 52271184 Kostas Papadimitriou
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 52271184 Kostas Papadimitriou
# POSSIBILITY OF SUCH DAMAGE.
28 52271184 Kostas Papadimitriou
#
29 52271184 Kostas Papadimitriou
# The views and conclusions contained in the software and
30 52271184 Kostas Papadimitriou
# documentation are those of the authors and should not be
31 52271184 Kostas Papadimitriou
# interpreted as representing official policies, either expressed
32 52271184 Kostas Papadimitriou
# or implied, of GRNET S.A.
33 52271184 Kostas Papadimitriou
34 52271184 Kostas Papadimitriou
35 872ca586 Kostas Papadimitriou
import os
36 872ca586 Kostas Papadimitriou
import sys
37 872ca586 Kostas Papadimitriou
38 872ca586 Kostas Papadimitriou
from fnmatch import fnmatchcase
39 872ca586 Kostas Papadimitriou
from distutils.util import convert_path
40 c1468bcc Kostas Papadimitriou
from setuptools import setup, find_packages
41 c1468bcc Kostas Papadimitriou
42 1cf03785 Kostas Papadimitriou
from cloudcms.version import __version__
43 1cf03785 Kostas Papadimitriou
44 1cf03785 Kostas Papadimitriou
# Package info
45 1cf03785 Kostas Papadimitriou
VERSION = __version__
46 1cf03785 Kostas Papadimitriou
47 1cf03785 Kostas Papadimitriou
48 872ca586 Kostas Papadimitriou
INSTALL_REQUIRES = [
49 feba5ad6 Kostas Papadimitriou
    'snf-common>0.9',
50 41af0bcd Kostas Papadimitriou
    'Django>=1.4, <1.5',
51 33818d21 Kostas Papadimitriou
    'South>=0.7',
52 41af0bcd Kostas Papadimitriou
    'feincms>=1.6, <1.7',
53 15f0902d Kostas Papadimitriou
    'django-pagination >=1.0.5',
54 cac508bb Kostas Papadimitriou
    'django-mptt >= 0.5.2, <0.6',
55 0e5c3796 Kostas Papadimitriou
    'lxml',
56 0e5c3796 Kostas Papadimitriou
    'docutils',
57 0e5c3796 Kostas Papadimitriou
    'PIL'
58 872ca586 Kostas Papadimitriou
]
59 0e5c3796 Kostas Papadimitriou
60 872ca586 Kostas Papadimitriou
CLASSIFIERS = []
61 872ca586 Kostas Papadimitriou
62 d63539ef Kostas Papadimitriou
63 d63539ef Kostas Papadimitriou
# Provided as an attribute, so you can append to these instead
64 d63539ef Kostas Papadimitriou
# of replicating them:
65 d63539ef Kostas Papadimitriou
standard_exclude = ('*.py', '*.pyc', '*$py.class', '*~', '.*', '*.bak')
66 d63539ef Kostas Papadimitriou
standard_exclude_directories = ('.*', 'CVS', '_darcs', './build',
67 d63539ef Kostas Papadimitriou
                                './dist', 'EGG-INFO', '*.egg-info')
68 d63539ef Kostas Papadimitriou
69 d63539ef Kostas Papadimitriou
def find_package_data(
70 d63539ef Kostas Papadimitriou
    where='.', package='',
71 d63539ef Kostas Papadimitriou
    exclude=standard_exclude,
72 d63539ef Kostas Papadimitriou
    exclude_directories=standard_exclude_directories,
73 d63539ef Kostas Papadimitriou
    only_in_packages=True,
74 d63539ef Kostas Papadimitriou
    show_ignored=False):
75 d63539ef Kostas Papadimitriou
    """
76 d63539ef Kostas Papadimitriou
    Return a dictionary suitable for use in ``package_data``
77 d63539ef Kostas Papadimitriou
    in a distutils ``setup.py`` file.
78 d63539ef Kostas Papadimitriou

79 d63539ef Kostas Papadimitriou
    The dictionary looks like::
80 d63539ef Kostas Papadimitriou

81 d63539ef Kostas Papadimitriou
        {'package': [files]}
82 d63539ef Kostas Papadimitriou

83 d63539ef Kostas Papadimitriou
    Where ``files`` is a list of all the files in that package that
84 d63539ef Kostas Papadimitriou
    don't match anything in ``exclude``.
85 d63539ef Kostas Papadimitriou

86 d63539ef Kostas Papadimitriou
    If ``only_in_packages`` is true, then top-level directories that
87 d63539ef Kostas Papadimitriou
    are not packages won't be included (but directories under packages
88 d63539ef Kostas Papadimitriou
    will).
89 d63539ef Kostas Papadimitriou

90 d63539ef Kostas Papadimitriou
    Directories matching any pattern in ``exclude_directories`` will
91 d63539ef Kostas Papadimitriou
    be ignored; by default directories with leading ``.``, ``CVS``,
92 d63539ef Kostas Papadimitriou
    and ``_darcs`` will be ignored.
93 d63539ef Kostas Papadimitriou

94 d63539ef Kostas Papadimitriou
    If ``show_ignored`` is true, then all the files that aren't
95 d63539ef Kostas Papadimitriou
    included in package data are shown on stderr (for debugging
96 d63539ef Kostas Papadimitriou
    purposes).
97 d63539ef Kostas Papadimitriou

98 d63539ef Kostas Papadimitriou
    Note patterns use wildcards, or can be exact paths (including
99 d63539ef Kostas Papadimitriou
    leading ``./``), and all searching is case-insensitive.
100 d63539ef Kostas Papadimitriou
    """
101 d63539ef Kostas Papadimitriou
102 d63539ef Kostas Papadimitriou
    out = {}
103 d63539ef Kostas Papadimitriou
    stack = [(convert_path(where), '', package, only_in_packages)]
104 d63539ef Kostas Papadimitriou
    while stack:
105 d63539ef Kostas Papadimitriou
        where, prefix, package, only_in_packages = stack.pop(0)
106 d63539ef Kostas Papadimitriou
        for name in os.listdir(where):
107 d63539ef Kostas Papadimitriou
            fn = os.path.join(where, name)
108 d63539ef Kostas Papadimitriou
            if os.path.isdir(fn):
109 d63539ef Kostas Papadimitriou
                bad_name = False
110 d63539ef Kostas Papadimitriou
                for pattern in exclude_directories:
111 d63539ef Kostas Papadimitriou
                    if (fnmatchcase(name, pattern)
112 d63539ef Kostas Papadimitriou
                        or fn.lower() == pattern.lower()):
113 d63539ef Kostas Papadimitriou
                        bad_name = True
114 d63539ef Kostas Papadimitriou
                        if show_ignored:
115 d63539ef Kostas Papadimitriou
                            print >> sys.stderr, (
116 d63539ef Kostas Papadimitriou
                                "Directory %s ignored by pattern %s"
117 d63539ef Kostas Papadimitriou
                                % (fn, pattern))
118 d63539ef Kostas Papadimitriou
                        break
119 d63539ef Kostas Papadimitriou
                if bad_name:
120 d63539ef Kostas Papadimitriou
                    continue
121 d63539ef Kostas Papadimitriou
                if (os.path.isfile(os.path.join(fn, '__init__.py'))
122 d63539ef Kostas Papadimitriou
                    and not prefix):
123 d63539ef Kostas Papadimitriou
                    if not package:
124 d63539ef Kostas Papadimitriou
                        new_package = name
125 d63539ef Kostas Papadimitriou
                    else:
126 d63539ef Kostas Papadimitriou
                        new_package = package + '.' + name
127 d63539ef Kostas Papadimitriou
                    stack.append((fn, '', new_package, False))
128 d63539ef Kostas Papadimitriou
                else:
129 d63539ef Kostas Papadimitriou
                    stack.append((fn, prefix + name + '/', package, only_in_packages))
130 d63539ef Kostas Papadimitriou
            elif package or not only_in_packages:
131 d63539ef Kostas Papadimitriou
                # is a file
132 d63539ef Kostas Papadimitriou
                bad_name = False
133 d63539ef Kostas Papadimitriou
                for pattern in exclude:
134 d63539ef Kostas Papadimitriou
                    if (fnmatchcase(name, pattern)
135 d63539ef Kostas Papadimitriou
                        or fn.lower() == pattern.lower()):
136 d63539ef Kostas Papadimitriou
                        bad_name = True
137 d63539ef Kostas Papadimitriou
                        if show_ignored:
138 d63539ef Kostas Papadimitriou
                            print >> sys.stderr, (
139 d63539ef Kostas Papadimitriou
                                "File %s ignored by pattern %s"
140 d63539ef Kostas Papadimitriou
                                % (fn, pattern))
141 d63539ef Kostas Papadimitriou
                        break
142 d63539ef Kostas Papadimitriou
                if bad_name:
143 d63539ef Kostas Papadimitriou
                    continue
144 d63539ef Kostas Papadimitriou
                out.setdefault(package, []).append(prefix+name)
145 d63539ef Kostas Papadimitriou
    return out
146 d63539ef Kostas Papadimitriou
147 c1468bcc Kostas Papadimitriou
setup(
148 872ca586 Kostas Papadimitriou
    name = 'snf-cloudcms',
149 872ca586 Kostas Papadimitriou
    version = VERSION,
150 872ca586 Kostas Papadimitriou
    license = 'BSD',
151 872ca586 Kostas Papadimitriou
    url = 'http://code.grnet.gr/',
152 872ca586 Kostas Papadimitriou
    classifiers = CLASSIFIERS,
153 872ca586 Kostas Papadimitriou
154 872ca586 Kostas Papadimitriou
    author = 'Package author',
155 872ca586 Kostas Papadimitriou
    author_email = 'author@grnet.gr',
156 872ca586 Kostas Papadimitriou
    maintainer = 'Package maintainer',
157 872ca586 Kostas Papadimitriou
    maintainer_email = 'maintainer@grnet.gr',
158 872ca586 Kostas Papadimitriou
159 872ca586 Kostas Papadimitriou
    packages = find_packages('.'),
160 872ca586 Kostas Papadimitriou
    package_dir= {'': '.'},
161 872ca586 Kostas Papadimitriou
    include_package_data = True,
162 d63539ef Kostas Papadimitriou
    package_data=find_package_data('.'),
163 872ca586 Kostas Papadimitriou
    zip_safe = False,
164 872ca586 Kostas Papadimitriou
165 872ca586 Kostas Papadimitriou
    install_requires = INSTALL_REQUIRES,
166 872ca586 Kostas Papadimitriou
167 872ca586 Kostas Papadimitriou
    dependency_links = ['http://docs.dev.grnet.gr/pypi'],
168 c1468bcc Kostas Papadimitriou
169 c1468bcc Kostas Papadimitriou
    entry_points = {
170 c1468bcc Kostas Papadimitriou
     'synnefo': [
171 872ca586 Kostas Papadimitriou
         'default_settings = cloudcms.synnefo_settings',
172 ae70c3c6 Kostas Papadimitriou
         'web_apps = cloudcms.synnefo_settings:cloudcms_apps',
173 ae70c3c6 Kostas Papadimitriou
         'web_middleware = cloudcms.synnefo_settings:cloudcms_middlewares',
174 ae70c3c6 Kostas Papadimitriou
         'web_context_processors = cloudcms.synnefo_settings:cloudcms_context_processors',
175 b9d897eb Kostas Papadimitriou
         'urls = cloudcms.urls:urlpatterns',
176 b9d897eb Kostas Papadimitriou
         'web_static = cloudcms.synnefo_settings:cloudcms_staticfiles',
177 b9d897eb Kostas Papadimitriou
         'loggers = cloudcms.synnefo_settings:loggers'
178 c1468bcc Kostas Papadimitriou
         ]
179 c1468bcc Kostas Papadimitriou
    },
180 c1468bcc Kostas Papadimitriou
181 c1468bcc Kostas Papadimitriou
)