# License: Apache 2.0. See LICENSE file in root directory. # Copyright(c) 2021 Intel Corporation. All Rights Reserved. import os, platform from rspy import log # this script is located in librealsense/unit-tests/py/rspy, so main repository is: root = os.path.dirname( os.path.dirname( os.path.dirname( os.path.dirname( os.path.abspath( __file__ ))))) # Usually we expect the build directory to be directly under the root, named 'build' # ... but first check the expected LibCI build directories: # if platform.system() == 'Linux': if platform.processor() == 'aarch64': # for jetson (arm) build = os.path.join(root, 'arm64', 'static') else: build = os.path.join( root, 'x86_64', 'static' ) else: build = os.path.join( root, 'win10', 'win64', 'static' ) if not os.path.isdir( build ): # build = os.path.join( root, 'build' ) if not os.path.isdir( build ): # Under GHA, we use a build directory under this env variable: build = os.environ.get( 'WIN_BUILD_DIR' ) if not build or not os.path.isdir( build ): log.w( 'repo.build directory wasn\'t found' ) log.d( 'repo.root=', root ) build = None def find_pyrs(): """ :return: the location (absolute path) of the pyrealsense2 .so (linux) or .pyd (windows) """ global build if not build: return None from rspy import file if platform.system() == 'Linux': for so in file.find( build, '(^|/)pyrealsense2.*\.so$' ): return os.path.join( build, so ) else: for pyd in file.find( build, '(^|/)pyrealsense2.*\.pyd$' ): return os.path.join( build, pyd ) def find_pyrs_dir(): """ :return: the directory (absolute) in which pyrealsense2 lives, or None if unknown/not found """ pyrs = find_pyrs() if pyrs: pyrs_dir = os.path.dirname( pyrs ) return pyrs_dir def find_built_exe( source, name ): """ Find an executable that was built in the repo :param source: The location of the exe's project, e.g. tools/convert :param name: The name of the exe, without any platform-specific extensions like .exe :return: The full path, or None, of the exe """ if platform.system() != 'Linux': name += '.exe' import sys for p in sys.path: exe = os.path.join( p, name ) if os.path.isfile( exe ): return exe if platform.system() == 'Linux': # The Linux build leaves all the executables in their source dir global build exe = os.path.join( build, source, name ) if os.path.isfile( exe ): return exe return None