summaryrefslogtreecommitdiff
blob: 7853b23ba1b888ce77e37791a09a3f79828fc1ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
--- a/setup.py
+++ b/setup.py
@@ -23,7 +23,7 @@
 #
 
 '''
-Gramps distutils module.
+Gramps setuptools module.
 '''
 
 #check python version first
@@ -32,11 +32,11 @@
 if sys.version_info < (3, 2):
     raise SystemExit("Gramps requires Python 3.2 or later.")
 
-from distutils import log
-from distutils.core import setup, Command
-from distutils.util import convert_path, newer
-from distutils.command.build import build as _build
-from distutils.command.install import install as _install
+from setuptools import setup, Command
+try:
+    from setuptools.command.build import build as _build
+except ImportError:
+    from distutils.command.build import build as _build
 import os
 import glob
 import codecs
@@ -45,6 +45,9 @@
 from gramps.version import VERSION
 import unittest
 import argparse
+import logging
+
+_LOG = logging.getLogger(".setup")
 
 # this list MUST be a subset of _LOCALE_NAMES in gen/utils/grampslocale.py
 # (that is, if you add a new language here, be sure it's in _LOCALE_NAMES too)
@@ -75,6 +78,17 @@
     packaging = True
 sys.argv = [sys.argv[0]] + passthrough
 
+def newer(source, target):
+    '''
+    Determines if a target file needs to be rebuilt.
+
+    Returns True if the target file doesn't exist or if the source file is
+    newer than the target file.
+    '''
+    if not os.path.exists(target):
+        return True
+    return os.path.getmtime(source) > os.path.getmtime(target)
+
 def intltool_version():
     '''
     Return the version of intltool as a tuple.
@@ -140,7 +154,7 @@
                 reply = input(ask)
                 if reply in ['n', 'N']:
                     raise SystemExit(msg)
-            log.info('Compiling %s >> %s', po_file, mo_file)
+            _LOG.info('Compiling %s >> %s', po_file, mo_file)
 
         #linux specific piece:
         target = 'share/locale/' + lang + '/LC_MESSAGES'
@@ -179,7 +193,7 @@
                     with open(newfile, 'rb') as f_in,\
                             gzip.open(man_file_gz, 'wb') as f_out:
                         f_out.writelines(f_in)
-                        log.info('Compiling %s >> %s', filename, man_file_gz)
+                        _LOG.info('Compiling %s >> %s', filename, man_file_gz)
 
                     os.remove(newfile)
                     filename = False
@@ -193,30 +207,26 @@
     '''
     Merge translation files into desktop and mime files
     '''
-    for filename in _FILES:
-        filename = convert_path(filename)
-        strip_files(filename + '.in', filename, ['_tip', '_name'])
-
     i_v = intltool_version()
     if i_v is None or i_v < (0, 25, 0):
-        log.info('No intltool or version < 0.25.0, build_intl is aborting')
+        _LOG.info('No intltool or version < 0.25.0, build_intl is aborting')
         return
     data_files = build_cmd.distribution.data_files
     base = build_cmd.build_base
 
-    merge_files = (('data/gramps.desktop', 'share/applications', '-d'),
-                    ('data/gramps.keys', 'share/mime-info', '-k'),
-                    ('data/gramps.xml', 'share/mime/packages', '-x'),
-                    ('data/gramps.appdata.xml', 'share/metainfo', '-x'))
+    merge_files = (('gramps.desktop', 'share/applications', '-d'),
+                    ('gramps.keys', 'share/mime-info', '-k'),
+                    ('gramps.xml', 'share/mime/packages', '-x'),
+                    ('gramps.appdata.xml', 'share/metainfo', '-x'))
 
     for filename, target, option in merge_files:
-        filenamelocal = convert_path(filename)
+        filenamelocal = os.path.join('data', filename)
         newfile = os.path.join(base, filenamelocal)
         newdir = os.path.dirname(newfile)
         if not(os.path.isdir(newdir) or os.path.islink(newdir)):
             os.makedirs(newdir)
         merge(filenamelocal + '.in', newfile, option)
-        data_files.append((target, [base + '/' + filename]))
+        data_files.append((target, [base + '/data/' + filename]))
 
 def strip_files(in_file, out_file, mark):
     '''
@@ -232,7 +242,7 @@
                     line = line.replace(marker, marker[1:])
                 fb.write(line)
         old.close()
-        log.info('Compiling %s >> %s', in_file, out_file)
+        _LOG.info('Compiling %s >> %s', in_file, out_file)
 
 def merge(in_file, out_file, option, po_dir='po', cache=True):
     '''
@@ -262,7 +272,7 @@
             msg = ('ERROR: %s was not merged into the translation files!\n' %
                     out_file)
             raise SystemExit(msg)
-        log.info('Compiling %s >> %s', in_file, out_file)
+        _LOG.info('Compiling %s >> %s', in_file, out_file)
 
 class build(_build):
     """Custom build command."""
@@ -273,22 +283,6 @@
         build_intl(self)
         _build.run(self)
 
-class install(_install):
-    """Custom install command."""
-    def run(self):
-        resource_file = os.path.join(os.path.dirname(__file__), 'gramps', 'gen',
-                                     'utils', 'resource-path')
-        with open(resource_file, 'w', encoding='utf-8', errors='strict') as fp:
-            if packaging:
-                path = resource_path
-            else:
-                path = os.path.abspath(os.path.join(self.install_data, 'share'))
-            fp.write(path)
-
-        _install.run(self)
-
-        os.remove(resource_file)
-
 class test(Command):
     """Command to run Gramps unit tests"""
     description = "run all unit tests"
@@ -503,7 +497,7 @@
       url = 'http://gramps-project.org',
       license = 'GPL v2 or greater',
       platforms = ['FreeBSD', 'Linux', 'MacOS', 'Windows'],
-      cmdclass = {'build': build, 'install': install, 'test': test},
+      cmdclass = {'build': build, 'test': test},
       packages = packages,
       package_data = {'gramps': package_data},
       data_files = data_files,
Binary files a/.setup.py.swp and b/.setup.py.swp differ