~ubuntuone-control-tower/ubuntu-sso-client/stable-13-10

977.1.1 by Rodney Dawes
Avoid using /usr/bin/env in scripts.
1
#!/usr/bin/python
537.1.1 by Rodney Dawes
Fix up some stuff in setup.py and make it executable
2
# setup.py - Build system for Ubuntu SSO Client package
3
#
841.2.10 by Diego Sarmentero
Some minor fixes.
4
# Copyright 2010-2012 Canonical Ltd.
537.1.1 by Rodney Dawes
Fix up some stuff in setup.py and make it executable
5
#
6
# This program is free software: you can redistribute it and/or modify it
541.1.1 by Rodney Dawes
Fix COPYING to be GPLv3
7
# under the terms of the GNU General Public License version 3, as published
8
# by the Free Software Foundation.
537.1.1 by Rodney Dawes
Fix up some stuff in setup.py and make it executable
9
#
10
# This program is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranties of
12
# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
541.1.1 by Rodney Dawes
Fix COPYING to be GPLv3
13
# PURPOSE.  See the GNU General Public License for more details.
537.1.1 by Rodney Dawes
Fix up some stuff in setup.py and make it executable
14
#
541.1.1 by Rodney Dawes
Fix COPYING to be GPLv3
15
# You should have received a copy of the GNU General Public License along
16
# with this program.  If not, see <http://www.gnu.org/licenses/>.
941.1.1 by Rodney Dawes
Add OpenSSL license exception
17
#
18
# In addition, as a special exception, the copyright holders give
19
# permission to link the code of portions of this program with the
20
# OpenSSL library under certain conditions as described in each
21
# individual source file, and distribute linked combinations
22
# including the two.
23
# You must obey the GNU General Public License in all respects
24
# for all of the code used other than OpenSSL.  If you modify
25
# file(s) with this exception, you may extend this exception to your
26
# version of the file(s), but you are not obligated to do so.  If you
27
# do not wish to do so, delete this exception statement from your
28
# version.  If you delete this exception statement from all source
29
# files in the program, then also delete it here.
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
30
"""Setup.py: build, distribute, clean."""
31
847.1.3 by Natalia B. Bidart
Another lint fix.
32
# pylint: disable=W0404, W0511
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
33
750.1.2 by ralsina
Add dummy build_i18n for windows
34
import distutils
537.1.1 by Rodney Dawes
Fix up some stuff in setup.py and make it executable
35
import os
36
import sys
37
579.1.1 by natalia.bidart at canonical
Adding translation support.
38
try:
39
    import DistUtilsExtra.auto
597.3.1 by David Planella
Do not override build_extra from python-distutils-extra, otherwise the debian package will not build translations
40
    from DistUtilsExtra.command import build_extra
579.1.1 by natalia.bidart at canonical
Adding translation support.
41
except ImportError:
42
    print >> sys.stderr, 'To build this program you need '\
43
                         'https://launchpad.net/python-distutils-extra'
44
    sys.exit(1)
45
assert DistUtilsExtra.auto.__version__ >= '2.18', \
1011.1.2 by Rodney Dawes
Ignore some new pep8 errors, and update code to fix others.
46
    'needs DistUtilsExtra.auto >= 2.18'
579.1.1 by natalia.bidart at canonical
Adding translation support.
47
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
48
from distutils import log
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
49
1030.1.4 by Brian Curtin
Rework setup
50
from ubuntu_sso.utils import get_cert_dir
51
1023.1.2 by Rodney Dawes
Replace PROJECT_NAME as well to have a single location for it.
52
PROJECT_NAME = 'ubuntu-sso-client'
1032 by Rodney Dawes
[release] 13.05
53
VERSION = '13.05'
1023.1.1 by Rodney Dawes
Add the version to constants.py as well.
54
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
55
POT_FILE = 'po/ubuntu-sso-client.pot'
56
SERVICE_FILE = 'data/com.ubuntu.sso.service'
847.1.1 by Natalia B. Bidart
- Install ui files consitently between Gtk and Qt (part of LP: #927994).
57
CONSTANTS = 'ubuntu_sso/constants.py'
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
58
847.1.1 by Natalia B. Bidart
- Install ui files consitently between Gtk and Qt (part of LP: #927994).
59
CLEANFILES = [SERVICE_FILE, POT_FILE, CONSTANTS, 'MANIFEST']
841.1.1 by Natalia B. Bidart
* Make the QT UI executable.
60
QT_UI_DIR = os.path.join('ubuntu_sso', 'qt', 'ui')
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
61
743.1.1 by Natalia B. Bidart
Adding proper ignores to u1lint.
62
1023.1.2 by Rodney Dawes
Replace PROJECT_NAME as well to have a single location for it.
63
def replace_version(*args, **kwargs):
64
    """Replace the @VERSION@ in the constants file with the actual version."""
65
    with open(CONSTANTS + '.in') as in_file:
66
        content = in_file.read()
67
        with open(CONSTANTS, 'w') as out_file:
68
            content = content.replace('@VERSION@', VERSION)
69
            content = content.replace('@PROJECT_NAME@', PROJECT_NAME)
70
            out_file.write(content)
71
72
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
73
def replace_prefix(prefix):
74
    """Replace every '@prefix@' with prefix within 'filename' content."""
1023.1.2 by Rodney Dawes
Replace PROJECT_NAME as well to have a single location for it.
75
    with open(SERVICE_FILE + '.in') as in_file:
76
        content = in_file.read()
77
        with open(SERVICE_FILE, 'w') as out_file:
78
            out_file.write(content.replace('@prefix@', prefix))
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
79
80
81
class SSOInstall(DistUtilsExtra.auto.install_auto):
82
    """Class to install proper files."""
83
84
    def run(self):
85
        """Do the install.
86
87
        Read from *.service.in and generate .service files by replacing
88
        @prefix@ by self.prefix.
89
90
        """
1026.1.1 by Rodney Dawes
Only replace root in the install_data string when root is set.
91
        prefix = self.install_data.replace(
92
            self.root if self.root is not None else '', '')
1023.1.2 by Rodney Dawes
Replace PROJECT_NAME as well to have a single location for it.
93
        replace_prefix(prefix)
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
94
        DistUtilsExtra.auto.install_auto.run(self)
1023.1.2 by Rodney Dawes
Replace PROJECT_NAME as well to have a single location for it.
95
        # Replace the CONSTANTS prefix here, so that we can do it directly in
96
        # the installed copy, rather than the lcoal copy. This allows us to
97
        # have a semi-generated version for use in tests, and a full version
98
        # for use in installed systems.
99
        with open(CONSTANTS) as in_file:
100
            content = in_file.read()
101
            with open(os.path.join(self.install_purelib,
102
                                   PROJECT_NAME,
103
                                   CONSTANTS), 'w') as out_file:
104
                out_file.write(content.replace('@prefix@', prefix))
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
105
106
107
class SSOBuild(build_extra.build_extra):
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
108
    """Build PyQt (.ui) files and resources."""
109
110
    description = "build PyQt GUIs (.ui) and resources (.qrc)"
111
112
    def compile_ui(self, ui_file, py_file=None):
113
        """Compile the .ui files to python modules."""
114
        # Search for pyuic4 in python bin dir, then in the $Path.
115
        if py_file is None:
116
            # go from the ui_file in the data folder to the
117
            # python file in the qt moodule
118
            py_file = os.path.split(ui_file)[1]
675.13.10 by Manuel de la Pena
Cleaned up setup.py.
119
            py_file = os.path.splitext(py_file)[0] + '_ui.py'
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
120
            py_file = os.path.join(QT_UI_DIR, py_file)
675.13.19 by Manuel de la Pena
Fixed typos.
121
        # we indeed want to catch Exception, is ugly but we need it
675.13.11 by Manuel de la Pena
Fixed lint/style issues.
122
        # pylint: disable=W0703
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
123
        try:
124
            # import the uic compiler from pyqt and generate the .py files
125
            # something similar could be done with pyside but that is left
126
            # as an exercise for the reader.
127
            from PyQt4 import uic
128
            fp = open(py_file, 'w')
129
            uic.compileUi(ui_file, fp)
130
            fp.close()
675.13.10 by Manuel de la Pena
Cleaned up setup.py.
131
            log.info('Compiled %s into %s', ui_file, py_file)
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
132
        except Exception, e:
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
133
            self.warn('Unable to compile user interface %s: %s' % (py_file, e))
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
134
            if not os.path.exists(py_file) or not file(py_file).read():
135
                raise SystemExit(1)
136
            return
675.13.11 by Manuel de la Pena
Fixed lint/style issues.
137
        # pylint: enable=W0703
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
138
139
    def compile_rc(self, qrc_file, py_file=None):
140
        """Compile the resources that will be included with the project."""
141
        import PyQt4
142
        # Search for pyuic4 in python bin dir, then in the $Path.
143
        if py_file is None:
675.13.10 by Manuel de la Pena
Cleaned up setup.py.
144
            py_file = os.path.split(qrc_file)[1]
145
            py_file = os.path.splitext(py_file)[0] + '_rc.py'
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
146
            py_file = os.path.join(QT_UI_DIR, py_file)
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
147
        path = os.getenv('PATH')
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
148
        os.putenv('PATH', path + os.path.pathsep + os.path.join(
149
                  os.path.dirname(PyQt4.__file__), 'bin'))
841.1.1 by Natalia B. Bidart
* Make the QT UI executable.
150
        if os.system('pyrcc4 -no-compress "%s" -o "%s"' %
1011.1.2 by Rodney Dawes
Ignore some new pep8 errors, and update code to fix others.
151
                     (qrc_file, py_file)) > 0:
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
152
            self.warn('Unable to generate python module {py_file}'
153
                      ' for resource file {qrc_file}'.format(
154
                      py_file=py_file, qrc_file=qrc_file))
675.13.11 by Manuel de la Pena
Fixed lint/style issues.
155
            if not os.path.exists(py_file) or not file(py_file).read():
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
156
                raise SystemExit(1)
157
        else:
158
            log.info('compiled %s into %s' % (qrc_file, py_file))
159
        os.putenv('PATH', path)
160
161
    def _generate_qrc(self, qrc_file, srcfiles, prefix):
675.13.11 by Manuel de la Pena
Fixed lint/style issues.
162
        """Generate the qrc file for the given src files."""
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
163
        basedir = os.path.dirname(qrc_file)
164
        f = open(qrc_file, 'w')
165
        try:
166
            f.write('<!DOCTYPE RCC><RCC version="1.0">\n')
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
167
            import cgi
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
168
            f.write('  <qresource prefix="%s">\n' % cgi.escape(prefix))
169
            for e in srcfiles:
170
                relpath = e[len(basedir) + 1:]
171
                f.write('    <file>%s</file>\n'
172
                        % cgi.escape(relpath.replace(os.path.sep, '/')))
173
            f.write('  </qresource>\n')
174
            f.write('</RCC>\n')
175
        finally:
176
            f.close()
177
178
    def build_rc(self, py_file, basedir, prefix='/'):
179
        """Generate compiled resource including any files under basedir"""
180
        # For details, see http://doc.qt.nokia.com/latest/resources.html
181
        qrc_file = os.path.join(basedir, '%s.qrc' % os.path.basename(basedir))
182
        srcfiles = [os.path.join(root, e)
183
                    for root, _dirs, files in os.walk(basedir) for e in files]
675.13.19 by Manuel de la Pena
Fixed typos.
184
        # NOTE: Here we cannot detect deleted files. In such cases, we need
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
185
        # to remove .qrc manually.
186
        try:
187
            self._generate_qrc(qrc_file, srcfiles, prefix)
188
            self.compile_rc(qrc_file, py_file)
189
        finally:
190
            os.unlink(qrc_file)
191
192
    def run(self):
193
        """Execute the command."""
1023.1.2 by Rodney Dawes
Replace PROJECT_NAME as well to have a single location for it.
194
        replace_version()
1011.1.2 by Rodney Dawes
Ignore some new pep8 errors, and update code to fix others.
195
        basepath = os.path.join('data', 'qt')
675.13.10 by Manuel de la Pena
Cleaned up setup.py.
196
        # TODO: build the resource files so that we can include them
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
197
        #self.build_rc(os.path.join(basepath, 'icons_rc.py'),
198
        #              os.path.join(os.path.dirname(__file__), 'icons'),
199
        #              '/icons')
200
        for dirpath, _, filenames in os.walk(basepath):
201
            for filename in filenames:
202
                if filename.endswith('.ui'):
203
                    self.compile_ui(os.path.join(dirpath, filename))
204
                elif filename.endswith('.qrc'):
205
                    self.compile_rc(os.path.join(dirpath, filename))
206
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
207
        build_extra.build_extra.run(self)
208
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
209
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
210
class SSOClean(DistUtilsExtra.auto.clean_build_tree):
211
    """Class to clean up after the build."""
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
212
213
    def run(self):
214
        """Clean up the built files."""
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
215
        for built_file in CLEANFILES:
216
            if os.path.exists(built_file):
217
                os.unlink(built_file)
218
219
        for dirpath, _, filenames in os.walk(os.path.join(QT_UI_DIR)):
675.13.10 by Manuel de la Pena
Cleaned up setup.py.
220
            for current_file in filenames:
221
                if current_file.endswith('_ui.py') or\
222
                                current_file.endswith('_rc.py'):
223
                    os.unlink(os.path.join(dirpath, current_file))
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
224
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
225
        DistUtilsExtra.auto.clean_build_tree.run(self)
226
227
675.22.1 by Manuel de la Pena
Updated the setup.py to generate a minimun .exe installation to be used on Windows.
228
def set_py2exe_paths():
229
    """Set the path so that py2exe finds the required modules."""
962.2.1 by Brian Curtin
Remove lazr mention from setup.py
230
    # Pylint does not understand same spaced imports
675.22.2 by Manuel de la Pena
Fixed pylint issues so that the different tests can be ran on Linux.
231
    # pylint: disable=F0401
675.22.1 by Manuel de la Pena
Updated the setup.py to generate a minimun .exe installation to be used on Windows.
232
    import win32com
233
    # pylint: enable=F0401
234
    try:
675.22.2 by Manuel de la Pena
Fixed pylint issues so that the different tests can be ran on Linux.
235
        # pylint: disable=F0401
675.22.1 by Manuel de la Pena
Updated the setup.py to generate a minimun .exe installation to be used on Windows.
236
        import py2exe.mf as modulefinder
675.22.2 by Manuel de la Pena
Fixed pylint issues so that the different tests can be ran on Linux.
237
        # pylint: enable=F0401
675.22.1 by Manuel de la Pena
Updated the setup.py to generate a minimun .exe installation to be used on Windows.
238
    except ImportError:
239
        import modulefinder
240
241
    # py2exe 0.6.4 introduced a replacement modulefinder.
242
    # This means we have to add package paths there,
243
    # not to the built-in one.  If this new modulefinder gets
244
    # integrated into Python, then we might be able to revert
245
    # this some day. If this doesn't work, try import modulefinder
246
    for package_path in win32com.__path__[1:]:
247
        modulefinder.AddPackagePath("win32com", package_path)
743.1.1 by Natalia B. Bidart
Adding proper ignores to u1lint.
248
    for extra_mod in ["win32com.server", "win32com.client"]:
675.22.1 by Manuel de la Pena
Updated the setup.py to generate a minimun .exe installation to be used on Windows.
249
        __import__(extra_mod)
250
        module = sys.modules[extra_mod]
251
        for module_path in module.__path__[1:]:
252
            modulefinder.AddPackagePath(extra_mod, module_path)
253
254
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
255
# pylint: disable=C0103
256
257
cmdclass = {
258
    'install': SSOInstall,
259
    'build': SSOBuild,
260
    'clean': SSOClean,
261
}
262
743.1.1 by Natalia B. Bidart
Adding proper ignores to u1lint.
263
873.1.1 by Natalia B. Bidart
- Proper name in setup.py for the proxy credentials executable
264
sso_executables = [
265
    'bin/ubuntu-sso-login',
266
    'bin/ubuntu-sso-login-qt',
267
    'bin/ubuntu-sso-proxy-creds-qt',
846.7.27 by Manuel de la Pena
Added the dialog to be used to show certificate issues.
268
    'bin/ubuntu-sso-ssl-certificate-qt',
873.1.1 by Natalia B. Bidart
- Proper name in setup.py for the proxy credentials executable
269
]
270
271
750.1.2 by ralsina
Add dummy build_i18n for windows
272
class dummy_build_i18n(distutils.cmd.Command):
750.1.3 by ralsina
style fix
273
750.1.2 by ralsina
Add dummy build_i18n for windows
274
    """Dummy for windows."""
750.1.3 by ralsina
style fix
275
750.1.2 by ralsina
Add dummy build_i18n for windows
276
    def initialize_options(self, *args):
277
        """Dummy."""
750.1.3 by ralsina
style fix
278
750.1.2 by ralsina
Add dummy build_i18n for windows
279
    def finalize_options(self, *args):
280
        """Dummy."""
750.1.3 by ralsina
style fix
281
750.1.2 by ralsina
Add dummy build_i18n for windows
282
    def run(self, *args):
283
        """Dummy."""
284
847.1.1 by Natalia B. Bidart
- Install ui files consitently between Gtk and Qt (part of LP: #927994).
285
750.1.2 by ralsina
Add dummy build_i18n for windows
286
if sys.platform == 'win32':
287
    cmdclass['build_i18n'] = dummy_build_i18n
288
289
1030.1.4 by Brian Curtin
Rework setup
290
data_files = [(get_cert_dir(),
291
              ['data/UbuntuOne-Go_Daddy_CA.pem',
292
               'data/UbuntuOne-ValiCert_Class_2_VA.pem',
293
               'data/UbuntuOne-Go_Daddy_Class_2_CA.pem'])]
294
295
if sys.platform == 'win32':
675.22.1 by Manuel de la Pena
Updated the setup.py to generate a minimun .exe installation to be used on Windows.
296
    set_py2exe_paths()
675.13.8 by Manuel de la Pena
Updated setup.py to work on windows.
297
    # for PyQt, see http://www.py2exe.org/index.cgi/Py2exeAndPyQt
675.22.2 by Manuel de la Pena
Fixed pylint issues so that the different tests can be ran on Linux.
298
    _includes = ['sip', 'email', 'ubuntu_sso.qt.gui',
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
299
                 'ubuntu_sso.qt.controllers', 'PyQt4.QtNetwork', 'PIL']
1030.1.4 by Brian Curtin
Rework setup
300
    extra = {
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
301
        'options': {
302
            'py2exe': {
303
                'bundle_files': 1,
304
                'skip_archive': 0,
305
                'includes': _includes,
306
                'optimize': 1,
307
                'dll_excludes': ["mswsock.dll", "powrprof.dll"],
308
            },
309
        },
310
        # add the console script so that py2exe compiles it
873.1.1 by Natalia B. Bidart
- Proper name in setup.py for the proxy credentials executable
311
        'console': sso_executables,
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
312
        'zipfile': None,
313
    }
314
else:
1030.1.4 by Brian Curtin
Rework setup
315
    data_files.extend([
873.1.1 by Natalia B. Bidart
- Proper name in setup.py for the proxy credentials executable
316
        ('lib/ubuntu-sso-client', sso_executables),
833.1.4 by Natalia B. Bidart
- Install the -gtk executable to the same location as the dbus service.
317
        ('share/dbus-1/services', ['data/com.ubuntu.sso.service']),
1030.1.4 by Brian Curtin
Rework setup
318
    ])
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
319
    extra = {}
320
321
DistUtilsExtra.auto.setup(
1023.1.2 by Rodney Dawes
Replace PROJECT_NAME as well to have a single location for it.
322
    name=PROJECT_NAME,
1023.1.1 by Rodney Dawes
Add the version to constants.py as well.
323
    version=VERSION,
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
324
    license='GPL v3',
1023.1.2 by Rodney Dawes
Replace PROJECT_NAME as well to have a single location for it.
325
    author='Ubuntu One Developers',
326
    author_email='ubuntuone-users@lists.launchpad.net',
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
327
    description='Ubuntu Single Sign-On client',
972.1.2 by Rodney Dawes
Fix pep8 warnings
328
    long_description=('Desktop service to allow applications to sign in'
329
                      'to Ubuntu services via SSO'),
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
330
    url='https://launchpad.net/ubuntu-sso-client',
1023.1.2 by Rodney Dawes
Replace PROJECT_NAME as well to have a single location for it.
331
    extra_path=PROJECT_NAME,
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
332
    data_files=data_files,
333
    packages=[
764.1.1 by ralsina
Add xdg_base_directory to the packages list
334
        'ubuntu_sso',
847.1.1 by Natalia B. Bidart
- Install ui files consitently between Gtk and Qt (part of LP: #927994).
335
        'ubuntu_sso.tests',
764.1.1 by ralsina
Add xdg_base_directory to the packages list
336
        'ubuntu_sso.keyring',
847.1.1 by Natalia B. Bidart
- Install ui files consitently between Gtk and Qt (part of LP: #927994).
337
        'ubuntu_sso.keyring.tests',
833.3.17 by Natalia B. Bidart
Moving runners to separated modules inside a python package.
338
        'ubuntu_sso.main',
847.1.1 by Natalia B. Bidart
- Install ui files consitently between Gtk and Qt (part of LP: #927994).
339
        'ubuntu_sso.main.tests',
764.1.1 by ralsina
Add xdg_base_directory to the packages list
340
        'ubuntu_sso.networkstate',
847.1.1 by Natalia B. Bidart
- Install ui files consitently between Gtk and Qt (part of LP: #927994).
341
        'ubuntu_sso.networkstate.tests',
764.1.1 by ralsina
Add xdg_base_directory to the packages list
342
        'ubuntu_sso.qt',
933.1.1 by Diego Sarmentero
Adding qt.main module to the setup script.
343
        'ubuntu_sso.qt.main',
841.1.1 by Natalia B. Bidart
* Make the QT UI executable.
344
        'ubuntu_sso.qt.ui',
833.3.17 by Natalia B. Bidart
Moving runners to separated modules inside a python package.
345
        'ubuntu_sso.utils',
847.1.1 by Natalia B. Bidart
- Install ui files consitently between Gtk and Qt (part of LP: #927994).
346
        'ubuntu_sso.utils.tests',
833.3.17 by Natalia B. Bidart
Moving runners to separated modules inside a python package.
347
        'ubuntu_sso.utils.runner',
833.3.28 by Natalia B. Bidart
Merged trunk in.
348
        'ubuntu_sso.utils.runner.tests',
833.3.17 by Natalia B. Bidart
Moving runners to separated modules inside a python package.
349
        'ubuntu_sso.utils.webclient',
847.1.1 by Natalia B. Bidart
- Install ui files consitently between Gtk and Qt (part of LP: #927994).
350
        'ubuntu_sso.utils.webclient.tests',
739.1.1 by Natalia B. Bidart
Attempt to have setup.py building on linux.
351
    ],
352
    cmdclass=cmdclass,
353
    **extra)