You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.6 KiB

# 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