File: find_swig

package info (click to toggle)
consensuscore 1.1.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 3,384 kB
  • sloc: cpp: 38,940; python: 2,083; ansic: 542; sh: 184; makefile: 82; cs: 10
file content (50 lines) | stat: -rwxr-xr-x 1,478 bytes parent folder | download | duplicates (3)
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
#!/usr/bin/python3

import os, re, sys
from glob import glob
from os.path import join, dirname as up

SWIG_MINIMUM_VERSION  = (2,0,7)

def str_version(tpl):
    return ".".join(map(str, tpl))

def find_swig():
    # return `which swig` or else None
    which_swig = os.popen("which swig")
    which_swig_output = which_swig.read()
    which_swig_status = which_swig.close()
    if which_swig_status is None:
        return which_swig_output.strip()
    else:
        return None

def swig_version(swigExecutablePath):
    """
    Return the version of the swig provided, or None if it is not a
    valid SWIG.
    """
    swig_version_pipe = os.popen(swigExecutablePath + " -version")
    swig_version_output = swig_version_pipe.read()
    swig_version_status = swig_version_pipe.close()
    if swig_version_status == None:
        m = re.search("SWIG Version (.*)\n", swig_version_output)
        if m:
            swig_version_string = m.group(1)
            return tuple(map(int, swig_version_string.split(".")))
    else:
        return None

if __name__ == '__main__':
    if len(sys.argv) > 1:
        swig = sys.argv[1]
    else:
        swig = find_swig()

    if swig is None or swig_version(swig) < SWIG_MINIMUM_VERSION:
        print("SWIG version at least %s required!" \
            % str_version(SWIG_MINIMUM_VERSION), file=sys.stderr)
        print("Use --swig=<path> to specify SWIG location.", file=sys.stderr)
        sys.exit(1)
    else:
        print(swig)