From ca3c30a60855c5a1344683fa5a2f3b4ebd7417e2 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Wed, 24 Jun 2026 21:35:28 -0400 Subject: [PATCH 1/4] DAOS-19005 test: Use test venv for daos_build test Simplify the dfuse/daos_build.py by using the existing python virtual environment for building DAOS. Include the build requirements in the python test virtual environment. Fixes: DAOS-18231 Skip-unit-tests: true Skip-fault-injection-test: true Skip-func-test-el8: false Skip-func-test-leap15: false Test-tag: DaosBuild DaosBuildVM Signed-off-by: Phil Henderson --- src/tests/ftest/dfuse/daos_build.py | 10 ++++------ src/tests/ftest/scripts/setup_nodes.sh | 3 ++- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/tests/ftest/dfuse/daos_build.py b/src/tests/ftest/dfuse/daos_build.py index 2d2300c9a55..5aa284efad2 100644 --- a/src/tests/ftest/dfuse/daos_build.py +++ b/src/tests/ftest/dfuse/daos_build.py @@ -101,9 +101,10 @@ def run_build_test(self, cache_mode, il_lib=None, run_on_vms=False): mount_dir = dfuse.mount_dir.value build_dir = os.path.join(mount_dir, 'daos') + venv_bin_path = os.path.dirname(sys.executable) - remote_env['PATH'] = f"{os.path.join(mount_dir, 'venv', 'bin')}:$PATH" - remote_env['VIRTUAL_ENV'] = os.path.join(mount_dir, 'venv') + remote_env['PATH'] = f"{venv_bin_path}:$PATH" + remote_env['VIRTUAL_ENV'] = os.path.dirname(venv_bin_path) remote_env['COVFILE'] = os.environ['COVFILE'] remote_env['HTTPS_PROXY'] = os.environ.get('HTTPS_PROXY', '') remote_env['NO_PROXY'] = os.environ.get('NO_PROXY', '') @@ -129,14 +130,11 @@ def run_build_test(self, cache_mode, il_lib=None, run_on_vms=False): elif "ubuntu" in distro_info.name.lower(): distro = "ubuntu" - cmds = [f'{sys.executable} -m venv {mount_dir}/venv', - f'git clone https://github.com/daos-stack/daos.git {build_dir}', + cmds = [f'git clone https://github.com/daos-stack/daos.git {build_dir}', f'git -C {build_dir} checkout {__get_daos_build_checkout(self)}', f'git -C {build_dir} submodule update --init --recursive', f'cp {build_dir}/utils/scripts/install-{distro}.sh /tmp/install.sh', 'sudo -E NO_OPENMPI_DEVEL=1 /tmp/install.sh -y', - 'python3 -m pip install pip --upgrade', - f'python3 -m pip install -r {build_dir}/requirements-build.txt', f'scons -C {build_dir} --jobs {build_jobs} --build-deps=only', f'daos filesystem query {mount_dir}', f'daos filesystem evict {build_dir}', diff --git a/src/tests/ftest/scripts/setup_nodes.sh b/src/tests/ftest/scripts/setup_nodes.sh index 3cd7cd873fa..ea7536d2a68 100755 --- a/src/tests/ftest/scripts/setup_nodes.sh +++ b/src/tests/ftest/scripts/setup_nodes.sh @@ -106,11 +106,12 @@ cat < "${DAOS_FTEST_VENV}"/pip.conf [global] progress_bar = off no_color = true - quiet = 1 + quiet = 0 EOF pip install --upgrade pip pip install -r "$PREFIX"/lib/daos/TESTING/ftest/requirements-ftest.txt +pip install -r "$PREFIX"/lib/daos/TESTING/ftest/requirements-build.txt # Copy the pydaos source locally and install it, in an ideal world this would install # from the read-only tree directly but for now that isn't working. # https://github.com/pypa/setuptools/issues/3237 From 1178445f1355ef5f55e41496e2f1c5e225058ec5 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Wed, 1 Jul 2026 09:33:04 -0400 Subject: [PATCH 2/4] Add requirements-build.txt to ftest install. Fixes: DAOS-18231 Skip-unit-tests: true Skip-fault-injection-test: true Skip-func-test-el8: false Skip-func-test-leap15: false Test-tag: DaosBuild DaosBuildVM Signed-off-by: Phil Henderson --- SConstruct | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index c7092c51f79..13fa7ad369c 100644 --- a/SConstruct +++ b/SConstruct @@ -512,7 +512,8 @@ def scons(): # also install to $PREFIX/lib to work with existing avocado test code if prereqs.test_requested(): env.Install('$PREFIX/lib/daos/TESTING/ftest/util', ['site_scons/env_modules.py']) - env.Install('$PREFIX/lib/daos/TESTING/ftest/', ['ftest.sh', "requirements-ftest.txt"]) + env.Install('$PREFIX/lib/daos/TESTING/ftest/', + ['ftest.sh', "requirements-ftest.txt", "requirements-build.txt"]) env.Install("$PREFIX/lib64/daos", "VERSION") From b3985e8b9a0369bcb2997a71c04027f20ba38583 Mon Sep 17 00:00:00 2001 From: Dalton Bohning Date: Thu, 27 Aug 2026 14:19:22 +0000 Subject: [PATCH 3/4] DAOS-19005 test: debug daos_build failure Test-tag: DaosBuild DaosBuildVM Quick-functional: true Fixes: DAOS-18231 Signed-off-by: Dalton Bohning --- src/tests/ftest/dfuse/daos_build.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/ftest/dfuse/daos_build.py b/src/tests/ftest/dfuse/daos_build.py index 0371a7b4511..a51e6828882 100644 --- a/src/tests/ftest/dfuse/daos_build.py +++ b/src/tests/ftest/dfuse/daos_build.py @@ -110,10 +110,10 @@ def run_build_test(self, cache_mode, il_lib=None, run_on_vms=False): if il_lib is not None: remote_env['LD_PRELOAD'] = os.path.join(self.prefix, 'lib64', il_lib) - remote_env['D_LOG_FILE'] = '/var/tmp/daos_testing/daos-il.log' + remote_env['D_LOG_FILE'] = f'/var/tmp/daos_testing/daos-{il_lib.rstrip(".so")}.log' remote_env['DD_MASK'] = 'all' remote_env['DD_SUBSYS'] = 'all' - remote_env['D_LOG_MASK'] = 'WARN,IL=WARN' + remote_env['D_LOG_MASK'] = 'INFO,IL=INFO' if il_lib == 'libpil4dfs.so': remote_env['D_IL_NO_BYPASS'] = '1' remote_env['D_IL_COMPATIBLE'] = '1' From 958c4d406657fd3810643b531c24b8b8bcb78517 Mon Sep 17 00:00:00 2001 From: Dalton Bohning Date: Fri, 28 Aug 2026 15:28:59 +0000 Subject: [PATCH 4/4] try without D_IL_NO_BYPASS Test-tag: DaosBuild DaosBuildVM Quick-functional: true Fixes: DAOS-18231 Signed-off-by: Dalton Bohning --- src/tests/ftest/dfuse/daos_build.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/tests/ftest/dfuse/daos_build.py b/src/tests/ftest/dfuse/daos_build.py index 327cfdf3088..9d669503d06 100644 --- a/src/tests/ftest/dfuse/daos_build.py +++ b/src/tests/ftest/dfuse/daos_build.py @@ -110,13 +110,14 @@ def run_build_test(self, cache_mode, il_lib=None, run_on_vms=False): remote_env['NO_PROXY'] = os.environ.get('NO_PROXY', '') if il_lib is not None: + il_lib_short = il_lib.rstrip('.so') remote_env['LD_PRELOAD'] = os.path.join(self.prefix, 'lib64', il_lib) - remote_env['D_LOG_FILE'] = f'/var/tmp/daos_testing/daos-{il_lib.rstrip(".so")}.log' + remote_env['D_LOG_FILE'] = f'/var/tmp/daos_testing/daos-{il_lib_short}.log' remote_env['DD_MASK'] = 'all' remote_env['DD_SUBSYS'] = 'all' - remote_env['D_LOG_MASK'] = 'INFO,IL=INFO' + remote_env['D_LOG_MASK'] = 'WARN,IL=WARN' if il_lib == 'libpil4dfs.so': - remote_env['D_IL_NO_BYPASS'] = '1' + # remote_env['D_IL_NO_BYPASS'] = '1' remote_env['D_IL_COMPATIBLE'] = '1' remote_env['D_IL_MAX_EQ'] = '0'