| #!/opt/python/cp38-cp38/bin/python3 | 
 | # Copyright 2020 Google LLC | 
 | # | 
 | # Licensed under the Apache License, Version 2.0 (the "License"); | 
 | # you may not use this file except in compliance with the License. | 
 | # You may obtain a copy of the License at | 
 | # | 
 | #      https://www.apache.org/licenses/LICENSE-2.0 | 
 | # | 
 | # Unless required by applicable law or agreed to in writing, software | 
 | # distributed under the License is distributed on an "AS IS" BASIS, | 
 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | # See the License for the specific language governing permissions and | 
 | # limitations under the License. | 
 | """Generates CMake arguments to build all manylinux python versions. | 
 |  | 
 | manylinux containers have all python version linked under /opt/python. | 
 | This script scrapes them to get configuration, install deps, etc. | 
 |  | 
 | Usage: | 
 |   Install dependencies: | 
 |     manylinux_py_setup.py deps | 
 |   Get CMake arguments to build (typically via $() expansion): | 
 |     manylinux_py_setup.py args | 
 | """ | 
 |  | 
 | import os | 
 | from pathlib import Path | 
 | import subprocess | 
 | import sys | 
 | import sysconfig | 
 |  | 
 |  | 
 | def _get_python_exes(): | 
 |   PYTHON_PARENT_PATH = Path("/opt/python") | 
 |   return PYTHON_PARENT_PATH.glob("*/bin/python") | 
 |  | 
 |  | 
 | def install_deps(): | 
 |   for python_exe in _get_python_exes(): | 
 |     args = [ | 
 |         str(python_exe), | 
 |         "-m", | 
 |         "pip", | 
 |         "install", | 
 |         "absl-py", | 
 |         "numpy", | 
 |     ] | 
 |     print("EXEC:", " ".join(args)) | 
 |     subprocess.run(args, check=True) | 
 |  | 
 |  | 
 | def dump_current(identifier): | 
 |   print("-DIREE_MULTIPY_{}_EXECUTABLE='{}'".format(identifier, sys.executable)) | 
 |   print("-DIREE_MULTIPY_{}_INCLUDE_DIRS='{}'".format( | 
 |       identifier, sysconfig.get_config_var("INCLUDEPY"))) | 
 |   # TODO: Print LIBRARIES for Windows and OSX | 
 |   print("-DIREE_MULTIPY_{}_EXTENSION='{}'".format( | 
 |       identifier, sysconfig.get_config_var("EXT_SUFFIX"))) | 
 |  | 
 |  | 
 | def dump_all(): | 
 |   versions_ids = [] | 
 |   for python_exe in _get_python_exes(): | 
 |     identifier = python_exe.parent.parent.name | 
 |     versions_ids.append(identifier) | 
 |     # Invoke ourselves with a different interpreter/args to dump config. | 
 |     subprocess.run([str(python_exe), __file__, "_current_args", identifier], | 
 |                    check=True) | 
 |   print("-DIREE_MULTIPY_VERSIONS='{}'".format(";".join(versions_ids))) | 
 |  | 
 |  | 
 | if __name__ == "__main__": | 
 |   if len(sys.argv) < 2: | 
 |     print("SYNTAX: mainlinux_py_setup.py {deps|args}") | 
 |     sys.exit(1) | 
 |   command = sys.argv[1] | 
 |   if command == "args": | 
 |     dump_all() | 
 |   elif command == "_current_args": | 
 |     dump_current(sys.argv[2]) | 
 |   elif command == "deps": | 
 |     install_deps() | 
 |   else: | 
 |     print("Unexpected command") | 
 |     sys.exit(1) |