summaryrefslogtreecommitdiff
path: root/pylibfdt/setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'pylibfdt/setup.py')
-rwxr-xr-xpylibfdt/setup.py78
1 files changed, 7 insertions, 71 deletions
diff --git a/pylibfdt/setup.py b/pylibfdt/setup.py
index 95f1601..f0f0e10 100755
--- a/pylibfdt/setup.py
+++ b/pylibfdt/setup.py
@@ -4,13 +4,6 @@
setup.py file for SWIG libfdt
Copyright (C) 2017 Google, Inc.
Written by Simon Glass <sjg@chromium.org>
-
-Version is provided in VERSION
-
-If these variables are not given they are parsed from the Makefiles. This
-allows this script to be run stand-alone, e.g.:
-
- ./pylibfdt/setup.py install [--prefix=...]
"""
from distutils.core import setup, Extension
@@ -18,73 +11,16 @@ import os
import re
import sys
-# Decodes a Makefile assignment line into key and value (and plus for +=)
-RE_KEY_VALUE = re.compile('(?P<key>\w+) *(?P<plus>[+])?= *(?P<value>.*)$')
-
-
-def ParseMakefile(fname):
- """Parse a Makefile to obtain its variables.
-
- This collects variable assigments of the form:
-
- VAR = value
- VAR += more
-
- It does not pick out := assignments, as these are not needed here. It does
- handle line continuation.
-
- Returns a dict:
- key: Variable name (e.g. 'VAR')
- value: Variable value (e.g. 'value more')
- """
- makevars = {}
- with open(fname) as fd:
- prev_text = '' # Continuation text from previous line(s)
- for line in fd.read().splitlines():
- if line and line[-1] == '\\': # Deal with line continuation
- prev_text += line[:-1]
- continue
- elif prev_text:
- line = prev_text + line
- prev_text = '' # Continuation is now used up
- m = RE_KEY_VALUE.match(line)
- if m:
- value = m.group('value') or ''
- key = m.group('key')
-
- # Appending to a variable inserts a space beforehand
- if 'plus' in m.groupdict() and key in makevars:
- makevars[key] += ' ' + value
- else:
- makevars[key] = value
- return makevars
-
-def GetEnvFromMakefiles():
- """Scan the Makefiles to obtain the settings we need.
-
- This assumes that this script is being run from the top-level directory,
- not the pylibfdt directory.
- Returns:
- Tuple with:
- Version string
- List of extra C preprocessor flags needed
- """
- basedir = os.path.dirname(os.path.dirname(os.path.abspath(sys.argv[0])))
- makevars = ParseMakefile(os.path.join(basedir, 'Makefile'))
- version = '%s.%s.%s' % (makevars['VERSION'], makevars['PATCHLEVEL'],
- makevars['SUBLEVEL'])
- return version
+VERSION_PATTERN = '^#define DTC_VERSION "DTC ([^"]*)"$'
-progname = sys.argv[0]
-version = os.environ.get('VERSION')
+def get_version():
+ version_file = "version_gen.h"
+ f = open(version_file, 'rt')
+ m = re.match(VERSION_PATTERN, f.readline())
+ return m.group(1)
-# If we were called directly rather than through our Makefile (which is often
-# the case with Python module installation), read the settings from the
-# Makefile.
-if not version:
- version = GetEnvFromMakefiles()
libfdt_module = Extension(
'_libfdt',
@@ -96,7 +32,7 @@ libfdt_module = Extension(
setup(
name='libfdt',
- version= version,
+ version= get_version(),
author='Simon Glass <sjg@chromium.org>',
description='Python binding for libfdt',
ext_modules=[libfdt_module],