diff --git a/bob/devtools/log.py b/bob/devtools/log.py index 8ccad76117833b12e0e5f9f98a6157b67d2076dc..226ccf0ad8c6c620d2260903bd9080f8d4b0a276 100644 --- a/bob/devtools/log.py +++ b/bob/devtools/log.py @@ -229,3 +229,18 @@ def verbosity_option(**kwargs): "(e.g. '-vvv' for debug).", callback=callback, **kwargs)(f) return custom_verbosity_option + + +def open_files(): + '''Returns the number of open file descriptors for current process + + .. warning: will only work on UNIX-like os-es. + + ''' + + import os + import subprocess + + pid = os.getpid() + procs = subprocess.check_output(['lsof', '-w', '-p', str(pid)]) + return [k.split()[-1].decode('ascii') for k in procs.split(b'\n') if k][1:] diff --git a/bob/devtools/scripts/ci.py b/bob/devtools/scripts/ci.py index 29327f69576af396622917f592123b5beac2736c..0f28a032beed3cd3352585eeb887ea5281d8be50 100644 --- a/bob/devtools/scripts/ci.py +++ b/bob/devtools/scripts/ci.py @@ -16,7 +16,7 @@ from ..constants import SERVER, CONDA_BUILD_CONFIG, CONDA_RECIPE_APPEND, \ WEBDAV_PATHS, BASE_CONDARC from ..deploy import deploy_conda_package, deploy_documentation -from ..log import verbosity_option, get_logger, echo_normal +from ..log import verbosity_option, get_logger, echo_normal, open_files logger = get_logger(__name__) @@ -481,7 +481,6 @@ def nightlies(ctx, order, dry_run): token = os.environ['CI_JOB_TOKEN'] import git - import psutil from .build import build from urllib.request import urlopen @@ -510,8 +509,9 @@ def nightlies(ctx, order, dry_run): private = urlopen('https://gitlab.idiap.ch/%s' % package).getcode() != 200 stable = 'STABLE' in os.environ + current_open_files = open_files() logger.warn('Number of open files before build: %d', - len(psutil.Process().open_files())) + len(current_open_files)) ctx.invoke(build, recipe_dir=[os.path.join(clone_to, 'conda')], @@ -528,8 +528,10 @@ def nightlies(ctx, order, dry_run): ci=True, ) - logger.warn('Number of open files after build: %d', - len(psutil.Process().open_files())) + after_open_files = open_files() + logger.warn('Number of open files after build: %d', len(after_open_files)) + logger.warn('New files opened: %s', + ', '.join(list(set(after_open_files) - set(current_open_files)))) is_master = os.environ['CI_COMMIT_REF_NAME'] == 'master'