chiark / gitweb /
Set umask to 0022 during the setup.py execution
[stgit] / setup.py
1 #!/usr/bin/env python
2
3 import sys, glob, os
4 from distutils.core import setup
5
6 from stgit.version import version, git_min_ver, python_min_ver
7 from stgit.run import Run
8
9 def __version_to_list(version):
10     """Convert a version string to a list of numbers or strings
11     """
12     ver_list = []
13     for p in version.split('.'):
14         try:
15             n = int(p)
16         except ValueError:
17             n = p
18         ver_list.append(n)
19     return ver_list
20
21 def __check_min_version(min_ver, ver):
22     """Check whether ver is greater or equal to min_ver
23     """
24     min_ver_list = __version_to_list(min_ver)
25     ver_list = __version_to_list(ver)
26     return min_ver_list <= ver_list
27
28 def __check_python_version():
29     """Check the minimum Python version
30     """
31     pyver = '.'.join(str(n) for n in sys.version_info)
32     if not __check_min_version(python_min_ver, pyver):
33         print >> sys.stderr, 'Python version %s or newer required. Found %s' \
34               % (python_min_ver, pyver)
35         sys.exit(1)
36
37 def __check_git_version():
38     """Check the minimum GIT version
39     """
40     gitver = Run('git', '--version').output_one_line().split()[2]
41     if not __check_min_version(git_min_ver, gitver):
42         print >> sys.stderr, 'GIT version %s or newer required. Found %s' \
43               % (git_min_ver, gitver)
44         sys.exit(1)
45
46 # Check the minimum versions required
47 if sys.argv[1] in ['install', 'build']:
48     __check_python_version()
49     __check_git_version()
50
51 # ensure readable template files
52 old_mask = os.umask(0022)
53
54 setup(name = 'stgit',
55       version = version,
56       license = 'GPLv2',
57       author = 'Catalin Marinas',
58       author_email = 'catalin.marinas@gmail.com',
59       url = 'http://www.procode.org/stgit/',
60       description = 'Stacked GIT',
61       long_description = 'Push/pop utility on top of GIT',
62       scripts = ['stg'],
63       packages = ['stgit', 'stgit.commands'],
64       data_files = [('share/stgit/templates', glob.glob('templates/*.tmpl')),
65                     ('share/stgit/examples', glob.glob('examples/*.tmpl')),
66                     ('share/stgit/examples', ['examples/gitconfig']),
67                     ('share/stgit/contrib', ['contrib/diffcol.sh',
68                                              'contrib/stgbashprompt.sh',
69                                              'contrib/stgit-completion.bash']),
70                     ('share/doc/stgit', glob.glob('doc/*.txt'))]
71       )
72
73 # restore the old mask
74 os.umask(old_mask)