/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
126.1.31 by Szilveszter Farkas (Phanatic)
We also support other versions than 2.4.
1
#!/usr/bin/python
608 by Jelmer Vernooij
Merge create-credits into setup.py.
2
83 by Jelmer Vernooij
Merge Olive code.
3
"""GTK+ Frontends for various Bazaar commands."""
0.8.10 by Szilveszter Farkas (Phanatic)
2006-07-16 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
4
288 by Jelmer Vernooij
Add check command to setup.py.
5
from distutils.core import setup, Command
0.9.1 by Stéphane Raimbault
Work on translation.
6
from distutils.command.install_data import install_data
608 by Jelmer Vernooij
Merge create-credits into setup.py.
7
from distutils.command.build import build
0.9.1 by Stéphane Raimbault
Work on translation.
8
from distutils.dep_util import newer
9
from distutils.log import info
0.8.74 by Szilveszter Farkas (Phanatic)
Fix the Win32 build/install issue.
10
import glob
0.9.1 by Stéphane Raimbault
Work on translation.
11
import os
0.8.74 by Szilveszter Farkas (Phanatic)
Fix the Win32 build/install issue.
12
import sys
0.9.1 by Stéphane Raimbault
Work on translation.
13
288 by Jelmer Vernooij
Add check command to setup.py.
14
class Check(Command):
15
    description = "Run unit tests"
16
17
    user_options = []
18
19
    def initialize_options(self):
20
        pass
21
22
    def finalize_options(self):
23
        pass
24
25
    def get_command_name(self):
26
        return 'test'
27
28
    def run(self):
29
        from bzrlib.tests import TestLoader, TestSuite, TextTestRunner
30
        import __init__ as bzrgtk
31
        runner = TextTestRunner()
32
        loader = TestLoader()
33
        suite = TestSuite()
34
        suite.addTest(bzrgtk.test_suite())
35
        result = runner.run(suite)
36
        return result.wasSuccessful()
37
608 by Jelmer Vernooij
Merge create-credits into setup.py.
38
39
class CreateCredits(Command):
40
    description = "Create credits file"
41
622 by Jelmer Vernooij
Allow --url option to ./setup.py build_credits
42
    user_options = [("url=", None, "URL of branch")]
608 by Jelmer Vernooij
Merge create-credits into setup.py.
43
44
    def initialize_options(self):
622 by Jelmer Vernooij
Allow --url option to ./setup.py build_credits
45
        self.url = "."
608 by Jelmer Vernooij
Merge create-credits into setup.py.
46
47
    def finalize_options(self):
48
        pass
49
50
    def get_command_name(self):
622 by Jelmer Vernooij
Allow --url option to ./setup.py build_credits
51
        return 'build_credits'
608 by Jelmer Vernooij
Merge create-credits into setup.py.
52
53
    def run(self):
622 by Jelmer Vernooij
Allow --url option to ./setup.py build_credits
54
        from bzrlib.plugin import load_plugins; load_plugins()
608 by Jelmer Vernooij
Merge create-credits into setup.py.
55
        from bzrlib.branch import Branch
56
        from bzrlib.plugins.stats import find_credits
57
58
        import pickle
59
622 by Jelmer Vernooij
Allow --url option to ./setup.py build_credits
60
        branch = Branch.open(self.url)
608 by Jelmer Vernooij
Merge create-credits into setup.py.
61
        credits = find_credits(branch.repository, branch.last_revision())
62
63
        pickle.dump(credits, file("credits.pickle", 'w'))
64
        return True
65
66
609 by Jelmer Vernooij
Run build_credits subcommand as part of ./setup.py build.
67
def is_versioned(cmd):
611 by Jelmer Vernooij
Fix import.
68
    from bzrlib.errors import NotBranchError
609 by Jelmer Vernooij
Run build_credits subcommand as part of ./setup.py build.
69
    try:
70
        from bzrlib.branch import Branch
71
        Branch.open(".")
72
        return True
73
    except NotBranchError:
74
        return False
75
76
608 by Jelmer Vernooij
Merge create-credits into setup.py.
77
class BuildData(build):
609 by Jelmer Vernooij
Run build_credits subcommand as part of ./setup.py build.
78
    sub_commands = build.sub_commands[:]
79
    sub_commands.append(('build_credits', is_versioned))
608 by Jelmer Vernooij
Merge create-credits into setup.py.
80
81
0.9.1 by Stéphane Raimbault
Work on translation.
82
class InstallData(install_data):
126.1.30 by Szilveszter Farkas (Phanatic)
Added the ability to install the Nautilus plugin (Fixed: #75603)
83
    def run(self):
84
        self.data_files.extend(self._compile_po_files())
463 by Martin Albisetti
Enable default nautilus integration
85
        self.data_files.extend(self._nautilus_plugin())
126.1.30 by Szilveszter Farkas (Phanatic)
Added the ability to install the Nautilus plugin (Fixed: #75603)
86
        install_data.run(self)
441 by Martin Albisetti
Added checking that the install enviroment is Linux before updating the icon cache
87
442 by Martin Albisetti
Check if command exists first before updating the cache to support all platforms
88
        try:
89
            subprocess.check_call('gtk-update-icon-cache -f -t /usr/share/icons/hicolor')
90
        except:
91
            pass
440 by Martin Albisetti
Install new bzr icons (emblems) and update the icon cache
92
126.1.30 by Szilveszter Farkas (Phanatic)
Added the ability to install the Nautilus plugin (Fixed: #75603)
93
    def _compile_po_files(self):
94
        data_files = []
95
        
96
        # Don't install language files on Win32
97
        if sys.platform == 'win32':
98
            return data_files
99
        
100
        PO_DIR = 'po'
101
        for po in glob.glob(os.path.join(PO_DIR,'*.po')):
102
            lang = os.path.basename(po[:-3])
103
            # It's necessary to compile in this directory (not in po_dir)
104
            # because install_data can't rename file
105
            mo = os.path.join('build', 'mo', lang, 'olive-gtk.mo')
106
            
107
            directory = os.path.dirname(mo)
108
            if not os.path.exists(directory):
109
                info('creating %s' % directory)
110
                os.makedirs(directory)
111
            
112
            if newer(po, mo):
113
                # True if mo doesn't exist
114
                cmd = 'msgfmt -o %s %s' % (mo, po)
115
                info('compiling %s -> %s' % (po, mo))
116
                if os.system(cmd) != 0:
117
                    raise SystemExit('Error while running msgfmt')
118
                
119
                dest = os.path.dirname(os.path.join('share', 'locale', lang, 'LC_MESSAGES', 'olive-gtk.mo'))
120
                data_files.append((dest, [mo]))
121
        
122
        return data_files
123
    
124
    def _nautilus_plugin(self):
125
        files = []
126
        if sys.platform[:5] == 'linux':
127
            cmd = os.popen('pkg-config --variable=pythondir nautilus-python', 'r')
560.7.1 by Daniel Schömer
Strip newline from nautilus-python pythondir read from pkg-config.
128
            res = cmd.readline().strip()
126.1.30 by Szilveszter Farkas (Phanatic)
Added the ability to install the Nautilus plugin (Fixed: #75603)
129
            ret = cmd.close()
130
            
131
            if ret is None:
132
                dest = res[5:]
133
                files.append((dest, ['nautilus-bzr.py']))
134
        
135
        return files
83 by Jelmer Vernooij
Merge Olive code.
136
137
138
setup(
91.1.10 by Jelmer Vernooij
Fix name for bzr-gtk (closes: #67933), update version number.
139
    name = "bzr-gtk",
590 by Jelmer Vernooij
Open 0.96.0 for development.
140
    version = "0.96.0",
83 by Jelmer Vernooij
Merge Olive code.
141
    maintainer = "Jelmer Vernooij",
142
    maintainer_email = "jelmer@samba.org",
143
    description = "GTK+ Frontends for various Bazaar commands",
486 by Jelmer Vernooij
Release 0.94.0.
144
    license = "GNU GPL v2 or later",
608 by Jelmer Vernooij
Merge create-credits into setup.py.
145
    scripts = ['olive-gtk', 'bzr-handle-patch', 'bzr-notify'],
610 by Jelmer Vernooij
Re-add URL.
146
    url = "http://bazaar-vcs.org/BzrGtk",
83 by Jelmer Vernooij
Merge Olive code.
147
    package_dir = {
148
        "bzrlib.plugins.gtk": ".",
149
        "bzrlib.plugins.gtk.viz": "viz", 
66.2.13 by Jelmer Vernooij
Install olive.
150
        "bzrlib.plugins.gtk.annotate": "annotate",
126.1.34 by Szilveszter Farkas (Phanatic)
Install test suite.
151
        "bzrlib.plugins.gtk.olive": "olive",
423.10.1 by Gary van der Merwe
Add branchview dir to setup.py
152
        "bzrlib.plugins.gtk.tests": "tests",
153
        "bzrlib.plugins.gtk.branchview": "branchview",
476.1.1 by Chris Lamb
Build and install the bzrlib.plugins.gtk.preferences package
154
        "bzrlib.plugins.gtk.preferences": "preferences",
83 by Jelmer Vernooij
Merge Olive code.
155
        },
156
    packages = [
157
        "bzrlib.plugins.gtk",
158
        "bzrlib.plugins.gtk.viz",
66.2.13 by Jelmer Vernooij
Install olive.
159
        "bzrlib.plugins.gtk.annotate",
126.1.34 by Szilveszter Farkas (Phanatic)
Install test suite.
160
        "bzrlib.plugins.gtk.olive",
423.10.1 by Gary van der Merwe
Add branchview dir to setup.py
161
        "bzrlib.plugins.gtk.tests",
162
        "bzrlib.plugins.gtk.branchview",
476.1.1 by Chris Lamb
Build and install the bzrlib.plugins.gtk.preferences package
163
        "bzrlib.plugins.gtk.preferences",
83 by Jelmer Vernooij
Merge Olive code.
164
        ],
560.5.1 by Jasper Groenewegen
Remove olive.glade
165
    data_files=[('share/olive', ['cmenu.ui',
195.6.4 by Szilveszter Farkas (Phanatic)
The Windows drive selector was moved to the location bar.
166
                                ]),
607 by Jelmer Vernooij
Install credits pickle.
167
                ('share/bzr-gtk', ['credits.pickle']),
168
               ('share/bzr-gtk/icons', ['icons/commit.png',
195.6.4 by Szilveszter Farkas (Phanatic)
The Windows drive selector was moved to the location bar.
169
                                 'icons/commit16.png',
170
                                 'icons/diff.png',
171
                                 'icons/diff16.png',
172
                                 'icons/log.png',
173
                                 'icons/log16.png',
174
                                 'icons/pull.png',
175
                                 'icons/pull16.png',
176
                                 'icons/push.png',
177
                                 'icons/push16.png',
254.2.1 by Gary van der Merwe
Make icon locations consistant between source and installed version. Let glade nkow where to find the icons with a project file.
178
                                 'icons/refresh.png',
568.1.1 by Jasper Groenewegen
Add missing icon to setup.py to prevent Olive crash
179
                                 'icons/olive-gtk.png',
533.12.2 by Jasper Groenewegen
Use icon_path.. The Right Way (tm)
180
                                 'icons/oliveicon2.png',
181
                                 'icons/sign-bad.png',
399.1.19 by Jelmer Vernooij
Add utility function for finding icon paths.
182
                                 'icons/sign-ok.png',
183
                                 'icons/sign.png',
184
                                 'icons/sign-unknown.png',
560.8.1 by Daniel Schömer
Missing comma in data_files list.
185
                                 'icons/tag-16.png',
450.6.3 by Daniel Schierbeck
Made the bug icon be installed.
186
                                 'icons/bug.png',
399.1.19 by Jelmer Vernooij
Add utility function for finding icon paths.
187
                                 'icons/bzr-icon-64.png']),
224 by Jelmer Vernooij
Install all desktop files.
188
                ('share/applications', ['olive-gtk.desktop',
189
                                        'bazaar-properties.desktop',
450.7.2 by Jelmer Vernooij
Register bzr ghandle-patch as command for opening diffs and patches.
190
                                        'bzr-handle-patch.desktop',
224 by Jelmer Vernooij
Install all desktop files.
191
                                        'bzr-notify.desktop']),
450.7.1 by Jelmer Vernooij
Register bzr-gtk as patch handler.
192
                ('share/application-registry', ['bzr-gtk.applications']),
399.1.19 by Jelmer Vernooij
Add utility function for finding icon paths.
193
                ('share/pixmaps', ['icons/olive-gtk.png', 'icons/bzr-icon-64.png']),
440 by Martin Albisetti
Install new bzr icons (emblems) and update the icon cache
194
                ('share/icons/hicolor/scalable/emblems', 
195
                    ['icons/emblem-bzr-added.svg', 
196
                        'icons/emblem-bzr-conflict.svg', 
197
                        'icons/emblem-bzr-controlled.svg', 
198
                        'icons/emblem-bzr-modified.svg',
199
                        'icons/emblem-bzr-removed.svg'])
195.6.4 by Szilveszter Farkas (Phanatic)
The Windows drive selector was moved to the location bar.
200
               ],
288 by Jelmer Vernooij
Add check command to setup.py.
201
    cmdclass={'install_data': InstallData,
608 by Jelmer Vernooij
Merge create-credits into setup.py.
202
              'build_credits': CreateCredits,
609 by Jelmer Vernooij
Run build_credits subcommand as part of ./setup.py build.
203
              'build': BuildData,
288 by Jelmer Vernooij
Add check command to setup.py.
204
              'check': Check}
83 by Jelmer Vernooij
Merge Olive code.
205
)