pylibfdt: Don't have setup.py depend on where it's invoked from

Currently setup.py depends on being invoked from the right directory
(specifically it needs to be run from the root of the project).  That's a
bit confusing.

This updates setup.py to no longer depend on the invoking directory by
instead having it change directory to the location of the script itself,
then using internal paths relative to that.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Simon Glass <sjg@chromium.org>
main
David Gibson 2018-08-10 17:33:24 +10:00
parent ca399b1495
commit 1e4a0928f3
3 changed files with 11 additions and 8 deletions

View File

@ -13,7 +13,7 @@ endif

$(PYMODULE): $(PYLIBFDT_srcs) $(LIBFDT_archive) $(SETUP) $(VERSION_FILE)
@$(VECHO) PYMOD $@
$(SETUP) $(SETUPFLAGS) build_ext --build-lib=$(PYLIBFDT_objdir)
$(SETUP) $(SETUPFLAGS) build_ext --build-lib=../$(PYLIBFDT_objdir)

install_pylibfdt: $(PYMODULE)
@$(VECHO) INSTALL-PYLIB

View File

@ -1028,7 +1028,7 @@ class NodeAdder():
*/
typedef uint32_t fdt32_t;

%include "libfdt/fdt.h"
%include "fdt.h"

%include "typemaps.i"

@ -1134,4 +1134,4 @@ int fdt_property_cell(void *fdt, const char *name, uint32_t val);
*/
int fdt_property_stub(void *fdt, const char *name, const char *val, int len);

%include <../libfdt/libfdt.h>
%include <libfdt.h>

View File

@ -16,18 +16,21 @@ VERSION_PATTERN = '^#define DTC_VERSION "DTC ([^"]*)"$'


def get_version():
version_file = "version_gen.h"
version_file = "../version_gen.h"
f = open(version_file, 'rt')
m = re.match(VERSION_PATTERN, f.readline())
return m.group(1)

setupdir = os.path.dirname(os.path.abspath(sys.argv[0]))
os.chdir(setupdir)

libfdt_module = Extension(
'_libfdt',
sources = ['pylibfdt/libfdt.i'],
include_dirs = ['libfdt'],
sources = ['libfdt.i'],
include_dirs = ['../libfdt'],
libraries = ['fdt'],
library_dirs = ['libfdt'],
library_dirs = ['../libfdt'],
swig_opts = ['-I../libfdt'],
)

setup(
@ -36,5 +39,5 @@ setup(
author='Simon Glass <sjg@chromium.org>',
description='Python binding for libfdt',
ext_modules=[libfdt_module],
py_modules=['pylibfdt/libfdt'],
py_modules=['libfdt'],
)