diff --git a/bin/dunepackaging.py b/bin/dunepackaging.py index 51f9c37099678891c8115acdca3ee707307dad76..a1dabda9a094c99a0976b362737685208ce1d5f0 100755 --- a/bin/dunepackaging.py +++ b/bin/dunepackaging.py @@ -22,10 +22,10 @@ def main(argv): repositories = ["gitlab", "testpypi", "pypi"] def usage(): - return 'usage: dunepackaging.py [--upload <'+"|".join(repositories)+'> | -c | --clean | --version <version> | --onlysdist]' + return 'usage: dunepackaging.py [--upload <'+"|".join(repositories)+'> | -c | --clean | --version <version> | --onlysdist | --bdist_conda]' try: - opts, args = getopt.getopt(argv, "hc", ["upload=", "clean", "version=", "onlysdist"]) + opts, args = getopt.getopt(argv, "hc", ["upload=", "clean", "version=", "onlysdist", "bdist_conda"]) except getopt.GetoptError: print(usage()) sys.exit(2) @@ -35,6 +35,7 @@ def main(argv): clean = False version = None onlysdist = False + bdistconda = False for opt, arg in opts: if opt == '-h': print(usage()) @@ -52,6 +53,9 @@ def main(argv): version = arg elif opt in ("--onlysdist"): onlysdist = True + elif opt in ("--bdist_conda"): + onlysdist = True + bdistconda = True # Remove generated files def removeFiles(): @@ -140,5 +144,66 @@ def main(argv): removeFiles() + # create conda package meta.yaml (experimental) + if bdistconda: + import hashlib + remove = ['rm', '-rf', 'dist/'+data.name] + subprocess.call(remove) + mkdir = ['mkdir', 'dist/'+data.name ] + subprocess.call(mkdir) + + print("Create bdist_conda (experimental)") + distfile = 'dist/'+data.name+'-'+version+'.tar.gz' + datahash = '' + with open(distfile, "rb") as include: + source = include.read() + datahash = hashlib.sha256( source ).hexdigest() + + print("Generate ",'dist/'+data.name+'/meta.yaml') + f = open('dist/'+data.name+'/meta.yaml', "w") + f.write('{% set name = "' + data.name + '" %}\n') + f.write('{% set version = "' + version + '" %}\n') + f.write('{% set hash = "' + datahash + '" %}\n\n') + f.write('package:\n') + f.write(' name: "{{ name|lower }}"\n') + f.write(' version: "{{ version }}"\n\n') + f.write('source:\n') + f.write(' path: ../{{ name }}-{{ version }}/\n') + f.write(' sha256: {{ hash }}\n\n') + f.write('build:\n') + f.write(' number: 1\n') + if 'TMPDIR' in os.environ: + f.write(' script_env:\n') + f.write(' - TMPDIR=' + os.environ['TMPDIR'] +'\n') + f.write(' script: "{{ PYTHON }} -m pip install . --no-deps --ignore-installed -vv "\n\n') + f.write('requirements:\n') + + requirements = ['pip', 'python', 'mkl', 'tbb', 'intel-openmp', + 'libgcc-ng', 'libstdcxx-ng', 'gmp', 'scikit-build', + 'mpi4py', 'matplotlib', 'numpy', 'scipy', 'ufl'] + + for dep in data.depends: + requirements += [dep[0]] + + f.write(' host:\n') + for dep in requirements: + f.write(' - ' + dep + '\n') + + f.write('\n') + f.write(' run:\n') + for dep in requirements: + f.write(' - ' + dep + '\n') + + f.write('\n') + f.write('test:\n') + f.write(' imports:\n') + f.write(' - ' + data.name.replace('-','.') + '\n\n') + f.write('about:\n') + f.write(' home: '+data.url+'\n') + f.write(' license: GPLv2 with linking exception.\n') + f.write(' license_family: GPL\n') + f.write(' summary: '+data.description+'\n') + f.close() + if __name__ == "__main__": main(sys.argv[1:]) diff --git a/cmake/modules/DunePythonInstallPackage.cmake b/cmake/modules/DunePythonInstallPackage.cmake index 51bd7fc8b380ca2ec540e995eaa4da8d71ea5f55..055395c19e0aa4ef9dc7ef010d5ff1d80cae7b48 100644 --- a/cmake/modules/DunePythonInstallPackage.cmake +++ b/cmake/modules/DunePythonInstallPackage.cmake @@ -144,9 +144,9 @@ function(dune_python_install_package) set(WHEEL_COMMAND ${Python3_EXECUTABLE} -m pip wheel -w ${DUNE_PYTHON_WHEELHOUSE} ${PYINST_FULLPATH} ${PYINST_ADDITIONAL_PIP_PARAMS} ${DUNE_PYTHON_ADDITIONAL_PIP_PARAMS}) # Add the installation rule - install(CODE "message(\"Installing wheel for python package at ${PYINST_FULLPATH}...\") - dune_execute_process(COMMAND ${WHEEL_COMMAND} - ERROR_MESSAGE \"Error installing wheel for python package at ${PYINST_FULLPATH}\" - )" - ) + # install(CODE "message(\"Installing wheel for python package at ${PYINST_FULLPATH}...\") + # dune_execute_process(COMMAND ${WHEEL_COMMAND} + # ERROR_MESSAGE \"Error installing wheel for python package at ${PYINST_FULLPATH}\" + # )" + # ) endfunction() diff --git a/python/dune/common/module.py b/python/dune/common/module.py index 44f6c818ebf480434e55467e90f6f38635ec3888..77e67e637848141453d3bf7a6e51ff36e8c71519 100644 --- a/python/dune/common/module.py +++ b/python/dune/common/module.py @@ -132,9 +132,6 @@ def pkg_config(pkg, var=None, paths=[]): pkgconfig = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env) pkgconfig.wait() prefix = pkgconfig.stdout.read() - print(dict(os.environ)) - print("err:", pkgconfig.stderr.read() ) - print("out:", prefix ) if pkgconfig.returncode != 0: raise KeyError('package ' + pkg + ' not found.') return buffer_to_str(prefix).strip() @@ -164,9 +161,7 @@ def is_installed(dir, module=None): prefix = get_prefix(module) except KeyError: return False - print("looking at", dir, "prefix=",prefix) for l in ['lib','lib32','lib64']: - print("comparing with",os.path.realpath(os.path.join(prefix, l, 'dunecontrol', module))) if os.path.realpath(dir) == os.path.realpath(os.path.join(prefix, l, 'dunecontrol', module)): return True return False diff --git a/python/dune/packagemetadata.py b/python/dune/packagemetadata.py index 71f0864ebbafb43266fadfca2b8e3e43837d2728..692fbac33eeb12a185a749c8e0a2e50a34d2132f 100755 --- a/python/dune/packagemetadata.py +++ b/python/dune/packagemetadata.py @@ -265,11 +265,15 @@ def cmakeFlags(): ])) # test environment for additional flags cmakeFlags = os.environ.get('DUNE_CMAKE_FLAGS') - if cmakeFlags is None: - cmakeFlags = os.environ.get('CMAKE_FLAGS') + print("@@@@@ cmakeFlags=",cmakeFlags,flush=True) # split cmakeFlags and add them to flags if cmakeFlags is not None: flags += shlex.split(cmakeFlags) + cmakeFlags = os.environ.get('CMAKE_FLAGS') + print("@@@@@ cmakeFlags=",cmakeFlags,flush=True) + if cmakeFlags is not None: + flags += shlex.split(cmakeFlags) + print("@@@@@ flags=",flags,flush=True) return flags def inVEnv():