Statistics
| Branch: | Tag: | Revision:

root / setup.py @ e27d4798

History | View | Annotate | Download (6.7 kB)

1 8df4ab84 Vangelis Koukis
# Copyright 2012, 2013 GRNET S.A. All rights reserved.
2 10a9cf64 Vangelis Koukis
#
3 10a9cf64 Vangelis Koukis
# Redistribution and use in source and binary forms, with or
4 10a9cf64 Vangelis Koukis
# without modification, are permitted provided that the following
5 10a9cf64 Vangelis Koukis
# conditions are met:
6 10a9cf64 Vangelis Koukis
#
7 10a9cf64 Vangelis Koukis
#   1. Redistributions of source code must retain the above
8 10a9cf64 Vangelis Koukis
#      copyright notice, this list of conditions and the following
9 10a9cf64 Vangelis Koukis
#      disclaimer.
10 10a9cf64 Vangelis Koukis
#
11 10a9cf64 Vangelis Koukis
#   2. Redistributions in binary form must reproduce the above
12 10a9cf64 Vangelis Koukis
#      copyright notice, this list of conditions and the following
13 10a9cf64 Vangelis Koukis
#      disclaimer in the documentation and/or other materials
14 10a9cf64 Vangelis Koukis
#      provided with the distribution.
15 10a9cf64 Vangelis Koukis
#
16 10a9cf64 Vangelis Koukis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 10a9cf64 Vangelis Koukis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 10a9cf64 Vangelis Koukis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 10a9cf64 Vangelis Koukis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 10a9cf64 Vangelis Koukis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 10a9cf64 Vangelis Koukis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 10a9cf64 Vangelis Koukis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 10a9cf64 Vangelis Koukis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 10a9cf64 Vangelis Koukis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 10a9cf64 Vangelis Koukis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 10a9cf64 Vangelis Koukis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 10a9cf64 Vangelis Koukis
# POSSIBILITY OF SUCH DAMAGE.
28 10a9cf64 Vangelis Koukis
#
29 10a9cf64 Vangelis Koukis
# The views and conclusions contained in the software and
30 10a9cf64 Vangelis Koukis
# documentation are those of the authors and should not be
31 10a9cf64 Vangelis Koukis
# interpreted as representing official policies, either expressed
32 10a9cf64 Vangelis Koukis
# or implied, of GRNET S.A.
33 10a9cf64 Vangelis Koukis
#
34 10a9cf64 Vangelis Koukis
import distribute_setup
35 10a9cf64 Vangelis Koukis
distribute_setup.use_setuptools()
36 10a9cf64 Vangelis Koukis
37 10a9cf64 Vangelis Koukis
import os
38 10a9cf64 Vangelis Koukis
import sys
39 10a9cf64 Vangelis Koukis
40 10a9cf64 Vangelis Koukis
from distutils.util import convert_path
41 10a9cf64 Vangelis Koukis
from fnmatch import fnmatchcase
42 10a9cf64 Vangelis Koukis
from setuptools import setup, find_packages
43 10a9cf64 Vangelis Koukis
44 10a9cf64 Vangelis Koukis
HERE = os.path.abspath(os.path.normpath(os.path.dirname(__file__)))
45 10a9cf64 Vangelis Koukis
46 10a9cf64 Vangelis Koukis
from devflow.version import __version__
47 10a9cf64 Vangelis Koukis
48 10a9cf64 Vangelis Koukis
# Package info
49 10a9cf64 Vangelis Koukis
VERSION = __version__
50 10a9cf64 Vangelis Koukis
README = open(os.path.join(HERE, 'README')).read()
51 10a9cf64 Vangelis Koukis
CHANGES = open(os.path.join(HERE, 'Changelog')).read()
52 10a9cf64 Vangelis Koukis
SHORT_DESCRIPTION = 'A set of tools to ease versioning and use of git flow.'
53 10a9cf64 Vangelis Koukis
54 10a9cf64 Vangelis Koukis
PACKAGES_ROOT = '.'
55 10a9cf64 Vangelis Koukis
PACKAGES = find_packages(PACKAGES_ROOT)
56 10a9cf64 Vangelis Koukis
57 10a9cf64 Vangelis Koukis
# Package meta
58 10a9cf64 Vangelis Koukis
CLASSIFIERS = []
59 10a9cf64 Vangelis Koukis
60 10a9cf64 Vangelis Koukis
# Package requirements
61 10a9cf64 Vangelis Koukis
INSTALL_REQUIRES = [
62 61c5aa98 Christos Stavrakakis
    'gitpython', 'sh', 'configobj'
63 10a9cf64 Vangelis Koukis
]
64 10a9cf64 Vangelis Koukis
65 10a9cf64 Vangelis Koukis
# Provided as an attribute, so you can append to these instead
66 10a9cf64 Vangelis Koukis
# of replicating them:
67 10a9cf64 Vangelis Koukis
standard_exclude = ["*.py", "*.pyc", "*$py.class", "*~", ".*", "*.bak"]
68 10a9cf64 Vangelis Koukis
standard_exclude_directories = [".*", "CVS", "_darcs", "./build", "./dist",
69 10a9cf64 Vangelis Koukis
                                "EGG-INFO", "*.egg-info"]
70 10a9cf64 Vangelis Koukis
71 10a9cf64 Vangelis Koukis
# (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org)
72 10a9cf64 Vangelis Koukis
# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
73 10a9cf64 Vangelis Koukis
# Note: you may want to copy this into your setup.py file verbatim, as
74 10a9cf64 Vangelis Koukis
# you can't import this from another package, when you don't know if
75 10a9cf64 Vangelis Koukis
# that package is installed yet.
76 10a9cf64 Vangelis Koukis
def find_package_data(
77 10a9cf64 Vangelis Koukis
    where=".",
78 10a9cf64 Vangelis Koukis
    package="",
79 10a9cf64 Vangelis Koukis
    exclude=standard_exclude,
80 10a9cf64 Vangelis Koukis
    exclude_directories=standard_exclude_directories,
81 10a9cf64 Vangelis Koukis
    only_in_packages=True,
82 10a9cf64 Vangelis Koukis
    show_ignored=False):
83 10a9cf64 Vangelis Koukis
    """
84 10a9cf64 Vangelis Koukis
    Return a dictionary suitable for use in ``package_data``
85 10a9cf64 Vangelis Koukis
    in a distutils ``setup.py`` file.
86 10a9cf64 Vangelis Koukis

87 10a9cf64 Vangelis Koukis
    The dictionary looks like::
88 10a9cf64 Vangelis Koukis

89 10a9cf64 Vangelis Koukis
        {"package": [files]}
90 10a9cf64 Vangelis Koukis

91 10a9cf64 Vangelis Koukis
    Where ``files`` is a list of all the files in that package that
92 10a9cf64 Vangelis Koukis
    don"t match anything in ``exclude``.
93 10a9cf64 Vangelis Koukis

94 10a9cf64 Vangelis Koukis
    If ``only_in_packages`` is true, then top-level directories that
95 10a9cf64 Vangelis Koukis
    are not packages won"t be included (but directories under packages
96 10a9cf64 Vangelis Koukis
    will).
97 10a9cf64 Vangelis Koukis

98 10a9cf64 Vangelis Koukis
    Directories matching any pattern in ``exclude_directories`` will
99 10a9cf64 Vangelis Koukis
    be ignored; by default directories with leading ``.``, ``CVS``,
100 10a9cf64 Vangelis Koukis
    and ``_darcs`` will be ignored.
101 10a9cf64 Vangelis Koukis

102 10a9cf64 Vangelis Koukis
    If ``show_ignored`` is true, then all the files that aren"t
103 10a9cf64 Vangelis Koukis
    included in package data are shown on stderr (for debugging
104 10a9cf64 Vangelis Koukis
    purposes).
105 10a9cf64 Vangelis Koukis

106 10a9cf64 Vangelis Koukis
    Note patterns use wildcards, or can be exact paths (including
107 10a9cf64 Vangelis Koukis
    leading ``./``), and all searching is case-insensitive.
108 10a9cf64 Vangelis Koukis
    """
109 10a9cf64 Vangelis Koukis
    out = {}
110 10a9cf64 Vangelis Koukis
    stack = [(convert_path(where), "", package, only_in_packages)]
111 10a9cf64 Vangelis Koukis
    while stack:
112 10a9cf64 Vangelis Koukis
        where, prefix, package, only_in_packages = stack.pop(0)
113 10a9cf64 Vangelis Koukis
        for name in os.listdir(where):
114 10a9cf64 Vangelis Koukis
            fn = os.path.join(where, name)
115 10a9cf64 Vangelis Koukis
            if os.path.isdir(fn):
116 10a9cf64 Vangelis Koukis
                bad_name = False
117 10a9cf64 Vangelis Koukis
                for pattern in exclude_directories:
118 10a9cf64 Vangelis Koukis
                    if (fnmatchcase(name, pattern)
119 10a9cf64 Vangelis Koukis
                        or fn.lower() == pattern.lower()):
120 10a9cf64 Vangelis Koukis
                        bad_name = True
121 10a9cf64 Vangelis Koukis
                        if show_ignored:
122 10a9cf64 Vangelis Koukis
                            print >> sys.stderr, (
123 10a9cf64 Vangelis Koukis
                                "Directory %s ignored by pattern %s"
124 10a9cf64 Vangelis Koukis
                                % (fn, pattern))
125 10a9cf64 Vangelis Koukis
                        break
126 10a9cf64 Vangelis Koukis
                if bad_name:
127 10a9cf64 Vangelis Koukis
                    continue
128 10a9cf64 Vangelis Koukis
                if (os.path.isfile(os.path.join(fn, "__init__.py"))
129 10a9cf64 Vangelis Koukis
                    and not prefix):
130 10a9cf64 Vangelis Koukis
                    if not package:
131 10a9cf64 Vangelis Koukis
                        new_package = name
132 10a9cf64 Vangelis Koukis
                    else:
133 10a9cf64 Vangelis Koukis
                        new_package = package + "." + name
134 10a9cf64 Vangelis Koukis
                    stack.append((fn, "", new_package, False))
135 10a9cf64 Vangelis Koukis
                else:
136 866bb9c1 Christos Stavrakakis
                    stack.append((fn, prefix + name + "/", package,
137 866bb9c1 Christos Stavrakakis
                                  only_in_packages))
138 10a9cf64 Vangelis Koukis
            elif package or not only_in_packages:
139 10a9cf64 Vangelis Koukis
                # is a file
140 10a9cf64 Vangelis Koukis
                bad_name = False
141 10a9cf64 Vangelis Koukis
                for pattern in exclude:
142 10a9cf64 Vangelis Koukis
                    if (fnmatchcase(name, pattern)
143 10a9cf64 Vangelis Koukis
                        or fn.lower() == pattern.lower()):
144 10a9cf64 Vangelis Koukis
                        bad_name = True
145 10a9cf64 Vangelis Koukis
                        if show_ignored:
146 10a9cf64 Vangelis Koukis
                            print >> sys.stderr, (
147 10a9cf64 Vangelis Koukis
                                "File %s ignored by pattern %s"
148 10a9cf64 Vangelis Koukis
                                % (fn, pattern))
149 10a9cf64 Vangelis Koukis
                        break
150 10a9cf64 Vangelis Koukis
                if bad_name:
151 10a9cf64 Vangelis Koukis
                    continue
152 866bb9c1 Christos Stavrakakis
                out.setdefault(package, []).append(prefix + name)
153 10a9cf64 Vangelis Koukis
    return out
154 10a9cf64 Vangelis Koukis
155 10a9cf64 Vangelis Koukis
setup(
156 866bb9c1 Christos Stavrakakis
    name='devflow',
157 866bb9c1 Christos Stavrakakis
    version=VERSION,
158 866bb9c1 Christos Stavrakakis
    license='BSD',
159 866bb9c1 Christos Stavrakakis
    url='http://www.synnefo.ogr/',
160 866bb9c1 Christos Stavrakakis
    description=SHORT_DESCRIPTION,
161 866bb9c1 Christos Stavrakakis
    long_description=README + '\n\n' + CHANGES,
162 866bb9c1 Christos Stavrakakis
    classifiers=CLASSIFIERS,
163 866bb9c1 Christos Stavrakakis
164 6b918aa6 Christos Stavrakakis
    author='Synnefo development team',
165 6b918aa6 Christos Stavrakakis
    author_email='synnefo-devel@googlegroups.com',
166 6b918aa6 Christos Stavrakakis
    maintainer='Synnefo development team',
167 6b918aa6 Christos Stavrakakis
    maintainer_email='synnefo-devel@googlegroups.com',
168 866bb9c1 Christos Stavrakakis
169 866bb9c1 Christos Stavrakakis
    packages=PACKAGES,
170 866bb9c1 Christos Stavrakakis
    package_dir={'': PACKAGES_ROOT},
171 866bb9c1 Christos Stavrakakis
    include_package_data=True,
172 866bb9c1 Christos Stavrakakis
    package_data=find_package_data('.'),
173 866bb9c1 Christos Stavrakakis
    zip_safe=False,
174 866bb9c1 Christos Stavrakakis
175 866bb9c1 Christos Stavrakakis
    install_requires=INSTALL_REQUIRES,
176 866bb9c1 Christos Stavrakakis
177 866bb9c1 Christos Stavrakakis
    entry_points={
178 10a9cf64 Vangelis Koukis
     'console_scripts': [
179 866bb9c1 Christos Stavrakakis
         'devflow-version=devflow.versioning:main',
180 7c1589db Christos Stavrakakis
         'devflow-bump-version=devflow.versioning:bump_version_main',
181 bec4bf12 Christos Stavrakakis
         'devflow-update-version=devflow.versioning:update_version',
182 866bb9c1 Christos Stavrakakis
         'devflow-autopkg=devflow.autopkg:main',
183 10a9cf64 Vangelis Koukis
         ],
184 10a9cf64 Vangelis Koukis
      },
185 10a9cf64 Vangelis Koukis
)