view Resources/Graveyard/CheckAutoconfiguration.py @ 151:a4a532a60838

sync, support linux standard base
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 03 Jan 2018 16:58:59 +0100 (2018-01-03)
parents d7cae66abeb6
children
line wrap: on
line source
#!/usr/bin/python

import os
import platform
import re
import sys

if (len(sys.argv) > 3 or
    (len(sys.argv) == 2 and
     sys.argv[1] in [ '-h', '--help' ])):
    print('Usage: %s <Platform> [Path to pg_config.h]' % sys.argv[0])
    print('')
    print('Example: %s linux64 ~/Subversion/orthanc-postgresql/s/AUTOGENERATED/pg_config.h' % sys.argv[0])
    print('')
    exit(-1)


if len(sys.argv) >= 2:
    PLATFORM = sys.argv[1]
else:
    ARCH = platform.architecture()[0]
    if ARCH == '64bit':
        ARCH = 64
    elif ARCH == '32bit':
        ARCH = 32
    else:
        raise Exception('Unknown architecture: %s' % ARCH)

    SYSTEM = platform.system()
    if SYSTEM == 'Linux':
        SYSTEM = 'linux'
    elif SYSTEM == 'Darwin':
        SYSTEM = 'darwin'
    elif SYSTEM == 'Windows':
        SYSTEM = 'windows'
    elif SYSTEM == 'OpenBSD':
        SYSTEM = 'openbsd'
    elif SYSTEM == 'FreeBSD':
        SYSTEM = 'freebsd'
    else:
        raise Exception('Unknown system: %s' % SYSTEM)

    PLATFORM = '%s%d' % (SYSTEM, ARCH)

print('Testing platform: %s' % PLATFORM)

REFERENCE = os.path.join(os.path.dirname(__file__), 'pg_config-%s.h' % PLATFORM)
print('Reference file: %s' % REFERENCE)

if len(sys.argv) >= 3:
    GENERATED = sys.argv[2]
else:
    GENERATED = os.path.join(os.getcwd(), 'AUTOGENERATED', 'pg_config.h')

print('Autogenerated file: %s\n' % GENERATED)


def GetDefinitions(path):
    defs = {}

    r = re.compile(r'^#define ([a-zA-Z0-9_]+)\s+?($|.+)')

    with open(path, 'r') as f:
        for l in f.readlines():
            l = l.strip()

            p = l.find('/*')
            if p >= 0:
                l = l[0:p]

            m = r.match(l)
            if m != None:
                defs[m.group(1)] = m.group(2)
                #print(m.group(1), m.group(2))

    return defs


reference = GetDefinitions(REFERENCE)
generated = GetDefinitions(GENERATED)

for (key, value) in generated.items():
    if not key in reference:
        print('Key not in reference: %s == %s' % (key, value))

print('')

for (key, value) in generated.items():
    if key in reference and reference[key] != value:
        print('Bad value for key %s: %s != %s' % (key, value, reference[key]))

print('')