setup.py 3.8 KB
Newer Older
1
#!/bin/env python
2 3
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
4 5
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
6 7 8 9 10 11 12
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# See LICENSE for more details.
#
13
# Copyright: Red Hat Inc. 2013-2014
14 15
# Author: Lucas Meneghel Rodrigues <lmr@redhat.com>

16
import glob
17
import os
18
# pylint: disable=E0611
19

20
from distutils.core import setup
21 22 23

import avocado.version

24

25
VIRTUAL_ENV = 'VIRTUAL_ENV' in os.environ
C
Cleber Rosa 已提交
26 27


28 29 30 31 32 33 34 35 36 37 38 39 40
def get_dir(system_path=None, virtual_path=None):
    """
    Retrieve VIRTUAL_ENV friendly path
    :param system_path: Relative system path
    :param virtual_path: Overrides system_path for virtual_env only
    :return: VIRTUAL_ENV friendly path
    """
    if virtual_path is None:
        virtual_path = system_path
    if VIRTUAL_ENV:
        if virtual_path is None:
            virtual_path = []
        return os.path.join(*virtual_path)
41
    else:
42 43 44
        if system_path is None:
            system_path = []
        return os.path.join(*(['/'] + system_path))
45 46


47 48
def get_tests_dir():
    return get_dir(['usr', 'share', 'avocado', 'tests'], ['tests'])
49 50


51
def get_data_files():
52 53 54
    data_files = [(get_dir(['etc', 'avocado']), ['etc/avocado/avocado.conf'])]
    data_files += [(get_dir(['etc', 'avocado', 'conf.d']),
                   ['etc/avocado/conf.d/README'])]
55 56
    data_files += [(get_tests_dir(), glob.glob('examples/tests/*.py'))]
    for data_dir in glob.glob('examples/tests/*.data'):
57
        fmt_str = '%s/*' % data_dir
58
        for f in glob.glob(fmt_str):
59 60 61 62 63 64 65 66 67
            data_files += [(os.path.join(get_tests_dir(),
                                         os.path.basename(data_dir)), [f])]
    data_files.append((get_dir(['usr', 'share', 'doc', 'avocado'], ['.']),
                       ['man/avocado.rst', 'man/avocado-rest-client.rst']))
    data_files += [(get_dir(['usr', 'share', 'avocado', 'wrappers'],
                            ['wrappers']),
                    glob.glob('examples/wrappers/*.sh'))]
    data_files += [(get_dir(['usr', 'share', 'avocado', 'api'], ['api']),
                    glob.glob('examples/api/*/*.py'))]
68 69 70
    return data_files


71 72 73 74 75 76 77 78 79 80 81 82
def _get_plugin_resource_files(path):
    """
    Given a path, return all the files in there to package
    """
    flist = []
    for root, _, files in sorted(os.walk(path)):
        for name in files:
            fullname = os.path.join(root, name)
            flist.append(fullname[len('avocado/plugins/'):])
    return flist


83 84 85 86 87
def get_long_description():
    with open('README.rst', 'r') as req:
        req_contents = req.read()
    return req_contents

88 89 90 91 92 93 94 95 96 97 98 99 100 101
if __name__ == '__main__':
    setup(name='avocado',
          version=avocado.version.VERSION,
          description='Avocado Test Framework',
          long_description=get_long_description(),
          author='Avocado Developers',
          author_email='avocado-devel@redhat.com',
          url='http://avocado-framework.github.io/',
          packages=['avocado',
                    'avocado.cli',
                    'avocado.core',
                    'avocado.external',
                    'avocado.linux',
                    'avocado.utils',
102
                    'avocado.plugins',
103
                    'avocado.remote',
104 105 106 107
                    'avocado.restclient',
                    'avocado.restclient.cli',
                    'avocado.restclient.cli.args',
                    'avocado.restclient.cli.actions'],
108 109 110
          package_data={'avocado.plugins': _get_plugin_resource_files(
              'avocado/plugins/resources')},
          data_files=get_data_files(),
111 112
          scripts=['scripts/avocado',
                   'scripts/avocado-rest-client'])