diff --git a/bin/setup-dunepy.py b/bin/setup-dunepy.py index 96e2997ca0e7c07f918b7e9eda152800ab672554..34471da91f4d8f978a2dca5b163f0b9ccf2ed15c 100755 --- a/bin/setup-dunepy.py +++ b/bin/setup-dunepy.py @@ -10,7 +10,7 @@ import logging logger = logging.getLogger(__name__) try: - from dune.common.module import build_dune_py_module, get_dune_py_dir, make_dune_py_module, select_modules, resolve_dependencies + from dune.common.module import build_dune_py_module, get_dune_py_dir, make_dune_py_module, select_modules, resolve_dependencies, resolve_order except ImportError: import os here = os.path.dirname(os.path.abspath(__file__)) @@ -19,7 +19,7 @@ except ImportError: sys.path.append(modsB) sys.path.append(modsA) if os.path.exists(os.path.join(modsB, "module.py")): - from module import build_dune_py_module, get_dune_py_dir, make_dune_py_module, select_modules, resolve_dependencies + from module import build_dune_py_module, get_dune_py_dir, make_dune_py_module, select_modules, resolve_dependencies, resolve_order else: raise @@ -94,10 +94,12 @@ def main(argv): # use mod and all its dependencies only. Otherwise use all found modules # as dependencies. if masterModule is None: - deps = [m[0] for m in duneModules[0].items()] + deps = resolve_order(duneModules[0]) else: - deps = resolve_dependencies(duneModules[0], masterModule) - deps.add(masterModule) + depsList = resolve_dependencies(duneModules[0], masterModule) + deps = {k:v for k,v in duneModules[0].items() if k in depsList} + deps = resolve_order(deps) + deps += [masterModule] foundModule = make_dune_py_module(dunepy, deps) diff --git a/dune/python/test/CMakeLists.txt b/dune/python/test/CMakeLists.txt index ed2e0850d82023870af1a260ceac862a84ef60ce..04909a324206ca223fb2d0b209903dfbfb1886fd 100644 --- a/dune/python/test/CMakeLists.txt +++ b/dune/python/test/CMakeLists.txt @@ -9,4 +9,5 @@ dune_add_test(SOURCES test_embed1.cc ) add_executable(test_embed2 EXCLUDE_FROM_ALL test_embed2.cc) -target_link_libraries(test_embed2 PUBLIC ${DUNE_LIBS} ${Python3_LIBRARIES}) +# target_link_libraries(test_embed2 PUBLIC ${DUNE_LIBS} ${Python3_LIBRARIES}) +target_link_libraries(test_embed2 PRIVATE Python3::Python) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index bf6f08c0410bb4c3fcac06cfadfb8be2eeb46376..37e296add504ef3de4649dabef4bfab72c42ed0c 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -1,3 +1,4 @@ add_subdirectory(dune) configure_file(setup.py.in setup.py) +configure_file(pyproject.toml.in pyproject.toml) diff --git a/python/dune/common/module.py b/python/dune/common/module.py index 21deb7df04997be776d5576f2376504b24b9fa2d..bac0a0afc4cf491399e786b3a6153a70a283e6be 100644 --- a/python/dune/common/module.py +++ b/python/dune/common/module.py @@ -113,7 +113,7 @@ def resolve_order(deps): def resolve(m): if m not in order: - for d in deps[m]: + for d, r in deps[m].depends: if d not in order: resolve(d) order.append(m) diff --git a/python/pyproject.toml.in b/python/pyproject.toml.in new file mode 100644 index 0000000000000000000000000000000000000000..d1e6ae6e5647cc467708bad904532e585270867c --- /dev/null +++ b/python/pyproject.toml.in @@ -0,0 +1,2 @@ +[build-system] +requires = ["setuptools", "wheel"]