File: setup.py

package info (click to toggle)
python-gnatpython 54-3
  • links: PTS, VCS
  • area: main
  • in suites: buster, jessie, jessie-kfreebsd, stretch, wheezy
  • size: 628 kB
  • ctags: 590
  • sloc: python: 3,056; ansic: 1,477; makefile: 38
file content (101 lines) | stat: -rwxr-xr-x 4,815 bytes parent folder | download
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
#!/usr/bin/env python
 ############################################################################
 #                                                                          #
 #                            SETUP.PY                                      #
 #                                                                          #
 #            Copyright (C) 2010-2011 Ada Core Technologies, Inc.           #
 #                                                                          #
 # 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     #
 # the Free Software Foundation, either version 3 of the License, or        #
 # (at your option) any later version.                                      #
 #                                                                          #
 # 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 the            #
 # GNU General Public License for more details.                             #
 #                                                                          #
 # You should have received a copy of the GNU General Public License        #
 # along with this program.  If not, see <http://www.gnu.org/licenses/>     #
 #                                                                          #
 ############################################################################

from distutils.command.build_ext import build_ext
from distutils.command.build_scripts import build_scripts
from distutils.core import setup
from distutils.extension import Extension
from distutils.sysconfig import get_python_inc, get_python_lib

import glob
import os
import platform
import sys

from gnatpython import __version__


# Distutils does not support support for compiled programs. So override de
# build_scripts command with ours. We first compile our program and copy
# it along with the Python scripts. Then we call the regular build_scripts
# command.
class build_scripts_gnatpython(build_scripts):
    def run(self):
        if 'Windows' in platform.system() or 'CYGWIN' in platform.system():
            os.system('gcc -o scripts/rlimit src/rlimit/rlimit-NT.c')
        else:
            os.system('gcc -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wl,-z,relro -o scripts/rlimit src/rlimit/rlimit.c')
        # Update the scripts list
        self.scripts = glob.glob('scripts/*')

        build_scripts.run(self)


# Our C module requires a mingw compiler. On windows python will use by
# default the Microsoft one and even if we use the --compiler=mingw option
# it does not seem to work all the time. So override the build_ext command.
# If the the platform is windows use out manual procedure. Otherwise use
# the regular build_ext implementation.
class build_ext_gnatpython(build_ext):
    def build_extension(self, ext):
        if 'Windows' not in platform.system() and \
          'CYGWIN' not in platform.system():
            return build_ext.build_extension(self, ext)
        else:
            # Get the python installation prefix
            python_prefix = sys.prefix

            # The Python version
            python_version = "%d.%d" % \
              (sys.version_info[0], sys.version_info[1])

            # The location of the static library (in fact an import library)
            python_lib = "%s/libs/libpython%s%s.a" % \
              (sys.prefix, sys.version_info[0], sys.version_info[1])

            # Find the location of Python includes in various locations.
            python_stdlib_dir = get_python_lib(True, False)
            python_include_dir = None
            for p in (get_python_inc(False),
                      python_stdlib_dir + '/config',
                      python_prefix + '/include/python/%s' % (python_version)):

                if os.path.isfile(p + '/Python.h'):
                    python_include_dir = p
                    break

            # Build our module with mingw GCC
            os.system('gcc -shared -static-libgcc -o %s/gnatpython/_term.pyd %s -I%s %s' % \
                      (self.build_lib, ' '.join(ext.sources),
                      python_include_dir,
                      python_lib))

setup(name='gnatpython',
      version=__version__,
      author="AdaCore",
      author_email="report@adacore.com",
      packages=['gnatpython'],
      scripts=glob.glob('scripts/*'),
      cmdclass={'build_scripts': build_scripts_gnatpython,
                'build_ext': build_ext_gnatpython},
      ext_modules=[Extension('gnatpython._term',
                             ['src/mod_term/terminals.c'])])