From 353c5eaa4d7b76de78de1816681f1f22c8c48634 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 2 May 2025 17:26:39 -0400 Subject: [PATCH 001/172] DAOS-17259 test: Adding gcov to daos build Adding code-coverage report for daos unit test. Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 54 +++++++++++++++++++++++-- SConstruct | 6 +++ requirements-code-coverage.txt | 1 + site_scons/site_tools/compiler_setup.py | 8 ++++ site_scons/site_tools/daos_builder.py | 4 ++ 5 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 requirements-code-coverage.txt diff --git a/Jenkinsfile b/Jenkinsfile index 2761e1eaf91..cf0a33a2740 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -17,6 +17,7 @@ // To use a test branch (i.e. PR) until it lands to master // I.e. for testing library changes //@Library(value='pipeline-lib@your_branch') _ +@Library(value='pipeline-lib@hendersp/DAOS-17259') _ /* groovylint-disable-next-line CompileStatic */ job_status_internal = [:] @@ -325,6 +326,9 @@ pipeline { booleanParam(name: 'CI_large_md_on_ssd_TEST', defaultValue: true, description: 'Run the Functional Hardware Large MD on SSD test stage') + booleanParam(name: 'CI_CODE_COVERAGE', + defaultValue: true, + description: 'Run with code coverage analysis') string(name: 'CI_UNIT_VM1_LABEL', defaultValue: 'ci_vm1', description: 'Label to use for 1 VM node unit and RPM tests') @@ -647,7 +651,8 @@ pipeline { build_deps: 'no', stash_opt: true, scons_args: sconsArgs() + - ' PREFIX=/opt/daos TARGET_TYPE=release')) + ' PREFIX=/opt/daos TARGET_TYPE=release', + test_coverage: params.CI_CODE_COVERAGE)) } post { unsuccessful { @@ -799,7 +804,7 @@ pipeline { } steps { job_step_update( - unitTest(timeout_time: 160, + unitTest(timeout_time: 250, unstash_opt: true, ignore_failure: true, inst_repos: prRepos(), @@ -808,7 +813,8 @@ pipeline { post { always { unitTestPost artifacts: ['unit_test_memcheck_logs.tar.gz', - 'unit_test_memcheck_logs/**/*.log'], + 'unit_test_memcheck_logs/**/*.log', + 'unit_test_memcheck_logs/code_coverage'], valgrind_stash: 'el8-gcc-unit-memcheck' job_status_update() } @@ -833,7 +839,8 @@ pipeline { post { always { unitTestPost artifacts: ['unit_test_memcheck_bdev_logs.tar.gz', - 'unit_test_memcheck_bdev_logs/**/*.log'], + 'unit_test_memcheck_bdev_logs/**/*.log', + 'unit_test_memcheck_logs/code_coverage'], valgrind_stash: 'el8-gcc-unit-memcheck-bdev' job_status_update() } @@ -1217,6 +1224,45 @@ pipeline { } } } // stage('Test Hardware') + stage('Test Summary') { + when { + beforeAgent true + expression { true } + } + parallel { + stage('Code Coverage Report') { + when { + beforeAgent true + expression { params.CI_CODE_COVERAGE } + } + agent { + dockerfile { + filename 'utils/docker/Dockerfile.test_summary' + label 'docker_runner' + additionalBuildArgs dockerBuildArgs(add_repos: false) + } + } + steps { + job_step_update( + codeCoverageReport( + stashes: ['code_coverage_Unit_Test_on_EL_8.8', + 'code_coverage_Unit_Test_bdev_on_EL_8.8', + 'code_coverage_NLT_on_EL_8.8', + 'code_coverage_Unit_Test_with_memcheck_on_EL_8.8', + 'code_coverage_Unit_Test_bdev_with_memcheck_on_EL_8.8'], + script: 'ci/code_coverage_report.sh', + label: 'Code Coverage Report')) + } + post { + always { + archiveArtifacts artifacts: 'code_coverage_report/*', + allowEmptyArchive: false + job_status_update() + } + } + } // stage('Code Coverage Report') + } // parallel + } // stage('Test Summary') } // stages post { always { diff --git a/SConstruct b/SConstruct index fa31cd8e681..a1551c3ea34 100644 --- a/SConstruct +++ b/SConstruct @@ -92,6 +92,12 @@ def add_command_line_options(): help='Ignore the versions/branches/patches specified in build.config and \ use the specified relative sub-directory containing all \ dependencies as git submodules instead') + # generate test coverage + AddOption('--test-coverage', + action='store_true', + dest='test_coverage', + default=False, + help='enable test coverage analyze with gcov') def parse_and_save_conf(env, opts_file): diff --git a/requirements-code-coverage.txt b/requirements-code-coverage.txt new file mode 100644 index 00000000000..4d1950548d8 --- /dev/null +++ b/requirements-code-coverage.txt @@ -0,0 +1 @@ +gcovr diff --git a/site_scons/site_tools/compiler_setup.py b/site_scons/site_tools/compiler_setup.py index 3e7f7ed2858..7a2ea79a297 100644 --- a/site_scons/site_tools/compiler_setup.py +++ b/site_scons/site_tools/compiler_setup.py @@ -121,6 +121,14 @@ def _base_setup(env): env['BSETUP'] = compiler + if GetOption('test_coverage'): + env.AppendUnique(CXXFLAGS=["-fprofile-arcs", "-ftest-coverage"]) + env.AppendUnique(CCFLAGS=["-fprofile-arcs", "-ftest-coverage"]) + env.AppendUnique(LDFLAGS=["-lgcov", "--coverage -g -O0"]) + env.AppendUnique(CGO_CFLAGS=["-fprofile-arcs", "-ftest-coverage"]) + env.AppendUnique(CGO_LDFLAGS=["-lgcov", "--coverage"]) + env.AppendUnique(LIBS=['gcov']) + def _check_flag_helper(context, compiler, ext, flag): """Helper function to allow checking for compiler flags""" diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index c3eb6d0c62d..907faa90ce5 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -86,6 +86,8 @@ def _known_deps(env, **kwargs): libs = set(kwargs['LIBS']) else: libs = set(env.get('LIBS', [])) + if GetOption("test_coverage"): + libs += ['gcov'] known_libs = libs.intersection(set(libraries.keys())) missing.update(libs - known_libs) @@ -121,6 +123,8 @@ def _add_lib(libtype, libname, target): def _run_command(env, target, sources, daos_libs, command): """Run Command builder""" + if GetOption("test_coverage"): + daos_libs += ['gcov'] static_deps, shared_deps = _known_deps(env, LIBS=daos_libs) result = env.Command(target, sources + static_deps + shared_deps, command) return result From ae33c250fcfef1c8ea04271512f6c35e1926f3ee Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 11:52:27 -0400 Subject: [PATCH 002/172] Update daos_builder.py Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 907faa90ce5..93ea62a03df 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -86,8 +86,6 @@ def _known_deps(env, **kwargs): libs = set(kwargs['LIBS']) else: libs = set(env.get('LIBS', [])) - if GetOption("test_coverage"): - libs += ['gcov'] known_libs = libs.intersection(set(libraries.keys())) missing.update(libs - known_libs) @@ -157,6 +155,11 @@ def _static_library(env, *args, **kwargs): def _library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" denv = env.Clone() + if GetOption("test_coverage"): + if 'LIBS' in kwargs: + kwargs['LIBS'].append('gcov') + else: + denv.AppendUnique(LIBS=['gcov']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, False) lib = denv.SharedLibrary(*args, **kwargs) From 3ad6de244f30ba734bf843b55a9788e999a74ef8 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 12:00:35 -0400 Subject: [PATCH 003/172] Update _test_program Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 93ea62a03df..c8eea1bbaff 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -187,6 +187,11 @@ def _program(env, *args, **kwargs): def _test_program(env, *args, **kwargs): """Build Program with fixed RPATH""" denv = env.Clone() + if GetOption("test_coverage"): + if 'LIBS' in kwargs: + kwargs['LIBS'].append('gcov') + else: + denv.AppendUnique(LIBS=['gcov']) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get("install_off", None), False, True) From 2865862c58fdf365daed599ef35501e9f483cc6b Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 12:07:59 -0400 Subject: [PATCH 004/172] Update _program Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index c8eea1bbaff..b8ab54ed5f9 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -174,6 +174,11 @@ def _library(env, *args, **kwargs): def _program(env, *args, **kwargs): """Build Program with relative RPATH""" denv = env.Clone() + if GetOption("test_coverage"): + if 'LIBS' in kwargs: + kwargs['LIBS'].append('gcov') + else: + denv.AppendUnique(LIBS=['gcov']) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, True) From 91a3c5cf3b1f225b0498d7a1afb32eef82b0d697 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 12:44:01 -0400 Subject: [PATCH 005/172] Add code_coverage with return kwargs Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 30 +++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index b8ab54ed5f9..23834126862 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -155,11 +155,7 @@ def _static_library(env, *args, **kwargs): def _library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" denv = env.Clone() - if GetOption("test_coverage"): - if 'LIBS' in kwargs: - kwargs['LIBS'].append('gcov') - else: - denv.AppendUnique(LIBS=['gcov']) + kwargs = _add_code_coverage(denv, **kwargs) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, False) lib = denv.SharedLibrary(*args, **kwargs) @@ -174,11 +170,7 @@ def _library(env, *args, **kwargs): def _program(env, *args, **kwargs): """Build Program with relative RPATH""" denv = env.Clone() - if GetOption("test_coverage"): - if 'LIBS' in kwargs: - kwargs['LIBS'].append('gcov') - else: - denv.AppendUnique(LIBS=['gcov']) + kwargs = _add_code_coverage(denv, **kwargs) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, True) @@ -192,11 +184,7 @@ def _program(env, *args, **kwargs): def _test_program(env, *args, **kwargs): """Build Program with fixed RPATH""" denv = env.Clone() - if GetOption("test_coverage"): - if 'LIBS' in kwargs: - kwargs['LIBS'].append('gcov') - else: - denv.AppendUnique(LIBS=['gcov']) + kwargs = _add_code_coverage(denv, **kwargs) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get("install_off", None), False, True) @@ -265,6 +253,18 @@ def _print(msg): return None +def _add_code_coverage(env, **kwargs): + """Add gcov library for code coverage""" + if GetOption("test_coverage"): + if 'LIBS' in kwargs: + if type(kwargs['LIBS']) is str: + kwargs['LIBS'] = [kwargs['LIBS']] + kwargs['LIBS'].append('gcov') + else: + env.AppendUnique(LIBS=['gcov']) + return kwargs + + def generate(env): """Add daos specific methods to environment""" env.AddMethod(_add_build_rpath, 'd_add_build_rpath') From 8804f4f4a6d078215e0fc3997fc5b525f5b2b8d2 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 16:48:17 -0400 Subject: [PATCH 006/172] Update _static_library Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 1 + 1 file changed, 1 insertion(+) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 23834126862..497ede87b37 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -130,6 +130,7 @@ def _run_command(env, target, sources, daos_libs, command): def _static_library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" + kwargs = _add_code_coverage(denv, **kwargs) libname = _get_libname(*args, **kwargs) if 'hide_syms' in kwargs: # Allow for auto-hiding of symbols, used for the Interception library. There are multiple From 059b5fd6e030e8b184a73f643379adb21717d9b2 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 16:51:07 -0400 Subject: [PATCH 007/172] Update _static_library env Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 497ede87b37..d5143b436f7 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -130,7 +130,7 @@ def _run_command(env, target, sources, daos_libs, command): def _static_library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" - kwargs = _add_code_coverage(denv, **kwargs) + kwargs = _add_code_coverage(env, **kwargs) libname = _get_libname(*args, **kwargs) if 'hide_syms' in kwargs: # Allow for auto-hiding of symbols, used for the Interception library. There are multiple From 9111963118eb4beeb6f6e1b4f3560ee041614e95 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 17:09:38 -0400 Subject: [PATCH 008/172] Update with isinstenance Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index d5143b436f7..c5605cc2195 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -130,7 +130,6 @@ def _run_command(env, target, sources, daos_libs, command): def _static_library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" - kwargs = _add_code_coverage(env, **kwargs) libname = _get_libname(*args, **kwargs) if 'hide_syms' in kwargs: # Allow for auto-hiding of symbols, used for the Interception library. There are multiple @@ -142,6 +141,7 @@ def _static_library(env, *args, **kwargs): kwargs['target'] = f"{real_target}_source" else: real_target = None + kwargs = _add_code_coverage(env, **kwargs) lib = env.StaticLibrary(*args, **kwargs) if real_target: lib = env.Command(real_target, lib, 'objcopy --localize-hidden $SOURCE $TARGET') @@ -255,10 +255,10 @@ def _print(msg): def _add_code_coverage(env, **kwargs): - """Add gcov library for code coverage""" + """Add library for code coverage""" if GetOption("test_coverage"): if 'LIBS' in kwargs: - if type(kwargs['LIBS']) is str: + if isinstance(kwargs['LIBS'], str): kwargs['LIBS'] = [kwargs['LIBS']] kwargs['LIBS'].append('gcov') else: From 39d92f211929dfdd8064926ec1631a40eda79560 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 17:26:14 -0400 Subject: [PATCH 009/172] using _known_deps Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 34 ++++++++++++++------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index c5605cc2195..6641c8dfa06 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -86,6 +86,8 @@ def _known_deps(env, **kwargs): libs = set(kwargs['LIBS']) else: libs = set(env.get('LIBS', [])) + if GetOption("test_coverage"): + libs.add('gcov') known_libs = libs.intersection(set(libraries.keys())) missing.update(libs - known_libs) @@ -121,8 +123,8 @@ def _add_lib(libtype, libname, target): def _run_command(env, target, sources, daos_libs, command): """Run Command builder""" - if GetOption("test_coverage"): - daos_libs += ['gcov'] + # if GetOption("test_coverage"): + # daos_libs += ['gcov'] static_deps, shared_deps = _known_deps(env, LIBS=daos_libs) result = env.Command(target, sources + static_deps + shared_deps, command) return result @@ -141,7 +143,7 @@ def _static_library(env, *args, **kwargs): kwargs['target'] = f"{real_target}_source" else: real_target = None - kwargs = _add_code_coverage(env, **kwargs) + # kwargs = _add_code_coverage(env, **kwargs) lib = env.StaticLibrary(*args, **kwargs) if real_target: lib = env.Command(real_target, lib, 'objcopy --localize-hidden $SOURCE $TARGET') @@ -156,7 +158,7 @@ def _static_library(env, *args, **kwargs): def _library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(denv, **kwargs) + # kwargs = _add_code_coverage(denv, **kwargs) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, False) lib = denv.SharedLibrary(*args, **kwargs) @@ -171,7 +173,7 @@ def _library(env, *args, **kwargs): def _program(env, *args, **kwargs): """Build Program with relative RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(denv, **kwargs) + # kwargs = _add_code_coverage(denv, **kwargs) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, True) @@ -185,7 +187,7 @@ def _program(env, *args, **kwargs): def _test_program(env, *args, **kwargs): """Build Program with fixed RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(denv, **kwargs) + # kwargs = _add_code_coverage(denv, **kwargs) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get("install_off", None), False, True) @@ -254,16 +256,16 @@ def _print(msg): return None -def _add_code_coverage(env, **kwargs): - """Add library for code coverage""" - if GetOption("test_coverage"): - if 'LIBS' in kwargs: - if isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] - kwargs['LIBS'].append('gcov') - else: - env.AppendUnique(LIBS=['gcov']) - return kwargs +# def _add_code_coverage(env, **kwargs): +# """Add library for code coverage""" +# if GetOption("test_coverage"): +# if 'LIBS' in kwargs: +# if isinstance(kwargs['LIBS'], str): +# kwargs['LIBS'] = [kwargs['LIBS']] +# kwargs['LIBS'].append('gcov') +# else: +# env.AppendUnique(LIBS=['gcov']) +# return kwargs def generate(env): From 5967f005a2da856634138952cb5566c1a99fe70d Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 17:52:38 -0400 Subject: [PATCH 010/172] Restore and test Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 36 +++++++++++++-------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 6641c8dfa06..85020521b61 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -86,8 +86,8 @@ def _known_deps(env, **kwargs): libs = set(kwargs['LIBS']) else: libs = set(env.get('LIBS', [])) - if GetOption("test_coverage"): - libs.add('gcov') + # if GetOption("test_coverage"): + # libs.add('gcov') known_libs = libs.intersection(set(libraries.keys())) missing.update(libs - known_libs) @@ -123,8 +123,8 @@ def _add_lib(libtype, libname, target): def _run_command(env, target, sources, daos_libs, command): """Run Command builder""" - # if GetOption("test_coverage"): - # daos_libs += ['gcov'] + if GetOption("test_coverage"): + daos_libs += ['gcov'] static_deps, shared_deps = _known_deps(env, LIBS=daos_libs) result = env.Command(target, sources + static_deps + shared_deps, command) return result @@ -143,7 +143,7 @@ def _static_library(env, *args, **kwargs): kwargs['target'] = f"{real_target}_source" else: real_target = None - # kwargs = _add_code_coverage(env, **kwargs) + kwargs = _add_code_coverage(env, **kwargs) lib = env.StaticLibrary(*args, **kwargs) if real_target: lib = env.Command(real_target, lib, 'objcopy --localize-hidden $SOURCE $TARGET') @@ -158,7 +158,7 @@ def _static_library(env, *args, **kwargs): def _library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" denv = env.Clone() - # kwargs = _add_code_coverage(denv, **kwargs) + kwargs = _add_code_coverage(denv, **kwargs) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, False) lib = denv.SharedLibrary(*args, **kwargs) @@ -173,7 +173,7 @@ def _library(env, *args, **kwargs): def _program(env, *args, **kwargs): """Build Program with relative RPATH""" denv = env.Clone() - # kwargs = _add_code_coverage(denv, **kwargs) + kwargs = _add_code_coverage(denv, **kwargs) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, True) @@ -187,7 +187,7 @@ def _program(env, *args, **kwargs): def _test_program(env, *args, **kwargs): """Build Program with fixed RPATH""" denv = env.Clone() - # kwargs = _add_code_coverage(denv, **kwargs) + kwargs = _add_code_coverage(denv, **kwargs) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get("install_off", None), False, True) @@ -256,16 +256,16 @@ def _print(msg): return None -# def _add_code_coverage(env, **kwargs): -# """Add library for code coverage""" -# if GetOption("test_coverage"): -# if 'LIBS' in kwargs: -# if isinstance(kwargs['LIBS'], str): -# kwargs['LIBS'] = [kwargs['LIBS']] -# kwargs['LIBS'].append('gcov') -# else: -# env.AppendUnique(LIBS=['gcov']) -# return kwargs +def _add_code_coverage(env, **kwargs): + """Add library for code coverage""" + if GetOption("test_coverage"): + if 'LIBS' in kwargs: + if isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] + kwargs['LIBS'].append('gcov') + else: + env.AppendUnique(LIBS=['gcov']) + return kwargs def generate(env): From e0cfa8c1399e6c2a78765aa2495085f571a842bf Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 18:12:31 -0400 Subject: [PATCH 011/172] Update with env Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 59 ++++++++++++++++++++------- 1 file changed, 45 insertions(+), 14 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 85020521b61..cfba81b9db3 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -143,7 +143,14 @@ def _static_library(env, *args, **kwargs): kwargs['target'] = f"{real_target}_source" else: real_target = None - kwargs = _add_code_coverage(env, **kwargs) + # kwargs = _add_code_coverage(env, **kwargs) + if GetOption("test_coverage"): + if 'LIBS' in kwargs: + if isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] + kwargs['LIBS'].append('gcov') + else: + env.AppendUnique(LIBS=['gcov']) lib = env.StaticLibrary(*args, **kwargs) if real_target: lib = env.Command(real_target, lib, 'objcopy --localize-hidden $SOURCE $TARGET') @@ -158,7 +165,15 @@ def _static_library(env, *args, **kwargs): def _library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(denv, **kwargs) + # kwargs = _add_code_coverage(denv, **kwargs) + if GetOption("test_coverage"): + if 'LIBS' in kwargs: + if isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] + kwargs['LIBS'].append('gcov') + else: + denv.AppendUnique(LIBS=['gcov']) + denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, False) lib = denv.SharedLibrary(*args, **kwargs) @@ -173,7 +188,15 @@ def _library(env, *args, **kwargs): def _program(env, *args, **kwargs): """Build Program with relative RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(denv, **kwargs) + # kwargs = _add_code_coverage(denv, **kwargs) + if GetOption("test_coverage"): + if 'LIBS' in kwargs: + if isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] + kwargs['LIBS'].append('gcov') + else: + denv.AppendUnique(LIBS=['gcov']) + denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, True) @@ -187,7 +210,15 @@ def _program(env, *args, **kwargs): def _test_program(env, *args, **kwargs): """Build Program with fixed RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(denv, **kwargs) + # kwargs = _add_code_coverage(denv, **kwargs) + if GetOption("test_coverage"): + if 'LIBS' in kwargs: + if isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] + kwargs['LIBS'].append('gcov') + else: + denv.AppendUnique(LIBS=['gcov']) + denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get("install_off", None), False, True) @@ -256,16 +287,16 @@ def _print(msg): return None -def _add_code_coverage(env, **kwargs): - """Add library for code coverage""" - if GetOption("test_coverage"): - if 'LIBS' in kwargs: - if isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] - kwargs['LIBS'].append('gcov') - else: - env.AppendUnique(LIBS=['gcov']) - return kwargs +# def _add_code_coverage(env, **kwargs): +# """Add library for code coverage""" +# if GetOption("test_coverage"): +# if 'LIBS' in kwargs: +# if isinstance(kwargs['LIBS'], str): +# kwargs['LIBS'] = [kwargs['LIBS']] +# kwargs['LIBS'].append('gcov') +# else: +# env.AppendUnique(LIBS=['gcov']) +# return kwargs def generate(env): From 6f5223b575fe225f9fbe98126ac44297ddff321d Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 18:22:53 -0400 Subject: [PATCH 012/172] Update _add_code_coverage Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 61 ++++++--------------------- 1 file changed, 13 insertions(+), 48 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index cfba81b9db3..f08b60aff99 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -86,9 +86,6 @@ def _known_deps(env, **kwargs): libs = set(kwargs['LIBS']) else: libs = set(env.get('LIBS', [])) - # if GetOption("test_coverage"): - # libs.add('gcov') - known_libs = libs.intersection(set(libraries.keys())) missing.update(libs - known_libs) for item in sorted(known_libs): @@ -143,14 +140,7 @@ def _static_library(env, *args, **kwargs): kwargs['target'] = f"{real_target}_source" else: real_target = None - # kwargs = _add_code_coverage(env, **kwargs) - if GetOption("test_coverage"): - if 'LIBS' in kwargs: - if isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] - kwargs['LIBS'].append('gcov') - else: - env.AppendUnique(LIBS=['gcov']) + kwargs = _add_code_coverage(**kwargs) lib = env.StaticLibrary(*args, **kwargs) if real_target: lib = env.Command(real_target, lib, 'objcopy --localize-hidden $SOURCE $TARGET') @@ -165,15 +155,7 @@ def _static_library(env, *args, **kwargs): def _library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" denv = env.Clone() - # kwargs = _add_code_coverage(denv, **kwargs) - if GetOption("test_coverage"): - if 'LIBS' in kwargs: - if isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] - kwargs['LIBS'].append('gcov') - else: - denv.AppendUnique(LIBS=['gcov']) - + kwargs = _add_code_coverage(**kwargs) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, False) lib = denv.SharedLibrary(*args, **kwargs) @@ -188,15 +170,7 @@ def _library(env, *args, **kwargs): def _program(env, *args, **kwargs): """Build Program with relative RPATH""" denv = env.Clone() - # kwargs = _add_code_coverage(denv, **kwargs) - if GetOption("test_coverage"): - if 'LIBS' in kwargs: - if isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] - kwargs['LIBS'].append('gcov') - else: - denv.AppendUnique(LIBS=['gcov']) - + kwargs = _add_code_coverage(**kwargs) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, True) @@ -210,15 +184,7 @@ def _program(env, *args, **kwargs): def _test_program(env, *args, **kwargs): """Build Program with fixed RPATH""" denv = env.Clone() - # kwargs = _add_code_coverage(denv, **kwargs) - if GetOption("test_coverage"): - if 'LIBS' in kwargs: - if isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] - kwargs['LIBS'].append('gcov') - else: - denv.AppendUnique(LIBS=['gcov']) - + kwargs = _add_code_coverage(**kwargs) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get("install_off", None), False, True) @@ -287,16 +253,15 @@ def _print(msg): return None -# def _add_code_coverage(env, **kwargs): -# """Add library for code coverage""" -# if GetOption("test_coverage"): -# if 'LIBS' in kwargs: -# if isinstance(kwargs['LIBS'], str): -# kwargs['LIBS'] = [kwargs['LIBS']] -# kwargs['LIBS'].append('gcov') -# else: -# env.AppendUnique(LIBS=['gcov']) -# return kwargs +def _add_code_coverage(**kwargs): + """Add library for code coverage""" + if GetOption("test_coverage"): + if 'LIBS' not in kwargs: + kwargs['LIBS'] = [] + elif isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] + kwargs['LIBS'].append('gcov') + return kwargs def generate(env): From 68fa7385376b2bfb86cf922c75a657f6543969dd Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 18:27:06 -0400 Subject: [PATCH 013/172] Update _static_library Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index f08b60aff99..96172868a7d 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -129,6 +129,7 @@ def _run_command(env, target, sources, daos_libs, command): def _static_library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" + kwargs = _add_code_coverage(**kwargs) libname = _get_libname(*args, **kwargs) if 'hide_syms' in kwargs: # Allow for auto-hiding of symbols, used for the Interception library. There are multiple @@ -140,7 +141,6 @@ def _static_library(env, *args, **kwargs): kwargs['target'] = f"{real_target}_source" else: real_target = None - kwargs = _add_code_coverage(**kwargs) lib = env.StaticLibrary(*args, **kwargs) if real_target: lib = env.Command(real_target, lib, 'objcopy --localize-hidden $SOURCE $TARGET') From 6035395330e588926131f801b11335d7b37240a1 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 18:44:40 -0400 Subject: [PATCH 014/172] Restore _static_library Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 96172868a7d..75b58a45d4b 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -129,7 +129,7 @@ def _run_command(env, target, sources, daos_libs, command): def _static_library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" - kwargs = _add_code_coverage(**kwargs) + # kwargs = _add_code_coverage(**kwargs) libname = _get_libname(*args, **kwargs) if 'hide_syms' in kwargs: # Allow for auto-hiding of symbols, used for the Interception library. There are multiple @@ -141,6 +141,8 @@ def _static_library(env, *args, **kwargs): kwargs['target'] = f"{real_target}_source" else: real_target = None + kwargs = _add_code_coverage(**kwargs) + lib = env.StaticLibrary(*args, **kwargs) if real_target: lib = env.Command(real_target, lib, 'objcopy --localize-hidden $SOURCE $TARGET') From cbf1b14088c703d90a3ae11503176e7a99e54abc Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 19:29:59 -0400 Subject: [PATCH 015/172] Update _add_code_coverage with env Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 75b58a45d4b..86ecec59530 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -129,7 +129,7 @@ def _run_command(env, target, sources, daos_libs, command): def _static_library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" - # kwargs = _add_code_coverage(**kwargs) + kwargs = _add_code_coverage(env, **kwargs) libname = _get_libname(*args, **kwargs) if 'hide_syms' in kwargs: # Allow for auto-hiding of symbols, used for the Interception library. There are multiple @@ -141,8 +141,6 @@ def _static_library(env, *args, **kwargs): kwargs['target'] = f"{real_target}_source" else: real_target = None - kwargs = _add_code_coverage(**kwargs) - lib = env.StaticLibrary(*args, **kwargs) if real_target: lib = env.Command(real_target, lib, 'objcopy --localize-hidden $SOURCE $TARGET') @@ -157,7 +155,7 @@ def _static_library(env, *args, **kwargs): def _library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(**kwargs) + kwargs = _add_code_coverage(denv, **kwargs) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, False) lib = denv.SharedLibrary(*args, **kwargs) @@ -172,7 +170,7 @@ def _library(env, *args, **kwargs): def _program(env, *args, **kwargs): """Build Program with relative RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(**kwargs) + kwargs = _add_code_coverage(denv, **kwargs) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, True) @@ -186,7 +184,7 @@ def _program(env, *args, **kwargs): def _test_program(env, *args, **kwargs): """Build Program with fixed RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(**kwargs) + kwargs = _add_code_coverage(denv, **kwargs) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get("install_off", None), False, True) @@ -255,7 +253,7 @@ def _print(msg): return None -def _add_code_coverage(**kwargs): +def _add_code_coverage(env, **kwargs): """Add library for code coverage""" if GetOption("test_coverage"): if 'LIBS' not in kwargs: @@ -263,6 +261,8 @@ def _add_code_coverage(**kwargs): elif isinstance(kwargs['LIBS'], str): kwargs['LIBS'] = [kwargs['LIBS']] kwargs['LIBS'].append('gcov') + else: + env.AppendUnique(LIBS=['gcov']) return kwargs From 5c8116e63487e6a35d47e71cb2a7d4ba055bb060 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 19:50:34 -0400 Subject: [PATCH 016/172] Update _add_code_coverage Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 86ecec59530..0de3b0d2d1e 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -253,14 +253,24 @@ def _print(msg): return None +# def _add_code_coverage(env, **kwargs): +# """Add library for code coverage""" +# if GetOption("test_coverage"): +# if 'LIBS' not in kwargs: +# kwargs['LIBS'] = [] +# elif isinstance(kwargs['LIBS'], str): +# kwargs['LIBS'] = [kwargs['LIBS']] +# kwargs['LIBS'].append('gcov') +# else: +# env.AppendUnique(LIBS=['gcov']) +# return kwargs def _add_code_coverage(env, **kwargs): """Add library for code coverage""" if GetOption("test_coverage"): - if 'LIBS' not in kwargs: - kwargs['LIBS'] = [] - elif isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] - kwargs['LIBS'].append('gcov') + if 'LIBS' in kwargs: + if isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] + kwargs['LIBS'].append('gcov') else: env.AppendUnique(LIBS=['gcov']) return kwargs From 6f9c9fe436ede5bf9761631789e75961ad038ed9 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 19:56:41 -0400 Subject: [PATCH 017/172] Update _add_code_coverage Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 0de3b0d2d1e..a714dc70056 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -271,8 +271,8 @@ def _add_code_coverage(env, **kwargs): if isinstance(kwargs['LIBS'], str): kwargs['LIBS'] = [kwargs['LIBS']] kwargs['LIBS'].append('gcov') - else: - env.AppendUnique(LIBS=['gcov']) + else: + env.AppendUnique(LIBS=['gcov']) return kwargs From 8cb0650c7d2bb4f4bb11816a23b4889ca4dd1efe Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 20:08:16 -0400 Subject: [PATCH 018/172] Update debug on _add_code_coverage without env Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index a714dc70056..04c9155b835 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -271,8 +271,9 @@ def _add_code_coverage(env, **kwargs): if isinstance(kwargs['LIBS'], str): kwargs['LIBS'] = [kwargs['LIBS']] kwargs['LIBS'].append('gcov') - else: - env.AppendUnique(LIBS=['gcov']) + # else: + # env.AppendUnique(LIBS=['gcov']) + env = env return kwargs From 3b9f68035cbd2c74481d4eb3dacbfd584e84d497 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 20:20:59 -0400 Subject: [PATCH 019/172] Update _add_code_coverage with env Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 33 +++++++++++++-------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 04c9155b835..2b19d437493 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -253,28 +253,27 @@ def _print(msg): return None -# def _add_code_coverage(env, **kwargs): -# """Add library for code coverage""" -# if GetOption("test_coverage"): -# if 'LIBS' not in kwargs: -# kwargs['LIBS'] = [] -# elif isinstance(kwargs['LIBS'], str): -# kwargs['LIBS'] = [kwargs['LIBS']] -# kwargs['LIBS'].append('gcov') -# else: -# env.AppendUnique(LIBS=['gcov']) -# return kwargs def _add_code_coverage(env, **kwargs): """Add library for code coverage""" if GetOption("test_coverage"): - if 'LIBS' in kwargs: - if isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] + if 'LIBS' not in kwargs: + kwargs['LIBS'] = [] + elif isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] kwargs['LIBS'].append('gcov') - # else: - # env.AppendUnique(LIBS=['gcov']) - env = env + else: + env.AppendUnique(LIBS=['gcov']) return kwargs +# def _add_code_coverage(env, **kwargs): +# """Add library for code coverage""" +# if GetOption("test_coverage"): +# if 'LIBS' in kwargs: +# if isinstance(kwargs['LIBS'], str): +# kwargs['LIBS'] = [kwargs['LIBS']] +# kwargs['LIBS'].append('gcov') +# else: +# env.AppendUnique(LIBS=['gcov']) +# return kwargs def generate(env): From 6c75d417913e1814d1fe463488ecb1b20fd985a3 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 20:30:45 -0400 Subject: [PATCH 020/172] Update _add_code_coverage debug Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 1 + 1 file changed, 1 insertion(+) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 2b19d437493..b6fc514f9e6 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -258,6 +258,7 @@ def _add_code_coverage(env, **kwargs): if GetOption("test_coverage"): if 'LIBS' not in kwargs: kwargs['LIBS'] = [] + kwargs['LIBS'].append('gcov') elif isinstance(kwargs['LIBS'], str): kwargs['LIBS'] = [kwargs['LIBS']] kwargs['LIBS'].append('gcov') From 5db96ab39ca48ec2af8ff7db700b549edc7e8885 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 20:38:06 -0400 Subject: [PATCH 021/172] Update _add_code_coverage for debug Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index b6fc514f9e6..7856098157e 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -258,12 +258,11 @@ def _add_code_coverage(env, **kwargs): if GetOption("test_coverage"): if 'LIBS' not in kwargs: kwargs['LIBS'] = [] - kwargs['LIBS'].append('gcov') elif isinstance(kwargs['LIBS'], str): kwargs['LIBS'] = [kwargs['LIBS']] - kwargs['LIBS'].append('gcov') - else: - env.AppendUnique(LIBS=['gcov']) + kwargs['LIBS'].append('gcov') + # else: + # env.AppendUnique(LIBS=['gcov']) return kwargs # def _add_code_coverage(env, **kwargs): # """Add library for code coverage""" From 018c6d860bf14939ea2ff973fba741232d5f6084 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 6 May 2025 20:43:24 -0400 Subject: [PATCH 022/172] Restore _add_code_coverage Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 34 +++++++++++++-------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 7856098157e..c2d6ceef4c8 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -253,27 +253,27 @@ def _print(msg): return None -def _add_code_coverage(env, **kwargs): - """Add library for code coverage""" - if GetOption("test_coverage"): - if 'LIBS' not in kwargs: - kwargs['LIBS'] = [] - elif isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] - kwargs['LIBS'].append('gcov') - # else: - # env.AppendUnique(LIBS=['gcov']) - return kwargs # def _add_code_coverage(env, **kwargs): # """Add library for code coverage""" # if GetOption("test_coverage"): -# if 'LIBS' in kwargs: -# if isinstance(kwargs['LIBS'], str): -# kwargs['LIBS'] = [kwargs['LIBS']] -# kwargs['LIBS'].append('gcov') -# else: -# env.AppendUnique(LIBS=['gcov']) +# if 'LIBS' not in kwargs: +# kwargs['LIBS'] = [] +# elif isinstance(kwargs['LIBS'], str): +# kwargs['LIBS'] = [kwargs['LIBS']] +# kwargs['LIBS'].append('gcov') +# # else: +# # env.AppendUnique(LIBS=['gcov']) # return kwargs +def _add_code_coverage(env, **kwargs): + """Add library for code coverage""" + if GetOption("test_coverage"): + if 'LIBS' in kwargs: + if isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] + kwargs['LIBS'].append('gcov') + else: + env.AppendUnique(LIBS=['gcov']) + return kwargs def generate(env): From 04cf4d2dfa38ede11829698f97cca5b550f77972 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 7 May 2025 17:31:49 -0400 Subject: [PATCH 023/172] Update control/SConscript with gcov Signed-off-by: Ding-Hwa Ho --- src/control/SConscript | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/control/SConscript b/src/control/SConscript index 53daec79af5..cd4fefd6ced 100644 --- a/src/control/SConscript +++ b/src/control/SConscript @@ -95,6 +95,8 @@ def install_go_bin(env, name, libs=None, install_man=False): if libs is None: libs = [] libs.extend(['daos_common', 'cart', 'gurt']) + if GetOption('test_coverage'): + libs.append('gcov') target = env.d_run_command(name, sources, libs, f'cd {gosrc}; {env.d_go_bin} build -mod vendor ' From 677130b0d607a276e0e6f579b33462192c9212e1 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 7 May 2025 21:53:18 -0400 Subject: [PATCH 024/172] Update _add_code_coverage debug Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 30 +++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index c2d6ceef4c8..9e1188b22f3 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -253,27 +253,27 @@ def _print(msg): return None -# def _add_code_coverage(env, **kwargs): -# """Add library for code coverage""" -# if GetOption("test_coverage"): -# if 'LIBS' not in kwargs: -# kwargs['LIBS'] = [] -# elif isinstance(kwargs['LIBS'], str): -# kwargs['LIBS'] = [kwargs['LIBS']] -# kwargs['LIBS'].append('gcov') -# # else: -# # env.AppendUnique(LIBS=['gcov']) -# return kwargs def _add_code_coverage(env, **kwargs): """Add library for code coverage""" if GetOption("test_coverage"): - if 'LIBS' in kwargs: - if isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] - kwargs['LIBS'].append('gcov') + if 'LIBS' not in kwargs: + kwargs['LIBS'] = [] + elif isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] else: env.AppendUnique(LIBS=['gcov']) + kwargs['LIBS'].append('gcov') return kwargs +# def _add_code_coverage(env, **kwargs): +# """Add library for code coverage""" +# if GetOption("test_coverage"): +# if 'LIBS' in kwargs: +# if isinstance(kwargs['LIBS'], str): +# kwargs['LIBS'] = [kwargs['LIBS']] +# kwargs['LIBS'].append('gcov') +# else: +# env.AppendUnique(LIBS=['gcov']) +# return kwargs def generate(env): From bbc60007230a299bf5efd919f87ef06118e3302a Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 7 May 2025 22:01:13 -0400 Subject: [PATCH 025/172] Update _add_code_coverage for debug Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 30 +++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 9e1188b22f3..ac51fcd8bd0 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -253,27 +253,27 @@ def _print(msg): return None -def _add_code_coverage(env, **kwargs): - """Add library for code coverage""" - if GetOption("test_coverage"): - if 'LIBS' not in kwargs: - kwargs['LIBS'] = [] - elif isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] - else: - env.AppendUnique(LIBS=['gcov']) - kwargs['LIBS'].append('gcov') - return kwargs # def _add_code_coverage(env, **kwargs): # """Add library for code coverage""" # if GetOption("test_coverage"): -# if 'LIBS' in kwargs: -# if isinstance(kwargs['LIBS'], str): -# kwargs['LIBS'] = [kwargs['LIBS']] -# kwargs['LIBS'].append('gcov') +# if 'LIBS' not in kwargs: +# kwargs['LIBS'] = [] +# elif isinstance(kwargs['LIBS'], str): +# kwargs['LIBS'] = [kwargs['LIBS']] # else: # env.AppendUnique(LIBS=['gcov']) +# kwargs['LIBS'].append('gcov') # return kwargs +def _add_code_coverage(env, **kwargs): + """Add library for code coverage""" + if GetOption("test_coverage"): + if 'LIBS' in kwargs: + if isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] + kwargs['LIBS'].append('gcov') + else: + env.AppendUnique(LIBS=['gcov']) + return kwargs def generate(env): From e2519c65f807938955f89c2a181eba86b11731dc Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 7 May 2025 22:17:06 -0400 Subject: [PATCH 026/172] _add_code_coverage debug Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index ac51fcd8bd0..3b80b1579d8 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -253,21 +253,11 @@ def _print(msg): return None -# def _add_code_coverage(env, **kwargs): -# """Add library for code coverage""" -# if GetOption("test_coverage"): -# if 'LIBS' not in kwargs: -# kwargs['LIBS'] = [] -# elif isinstance(kwargs['LIBS'], str): -# kwargs['LIBS'] = [kwargs['LIBS']] -# else: -# env.AppendUnique(LIBS=['gcov']) -# kwargs['LIBS'].append('gcov') -# return kwargs def _add_code_coverage(env, **kwargs): """Add library for code coverage""" if GetOption("test_coverage"): - if 'LIBS' in kwargs: + if 'LIBS' not in kwargs: + kwargs['LIBS'] = [] if isinstance(kwargs['LIBS'], str): kwargs['LIBS'] = [kwargs['LIBS']] kwargs['LIBS'].append('gcov') @@ -275,6 +265,18 @@ def _add_code_coverage(env, **kwargs): env.AppendUnique(LIBS=['gcov']) return kwargs +# ok +# def _add_code_coverage(env, **kwargs): +# """Add library for code coverage""" +# if GetOption("test_coverage"): +# if 'LIBS' in kwargs: +# if isinstance(kwargs['LIBS'], str): +# kwargs['LIBS'] = [kwargs['LIBS']] +# kwargs['LIBS'].append('gcov') +# else: +# env.AppendUnique(LIBS=['gcov']) +# return kwargs + def generate(env): """Add daos specific methods to environment""" From d17eb4eba6318ccb0409e0b177aa8fc17e953601 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 7 May 2025 22:27:09 -0400 Subject: [PATCH 027/172] Update _add_code_coverage debug Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 3b80b1579d8..e8194bf058e 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -258,11 +258,11 @@ def _add_code_coverage(env, **kwargs): if GetOption("test_coverage"): if 'LIBS' not in kwargs: kwargs['LIBS'] = [] - if isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] - kwargs['LIBS'].append('gcov') + elif isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] else: env.AppendUnique(LIBS=['gcov']) + kwargs['LIBS'].append('gcov') return kwargs # ok From e3900c165585ce14453a971655327b4f306f8748 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 7 May 2025 22:39:25 -0400 Subject: [PATCH 028/172] Update _add_code_coverage debug Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index e8194bf058e..951f2cd5678 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -258,10 +258,9 @@ def _add_code_coverage(env, **kwargs): if GetOption("test_coverage"): if 'LIBS' not in kwargs: kwargs['LIBS'] = [] + env.AppendUnique(LIBS=['gcov']) elif isinstance(kwargs['LIBS'], str): kwargs['LIBS'] = [kwargs['LIBS']] - else: - env.AppendUnique(LIBS=['gcov']) kwargs['LIBS'].append('gcov') return kwargs From d6476c576de09f401c6b85cd1e9797542f9b9c77 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 7 May 2025 22:44:16 -0400 Subject: [PATCH 029/172] Restore _add_code_coverage Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 33 +++++++++++++-------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 951f2cd5678..1f54161eec6 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -253,29 +253,28 @@ def _print(msg): return None -def _add_code_coverage(env, **kwargs): - """Add library for code coverage""" - if GetOption("test_coverage"): - if 'LIBS' not in kwargs: - kwargs['LIBS'] = [] - env.AppendUnique(LIBS=['gcov']) - elif isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] - kwargs['LIBS'].append('gcov') - return kwargs - -# ok # def _add_code_coverage(env, **kwargs): # """Add library for code coverage""" # if GetOption("test_coverage"): -# if 'LIBS' in kwargs: -# if isinstance(kwargs['LIBS'], str): -# kwargs['LIBS'] = [kwargs['LIBS']] -# kwargs['LIBS'].append('gcov') -# else: +# if 'LIBS' not in kwargs: +# kwargs['LIBS'] = [] # env.AppendUnique(LIBS=['gcov']) +# elif isinstance(kwargs['LIBS'], str): +# kwargs['LIBS'] = [kwargs['LIBS']] +# kwargs['LIBS'].append('gcov') # return kwargs +def _add_code_coverage(env, **kwargs): + """Add library for code coverage""" + if GetOption("test_coverage"): + if 'LIBS' in kwargs: + if isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] + kwargs['LIBS'].append('gcov') + else: + env.AppendUnique(LIBS=['gcov']) + return kwargs + def generate(env): """Add daos specific methods to environment""" From 221036a54173cec292411533f3b967f82e715a4f Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 7 May 2025 23:04:59 -0400 Subject: [PATCH 030/172] Update with gcov Signed-off-by: Ding-Hwa Ho --- src/utils/SConscript | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/utils/SConscript b/src/utils/SConscript index f0956dc9e0d..039bb0a871f 100644 --- a/src/utils/SConscript +++ b/src/utils/SConscript @@ -35,6 +35,8 @@ def scons(): denv = env.Clone() denv.AppendUnique(LIBPATH=[Dir('../client/dfs')]) libs = ['daos', 'daos_common', 'uuid', 'dfs', 'duns', 'gurt', 'cart', 'dl'] + if GetOption('test_coverage'): + libs.append('gcov') daos_hdlrs_src = ['daos_hdlr.c', 'daos_autotest.c', 'daos_dfs_hdlr.c'] daos_hdlrs_lib = denv.d_library('daos_cmd_hdlrs', daos_hdlrs_src, LIBS=libs) From be66f720fd81b82143f59ac555ff9b2f32d0ee9b Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 7 May 2025 23:18:35 -0400 Subject: [PATCH 031/172] Remove env from _add_code_coverage Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 1f54161eec6..392091430d7 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -129,7 +129,7 @@ def _run_command(env, target, sources, daos_libs, command): def _static_library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" - kwargs = _add_code_coverage(env, **kwargs) + kwargs = _add_code_coverage(**kwargs) libname = _get_libname(*args, **kwargs) if 'hide_syms' in kwargs: # Allow for auto-hiding of symbols, used for the Interception library. There are multiple @@ -155,7 +155,7 @@ def _static_library(env, *args, **kwargs): def _library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(denv, **kwargs) + kwargs = _add_code_coverage(**kwargs) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, False) lib = denv.SharedLibrary(*args, **kwargs) @@ -170,7 +170,7 @@ def _library(env, *args, **kwargs): def _program(env, *args, **kwargs): """Build Program with relative RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(denv, **kwargs) + kwargs = _add_code_coverage(**kwargs) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, True) @@ -184,7 +184,7 @@ def _program(env, *args, **kwargs): def _test_program(env, *args, **kwargs): """Build Program with fixed RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(denv, **kwargs) + kwargs = _add_code_coverage(**kwargs) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get("install_off", None), False, True) @@ -264,15 +264,23 @@ def _print(msg): # kwargs['LIBS'].append('gcov') # return kwargs -def _add_code_coverage(env, **kwargs): +# def _add_code_coverage(env, **kwargs): +# """Add library for code coverage""" +# if GetOption("test_coverage"): +# if 'LIBS' in kwargs: +# if isinstance(kwargs['LIBS'], str): +# kwargs['LIBS'] = [kwargs['LIBS']] +# kwargs['LIBS'].append('gcov') +# else: +# env.AppendUnique(LIBS=['gcov']) +# return kwargs +def _add_code_coverage(**kwargs): """Add library for code coverage""" if GetOption("test_coverage"): if 'LIBS' in kwargs: if isinstance(kwargs['LIBS'], str): kwargs['LIBS'] = [kwargs['LIBS']] kwargs['LIBS'].append('gcov') - else: - env.AppendUnique(LIBS=['gcov']) return kwargs From cfa6e28771ac2a865650b514ed89c5babd3c2e57 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 8 May 2025 11:25:23 -0400 Subject: [PATCH 032/172] Add debug for _run_command Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 31 ++++++--------------------- src/utils/SConscript | 2 -- 2 files changed, 6 insertions(+), 27 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 392091430d7..743632e3919 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -122,6 +122,7 @@ def _run_command(env, target, sources, daos_libs, command): """Run Command builder""" if GetOption("test_coverage"): daos_libs += ['gcov'] + print(f"DEBUG... target={target}, daos_libs={daos_libs}") static_deps, shared_deps = _known_deps(env, LIBS=daos_libs) result = env.Command(target, sources + static_deps + shared_deps, command) return result @@ -253,34 +254,14 @@ def _print(msg): return None -# def _add_code_coverage(env, **kwargs): -# """Add library for code coverage""" -# if GetOption("test_coverage"): -# if 'LIBS' not in kwargs: -# kwargs['LIBS'] = [] -# env.AppendUnique(LIBS=['gcov']) -# elif isinstance(kwargs['LIBS'], str): -# kwargs['LIBS'] = [kwargs['LIBS']] -# kwargs['LIBS'].append('gcov') -# return kwargs - -# def _add_code_coverage(env, **kwargs): -# """Add library for code coverage""" -# if GetOption("test_coverage"): -# if 'LIBS' in kwargs: -# if isinstance(kwargs['LIBS'], str): -# kwargs['LIBS'] = [kwargs['LIBS']] -# kwargs['LIBS'].append('gcov') -# else: -# env.AppendUnique(LIBS=['gcov']) -# return kwargs def _add_code_coverage(**kwargs): """Add library for code coverage""" if GetOption("test_coverage"): - if 'LIBS' in kwargs: - if isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] - kwargs['LIBS'].append('gcov') + if 'LIBS' not in kwargs: + kwargs['LIBS'] = [] + elif isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] + kwargs['LIBS'].append('gcov') return kwargs diff --git a/src/utils/SConscript b/src/utils/SConscript index 039bb0a871f..f0956dc9e0d 100644 --- a/src/utils/SConscript +++ b/src/utils/SConscript @@ -35,8 +35,6 @@ def scons(): denv = env.Clone() denv.AppendUnique(LIBPATH=[Dir('../client/dfs')]) libs = ['daos', 'daos_common', 'uuid', 'dfs', 'duns', 'gurt', 'cart', 'dl'] - if GetOption('test_coverage'): - libs.append('gcov') daos_hdlrs_src = ['daos_hdlr.c', 'daos_autotest.c', 'daos_dfs_hdlr.c'] daos_hdlrs_lib = denv.d_library('daos_cmd_hdlrs', daos_hdlrs_src, LIBS=libs) From f34c46a4d3df5509345fafa40d3409fba9eaf207 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 8 May 2025 11:33:57 -0400 Subject: [PATCH 033/172] Update control/SConscript Signed-off-by: Ding-Hwa Ho --- src/control/SConscript | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/control/SConscript b/src/control/SConscript index cd4fefd6ced..53daec79af5 100644 --- a/src/control/SConscript +++ b/src/control/SConscript @@ -95,8 +95,6 @@ def install_go_bin(env, name, libs=None, install_man=False): if libs is None: libs = [] libs.extend(['daos_common', 'cart', 'gurt']) - if GetOption('test_coverage'): - libs.append('gcov') target = env.d_run_command(name, sources, libs, f'cd {gosrc}; {env.d_go_bin} build -mod vendor ' From 400febbc0516d8a81317c81b11b2702ab1ced813 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 8 May 2025 11:43:21 -0400 Subject: [PATCH 034/172] Add debug _add_code_coverage Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 1 + 1 file changed, 1 insertion(+) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 743632e3919..4737bfd884a 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -262,6 +262,7 @@ def _add_code_coverage(**kwargs): elif isinstance(kwargs['LIBS'], str): kwargs['LIBS'] = [kwargs['LIBS']] kwargs['LIBS'].append('gcov') + print(f"DEBUG.... _add_code_coverage: kwargs['LIBS']={kwargs['LIBS']}") return kwargs From 3023435635fffb898034572afc4d3e9a610de839 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 8 May 2025 11:46:00 -0400 Subject: [PATCH 035/172] Update _add_code_coverage after debug Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 4737bfd884a..0c289056caa 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -261,7 +261,8 @@ def _add_code_coverage(**kwargs): kwargs['LIBS'] = [] elif isinstance(kwargs['LIBS'], str): kwargs['LIBS'] = [kwargs['LIBS']] - kwargs['LIBS'].append('gcov') + if 'gcov' not in kwargs['LIBS']: + kwargs['LIBS'].append('gcov') print(f"DEBUG.... _add_code_coverage: kwargs['LIBS']={kwargs['LIBS']}") return kwargs From 911338c32cc09b7721758caa1d70af32cc2fb932 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 8 May 2025 12:06:13 -0400 Subject: [PATCH 036/172] Update _program _test_program debug Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 0c289056caa..932245a0709 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -171,7 +171,9 @@ def _library(env, *args, **kwargs): def _program(env, *args, **kwargs): """Build Program with relative RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(**kwargs) + # kwargs = _add_code_coverage(**kwargs) + if GetOption("test_coverage"): + denv.AppendUnique(LINKFLAGS=['-lgcov']) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, True) @@ -185,7 +187,9 @@ def _program(env, *args, **kwargs): def _test_program(env, *args, **kwargs): """Build Program with fixed RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(**kwargs) + # kwargs = _add_code_coverage(**kwargs) + if GetOption("test_coverage"): + denv.AppendUnique(LINKFLAGS=['-lgcov']) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get("install_off", None), False, True) From d7f655472b5a63e36545f5e7bc649b6f2f5b7b74 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 8 May 2025 12:15:44 -0400 Subject: [PATCH 037/172] Update _program _test_program debug Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 932245a0709..edec8288e85 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -173,7 +173,7 @@ def _program(env, *args, **kwargs): denv = env.Clone() # kwargs = _add_code_coverage(**kwargs) if GetOption("test_coverage"): - denv.AppendUnique(LINKFLAGS=['-lgcov']) + denv.AppendUnique(LIBS=['gcov']) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, True) @@ -189,7 +189,7 @@ def _test_program(env, *args, **kwargs): denv = env.Clone() # kwargs = _add_code_coverage(**kwargs) if GetOption("test_coverage"): - denv.AppendUnique(LINKFLAGS=['-lgcov']) + denv.AppendUnique(LIBS=['gcov']) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get("install_off", None), False, True) From 31e53b5afa4b0e4b675816db52b825cbce6f0b7a Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 8 May 2025 12:53:02 -0400 Subject: [PATCH 038/172] Add env to _add_code_coverage Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 41 ++++++++++++++++----------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index edec8288e85..a7398b997a0 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -86,6 +86,7 @@ def _known_deps(env, **kwargs): libs = set(kwargs['LIBS']) else: libs = set(env.get('LIBS', [])) + known_libs = libs.intersection(set(libraries.keys())) missing.update(libs - known_libs) for item in sorted(known_libs): @@ -130,7 +131,7 @@ def _run_command(env, target, sources, daos_libs, command): def _static_library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" - kwargs = _add_code_coverage(**kwargs) + kwargs = _add_code_coverage(env, **kwargs) libname = _get_libname(*args, **kwargs) if 'hide_syms' in kwargs: # Allow for auto-hiding of symbols, used for the Interception library. There are multiple @@ -156,7 +157,7 @@ def _static_library(env, *args, **kwargs): def _library(env, *args, **kwargs): """Build SharedLibrary with relative RPATH""" denv = env.Clone() - kwargs = _add_code_coverage(**kwargs) + kwargs = _add_code_coverage(denv, **kwargs) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, False) lib = denv.SharedLibrary(*args, **kwargs) @@ -171,9 +172,7 @@ def _library(env, *args, **kwargs): def _program(env, *args, **kwargs): """Build Program with relative RPATH""" denv = env.Clone() - # kwargs = _add_code_coverage(**kwargs) - if GetOption("test_coverage"): - denv.AppendUnique(LIBS=['gcov']) + kwargs = _add_code_coverage(denv, **kwargs) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get('install_off', '..'), False, True) @@ -187,9 +186,7 @@ def _program(env, *args, **kwargs): def _test_program(env, *args, **kwargs): """Build Program with fixed RPATH""" denv = env.Clone() - # kwargs = _add_code_coverage(**kwargs) - if GetOption("test_coverage"): - denv.AppendUnique(LIBS=['gcov']) + kwargs = _add_code_coverage(denv, **kwargs) denv.AppendUnique(LINKFLAGS=['-pie']) denv.Replace(RPATH=[]) _add_rpaths(denv, kwargs.get("install_off", None), False, True) @@ -258,16 +255,28 @@ def _print(msg): return None -def _add_code_coverage(**kwargs): +# def _add_code_coverage(**kwargs): +# """Add library for code coverage""" +# if GetOption("test_coverage"): +# if 'LIBS' not in kwargs: +# kwargs['LIBS'] = [] +# elif isinstance(kwargs['LIBS'], str): +# kwargs['LIBS'] = [kwargs['LIBS']] +# if 'gcov' not in kwargs['LIBS']: +# kwargs['LIBS'].append('gcov') +# print(f"DEBUG.... _add_code_coverage: kwargs['LIBS']={kwargs['LIBS']}") +# return kwargs + +def _add_code_coverage(env, **kwargs): """Add library for code coverage""" if GetOption("test_coverage"): - if 'LIBS' not in kwargs: - kwargs['LIBS'] = [] - elif isinstance(kwargs['LIBS'], str): - kwargs['LIBS'] = [kwargs['LIBS']] - if 'gcov' not in kwargs['LIBS']: - kwargs['LIBS'].append('gcov') - print(f"DEBUG.... _add_code_coverage: kwargs['LIBS']={kwargs['LIBS']}") + if 'LIBS' in kwargs: + if isinstance(kwargs['LIBS'], str): + kwargs['LIBS'] = [kwargs['LIBS']] + if 'gcov' not in kwargs['LIBS']: + kwargs['LIBS'].append('gcov') + else: + env.AppendUnique(LIBS=['gcov']) return kwargs From 7ad37d5022e696cf32527eec841500b88303a0ce Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 8 May 2025 14:00:13 -0400 Subject: [PATCH 039/172] Skip gcov for target daos_server_helper Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index a7398b997a0..7e63d75c167 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -122,7 +122,9 @@ def _add_lib(libtype, libname, target): def _run_command(env, target, sources, daos_libs, command): """Run Command builder""" if GetOption("test_coverage"): - daos_libs += ['gcov'] + # DH + if target != 'daos_server_helper': + daos_libs += ['gcov'] print(f"DEBUG... target={target}, daos_libs={daos_libs}") static_deps, shared_deps = _known_deps(env, LIBS=daos_libs) result = env.Command(target, sources + static_deps + shared_deps, command) From 264e91e25af4a24938573a1f264fe78a8ba3e15d Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 8 May 2025 17:35:34 -0400 Subject: [PATCH 040/172] Update control install_go_bin() for debug Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 4 +--- src/control/SConscript | 3 +++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 7e63d75c167..a7398b997a0 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -122,9 +122,7 @@ def _add_lib(libtype, libname, target): def _run_command(env, target, sources, daos_libs, command): """Run Command builder""" if GetOption("test_coverage"): - # DH - if target != 'daos_server_helper': - daos_libs += ['gcov'] + daos_libs += ['gcov'] print(f"DEBUG... target={target}, daos_libs={daos_libs}") static_deps, shared_deps = _known_deps(env, LIBS=daos_libs) result = env.Command(target, sources + static_deps + shared_deps, command) diff --git a/src/control/SConscript b/src/control/SConscript index 53daec79af5..220cd846aee 100644 --- a/src/control/SConscript +++ b/src/control/SConscript @@ -95,6 +95,9 @@ def install_go_bin(env, name, libs=None, install_man=False): if libs is None: libs = [] libs.extend(['daos_common', 'cart', 'gurt']) + # DH + if GetOption("test_coverage"): + libs.extend(['gcov']) target = env.d_run_command(name, sources, libs, f'cd {gosrc}; {env.d_go_bin} build -mod vendor ' From 0a5711ebe6060145d465ce385cf2cab12babc812 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 8 May 2025 17:54:25 -0400 Subject: [PATCH 041/172] Restore SConscript from src/control Signed-off-by: Ding-Hwa Ho --- src/control/SConscript | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/control/SConscript b/src/control/SConscript index 220cd846aee..53daec79af5 100644 --- a/src/control/SConscript +++ b/src/control/SConscript @@ -95,9 +95,6 @@ def install_go_bin(env, name, libs=None, install_man=False): if libs is None: libs = [] libs.extend(['daos_common', 'cart', 'gurt']) - # DH - if GetOption("test_coverage"): - libs.extend(['gcov']) target = env.d_run_command(name, sources, libs, f'cd {gosrc}; {env.d_go_bin} build -mod vendor ' From 2aa7ac8ac52fd800eb8b421e57505daf49273a6d Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 9 May 2025 14:11:46 -0400 Subject: [PATCH 042/172] Update CGO_LDFLAGS--coverage -g -O0 Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/compiler_setup.py | 2 +- site_scons/site_tools/daos_builder.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/site_scons/site_tools/compiler_setup.py b/site_scons/site_tools/compiler_setup.py index 7a2ea79a297..ca9d88fcdff 100644 --- a/site_scons/site_tools/compiler_setup.py +++ b/site_scons/site_tools/compiler_setup.py @@ -126,7 +126,7 @@ def _base_setup(env): env.AppendUnique(CCFLAGS=["-fprofile-arcs", "-ftest-coverage"]) env.AppendUnique(LDFLAGS=["-lgcov", "--coverage -g -O0"]) env.AppendUnique(CGO_CFLAGS=["-fprofile-arcs", "-ftest-coverage"]) - env.AppendUnique(CGO_LDFLAGS=["-lgcov", "--coverage"]) + env.AppendUnique(CGO_LDFLAGS=["-lgcov", "--coverage -g -O0"]) env.AppendUnique(LIBS=['gcov']) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index a7398b997a0..a9f0c05668f 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -122,7 +122,8 @@ def _add_lib(libtype, libname, target): def _run_command(env, target, sources, daos_libs, command): """Run Command builder""" if GetOption("test_coverage"): - daos_libs += ['gcov'] + if 'gcov' not in daos_libs: + daos_libs += ['gcov'] print(f"DEBUG... target={target}, daos_libs={daos_libs}") static_deps, shared_deps = _known_deps(env, LIBS=daos_libs) result = env.Command(target, sources + static_deps + shared_deps, command) From 4a3f70c0237fb3ad56b1d375d555177d442e2659 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 9 May 2025 16:31:05 -0400 Subject: [PATCH 043/172] Update CGO_LDFLAGS to _run_command Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/compiler_setup.py | 4 ++-- site_scons/site_tools/daos_builder.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/site_scons/site_tools/compiler_setup.py b/site_scons/site_tools/compiler_setup.py index ca9d88fcdff..1f9ae371269 100644 --- a/site_scons/site_tools/compiler_setup.py +++ b/site_scons/site_tools/compiler_setup.py @@ -124,9 +124,9 @@ def _base_setup(env): if GetOption('test_coverage'): env.AppendUnique(CXXFLAGS=["-fprofile-arcs", "-ftest-coverage"]) env.AppendUnique(CCFLAGS=["-fprofile-arcs", "-ftest-coverage"]) - env.AppendUnique(LDFLAGS=["-lgcov", "--coverage -g -O0"]) + env.AppendUnique(LDFLAGS=["-lgcov"]) env.AppendUnique(CGO_CFLAGS=["-fprofile-arcs", "-ftest-coverage"]) - env.AppendUnique(CGO_LDFLAGS=["-lgcov", "--coverage -g -O0"]) + env.AppendUnique(CGO_LDFLAGS=["-lgcov"]) env.AppendUnique(LIBS=['gcov']) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index a9f0c05668f..81f3093d650 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -124,6 +124,7 @@ def _run_command(env, target, sources, daos_libs, command): if GetOption("test_coverage"): if 'gcov' not in daos_libs: daos_libs += ['gcov'] + env.AppendENVPath('CGO_LDFLAGS', '-lgcov', sep=' ') print(f"DEBUG... target={target}, daos_libs={daos_libs}") static_deps, shared_deps = _known_deps(env, LIBS=daos_libs) result = env.Command(target, sources + static_deps + shared_deps, command) From 0ff04e4532f601919b0653bcf0b90f3f396ad2eb Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 9 May 2025 17:00:08 -0400 Subject: [PATCH 044/172] Update CGO_CFLAGS and code_coverage cleanup. Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 2 +- SConstruct | 8 ++++---- site_scons/site_tools/compiler_setup.py | 12 ++++++------ site_scons/site_tools/daos_builder.py | 20 ++++---------------- 4 files changed, 15 insertions(+), 27 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index cf0a33a2740..2ff45144f74 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -652,7 +652,7 @@ pipeline { stash_opt: true, scons_args: sconsArgs() + ' PREFIX=/opt/daos TARGET_TYPE=release', - test_coverage: params.CI_CODE_COVERAGE)) + code_coverage: params.CI_CODE_COVERAGE)) } post { unsuccessful { diff --git a/SConstruct b/SConstruct index a1551c3ea34..7afd08b5206 100644 --- a/SConstruct +++ b/SConstruct @@ -92,12 +92,12 @@ def add_command_line_options(): help='Ignore the versions/branches/patches specified in build.config and \ use the specified relative sub-directory containing all \ dependencies as git submodules instead') - # generate test coverage - AddOption('--test-coverage', + # generate code coverage + AddOption('--code-coverage', action='store_true', - dest='test_coverage', + dest='code_coverage', default=False, - help='enable test coverage analyze with gcov') + help='enable code coverage analyze with gcov') def parse_and_save_conf(env, opts_file): diff --git a/site_scons/site_tools/compiler_setup.py b/site_scons/site_tools/compiler_setup.py index 1f9ae371269..b9e0e09f42a 100644 --- a/site_scons/site_tools/compiler_setup.py +++ b/site_scons/site_tools/compiler_setup.py @@ -121,12 +121,12 @@ def _base_setup(env): env['BSETUP'] = compiler - if GetOption('test_coverage'): - env.AppendUnique(CXXFLAGS=["-fprofile-arcs", "-ftest-coverage"]) - env.AppendUnique(CCFLAGS=["-fprofile-arcs", "-ftest-coverage"]) - env.AppendUnique(LDFLAGS=["-lgcov"]) - env.AppendUnique(CGO_CFLAGS=["-fprofile-arcs", "-ftest-coverage"]) - env.AppendUnique(CGO_LDFLAGS=["-lgcov"]) + if GetOption('code_coverage'): + env.AppendUnique(CXXFLAGS=['-fprofile-arcs', '-ftest-coverage']) + env.AppendUnique(CCFLAGS=['fprofile-arcs', '-ftest-coverage']) + env.AppendUnique(LDFLAGS=['lgcov']) + env.AppendUnique(CGO_CFLAGS=['-fprofile-arcs', '-ftest-coverage']) + env.AppendUnique(CGO_LDFLAGS=['-lgcov']) env.AppendUnique(LIBS=['gcov']) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 81f3093d650..b907fe996af 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -121,11 +121,11 @@ def _add_lib(libtype, libname, target): def _run_command(env, target, sources, daos_libs, command): """Run Command builder""" - if GetOption("test_coverage"): + if GetOption("code_coverage"): if 'gcov' not in daos_libs: daos_libs += ['gcov'] - env.AppendENVPath('CGO_LDFLAGS', '-lgcov', sep=' ') - print(f"DEBUG... target={target}, daos_libs={daos_libs}") + # env.AppendENVPath('CGO_LDFLAGS', '-lgcov', sep=' ') + env.AppendUnique(CGO_LDFLAGS=['-lgcov']) static_deps, shared_deps = _known_deps(env, LIBS=daos_libs) result = env.Command(target, sources + static_deps + shared_deps, command) return result @@ -257,21 +257,9 @@ def _print(msg): return None -# def _add_code_coverage(**kwargs): -# """Add library for code coverage""" -# if GetOption("test_coverage"): -# if 'LIBS' not in kwargs: -# kwargs['LIBS'] = [] -# elif isinstance(kwargs['LIBS'], str): -# kwargs['LIBS'] = [kwargs['LIBS']] -# if 'gcov' not in kwargs['LIBS']: -# kwargs['LIBS'].append('gcov') -# print(f"DEBUG.... _add_code_coverage: kwargs['LIBS']={kwargs['LIBS']}") -# return kwargs - def _add_code_coverage(env, **kwargs): """Add library for code coverage""" - if GetOption("test_coverage"): + if GetOption("code_coverage"): if 'LIBS' in kwargs: if isinstance(kwargs['LIBS'], str): kwargs['LIBS'] = [kwargs['LIBS']] From 9ac3bcc3a3c656d8d23f685f7ab18cb4bf62550c Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 9 May 2025 17:09:23 -0400 Subject: [PATCH 045/172] Update typo -lgcov Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/compiler_setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site_scons/site_tools/compiler_setup.py b/site_scons/site_tools/compiler_setup.py index b9e0e09f42a..238e1081d06 100644 --- a/site_scons/site_tools/compiler_setup.py +++ b/site_scons/site_tools/compiler_setup.py @@ -124,7 +124,7 @@ def _base_setup(env): if GetOption('code_coverage'): env.AppendUnique(CXXFLAGS=['-fprofile-arcs', '-ftest-coverage']) env.AppendUnique(CCFLAGS=['fprofile-arcs', '-ftest-coverage']) - env.AppendUnique(LDFLAGS=['lgcov']) + env.AppendUnique(LDFLAGS=['-lgcov']) env.AppendUnique(CGO_CFLAGS=['-fprofile-arcs', '-ftest-coverage']) env.AppendUnique(CGO_LDFLAGS=['-lgcov']) env.AppendUnique(LIBS=['gcov']) From 6eb4e0d058746e52c3d895f8982367702f7ed002 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 9 May 2025 17:12:35 -0400 Subject: [PATCH 046/172] Update -fprofile-arcs Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/compiler_setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site_scons/site_tools/compiler_setup.py b/site_scons/site_tools/compiler_setup.py index 238e1081d06..e72b6e42722 100644 --- a/site_scons/site_tools/compiler_setup.py +++ b/site_scons/site_tools/compiler_setup.py @@ -123,7 +123,7 @@ def _base_setup(env): if GetOption('code_coverage'): env.AppendUnique(CXXFLAGS=['-fprofile-arcs', '-ftest-coverage']) - env.AppendUnique(CCFLAGS=['fprofile-arcs', '-ftest-coverage']) + env.AppendUnique(CCFLAGS=['-fprofile-arcs', '-ftest-coverage']) env.AppendUnique(LDFLAGS=['-lgcov']) env.AppendUnique(CGO_CFLAGS=['-fprofile-arcs', '-ftest-coverage']) env.AppendUnique(CGO_LDFLAGS=['-lgcov']) From eedae8e43866313212b535246b92d2f5458ff072 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 9 May 2025 17:24:48 -0400 Subject: [PATCH 047/172] Update with debug Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/compiler_setup.py | 6 +++--- site_scons/site_tools/daos_builder.py | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/site_scons/site_tools/compiler_setup.py b/site_scons/site_tools/compiler_setup.py index e72b6e42722..f0e31bf747a 100644 --- a/site_scons/site_tools/compiler_setup.py +++ b/site_scons/site_tools/compiler_setup.py @@ -124,10 +124,10 @@ def _base_setup(env): if GetOption('code_coverage'): env.AppendUnique(CXXFLAGS=['-fprofile-arcs', '-ftest-coverage']) env.AppendUnique(CCFLAGS=['-fprofile-arcs', '-ftest-coverage']) - env.AppendUnique(LDFLAGS=['-lgcov']) + # env.AppendUnique(LDFLAGS=['-lgcov']) env.AppendUnique(CGO_CFLAGS=['-fprofile-arcs', '-ftest-coverage']) - env.AppendUnique(CGO_LDFLAGS=['-lgcov']) - env.AppendUnique(LIBS=['gcov']) + # env.AppendUnique(CGO_LDFLAGS=['-lgcov']) + # env.AppendUnique(LIBS=['gcov']) def _check_flag_helper(context, compiler, ext, flag): diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index b907fe996af..848fa053b4d 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -124,8 +124,7 @@ def _run_command(env, target, sources, daos_libs, command): if GetOption("code_coverage"): if 'gcov' not in daos_libs: daos_libs += ['gcov'] - # env.AppendENVPath('CGO_LDFLAGS', '-lgcov', sep=' ') - env.AppendUnique(CGO_LDFLAGS=['-lgcov']) + env.AppendENVPath('CGO_LDFLAGS', '-lgcov', sep=' ') static_deps, shared_deps = _known_deps(env, LIBS=daos_libs) result = env.Command(target, sources + static_deps + shared_deps, command) return result From 942aee2a6e189eed8154abf82f60923bb1385998 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 9 May 2025 17:59:33 -0400 Subject: [PATCH 048/172] Remove commented env.AppendUnique from _base_setup Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/compiler_setup.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/site_scons/site_tools/compiler_setup.py b/site_scons/site_tools/compiler_setup.py index f0e31bf747a..2d466923d70 100644 --- a/site_scons/site_tools/compiler_setup.py +++ b/site_scons/site_tools/compiler_setup.py @@ -124,10 +124,7 @@ def _base_setup(env): if GetOption('code_coverage'): env.AppendUnique(CXXFLAGS=['-fprofile-arcs', '-ftest-coverage']) env.AppendUnique(CCFLAGS=['-fprofile-arcs', '-ftest-coverage']) - # env.AppendUnique(LDFLAGS=['-lgcov']) env.AppendUnique(CGO_CFLAGS=['-fprofile-arcs', '-ftest-coverage']) - # env.AppendUnique(CGO_LDFLAGS=['-lgcov']) - # env.AppendUnique(LIBS=['gcov']) def _check_flag_helper(context, compiler, ext, flag): From 33d272d82ee974f3ce122e8dbe04bd802598cc8c Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Mon, 12 May 2025 11:46:19 -0400 Subject: [PATCH 049/172] Sync with gcov unit-test and files Signed-off-by: Ding-Hwa Ho --- ci/code_coverage_report.sh | 12 +++++++++ ci/unit/test_main_node.sh | 24 ++++++++++++++++++ ci/unit/test_nlt.sh | 4 +-- ci/unit/test_nlt_node.sh | 15 +++++++++++ ci/unit/test_post_always.sh | 5 ++-- utils/docker/Dockerfile.test_summary | 38 ++++++++++++++++++++++++++++ 6 files changed, 94 insertions(+), 4 deletions(-) create mode 100644 ci/code_coverage_report.sh create mode 100644 utils/docker/Dockerfile.test_summary diff --git a/ci/code_coverage_report.sh b/ci/code_coverage_report.sh new file mode 100644 index 00000000000..4f982ffbb34 --- /dev/null +++ b/ci/code_coverage_report.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +set -eux + +# ls -al +# Generate code coverage report +if [[ -n $(find . -name "code_coverage.json") ]]; then + mkdir -p code_coverage_report + gcovr --json-add-tracefile "*/code_coverage/code_coverage.json" \ + -o code_coverage_report/code_coverage_report.html \ + --html-details --gcov-ignore-parse-errors +fi diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index a14b1fc3880..176e217484d 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -88,3 +88,27 @@ pip install /opt/daos/lib/daos/python/ utils/run_utest.py $RUN_TEST_VALGRIND --no-fail-on-error $VDB_ARG --log_dir="$test_log_dir" \ $SUDO_ARG + +# Generate code coverage report if at least one gcda file was generated +# Possibly limit this to finding a single match +if [[ -n $(find build -name "*.gcda") ]]; then + # python3.6 does not like deactivate with -u set, later versions are OK with it however. + set +u + deactivate + set -u + + # Run gcovr in a python 3.11 environment + python3.11 -m venv venv-code-coverage + # shellcheck disable=SC1091 + source venv-code-coverage/bin/activate + touch venv-code-coverage/pip.conf + pip config set global.progress_bar off + pip config set global.no_color true + pip install --upgrade pip + pip install --requirement requirements-code-coverage.txt + + mkdir -p "${test_log_dir}/code_coverage" + gcovr -o "${test_log_dir}/code_coverage/code_coverage_report.html" --html-details --gcov-ignore-parse-errors + # Eventually remove this one and only generate json files per stage. + gcovr --json "${test_log_dir}/code_coverage/code_coverage.json" --gcov-ignore-parse-errors +fi \ No newline at end of file diff --git a/ci/unit/test_nlt.sh b/ci/unit/test_nlt.sh index 5f8cb47685d..447f9b62ec2 100755 --- a/ci/unit/test_nlt.sh +++ b/ci/unit/test_nlt.sh @@ -10,8 +10,8 @@ rm -rf dnt.*.memcheck.xml vm_test/ NODE=${NODELIST%%,*} mydir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" -# Copy over the install tree and some of the build tree. -rsync -rlpt -z -e "ssh $SSH_KEY_ARGS" .build_vars* opt-daos.tar utils requirements-utest.txt jenkins@"$NODE":build/ +# Copy over the install tree and the build tree. +rsync -rlpt -z -e "ssh $SSH_KEY_ARGS" . jenkins@"$NODE":build/ # shellcheck disable=SC2029 ssh -tt "$SSH_KEY_ARGS" jenkins@"$NODE" "HTTPS_PROXY=\"${HTTPS_PROXY:-}\" \ diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index cbf45f71965..718ed1d826d 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -41,5 +41,20 @@ pip install /opt/daos/lib/daos/python/ sudo prlimit --nofile=1024:262144 --pid $$ prlimit -n +# debug +pwd +ls -al +find . -name '*.gcno' +export GCOV_PREFIX=/tmp + HTTPS_PROXY="${HTTPS_PROXY:-}" ./utils/node_local_test.py --max-log-size 1950MiB \ --dfuse-dir /localhome/jenkins/ --log-usage-save nltir.xml --log-usage-export nltr.json all + +# Generate code coverage report if at least one gcda file was generated +if [[ -n $(find build -name "*.gcda") ]]; then + pip install --requirement requirements-code-coverage.txt + + mkdir -p nlt_logs/code_coverage + gcovr -o nlt_logs/code_coverage/code_coverage_report.html --html-details --gcov-ignore-parse-errors + gcovr --json nlt_logs/code_coverage/code_coverage.json --gcov-ignore-parse-errors +fi \ No newline at end of file diff --git a/ci/unit/test_post_always.sh b/ci/unit/test_post_always.sh index 5d48ab5482d..57fec9ec43e 100755 --- a/ci/unit/test_post_always.sh +++ b/ci/unit/test_post_always.sh @@ -39,11 +39,12 @@ esac mkdir -p "$test_log_dir" -rsync -v -rlpt -z -e "ssh $SSH_KEY_ARGS" jenkins@"$NODE":build/ . +rsync -v -rlpt -z -e "ssh $SSH_KEY_ARGS" jenkins@"$NODE":build/ --exclude="venv" . # Copy any log files. Use rsync filters here to allow us to specify # all files we want to copy, as it's much more flexible than using # standard wildcards. rsync -v -dpt -z -e "ssh $SSH_KEY_ARGS" jenkins@"$NODE":/tmp/ \ - --filter="include daos*.log" --filter="include test.cov" \ + --filter="include daos*.log" --filter="include code_coverage/*" \ --filter="exclude *" "$test_log_dir/" + # Eventually remove this once a single code coverage file working. diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary new file mode 100644 index 00000000000..460b362a547 --- /dev/null +++ b/utils/docker/Dockerfile.test_summary @@ -0,0 +1,38 @@ +# +# Copyright 2018-2022, Intel Corporation +# +# 'recipe' for Docker for test summary. +# + +ARG FVERSION=latest +FROM fedora:$FVERSION +# Needed for later use of FVERSION +ARG FVERSION +LABEL maintainer="daos@daos.groups.io" + +# Intermittent cache-bust. Used to reduce load on the actual CACHEBUST later. +ARG CB0 + +# Use local repo server if present +ARG REPO_FILE_URL +ARG DAOS_LAB_CA_FILE_URL + +# script to install OS updates basic tools and daos dependencies +# COPY ./utils/scripts/install-fedora.sh /tmp/install.sh +# script to setup local repo if available +COPY ./utils/scripts/helpers/repo-helper-fedora.sh /tmp/repo-helper.sh +RUN chmod +x /tmp/repo-helper.sh && \ + /tmp/repo-helper.sh && \ + rm -f /tmp/repo-helper.sh + +# Setup a python venv so that python packages can be installed locally. +RUN python3 -m venv /home/daos/venv +ENV PATH=/home/daos/venv/bin:$PATH +ENV VIRTUAL_ENV=/home/daos/venv/ + +# Install latest versions of python tools. +COPY requirements-code-coverage.txt ./ +RUN python3 -m pip --no-cache-dir install --upgrade pip && \ + python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt + +ARG CB1 From 2f374bb4f39f30a1274e1e45504e619dab6567d2 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 20 May 2025 17:39:32 -0400 Subject: [PATCH 050/172] Update with yaml Signed-off-by: Ding-Hwa Ho --- requirements-utest.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements-utest.txt b/requirements-utest.txt index 15bc5d839cf..15023c952d0 100644 --- a/requirements-utest.txt +++ b/requirements-utest.txt @@ -6,3 +6,4 @@ PyYAML # pytest # for pydaos.torch module torch +yaml From ebddc4cd7244546042e50c2d482f486c9d87e6fc Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 20 May 2025 22:07:48 -0400 Subject: [PATCH 051/172] Relocate test gcov env var Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 91b3890338f..f35006e8d3e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -264,6 +264,9 @@ pipeline { booleanParam(name: 'CI_leap15_NOBUILD', defaultValue: false, description: 'Do not build on Leap 15') + booleanParam(name: 'CI_CODE_COVERAGE', + defaultValue: true, + description: 'Run with code coverage analysis') booleanParam(name: 'CI_ALLOW_UNSTABLE_TEST', defaultValue: false, description: 'Continue testing if a previous stage is Unstable') @@ -335,9 +338,6 @@ pipeline { booleanParam(name: 'CI_large_md_on_ssd_TEST', defaultValue: true, description: 'Run the Functional Hardware Large MD on SSD test stage') - booleanParam(name: 'CI_CODE_COVERAGE', - defaultValue: true, - description: 'Run with code coverage analysis') string(name: 'CI_UNIT_VM1_LABEL', defaultValue: 'ci_vm1', description: 'Label to use for 1 VM node unit and RPM tests') From 75247ae045c82ead3a3b44d400ca7d1c18f8e012 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Wed, 21 May 2025 09:42:00 -0400 Subject: [PATCH 052/172] Fix pyyaml import. Signed-off-by: Phil Henderson --- requirements-utest.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/requirements-utest.txt b/requirements-utest.txt index 15023c952d0..687b500e2a8 100644 --- a/requirements-utest.txt +++ b/requirements-utest.txt @@ -1,9 +1,8 @@ tabulate junit_xml pyxattr -PyYAML +pyyaml # Disabled for now because of DAOS-14688 # pytest # for pydaos.torch module torch -yaml From 6db2a2e17a3069be96fb787f1f47c6a051b10882 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Wed, 21 May 2025 10:40:20 -0400 Subject: [PATCH 053/172] Add pyyaml install for code coverage Signed-off-by: Phil Henderson --- requirements-code-coverage.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements-code-coverage.txt b/requirements-code-coverage.txt index 4d1950548d8..35e6247baff 100644 --- a/requirements-code-coverage.txt +++ b/requirements-code-coverage.txt @@ -1 +1,2 @@ gcovr +pyyaml From 2ee6a397a99e4ec3d05d986554f27b5a02981f8d Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 21 May 2025 11:55:38 -0400 Subject: [PATCH 054/172] Update junit_xml Signed-off-by: Ding-Hwa Ho --- requirements-code-coverage.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements-code-coverage.txt b/requirements-code-coverage.txt index 35e6247baff..78641da6b58 100644 --- a/requirements-code-coverage.txt +++ b/requirements-code-coverage.txt @@ -1,2 +1,3 @@ gcovr pyyaml +junit_xml From 66ce01c0de3c96d0fab90fe58ba75a5c297e41f5 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 21 May 2025 16:42:23 -0400 Subject: [PATCH 055/172] Update with python3.11 and debug Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 59126be4b96..b401a091cd0 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -81,12 +81,16 @@ fi rm -rf "$test_log_dir" # Use default python as that's where storage_estimator is installed. -python3 -m venv venv +python3.11 -m venv venv +# temp cp +ls -la /usr/lib64/python3.*/site-packages/storage_estimator +cp -r /usr/lib64/python3.6/site-packages/storage_estimator venv/lib/python3.11/site-packages/ + # shellcheck disable=SC1091 source venv/bin/activate -# touch venv/pip.conf -# pip config set global.progress_bar off -# pip config set global.no_color true +touch venv/pip.conf +pip config set global.progress_bar off +pip config set global.no_color true pip install --upgrade pip pip install --requirement requirements-utest.txt @@ -99,19 +103,19 @@ utils/run_utest.py $RUN_TEST_VALGRIND --no-fail-on-error $VDB_ARG --log_dir="$te # Generate code coverage report if at least one gcda file was generated # Possibly limit this to finding a single match if [[ -n $(find build -name "*.gcda") ]]; then - # python3.6 does not like deactivate with -u set, later versions are OK with it however. - set +u - deactivate - set -u - - # Run gcovr in a python 3.11 environment - python3.11 -m venv venv-code-coverage - # shellcheck disable=SC1091 - source venv-code-coverage/bin/activate - touch venv-code-coverage/pip.conf - pip config set global.progress_bar off - pip config set global.no_color true - pip install --upgrade pip + # # python3.6 does not like deactivate with -u set, later versions are OK with it however. + # set +u + # deactivate + # set -u + + # # Run gcovr in a python 3.11 environment + # python3.11 -m venv venv-code-coverage + # # shellcheck disable=SC1091 + # source venv-code-coverage/bin/activate + # touch venv-code-coverage/pip.conf + # pip config set global.progress_bar off + # pip config set global.no_color true + # pip install --upgrade pip pip install --requirement requirements-code-coverage.txt mkdir -p "${test_log_dir}/code_coverage" From f875d8cc6f6ca19225697a908fd8cbbc045ab00f Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 27 May 2025 10:49:14 -0400 Subject: [PATCH 056/172] Recommit by adding a debug comment Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index b401a091cd0..fc649aee61a 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -82,7 +82,7 @@ rm -rf "$test_log_dir" # Use default python as that's where storage_estimator is installed. python3.11 -m venv venv -# temp cp +# temp cp for debug ls -la /usr/lib64/python3.*/site-packages/storage_estimator cp -r /usr/lib64/python3.6/site-packages/storage_estimator venv/lib/python3.11/site-packages/ From 7b363fd16f4f25db5fb54af273170591d549f125 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 27 May 2025 13:30:07 -0400 Subject: [PATCH 057/172] Debug with ls lib64 Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index fc649aee61a..b6f9415dac3 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -83,7 +83,8 @@ rm -rf "$test_log_dir" # Use default python as that's where storage_estimator is installed. python3.11 -m venv venv # temp cp for debug -ls -la /usr/lib64/python3.*/site-packages/storage_estimator +ls -la /usr/lib64/ +# ls -la /usr/lib64/python3.6/site-packages/storage_estimator cp -r /usr/lib64/python3.6/site-packages/storage_estimator venv/lib/python3.11/site-packages/ # shellcheck disable=SC1091 From ff70c935dd830703c2a36ae88d50982d5ff5903a Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 27 May 2025 14:11:08 -0400 Subject: [PATCH 058/172] Comment out the cp Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index b6f9415dac3..68e20f89e19 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -83,9 +83,9 @@ rm -rf "$test_log_dir" # Use default python as that's where storage_estimator is installed. python3.11 -m venv venv # temp cp for debug -ls -la /usr/lib64/ +# ls -la /usr/lib64/ # ls -la /usr/lib64/python3.6/site-packages/storage_estimator -cp -r /usr/lib64/python3.6/site-packages/storage_estimator venv/lib/python3.11/site-packages/ +# cp -r /usr/lib64/python3.6/site-packages/storage_estimator venv/lib/python3.11/site-packages/ # shellcheck disable=SC1091 source venv/bin/activate From 7b3cd29ed0736f1b2ebf54060fbd7356e4f2f66c Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 29 May 2025 16:33:53 -0400 Subject: [PATCH 059/172] Add setup.py and update cp storage_estimator. Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 3 ++- src/vos/setup.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 src/vos/setup.py diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 68e20f89e19..dce974afb31 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -85,7 +85,7 @@ python3.11 -m venv venv # temp cp for debug # ls -la /usr/lib64/ # ls -la /usr/lib64/python3.6/site-packages/storage_estimator -# cp -r /usr/lib64/python3.6/site-packages/storage_estimator venv/lib/python3.11/site-packages/ +cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib/python3.11/site-packages/ # shellcheck disable=SC1091 source venv/bin/activate @@ -97,6 +97,7 @@ pip install --upgrade pip pip install --requirement requirements-utest.txt pip install /opt/daos/lib/daos/python/ +# pip install /opt/daos/lib64/python3.6/site-packages/storage_estimator utils/run_utest.py $RUN_TEST_VALGRIND --no-fail-on-error $VDB_ARG --log_dir="$test_log_dir" \ $SUDO_ARG diff --git a/src/vos/setup.py b/src/vos/setup.py new file mode 100644 index 00000000000..c9581b3e615 --- /dev/null +++ b/src/vos/setup.py @@ -0,0 +1,15 @@ +""" +setup.py for packaging storage estimation tool. + +To use type: + +pip install . +""" +from setuptools import find_packages, setup + +setup( + name="storage_estimator", + version="0.1", + packages=find_packages(), + description="DAOS storage estimation tools" +) From 67957a14cc162e886aac0a146a81b7e8bb007157 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 30 May 2025 14:43:07 -0400 Subject: [PATCH 060/172] Add debug ls -la storage_estimator Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index dce974afb31..4196a7b5b6d 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -84,7 +84,7 @@ rm -rf "$test_log_dir" python3.11 -m venv venv # temp cp for debug # ls -la /usr/lib64/ -# ls -la /usr/lib64/python3.6/site-packages/storage_estimator +ls -la /opt/daos/lib64/python3.6/site-packages/storage_estimator cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib/python3.11/site-packages/ # shellcheck disable=SC1091 From 0290704fc09177aeb505ed7b7decc9d25238bf64 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 30 May 2025 16:36:17 -0400 Subject: [PATCH 061/172] Update debug cp venv/lib64 Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 4196a7b5b6d..6acd92c4f52 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -85,7 +85,8 @@ python3.11 -m venv venv # temp cp for debug # ls -la /usr/lib64/ ls -la /opt/daos/lib64/python3.6/site-packages/storage_estimator -cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib/python3.11/site-packages/ +# cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib/python3.11/site-packages/ +cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ # shellcheck disable=SC1091 source venv/bin/activate From 5e4fbff836579170563a7a2b75c80a0784840d80 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Mon, 2 Jun 2025 15:21:41 -0400 Subject: [PATCH 062/172] Update cp libvos_size.so to venv Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 6acd92c4f52..83c77f6766a 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -83,10 +83,9 @@ rm -rf "$test_log_dir" # Use default python as that's where storage_estimator is installed. python3.11 -m venv venv # temp cp for debug -# ls -la /usr/lib64/ -ls -la /opt/daos/lib64/python3.6/site-packages/storage_estimator -# cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib/python3.11/site-packages/ +ls -la /usr/lib64/ cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ +cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/ # shellcheck disable=SC1091 source venv/bin/activate From a6f57eaafdb5afcd2a6fffebd78a4f9f6e1b4bd9 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Mon, 2 Jun 2025 18:24:36 -0400 Subject: [PATCH 063/172] Update cp daos_srv/libvos_size.so to daos_srv Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 83c77f6766a..0fc5918f64b 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -85,7 +85,8 @@ python3.11 -m venv venv # temp cp for debug ls -la /usr/lib64/ cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ -cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/ +# cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/ +cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/daos_srv/ # shellcheck disable=SC1091 source venv/bin/activate From 779fa37fc56730d0cee4fdc8612a82e0309cd761 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Mon, 2 Jun 2025 19:28:50 -0400 Subject: [PATCH 064/172] Update cp -r daos_srv. Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 0fc5918f64b..fa065833361 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -86,7 +86,7 @@ python3.11 -m venv venv ls -la /usr/lib64/ cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ # cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/ -cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/daos_srv/ +cp -r /opt/daos/lib64/daos_srv venv/lib64/ # shellcheck disable=SC1091 source venv/bin/activate From 90197df0ec2021f313767c85ad5963a1ca0d4a4c Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Mon, 2 Jun 2025 23:28:06 -0400 Subject: [PATCH 065/172] cp libdfs.so to lib64 Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index fa065833361..fd04e0b72f5 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -87,6 +87,7 @@ ls -la /usr/lib64/ cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ # cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/ cp -r /opt/daos/lib64/daos_srv venv/lib64/ +cp /opt/daos/lib64/libdfs.so venv/lib64/ # shellcheck disable=SC1091 source venv/bin/activate From d56b971d2a120e980b4ea59ea15fa4d97e14bf44 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 3 Jun 2025 17:12:45 -0400 Subject: [PATCH 066/172] Update to increase timeout Skip-nlt: true Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index f35006e8d3e..2674cb3fd8c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -749,7 +749,7 @@ pipeline { } steps { job_step_update( - unitTest(timeout_time: 60, + unitTest(timeout_time: 120, unstash_opt: true, inst_repos: prRepos(), inst_rpms: unitPackages())) @@ -818,9 +818,7 @@ pipeline { } post { always { - unitTestPost artifacts: ['unit_test_memcheck_logs.tar.gz', - 'unit_test_memcheck_logs/**/*.log', - 'unit_test_memcheck_logs/code_coverage'], + unitTestPost artifacts: ['unit_test_memcheck_logs/'], valgrind_stash: 'el8-gcc-unit-memcheck' job_status_update() } @@ -836,7 +834,7 @@ pipeline { } steps { job_step_update( - unitTest(timeout_time: 180, + unitTest(timeout_time: 250, unstash_opt: true, ignore_failure: true, inst_repos: prRepos(), @@ -844,9 +842,7 @@ pipeline { } post { always { - unitTestPost artifacts: ['unit_test_memcheck_bdev_logs.tar.gz', - 'unit_test_memcheck_bdev_logs/**/*.log', - 'unit_test_memcheck_logs/code_coverage'], + unitTestPost artifacts: ['unit_test_memcheck_bdev_logs/'], valgrind_stash: 'el8-gcc-unit-memcheck-bdev' job_status_update() } From adeddde8f25e6c3b598de111ff8d33b5bed7e51e Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 3 Jun 2025 22:08:47 -0400 Subject: [PATCH 067/172] Update Unit Test bdev with memcheck timeout to 360 Skip-nlt: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 18110dc6b6a..630297216ae 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -835,7 +835,7 @@ pipeline { } steps { job_step_update( - unitTest(timeout_time: 250, + unitTest(timeout_time: 360, unstash_opt: true, ignore_failure: true, inst_repos: prRepos(), From 258e8d93f1b95bf45404993d502e739addb937e7 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 4 Jun 2025 09:11:05 -0400 Subject: [PATCH 068/172] Empty commit L#857 Jenkinsfile Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 630297216ae..17d7b717429 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -854,7 +854,7 @@ pipeline { stage('Test') { when { beforeAgent true - //expression { !paramsValue('CI_FUNCTIONAL_TEST_SKIP', false) && !skipStage() } + // expression { !paramsValue('CI_FUNCTIONAL_TEST_SKIP', false) && !skipStage() } // Above not working, always skipping functional VM tests. expression { !paramsValue('CI_FUNCTIONAL_TEST_SKIP', false) } } From a3a79f8cfc0b37e870c3745e81a57c474de08aac Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 4 Jun 2025 17:24:59 -0400 Subject: [PATCH 069/172] Update with ./requirements-code-coverage.txt Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- utils/docker/Dockerfile.test_summary | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index 460b362a547..22cf7680999 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -31,7 +31,7 @@ ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ # Install latest versions of python tools. -COPY requirements-code-coverage.txt ./ +COPY ./requirements-code-coverage.txt ./ RUN python3 -m pip --no-cache-dir install --upgrade pip && \ python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt From 7f8314adccce938783bcb64b45d27a96350b65f0 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 4 Jun 2025 21:48:47 -0400 Subject: [PATCH 070/172] Update ARG BASE_DISTRO. Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- utils/docker/Dockerfile.test_summary | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index 22cf7680999..a1ae296610c 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -4,11 +4,19 @@ # 'recipe' for Docker for test summary. # -ARG FVERSION=latest -FROM fedora:$FVERSION -# Needed for later use of FVERSION -ARG FVERSION +# ARG FVERSION=latest +# FROM fedora:$FVERSION +# # Needed for later use of FVERSION +# ARG FVERSION +# LABEL maintainer="daos@daos.groups.io" + +# Pull base imageAdd commentMore actions +ARG POINT_RELEASE= +ARG BASE_DISTRO=rockylinux/rockylinux:8$POINT_RELEASE +FROM $BASE_DISTRO AS basic LABEL maintainer="daos@daos.groups.io" +# Needed for later use of BASE_DISTRO +ARG BASE_DISTRO # Intermittent cache-bust. Used to reduce load on the actual CACHEBUST later. ARG CB0 From 0c2ef8f0d380fa452598b592f34b4faa463a7a1a Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 5 Jun 2025 12:16:30 -0400 Subject: [PATCH 071/172] Recommit Signed-off-by: Ding-Hwa Ho --- utils/docker/Dockerfile.test_summary | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index a1ae296610c..89378d8a438 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -3,7 +3,6 @@ # # 'recipe' for Docker for test summary. # - # ARG FVERSION=latest # FROM fedora:$FVERSION # # Needed for later use of FVERSION From 4a5d6c62f49069f490d610c9707bf64f1b875520 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 5 Jun 2025 23:37:16 -0400 Subject: [PATCH 072/172] Update Unit Test bdev with memcheck to 480 Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 17d7b717429..51e040bfb2b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -835,7 +835,7 @@ pipeline { } steps { job_step_update( - unitTest(timeout_time: 360, + unitTest(timeout_time: 480, unstash_opt: true, ignore_failure: true, inst_repos: prRepos(), From f94ab7995630fd0258aacab9896c2864e108ac26 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 6 Jun 2025 09:57:59 -0400 Subject: [PATCH 073/172] Update COPY requirements-code-coverage.txt /tmp Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- utils/docker/Dockerfile.test_summary | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index 89378d8a438..d59f5940ab4 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -38,8 +38,12 @@ ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ # Install latest versions of python tools. -COPY ./requirements-code-coverage.txt ./ -RUN python3 -m pip --no-cache-dir install --upgrade pip && \ - python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt +# COPY ./requirements-code-coverage.txt ./ +# RUN python3 -m pip --no-cache-dir install --upgrade pip && \ +# python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt +COPY ./requirements-code-coverage.txt /tmp/ +RUN python3 -m pip --no-cache-dir install --upgrade pip && \ + python3 -m pip --no-cache-dir install -r /tmp/requirements-code-coverage.txt + ARG CB1 From 33176f694e8c7af3adf5cde2f95ec84b2393cd3b Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 6 Jun 2025 12:02:47 -0400 Subject: [PATCH 074/172] Add debug pwd Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- utils/docker/Dockerfile.test_summary | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index d59f5940ab4..98062211d1f 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -42,8 +42,10 @@ ENV VIRTUAL_ENV=/home/daos/venv/ # RUN python3 -m pip --no-cache-dir install --upgrade pip && \ # python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt +RUN pwd +RUN ls -al COPY ./requirements-code-coverage.txt /tmp/ RUN python3 -m pip --no-cache-dir install --upgrade pip && \ python3 -m pip --no-cache-dir install -r /tmp/requirements-code-coverage.txt - + ARG CB1 From aae47b2bc7ada2a699fa33aa94bed933c4e14db7 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 6 Jun 2025 14:47:14 -0400 Subject: [PATCH 075/172] Update with pip install Signed-off-by: Ding-Hwa Ho --- utils/docker/Dockerfile.test_summary | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index 98062211d1f..97aa249e961 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -46,6 +46,9 @@ RUN pwd RUN ls -al COPY ./requirements-code-coverage.txt /tmp/ RUN python3 -m pip --no-cache-dir install --upgrade pip && \ - python3 -m pip --no-cache-dir install -r /tmp/requirements-code-coverage.txt + # python3 -m pip --no-cache-dir install -r /tmp/requirements-code-coverage.txt + python3 -m pip --no-cache-dir install gcovr && \ + python3 -m pip --no-cache-dir install pyyaml && \ + python3 -m pip --no-cache-dir install junit_xml ARG CB1 From d217ddc6bd245ff473c0019342de7023979f951e Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 6 Jun 2025 14:48:54 -0400 Subject: [PATCH 076/172] Update pip install gcovr Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- utils/docker/Dockerfile.test_summary | 2 -- 1 file changed, 2 deletions(-) diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index 97aa249e961..82e349c84d7 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -42,8 +42,6 @@ ENV VIRTUAL_ENV=/home/daos/venv/ # RUN python3 -m pip --no-cache-dir install --upgrade pip && \ # python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt -RUN pwd -RUN ls -al COPY ./requirements-code-coverage.txt /tmp/ RUN python3 -m pip --no-cache-dir install --upgrade pip && \ # python3 -m pip --no-cache-dir install -r /tmp/requirements-code-coverage.txt From dc11a308e8fea6583629fe3e187d52ba979d726e Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 6 Jun 2025 14:55:19 -0400 Subject: [PATCH 077/172] Update with COPY .txt to ./ Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- utils/docker/Dockerfile.test_summary | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index 82e349c84d7..50aa1ba30e6 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -42,11 +42,15 @@ ENV VIRTUAL_ENV=/home/daos/venv/ # RUN python3 -m pip --no-cache-dir install --upgrade pip && \ # python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt -COPY ./requirements-code-coverage.txt /tmp/ +# COPY ./requirements-code-coverage.txt /tmp/ +# RUN python3 -m pip --no-cache-dir install --upgrade pip && \ +# # python3 -m pip --no-cache-dir install -r /tmp/requirements-code-coverage.txt +# python3 -m pip --no-cache-dir install gcovr && \ +# python3 -m pip --no-cache-dir install pyyaml && \ +# python3 -m pip --no-cache-dir install junit_xml + +COPY requirements-code-coverage.txt ./ RUN python3 -m pip --no-cache-dir install --upgrade pip && \ - # python3 -m pip --no-cache-dir install -r /tmp/requirements-code-coverage.txt - python3 -m pip --no-cache-dir install gcovr && \ - python3 -m pip --no-cache-dir install pyyaml && \ - python3 -m pip --no-cache-dir install junit_xml + python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt ARG CB1 From 53a986a82abcb42e040087c764f0a0fa7f551dbe Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 6 Jun 2025 17:10:12 -0400 Subject: [PATCH 078/172] Update to skip COPY .txt /tmp/ Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- utils/docker/Dockerfile.test_summary | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index 50aa1ba30e6..46a09d1b5f0 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -43,14 +43,14 @@ ENV VIRTUAL_ENV=/home/daos/venv/ # python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt # COPY ./requirements-code-coverage.txt /tmp/ -# RUN python3 -m pip --no-cache-dir install --upgrade pip && \ -# # python3 -m pip --no-cache-dir install -r /tmp/requirements-code-coverage.txt -# python3 -m pip --no-cache-dir install gcovr && \ -# python3 -m pip --no-cache-dir install pyyaml && \ -# python3 -m pip --no-cache-dir install junit_xml - -COPY requirements-code-coverage.txt ./ RUN python3 -m pip --no-cache-dir install --upgrade pip && \ - python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt + # python3 -m pip --no-cache-dir install -r /tmp/requirements-code-coverage.txt + python3 -m pip --no-cache-dir install gcovr && \ + python3 -m pip --no-cache-dir install pyyaml && \ + python3 -m pip --no-cache-dir install junit_xml + +# COPY requirements-code-coverage.txt ./ +# RUN python3 -m pip --no-cache-dir install --upgrade pip && \ +# python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt ARG CB1 From 51c36835e4822569544891e941544e05abf354b8 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Sat, 7 Jun 2025 00:54:30 -0400 Subject: [PATCH 079/172] Update COPY ./requirements-code-coverage.txt ./ Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- utils/docker/Dockerfile.test_summary | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index 46a09d1b5f0..f7a4d431f5c 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -38,16 +38,16 @@ ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ # Install latest versions of python tools. -# COPY ./requirements-code-coverage.txt ./ -# RUN python3 -m pip --no-cache-dir install --upgrade pip && \ -# python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt +COPY ./requirements-code-coverage.txt ./ +RUN python3 -m pip --no-cache-dir install --upgrade pip && \ + python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt # COPY ./requirements-code-coverage.txt /tmp/ -RUN python3 -m pip --no-cache-dir install --upgrade pip && \ - # python3 -m pip --no-cache-dir install -r /tmp/requirements-code-coverage.txt - python3 -m pip --no-cache-dir install gcovr && \ - python3 -m pip --no-cache-dir install pyyaml && \ - python3 -m pip --no-cache-dir install junit_xml +# RUN python3 -m pip --no-cache-dir install --upgrade pip && \ +# # python3 -m pip --no-cache-dir install -r /tmp/requirements-code-coverage.txt +# python3 -m pip --no-cache-dir install gcovr && \ +# python3 -m pip --no-cache-dir install pyyaml && \ +# python3 -m pip --no-cache-dir install junit_xml # COPY requirements-code-coverage.txt ./ # RUN python3 -m pip --no-cache-dir install --upgrade pip && \ From 6ce3c38b98bfc69e2e375a53407d1eafee26da9e Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Sat, 7 Jun 2025 11:35:29 -0400 Subject: [PATCH 080/172] Update Unit Test bdev with memcheck to 720 for debug Skip-nlt: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 2 +- utils/docker/Dockerfile.test_summary | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 51e040bfb2b..2dff8aa32f8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -835,7 +835,7 @@ pipeline { } steps { job_step_update( - unitTest(timeout_time: 480, + unitTest(timeout_time: 720, unstash_opt: true, ignore_failure: true, inst_repos: prRepos(), diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index f7a4d431f5c..9fd18a002c1 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -38,7 +38,7 @@ ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ # Install latest versions of python tools. -COPY ./requirements-code-coverage.txt ./ +COPY requirements-code-coverage.txt ./ RUN python3 -m pip --no-cache-dir install --upgrade pip && \ python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt From 09520be2cc3bc57984fa5c0e841e6d457063e72d Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Mon, 9 Jun 2025 15:08:01 -0400 Subject: [PATCH 081/172] Updated dockerfile for code coverage report. Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Phil Henderson --- utils/docker/Dockerfile.test_summary | 53 ++++++++++++++-------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index 9fd18a002c1..fcdde529b1d 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -1,15 +1,11 @@ +# Copyright 2025 Hewlett Packard Enterprise Development LP +# All rights reserved. # -# Copyright 2018-2022, Intel Corporation +# 'recipe' for Docker to build an image of EL 8 based +# environment for building the DAOS project. # -# 'recipe' for Docker for test summary. -# -# ARG FVERSION=latest -# FROM fedora:$FVERSION -# # Needed for later use of FVERSION -# ARG FVERSION -# LABEL maintainer="daos@daos.groups.io" -# Pull base imageAdd commentMore actions +# Pull base image ARG POINT_RELEASE= ARG BASE_DISTRO=rockylinux/rockylinux:8$POINT_RELEASE FROM $BASE_DISTRO AS basic @@ -17,21 +13,37 @@ LABEL maintainer="daos@daos.groups.io" # Needed for later use of BASE_DISTRO ARG BASE_DISTRO -# Intermittent cache-bust. Used to reduce load on the actual CACHEBUST later. +# Intermittent cache-bust. Used to reduce load on the actual CB1 later. ARG CB0 -# Use local repo server if present ARG REPO_FILE_URL +ARG JENKINS_URL +ARG REPOS ARG DAOS_LAB_CA_FILE_URL - # script to install OS updates basic tools and daos dependencies -# COPY ./utils/scripts/install-fedora.sh /tmp/install.sh +COPY ./utils/scripts/install-el8.sh /tmp/install.sh # script to setup local repo if available -COPY ./utils/scripts/helpers/repo-helper-fedora.sh /tmp/repo-helper.sh -RUN chmod +x /tmp/repo-helper.sh && \ +COPY ./utils/scripts/helpers/repo-helper-el8.sh /tmp/repo-helper.sh + +RUN chmod +x /tmp/repo-helper.sh /tmp/install.sh && \ /tmp/repo-helper.sh && \ rm -f /tmp/repo-helper.sh +FROM basic +# Install OS updates and package. Include basic tools and daos dependencies +# The proxy variables are currently needed for the combination of running +# with a local repository, yet needing a proxy to reach outside repositories. +# This needs to be moved to a shell script like above in the future to +# properly only remove the proxy variables only when they need to be removed +RUN if [ -n "$REPO_FILE_URL" ]; then direct="${REPO_FILE_URL##*//}; "\ + direct="${direct%%/*}"; export no_proxy="${direct}"; fi; \ + dnf upgrade && \ + /tmp/install.sh && \ + dnf clean all && \ + rm -f /tmp/install.sh + +ARG JENKINS_URL + # Setup a python venv so that python packages can be installed locally. RUN python3 -m venv /home/daos/venv ENV PATH=/home/daos/venv/bin:$PATH @@ -42,15 +54,4 @@ COPY requirements-code-coverage.txt ./ RUN python3 -m pip --no-cache-dir install --upgrade pip && \ python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt -# COPY ./requirements-code-coverage.txt /tmp/ -# RUN python3 -m pip --no-cache-dir install --upgrade pip && \ -# # python3 -m pip --no-cache-dir install -r /tmp/requirements-code-coverage.txt -# python3 -m pip --no-cache-dir install gcovr && \ -# python3 -m pip --no-cache-dir install pyyaml && \ -# python3 -m pip --no-cache-dir install junit_xml - -# COPY requirements-code-coverage.txt ./ -# RUN python3 -m pip --no-cache-dir install --upgrade pip && \ -# python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt - ARG CB1 From 3fe290c6fed6c1c4e9b81e63c6cb7b2718d95443 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Mon, 9 Jun 2025 17:56:34 -0400 Subject: [PATCH 082/172] Recommit Phil's pr#51 with UT_memcheck Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-nlt: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index fd04e0b72f5..152a7b5e292 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -111,7 +111,6 @@ if [[ -n $(find build -name "*.gcda") ]]; then # set +u # deactivate # set -u - # # Run gcovr in a python 3.11 environment # python3.11 -m venv venv-code-coverage # # shellcheck disable=SC1091 From 4792f8f7aca4f22ab0060e0b34fea544e7ab1933 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 12 Jun 2025 15:54:16 -0400 Subject: [PATCH 083/172] Add WORKDIR before COPY Signed-off-by: Ding-Hwa Ho --- utils/docker/Dockerfile.test_summary | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index fcdde529b1d..2fc74a464a8 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -50,6 +50,7 @@ ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ # Install latest versions of python tools. +WORKDIR /home/daos COPY requirements-code-coverage.txt ./ RUN python3 -m pip --no-cache-dir install --upgrade pip && \ python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt From 4ab30ec3ac08b771eaff9317cb4079b831a3961c Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 12 Jun 2025 18:48:42 -0400 Subject: [PATCH 084/172] Update .dockerignore with requirements-code-coverage.txt Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- .dockerignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.dockerignore b/.dockerignore index a57616411db..8d2f7e4a386 100644 --- a/.dockerignore +++ b/.dockerignore @@ -30,6 +30,7 @@ !requirements-build.txt !requirements-utest.txt !requirements-ftest.txt +!requirements-code-coverage.txt # Now disallow extra files which may be present but are not required. # Include the rdb repo as well. From c7209321a508bd862b85a0063d5a40984a71c478 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Fri, 13 Jun 2025 10:19:28 -0400 Subject: [PATCH 085/172] Make ci/code_coverage_report.sh executable. Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Phil Henderson --- ci/code_coverage_report.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 ci/code_coverage_report.sh diff --git a/ci/code_coverage_report.sh b/ci/code_coverage_report.sh old mode 100644 new mode 100755 From 830935c96053cdf77afb91b0960477c299772e85 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 13 Jun 2025 14:18:35 -0400 Subject: [PATCH 086/172] Update with find jsonfiles for gcovr. Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- ci/code_coverage_report.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ci/code_coverage_report.sh b/ci/code_coverage_report.sh index 4f982ffbb34..59b252871fa 100755 --- a/ci/code_coverage_report.sh +++ b/ci/code_coverage_report.sh @@ -6,7 +6,8 @@ set -eux # Generate code coverage report if [[ -n $(find . -name "code_coverage.json") ]]; then mkdir -p code_coverage_report - gcovr --json-add-tracefile "*/code_coverage/code_coverage.json" \ - -o code_coverage_report/code_coverage_report.html \ + jsonfiles=$(find * -name "code_coverage.json") + gcovr --json-add-tracefile $jsonfiles \ + --output code_coverage_report/code_coverage_report.html \ --html-details --gcov-ignore-parse-errors fi From f7db2ba78b07992acaa045f69c6d0bca7ca1cc79 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 13 Jun 2025 16:00:15 -0400 Subject: [PATCH 087/172] Add double quote for jsonfiles Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- ci/code_coverage_report.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/code_coverage_report.sh b/ci/code_coverage_report.sh index 59b252871fa..33cbcda8782 100755 --- a/ci/code_coverage_report.sh +++ b/ci/code_coverage_report.sh @@ -7,7 +7,7 @@ set -eux if [[ -n $(find . -name "code_coverage.json") ]]; then mkdir -p code_coverage_report jsonfiles=$(find * -name "code_coverage.json") - gcovr --json-add-tracefile $jsonfiles \ + gcovr --json-add-tracefile "$jsonfiles" \ --output code_coverage_report/code_coverage_report.html \ --html-details --gcov-ignore-parse-errors fi From 815a321998cc1479505462fefe5ad2df54f133d1 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 13 Jun 2025 16:55:30 -0400 Subject: [PATCH 088/172] Update with --add-traceback Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- ci/code_coverage_report.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ci/code_coverage_report.sh b/ci/code_coverage_report.sh index 33cbcda8782..763122c55d6 100755 --- a/ci/code_coverage_report.sh +++ b/ci/code_coverage_report.sh @@ -2,12 +2,11 @@ set -eux -# ls -al # Generate code coverage report if [[ -n $(find . -name "code_coverage.json") ]]; then mkdir -p code_coverage_report - jsonfiles=$(find * -name "code_coverage.json") - gcovr --json-add-tracefile "$jsonfiles" \ +# tmp jsonfiles=$(find * -name "code_coverage.json") + gcovr --add-tracefile "*/code_coverage/code_coverage.json" \ --output code_coverage_report/code_coverage_report.html \ --html-details --gcov-ignore-parse-errors fi From 2cb807541d27ce14103feb771d5c8eac797f66f0 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 13 Jun 2025 19:46:00 -0400 Subject: [PATCH 089/172] Update with --add-tracefile $jsonfiles Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- ci/code_coverage_report.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ci/code_coverage_report.sh b/ci/code_coverage_report.sh index 763122c55d6..e36fb3e1711 100755 --- a/ci/code_coverage_report.sh +++ b/ci/code_coverage_report.sh @@ -5,8 +5,9 @@ set -eux # Generate code coverage report if [[ -n $(find . -name "code_coverage.json") ]]; then mkdir -p code_coverage_report -# tmp jsonfiles=$(find * -name "code_coverage.json") - gcovr --add-tracefile "*/code_coverage/code_coverage.json" \ + jsonfiles=$(find * -name "code_coverage.json") + # gcovr --add-tracefile "*/code_coverage/code_coverage.json" \ + gcovr --add-tracefile "$jsonfiles" \ --output code_coverage_report/code_coverage_report.html \ --html-details --gcov-ignore-parse-errors fi From e688ef4a92f34f36336cbeeebb70fa3c9bde84d8 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 13 Jun 2025 21:52:06 -0400 Subject: [PATCH 090/172] Add test only --add-tracefile for debug Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- ci/code_coverage_report.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ci/code_coverage_report.sh b/ci/code_coverage_report.sh index e36fb3e1711..ac73f9388ee 100755 --- a/ci/code_coverage_report.sh +++ b/ci/code_coverage_report.sh @@ -5,9 +5,11 @@ set -eux # Generate code coverage report if [[ -n $(find . -name "code_coverage.json") ]]; then mkdir -p code_coverage_report - jsonfiles=$(find * -name "code_coverage.json") + # jsonfiles=$(find * -name "code_coverage.json").split() # gcovr --add-tracefile "*/code_coverage/code_coverage.json" \ - gcovr --add-tracefile "$jsonfiles" \ + # test only + gcovr --add-tracefile "unit_test_logs/code_coverage/code_coverage.json" \ + --add-tracefile "unit_test_bdev_logs/code_coverage/code_coverage.json" \ --output code_coverage_report/code_coverage_report.html \ --html-details --gcov-ignore-parse-errors fi From fcc019f57a521862adf238d11d4f14e8cfeb5293 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Mon, 16 Jun 2025 15:11:48 -0400 Subject: [PATCH 091/172] Try python3.11 Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- ci/code_coverage_report.sh | 6 +----- utils/docker/Dockerfile.test_summary | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/ci/code_coverage_report.sh b/ci/code_coverage_report.sh index ac73f9388ee..38210d47d32 100755 --- a/ci/code_coverage_report.sh +++ b/ci/code_coverage_report.sh @@ -5,11 +5,7 @@ set -eux # Generate code coverage report if [[ -n $(find . -name "code_coverage.json") ]]; then mkdir -p code_coverage_report - # jsonfiles=$(find * -name "code_coverage.json").split() - # gcovr --add-tracefile "*/code_coverage/code_coverage.json" \ - # test only - gcovr --add-tracefile "unit_test_logs/code_coverage/code_coverage.json" \ - --add-tracefile "unit_test_bdev_logs/code_coverage/code_coverage.json" \ + gcovr --add-tracefile "*/code_coverage/code_coverage.json" \ --output code_coverage_report/code_coverage_report.html \ --html-details --gcov-ignore-parse-errors fi diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index 2fc74a464a8..f4e3542db3b 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -45,7 +45,7 @@ RUN if [ -n "$REPO_FILE_URL" ]; then direct="${REPO_FILE_URL##*//}; "\ ARG JENKINS_URL # Setup a python venv so that python packages can be installed locally. -RUN python3 -m venv /home/daos/venv +RUN python3.11 -m venv /home/daos/venv ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ From ebe9777f60d1a4cc40e39ebf59a167f92b63db8c Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Mon, 16 Jun 2025 17:10:25 -0400 Subject: [PATCH 092/172] Update RUN apt-get -qqy install python3.11 Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- utils/docker/Dockerfile.test_summary | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index f4e3542db3b..53dc03cda93 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -42,6 +42,8 @@ RUN if [ -n "$REPO_FILE_URL" ]; then direct="${REPO_FILE_URL##*//}; "\ dnf clean all && \ rm -f /tmp/install.sh +RUN apt-get -qq update +RUN apt-get -qqy install python3.11 ARG JENKINS_URL # Setup a python venv so that python packages can be installed locally. From d31b0fbbfb5630503f769e513e8132a8d05ad83a Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Mon, 16 Jun 2025 19:22:55 -0400 Subject: [PATCH 093/172] Use dnf Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Phil Henderson --- utils/docker/Dockerfile.test_summary | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index 53dc03cda93..51d4201515c 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -42,11 +42,10 @@ RUN if [ -n "$REPO_FILE_URL" ]; then direct="${REPO_FILE_URL##*//}; "\ dnf clean all && \ rm -f /tmp/install.sh -RUN apt-get -qq update -RUN apt-get -qqy install python3.11 ARG JENKINS_URL # Setup a python venv so that python packages can be installed locally. +RUN dnf --nodocs install python3.11 RUN python3.11 -m venv /home/daos/venv ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ From c5cf71651afae1cc251f8c80d7c9754c079e5012 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 17 Jun 2025 15:37:39 -0400 Subject: [PATCH 094/172] Remove export GCOV_PREFIX Signed-off-by: Ding-Hwa Ho --- ci/unit/test_nlt_node.sh | 5 +++-- utils/docker/Dockerfile.test_summary | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index 718ed1d826d..75ac4cfb838 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -44,8 +44,9 @@ prlimit -n # debug pwd ls -al -find . -name '*.gcno' -export GCOV_PREFIX=/tmp +find . -name "*.gcno" +# export GCOV_PREFIX="${pwd}" +# export GCOV_PREFIX_STRIP="7" HTTPS_PROXY="${HTTPS_PROXY:-}" ./utils/node_local_test.py --max-log-size 1950MiB \ --dfuse-dir /localhome/jenkins/ --log-usage-save nltir.xml --log-usage-export nltr.json all diff --git a/utils/docker/Dockerfile.test_summary b/utils/docker/Dockerfile.test_summary index 51d4201515c..1824ed6cac0 100644 --- a/utils/docker/Dockerfile.test_summary +++ b/utils/docker/Dockerfile.test_summary @@ -51,7 +51,6 @@ ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ # Install latest versions of python tools. -WORKDIR /home/daos COPY requirements-code-coverage.txt ./ RUN python3 -m pip --no-cache-dir install --upgrade pip && \ python3 -m pip --no-cache-dir install -r requirements-code-coverage.txt From 24e1ab8ea93f2a990a7472c2b848c965e2f58373 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Jun 2025 12:32:12 -0700 Subject: [PATCH 095/172] DAOS-17664 cq: update gha versions (#16490) Updates `github/codeql-action` from 3.28.18 to 3.28.19 Updates `aquasecurity/trivy-action` from 0.30.0 to 0.31.0 Signed-off-by: dependabot[bot] --- .github/workflows/ossf-scorecard.yml | 2 +- .github/workflows/trivy.yml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ossf-scorecard.yml b/.github/workflows/ossf-scorecard.yml index a8e930fd2cc..24e56b6c082 100644 --- a/.github/workflows/ossf-scorecard.yml +++ b/.github/workflows/ossf-scorecard.yml @@ -71,6 +71,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard (optional). # Commenting out will disable upload of results to your repo's Code Scanning dashboard - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 + uses: github/codeql-action/upload-sarif@fca7ace96b7d713c7035871441bd52efbe39e27e # v3.28.19 with: sarif_file: results.sarif diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index fce051b7811..b47d4ec2449 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -26,7 +26,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Run Trivy vulnerability scanner in filesystem mode (table format) - uses: aquasecurity/trivy-action@6c175e9c4083a92bbca2f9724c8a5e33bc2d97a5 # 0.30.0 + uses: aquasecurity/trivy-action@76071ef0d7ec797419534a183b498b4d6366cf37 # 0.31.0 with: scan-type: 'fs' scan-ref: '.' @@ -51,14 +51,14 @@ jobs: sed -i 's/format: template/format: sarif/g' utils/trivy/trivy.yaml - name: Run Trivy vulnerability scanner in filesystem mode (sarif format) - uses: aquasecurity/trivy-action@6c175e9c4083a92bbca2f9724c8a5e33bc2d97a5 # 0.30.0 + uses: aquasecurity/trivy-action@76071ef0d7ec797419534a183b498b4d6366cf37 # 0.31.0 with: scan-type: 'fs' scan-ref: '.' trivy-config: 'utils/trivy/trivy.yaml' - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 + uses: github/codeql-action/upload-sarif@fca7ace96b7d713c7035871441bd52efbe39e27e # v3.28.19 with: sarif_file: 'trivy-results.sarif' @@ -69,7 +69,7 @@ jobs: sed -i 's/exit-code: 0/exit-code: 1/g' utils/trivy/trivy.yaml - name: Run Trivy vulnerability scanner in filesystem mode (human readable format) - uses: aquasecurity/trivy-action@6c175e9c4083a92bbca2f9724c8a5e33bc2d97a5 # 0.30.0 + uses: aquasecurity/trivy-action@76071ef0d7ec797419534a183b498b4d6366cf37 # 0.31.0 with: scan-type: 'fs' scan-ref: '.' From 04c3ec5a04d2243a039db6ca17174cfb9a960dbe Mon Sep 17 00:00:00 2001 From: Kris Jacque Date: Thu, 12 Jun 2025 14:04:13 -0600 Subject: [PATCH 096/172] DAOS-17432 test: Update suppressions for Go runtime (#16310) Based on NLT Valgrind results, it seems the path for internal Go runtime functions has changed with the latest Go version. Signed-off-by: Kris Jacque --- src/cart/utils/memcheck-cart.supp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cart/utils/memcheck-cart.supp b/src/cart/utils/memcheck-cart.supp index 008d5c68982..1da49ee756b 100644 --- a/src/cart/utils/memcheck-cart.supp +++ b/src/cart/utils/memcheck-cart.supp @@ -589,7 +589,7 @@ DAOS-15159 Memcheck:Param write(buf) - fun:runtime/internal/syscall.Syscall6 + fun:internal/runtime/syscall.Syscall6 } { DAOS-15548 @@ -684,7 +684,7 @@ Syscall6 param Memcheck:Param read(buf) - fun:runtime/internal/syscall.Syscall6 + fun:internal/runtime/syscall.Syscall6 } { __tsan_go_atomic32_load From b8421792c6c47d7ef56a27dbf37a7bbea012d5b8 Mon Sep 17 00:00:00 2001 From: Makito Kano Date: Fri, 13 Jun 2025 06:47:51 +0900 Subject: [PATCH 097/172] =?UTF-8?q?DAOS-17651=20test:=20Increase=20timeout?= =?UTF-8?q?=20for=20recovery/pool=5Flist=5Fconsolidatio=E2=80=A6=20(#16485?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit test_lost_majority_ps_replicas timed out at pool destroy during tearDown (while other tests passed). Increase the timeout by 45 sec. Signed-off-by: Makito Kano --- src/tests/ftest/recovery/pool_list_consolidation.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/ftest/recovery/pool_list_consolidation.yaml b/src/tests/ftest/recovery/pool_list_consolidation.yaml index a98b9401bbf..7cdb231e8f4 100644 --- a/src/tests/ftest/recovery/pool_list_consolidation.yaml +++ b/src/tests/ftest/recovery/pool_list_consolidation.yaml @@ -1,7 +1,7 @@ hosts: test_servers: 4 -timeout: 240 +timeout: 285 server_config: name: daos_server From 7c356aaa95b0b52d026e7584c8d5f5ec9f53c6b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 11:38:05 -0700 Subject: [PATCH 098/172] DAOS-17705 cq: Bump github/codeql-action from 3.28.19 to 3.29.0 (#16513) Updates `github/codeql-action` from 3.28.19 to 3.29.0 Signed-off-by: dependabot[bot] --- .github/workflows/ossf-scorecard.yml | 2 +- .github/workflows/trivy.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ossf-scorecard.yml b/.github/workflows/ossf-scorecard.yml index 24e56b6c082..9807584feeb 100644 --- a/.github/workflows/ossf-scorecard.yml +++ b/.github/workflows/ossf-scorecard.yml @@ -71,6 +71,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard (optional). # Commenting out will disable upload of results to your repo's Code Scanning dashboard - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@fca7ace96b7d713c7035871441bd52efbe39e27e # v3.28.19 + uses: github/codeql-action/upload-sarif@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0 with: sarif_file: results.sarif diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index b47d4ec2449..5dd13b6f5bd 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -58,7 +58,7 @@ jobs: trivy-config: 'utils/trivy/trivy.yaml' - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@fca7ace96b7d713c7035871441bd52efbe39e27e # v3.28.19 + uses: github/codeql-action/upload-sarif@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0 with: sarif_file: 'trivy-results.sarif' From 139e83551f76169f062f74da5d7276714a567606 Mon Sep 17 00:00:00 2001 From: Kris Jacque Date: Mon, 16 Jun 2025 17:44:07 -0600 Subject: [PATCH 099/172] DAOS-17049 control: Allow graceful shutdown for specific ranks (#16305) The CR checker tool needs to use a graceful shutdown when stopping ranks. It may select a subset of ranks if some are admin-excluded. - Remove the limitation that non-forced shutdown may only be used on the whole system, not while specifying ranks. Signed-off-by: Kris Jacque --- src/control/server/mgmt_system.go | 6 ------ src/control/server/mgmt_system_test.go | 29 +++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/control/server/mgmt_system.go b/src/control/server/mgmt_system.go index 81cb8d7d894..32e37a61a5d 100644 --- a/src/control/server/mgmt_system.go +++ b/src/control/server/mgmt_system.go @@ -50,8 +50,6 @@ const ( domainLabelsSep = "=" // invalid in a label name ) -var errSysForceNotFull = errors.New("force must be used if not full system stop") - // GetAttachInfo handles a request to retrieve a map of ranks to fabric URIs, in addition // to client network autoconfiguration hints. // @@ -982,10 +980,6 @@ func (svc *mgmtSvc) SystemStop(ctx context.Context, req *mgmtpb.SystemStopReq) ( // First phase: Prepare the ranks for shutdown, but only if the request is for an unforced // full system stop. if !fReq.Force { - if !fReq.FullSystem { - return nil, errSysForceNotFull - } - fReq.Method = control.PrepShutdownRanks fResp, _, err = svc.rpcFanout(ctx, fReq, fResp, true) if err != nil { diff --git a/src/control/server/mgmt_system_test.go b/src/control/server/mgmt_system_test.go index 23e9527260d..137fce20c6a 100644 --- a/src/control/server/mgmt_system_test.go +++ b/src/control/server/mgmt_system_test.go @@ -1896,9 +1896,32 @@ func TestServer_MgmtSvc_SystemStop(t *testing.T) { expFanoutRanks: ranklist.MustCreateRankSet("0-1,3"), }, "full system stop; partial ranks in req": { - req: &mgmtpb.SystemStopReq{Ranks: "0,1"}, - mResps: hostRespStopSuccess, - expAPIErr: errSysForceNotFull, + req: &mgmtpb.SystemStopReq{Ranks: "0,1"}, + members: system.Members{ + mockMember(t, 0, 1, "joined"), + mockMember(t, 1, 1, "joined"), + mockMember(t, 3, 2, "joined"), + }, + mResps: [][]*control.HostResponse{ + { + hr(1, mockRankSuccess("prep shutdown", 0), mockRankSuccess("prep shutdown", 1)), + }, + { + hr(1, mockRankSuccess("stop", 0), mockRankSuccess("stop", 1)), + }, + }, + expResults: []*sharedpb.RankResult{ + mockRankSuccess("stop", 0, 1), mockRankSuccess("stop", 1, 1), + }, + expMembers: func() system.Members { + return system.Members{ + mockMember(t, 0, 1, "stopped"), + mockMember(t, 1, 1, "stopped"), + mockMember(t, 3, 2, "joined"), + } + }, + expInvokeCount: 2, // prep should be called + expFanoutRanks: ranklist.MustCreateRankSet("0-1"), }, "full system stop (forced)": { req: &mgmtpb.SystemStopReq{Force: true}, From ac2841efc1939e19558c9a4db4c65ccc5e2a4113 Mon Sep 17 00:00:00 2001 From: Alexander Oganezov Date: Tue, 17 Jun 2025 09:02:38 -0700 Subject: [PATCH 100/172] DAOS-17594 cart: allocate iov buffer for deferred bulk #16430 (#16454) Allocate iov buffer for deferred bulk, since input sgl may use temporary iovs, which may cause memory corruption or data corruption if they are used by the following bulk creation. Signed-off-by: Di Wang Signed-off-by: Alexander A Oganezov --- src/cart/crt_bulk.c | 27 ++++++++++++++++++++++++--- src/cart/crt_hg_proc.c | 3 +++ src/cart/crt_internal_types.h | 2 ++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/cart/crt_bulk.c b/src/cart/crt_bulk.c index c2b19ac2c2a..d2a94f941db 100644 --- a/src/cart/crt_bulk.c +++ b/src/cart/crt_bulk.c @@ -1,5 +1,6 @@ /* * (C) Copyright 2016-2022 Intel Corporation. + * (C) Copyright 2025 Google LLC * (C) Copyright 2025 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent @@ -108,9 +109,22 @@ crt_bulk_create(crt_context_t crt_ctx, d_sg_list_t *sgl, quota_rc = get_quota_resource(crt_ctx, CRT_QUOTA_BULKS); if (quota_rc == -DER_QUOTA_LIMIT) { - D_DEBUG(DB_ALL, "Exceeded bulk limit, deferring bulk handle allocation\n"); + int i; + + D_ALLOC_ARRAY(ret_hdl->iovs, sgl->sg_nr); + if (ret_hdl->iovs == NULL) { + D_FREE(ret_hdl); + D_GOTO(out, rc = -DER_NOMEM); + } + for (i = 0; i < sgl->sg_nr; i++) + ret_hdl->iovs[i] = sgl->sg_iovs[i]; + ret_hdl->sgl.sg_nr = sgl->sg_nr; + ret_hdl->sgl.sg_nr_out = sgl->sg_nr_out; + ret_hdl->sgl.sg_iovs = ret_hdl->iovs; + + D_DEBUG(DB_ALL, "Exceeded bulk limit, deferring bulk handle %p allocation\n", + ret_hdl); ret_hdl->bound = false; - ret_hdl->sgl = *sgl; ret_hdl->bulk_perm = bulk_perm; ret_hdl->hg_bulk_hdl = HG_BULK_NULL; ret_hdl->crt_ctx = crt_ctx; @@ -124,6 +138,9 @@ crt_bulk_create(crt_context_t crt_ctx, d_sg_list_t *sgl, rc = crt_hg_bulk_create(&ctx->cc_hg_ctx, sgl, bulk_perm, &ret_hdl->hg_bulk_hdl); if (rc != 0) { D_ERROR("crt_hg_bulk_create() failed, rc: " DF_RC "\n", DP_RC(rc)); + if (ret_hdl->iovs != NULL) + D_FREE(ret_hdl->iovs); + D_FREE(ret_hdl); D_GOTO(out, rc); } @@ -215,7 +232,11 @@ crt_bulk_free(crt_bulk_t crt_bulk) if (bulk->crt_ctx) put_quota_resource(bulk->crt_ctx, CRT_QUOTA_BULKS); out: - D_FREE(bulk); + if (bulk != NULL) { + if (bulk->iovs) + D_FREE(bulk->iovs); + D_FREE(bulk); + } return rc; } diff --git a/src/cart/crt_hg_proc.c b/src/cart/crt_hg_proc.c index f8f7da05c5d..e7643bd8ea4 100644 --- a/src/cart/crt_hg_proc.c +++ b/src/cart/crt_hg_proc.c @@ -1,5 +1,6 @@ /* * (C) Copyright 2016-2023 Intel Corporation. + * (C) Copyright 2025 Google LLC * (C) Copyright 2025 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent @@ -204,6 +205,8 @@ crt_proc_crt_bulk_t(crt_proc_t proc, crt_proc_op_t proc_op, crt_bulk_t *pcrt_bul hg_ret = hg_proc_hg_bulk_t(proc, &bulk->hg_bulk_hdl); /* Free the wrapper struct */ + if (bulk->iovs) + D_FREE(bulk->iovs); D_FREE(bulk); *pcrt_bulk = NULL; return (hg_ret == HG_SUCCESS) ? 0 : -DER_HG; diff --git a/src/cart/crt_internal_types.h b/src/cart/crt_internal_types.h index 411623602d1..472d266fb06 100644 --- a/src/cart/crt_internal_types.h +++ b/src/cart/crt_internal_types.h @@ -1,5 +1,6 @@ /* * (C) Copyright 2016-2024 Intel Corporation. + * (C) Copyright 2025 Google LLC * (C) Copyright 2025 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent @@ -406,6 +407,7 @@ struct crt_bulk { bool deferred; /** whether handle allocation was deferred */ crt_context_t crt_ctx; /** context on which bulk is to be created */ bool bound; /** whether crt_bulk_bind() was used on it */ + d_iov_t *iovs; /** original iovs */ d_sg_list_t sgl; /** original sgl */ crt_bulk_perm_t bulk_perm; /** bulk permissions */ }; From e952d421c5acbec343626c46476be293324f6863 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 17 Jun 2025 17:01:18 -0400 Subject: [PATCH 101/172] Update GCOV_PREFIX_STRIP=7 Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-unit-test: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- ci/unit/test_nlt_node.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index 75ac4cfb838..ae4c0708fcf 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -45,8 +45,8 @@ prlimit -n pwd ls -al find . -name "*.gcno" -# export GCOV_PREFIX="${pwd}" -# export GCOV_PREFIX_STRIP="7" +export GCOV_PREFIX="${pwd}" +export GCOV_PREFIX_STRIP="7" HTTPS_PROXY="${HTTPS_PROXY:-}" ./utils/node_local_test.py --max-log-size 1950MiB \ --dfuse-dir /localhome/jenkins/ --log-usage-save nltir.xml --log-usage-export nltr.json all From 0a4fdd73ecdbc58d8caba4065db1c97342dd20e1 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 17 Jun 2025 17:42:11 -0400 Subject: [PATCH 102/172] Tmp comment out mv nlt-errors.json Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-unit-test: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- ci/unit/test_nlt_post.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/unit/test_nlt_post.sh b/ci/unit/test_nlt_post.sh index c46a63dac2f..3a7be66f686 100755 --- a/ci/unit/test_nlt_post.sh +++ b/ci/unit/test_nlt_post.sh @@ -23,4 +23,5 @@ rsync -v -dpt -z -e "ssh $SSH_KEY_ARGS" jenkins@"$NODE":build/ \ --filter="include nltir.xml" --filter="include nltr.json" \ --filter="include nlt-junit.xml" --filter="exclude *" ./ mkdir -p vm_test -mv nlt-errors.json vm_test/ +# tmp comment-out +# mv nlt-errors.json vm_test/ From 8cdf246c74eb874be29ef44c32a88741d151a5cd Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 18 Jun 2025 14:55:47 -0400 Subject: [PATCH 103/172] Restore test_nlt_post and update $pwd) Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-unit-test: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- ci/unit/test_nlt_node.sh | 2 +- ci/unit/test_nlt_post.sh | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index ae4c0708fcf..7da389f36de 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -45,7 +45,7 @@ prlimit -n pwd ls -al find . -name "*.gcno" -export GCOV_PREFIX="${pwd}" +export GCOV_PREFIX="$(pwd)" export GCOV_PREFIX_STRIP="7" HTTPS_PROXY="${HTTPS_PROXY:-}" ./utils/node_local_test.py --max-log-size 1950MiB \ diff --git a/ci/unit/test_nlt_post.sh b/ci/unit/test_nlt_post.sh index 3a7be66f686..c46a63dac2f 100755 --- a/ci/unit/test_nlt_post.sh +++ b/ci/unit/test_nlt_post.sh @@ -23,5 +23,4 @@ rsync -v -dpt -z -e "ssh $SSH_KEY_ARGS" jenkins@"$NODE":build/ \ --filter="include nltir.xml" --filter="include nltr.json" \ --filter="include nlt-junit.xml" --filter="exclude *" ./ mkdir -p vm_test -# tmp comment-out -# mv nlt-errors.json vm_test/ +mv nlt-errors.json vm_test/ From 255ade0f4bd8e6d8702879b1e77fac3d942e2689 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 18 Jun 2025 16:36:02 -0400 Subject: [PATCH 104/172] Update rsync to /tmp/code_coverage Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-unit-test: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- ci/unit/test_nlt_node.sh | 6 +++--- ci/unit/test_nlt_post.sh | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index 7da389f36de..3c11a57676b 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -55,7 +55,7 @@ HTTPS_PROXY="${HTTPS_PROXY:-}" ./utils/node_local_test.py --max-log-size 1950MiB if [[ -n $(find build -name "*.gcda") ]]; then pip install --requirement requirements-code-coverage.txt - mkdir -p nlt_logs/code_coverage - gcovr -o nlt_logs/code_coverage/code_coverage_report.html --html-details --gcov-ignore-parse-errors - gcovr --json nlt_logs/code_coverage/code_coverage.json --gcov-ignore-parse-errors + mkdir -p /tmp/code_coverage + gcovr -o /tmp/code_coverage/code_coverage_report.html --html-details --gcov-ignore-parse-errors + gcovr --json /tmp/code_coverage/code_coverage.json --gcov-ignore-parse-errors fi \ No newline at end of file diff --git a/ci/unit/test_nlt_post.sh b/ci/unit/test_nlt_post.sh index c46a63dac2f..5e85723abd2 100755 --- a/ci/unit/test_nlt_post.sh +++ b/ci/unit/test_nlt_post.sh @@ -15,7 +15,7 @@ mkdir nlt_logs # standard wildcards. rsync -v -dprt -e "ssh $SSH_KEY_ARGS" jenkins@"$NODE":/tmp/ \ --filter="include dnt*.log" --filter="include dnt*.log.bz2" \ - --filter="include dnt_fi_*_logs" \ + --filter="include dnt_fi_*_logs" --filter="include code_coverage" \ --filter="exclude *" nlt_logs/ rsync -v -dpt -z -e "ssh $SSH_KEY_ARGS" jenkins@"$NODE":build/ \ From a3bba2c0cc1eabae1f7515a518017277dc015db7 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 18 Jun 2025 18:25:41 -0400 Subject: [PATCH 105/172] Update include code_coverage/* Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-unit-test: true Skip-unit-test-memcheck: true Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- ci/unit/test_nlt_post.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/unit/test_nlt_post.sh b/ci/unit/test_nlt_post.sh index 5e85723abd2..50590b088e8 100755 --- a/ci/unit/test_nlt_post.sh +++ b/ci/unit/test_nlt_post.sh @@ -15,7 +15,7 @@ mkdir nlt_logs # standard wildcards. rsync -v -dprt -e "ssh $SSH_KEY_ARGS" jenkins@"$NODE":/tmp/ \ --filter="include dnt*.log" --filter="include dnt*.log.bz2" \ - --filter="include dnt_fi_*_logs" --filter="include code_coverage" \ + --filter="include dnt_fi_*_logs" --filter="include code_coverage/*" \ --filter="exclude *" nlt_logs/ rsync -v -dpt -z -e "ssh $SSH_KEY_ARGS" jenkins@"$NODE":build/ \ From 32eb7ccc0af60944b2af544d981024129b2a46f3 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 18 Jun 2025 20:25:48 -0400 Subject: [PATCH 106/172] Add debug /tmp/code_coverage after nlt gcovr Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-unit-test: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- ci/unit/test_nlt_node.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index 3c11a57676b..a7d78637b91 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -58,4 +58,6 @@ if [[ -n $(find build -name "*.gcda") ]]; then mkdir -p /tmp/code_coverage gcovr -o /tmp/code_coverage/code_coverage_report.html --html-details --gcov-ignore-parse-errors gcovr --json /tmp/code_coverage/code_coverage.json --gcov-ignore-parse-errors + # add ddebug + ls -al /tmp/code_coverage fi \ No newline at end of file From 102345f8ab9dd822c0e89e1db1a75d32bf102339 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 18 Jun 2025 21:40:22 -0400 Subject: [PATCH 107/172] Update rsync .. include code_coverage* Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-unit-test: true Skip-unit-test-memcheck: true Skip-func-test: true Signed-off-by: Ding-Hwa Ho --- ci/unit/test_nlt_post.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/unit/test_nlt_post.sh b/ci/unit/test_nlt_post.sh index 50590b088e8..23ef28e4af4 100755 --- a/ci/unit/test_nlt_post.sh +++ b/ci/unit/test_nlt_post.sh @@ -15,7 +15,7 @@ mkdir nlt_logs # standard wildcards. rsync -v -dprt -e "ssh $SSH_KEY_ARGS" jenkins@"$NODE":/tmp/ \ --filter="include dnt*.log" --filter="include dnt*.log.bz2" \ - --filter="include dnt_fi_*_logs" --filter="include code_coverage/*" \ + --filter="include dnt_fi_*_logs" --filter="include code_coverage*" \ --filter="exclude *" nlt_logs/ rsync -v -dpt -z -e "ssh $SSH_KEY_ARGS" jenkins@"$NODE":build/ \ From 5d82b5897c8096a29803fe43e7a0a216f77df74a Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 18 Jun 2025 22:52:24 -0400 Subject: [PATCH 108/172] Remove the unneed comment statements Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 152a7b5e292..3e009c75d98 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -107,18 +107,6 @@ utils/run_utest.py $RUN_TEST_VALGRIND --no-fail-on-error $VDB_ARG --log_dir="$te # Generate code coverage report if at least one gcda file was generated # Possibly limit this to finding a single match if [[ -n $(find build -name "*.gcda") ]]; then - # # python3.6 does not like deactivate with -u set, later versions are OK with it however. - # set +u - # deactivate - # set -u - # # Run gcovr in a python 3.11 environment - # python3.11 -m venv venv-code-coverage - # # shellcheck disable=SC1091 - # source venv-code-coverage/bin/activate - # touch venv-code-coverage/pip.conf - # pip config set global.progress_bar off - # pip config set global.no_color true - # pip install --upgrade pip pip install --requirement requirements-code-coverage.txt mkdir -p "${test_log_dir}/code_coverage" From 4ab1dbe1e58e46ed34259ee3835061abf76928f5 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Mon, 23 Jun 2025 15:06:44 -0400 Subject: [PATCH 109/172] Cleanup and debug for required file. Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-nlt: true Skip-unit-test-memcheck: true Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 2 +- ci/unit/test_main_node.sh | 9 +++++---- ci/unit/test_nlt_node.sh | 11 +++-------- ci/unit/test_post_always.sh | 1 - 4 files changed, 9 insertions(+), 14 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 2dff8aa32f8..1d8cde68a4f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -835,7 +835,7 @@ pipeline { } steps { job_step_update( - unitTest(timeout_time: 720, + unitTest(timeout_time: 450, unstash_opt: true, ignore_failure: true, inst_repos: prRepos(), diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 3e009c75d98..9b22a4ceece 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -85,8 +85,9 @@ python3.11 -m venv venv # temp cp for debug ls -la /usr/lib64/ cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ -# cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/ -cp -r /opt/daos/lib64/daos_srv venv/lib64/ +cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/ +# working check for additional files to be copied +# cp -r /opt/daos/lib64/daos_srv venv/lib64/ cp /opt/daos/lib64/libdfs.so venv/lib64/ # shellcheck disable=SC1091 @@ -110,8 +111,8 @@ if [[ -n $(find build -name "*.gcda") ]]; then pip install --requirement requirements-code-coverage.txt mkdir -p "${test_log_dir}/code_coverage" - gcovr -o "${test_log_dir}/code_coverage/code_coverage_report.html" --html-details --gcov-ignore-parse-errors - # Eventually remove this one and only generate json files per stage. + # # Eventually remove this one and only generate json files per stage. + # gcovr -o "${test_log_dir}/code_coverage/code_coverage_report.html" --html-details --gcov-ignore-parse-errors gcovr --json "${test_log_dir}/code_coverage/code_coverage.json" --gcov-ignore-parse-errors fi HTTPS_PROXY="${HTTPS_PROXY:-}" utils/run_utest.py $RUN_TEST_VALGRIND \ diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index a7d78637b91..3026de3f00c 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -41,11 +41,8 @@ pip install /opt/daos/lib/daos/python/ sudo prlimit --nofile=1024:262144 --pid $$ prlimit -n -# debug -pwd -ls -al -find . -name "*.gcno" -export GCOV_PREFIX="$(pwd)" +cwd="$(pwd)" +export GCOV_PREFIX="${cwd}" export GCOV_PREFIX_STRIP="7" HTTPS_PROXY="${HTTPS_PROXY:-}" ./utils/node_local_test.py --max-log-size 1950MiB \ @@ -56,8 +53,6 @@ if [[ -n $(find build -name "*.gcda") ]]; then pip install --requirement requirements-code-coverage.txt mkdir -p /tmp/code_coverage - gcovr -o /tmp/code_coverage/code_coverage_report.html --html-details --gcov-ignore-parse-errors + # gcovr -o /tmp/code_coverage/code_coverage_report.html --html-details --gcov-ignore-parse-errors gcovr --json /tmp/code_coverage/code_coverage.json --gcov-ignore-parse-errors - # add ddebug - ls -al /tmp/code_coverage fi \ No newline at end of file diff --git a/ci/unit/test_post_always.sh b/ci/unit/test_post_always.sh index 57fec9ec43e..b185aeacc9b 100755 --- a/ci/unit/test_post_always.sh +++ b/ci/unit/test_post_always.sh @@ -47,4 +47,3 @@ rsync -v -rlpt -z -e "ssh $SSH_KEY_ARGS" jenkins@"$NODE":build/ --exclude="venv" rsync -v -dpt -z -e "ssh $SSH_KEY_ARGS" jenkins@"$NODE":/tmp/ \ --filter="include daos*.log" --filter="include code_coverage/*" \ --filter="exclude *" "$test_log_dir/" - # Eventually remove this once a single code coverage file working. From f3e6801a36f2785831642bd50230b35c65c2f6d4 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Mon, 23 Jun 2025 17:36:52 -0400 Subject: [PATCH 110/172] Debug commented out CGO_CFLAGS per Jeff's comment Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-unit-test: true Skip-unit-test-memcheck: true Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/compiler_setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site_scons/site_tools/compiler_setup.py b/site_scons/site_tools/compiler_setup.py index 2d466923d70..3a3f3fa8ed0 100644 --- a/site_scons/site_tools/compiler_setup.py +++ b/site_scons/site_tools/compiler_setup.py @@ -124,7 +124,7 @@ def _base_setup(env): if GetOption('code_coverage'): env.AppendUnique(CXXFLAGS=['-fprofile-arcs', '-ftest-coverage']) env.AppendUnique(CCFLAGS=['-fprofile-arcs', '-ftest-coverage']) - env.AppendUnique(CGO_CFLAGS=['-fprofile-arcs', '-ftest-coverage']) + # tmp env.AppendUnique(CGO_CFLAGS=['-fprofile-arcs', '-ftest-coverage']) def _check_flag_helper(context, compiler, ext, flag): From 10419c947455173d8d445c5badf3c2144bf46c4b Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Mon, 23 Jun 2025 18:42:01 -0400 Subject: [PATCH 111/172] Tmp comment out env.AppendENVPath('CGO_LDFLAGS'..) per Jeff's comment Skip-unit-test: true Skip-unit-test-memcheck: true Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 848fa053b4d..6f5293eb287 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -124,7 +124,7 @@ def _run_command(env, target, sources, daos_libs, command): if GetOption("code_coverage"): if 'gcov' not in daos_libs: daos_libs += ['gcov'] - env.AppendENVPath('CGO_LDFLAGS', '-lgcov', sep=' ') + # tmp env.AppendENVPath('CGO_LDFLAGS', '-lgcov', sep=' ') static_deps, shared_deps = _known_deps(env, LIBS=daos_libs) result = env.Command(target, sources + static_deps + shared_deps, command) return result From 0756c64be6c9f836e96904eddc3494e3a188c8b6 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Mon, 23 Jun 2025 19:04:01 -0400 Subject: [PATCH 112/172] Restore env.AppendENVPath('CGO_LDFLAGS'..) Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/daos_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site_scons/site_tools/daos_builder.py b/site_scons/site_tools/daos_builder.py index 6f5293eb287..848fa053b4d 100644 --- a/site_scons/site_tools/daos_builder.py +++ b/site_scons/site_tools/daos_builder.py @@ -124,7 +124,7 @@ def _run_command(env, target, sources, daos_libs, command): if GetOption("code_coverage"): if 'gcov' not in daos_libs: daos_libs += ['gcov'] - # tmp env.AppendENVPath('CGO_LDFLAGS', '-lgcov', sep=' ') + env.AppendENVPath('CGO_LDFLAGS', '-lgcov', sep=' ') static_deps, shared_deps = _known_deps(env, LIBS=daos_libs) result = env.Command(target, sources + static_deps + shared_deps, command) return result From 893e43106fbbe8119396f06c4a7ac62ebe4d3bf0 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 24 Jun 2025 15:04:03 -0400 Subject: [PATCH 113/172] Update /daos_srv Skip-build-el8-rpm: true Skip-build-el9-rpm: true Skip-build-leap15-rpm: true Skip-unit-test-memcheck: true Skip-nlt: true Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 9b22a4ceece..f7f857d05d1 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -85,7 +85,8 @@ python3.11 -m venv venv # temp cp for debug ls -la /usr/lib64/ cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ -cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/ +mkdir venv/lib64/daos_srv +cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/daos_srv/ # working check for additional files to be copied # cp -r /opt/daos/lib64/daos_srv venv/lib64/ cp /opt/daos/lib64/libdfs.so venv/lib64/ From 8fca02a378d92851ba91e4d583915b8464f9c68c Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 24 Jun 2025 17:12:51 -0400 Subject: [PATCH 114/172] Cleanup and all unit-tests Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 2 -- ci/unit/test_nlt_node.sh | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index f7f857d05d1..e86b6e02140 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -87,8 +87,6 @@ ls -la /usr/lib64/ cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ mkdir venv/lib64/daos_srv cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/daos_srv/ -# working check for additional files to be copied -# cp -r /opt/daos/lib64/daos_srv venv/lib64/ cp /opt/daos/lib64/libdfs.so venv/lib64/ # shellcheck disable=SC1091 diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index 3026de3f00c..b81db963ec6 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -55,4 +55,4 @@ if [[ -n $(find build -name "*.gcda") ]]; then mkdir -p /tmp/code_coverage # gcovr -o /tmp/code_coverage/code_coverage_report.html --html-details --gcov-ignore-parse-errors gcovr --json /tmp/code_coverage/code_coverage.json --gcov-ignore-parse-errors -fi \ No newline at end of file +fi From ab443e585daf37100266c6f34ab512709d6a5bfd Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 25 Jun 2025 01:19:39 -0400 Subject: [PATCH 115/172] Restore env.AppendUnique(CGO_CFLAGS=..) Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/compiler_setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site_scons/site_tools/compiler_setup.py b/site_scons/site_tools/compiler_setup.py index 3a3f3fa8ed0..2d466923d70 100644 --- a/site_scons/site_tools/compiler_setup.py +++ b/site_scons/site_tools/compiler_setup.py @@ -124,7 +124,7 @@ def _base_setup(env): if GetOption('code_coverage'): env.AppendUnique(CXXFLAGS=['-fprofile-arcs', '-ftest-coverage']) env.AppendUnique(CCFLAGS=['-fprofile-arcs', '-ftest-coverage']) - # tmp env.AppendUnique(CGO_CFLAGS=['-fprofile-arcs', '-ftest-coverage']) + env.AppendUnique(CGO_CFLAGS=['-fprofile-arcs', '-ftest-coverage']) def _check_flag_helper(context, compiler, ext, flag): From 8df15d8a000583525cde0393a276e35a4718517a Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 25 Jun 2025 15:17:35 -0400 Subject: [PATCH 116/172] Update env.AppendENVPath('CGO_LDFLAGS',..) Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 6 +----- ci/unit/test_nlt_node.sh | 1 - site_scons/site_tools/compiler_setup.py | 2 +- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index e86b6e02140..762c27cc501 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -82,8 +82,7 @@ rm -rf "$test_log_dir" # Use default python as that's where storage_estimator is installed. python3.11 -m venv venv -# temp cp for debug -ls -la /usr/lib64/ + cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ mkdir venv/lib64/daos_srv cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/daos_srv/ @@ -105,13 +104,10 @@ utils/run_utest.py $RUN_TEST_VALGRIND --no-fail-on-error $VDB_ARG --log_dir="$te $SUDO_ARG # Generate code coverage report if at least one gcda file was generated -# Possibly limit this to finding a single match if [[ -n $(find build -name "*.gcda") ]]; then pip install --requirement requirements-code-coverage.txt mkdir -p "${test_log_dir}/code_coverage" - # # Eventually remove this one and only generate json files per stage. - # gcovr -o "${test_log_dir}/code_coverage/code_coverage_report.html" --html-details --gcov-ignore-parse-errors gcovr --json "${test_log_dir}/code_coverage/code_coverage.json" --gcov-ignore-parse-errors fi HTTPS_PROXY="${HTTPS_PROXY:-}" utils/run_utest.py $RUN_TEST_VALGRIND \ diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index b81db963ec6..028905c8860 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -53,6 +53,5 @@ if [[ -n $(find build -name "*.gcda") ]]; then pip install --requirement requirements-code-coverage.txt mkdir -p /tmp/code_coverage - # gcovr -o /tmp/code_coverage/code_coverage_report.html --html-details --gcov-ignore-parse-errors gcovr --json /tmp/code_coverage/code_coverage.json --gcov-ignore-parse-errors fi diff --git a/site_scons/site_tools/compiler_setup.py b/site_scons/site_tools/compiler_setup.py index 2d466923d70..bf6c14d19fc 100644 --- a/site_scons/site_tools/compiler_setup.py +++ b/site_scons/site_tools/compiler_setup.py @@ -124,7 +124,7 @@ def _base_setup(env): if GetOption('code_coverage'): env.AppendUnique(CXXFLAGS=['-fprofile-arcs', '-ftest-coverage']) env.AppendUnique(CCFLAGS=['-fprofile-arcs', '-ftest-coverage']) - env.AppendUnique(CGO_CFLAGS=['-fprofile-arcs', '-ftest-coverage']) + env.AppendENVPath('CGO_CFLAGS', ' -fprofile-arcs -ftest-coverage', sep=' ') def _check_flag_helper(context, compiler, ext, flag): From 879b9a4c7c8d6660e4b1f65ad5898d9aa700db88 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 25 Jun 2025 17:16:08 -0400 Subject: [PATCH 117/172] Restore env.AppendUnique(CGO_CFLAGS=..) Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/compiler_setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site_scons/site_tools/compiler_setup.py b/site_scons/site_tools/compiler_setup.py index bf6c14d19fc..2d466923d70 100644 --- a/site_scons/site_tools/compiler_setup.py +++ b/site_scons/site_tools/compiler_setup.py @@ -124,7 +124,7 @@ def _base_setup(env): if GetOption('code_coverage'): env.AppendUnique(CXXFLAGS=['-fprofile-arcs', '-ftest-coverage']) env.AppendUnique(CCFLAGS=['-fprofile-arcs', '-ftest-coverage']) - env.AppendENVPath('CGO_CFLAGS', ' -fprofile-arcs -ftest-coverage', sep=' ') + env.AppendUnique(CGO_CFLAGS=['-fprofile-arcs', '-ftest-coverage']) def _check_flag_helper(context, compiler, ext, flag): From c27106df73d57999e1187d527d56c7256c5c4d2b Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 26 Jun 2025 16:11:19 -0400 Subject: [PATCH 118/172] Update for time build Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 27 ++++++++++++++++++++------- ci/unit/test_main_node.sh | 5 ++--- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1d8cde68a4f..0199b7c3595 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -164,9 +164,22 @@ Map update_default_commit_pragmas() { } } +Boolean code_coverage_build() { + if startedByTimer() { + return true + } + return params.CI_CODE_COVERAGE +} + pipeline { agent { label 'lightweight' } + triggers { + // Generate a code coverage report each Sunday + /* groovylint-disable-next-line AddEmptyString */ + cron(env.BRANCH_NAME == 'master' ? 'TZ=UTC\n0 5 * * 6' : '') + } + environment { GITHUB_USER = credentials('daos-jenkins-review-posting') SSH_KEY_ARGS = '-ici_key' @@ -265,7 +278,7 @@ pipeline { defaultValue: false, description: 'Do not build on Leap 15') booleanParam(name: 'CI_CODE_COVERAGE', - defaultValue: true, + defaultValue: false, description: 'Run with code coverage analysis') booleanParam(name: 'CI_ALLOW_UNSTABLE_TEST', defaultValue: false, @@ -482,7 +495,7 @@ pipeline { stage('Build RPM on EL 8') { when { beforeAgent true - expression { !skipStage() } + expression { !skipStage() && !code_coverage_build() } } agent { dockerfile { @@ -521,7 +534,7 @@ pipeline { stage('Build RPM on EL 9') { when { beforeAgent true - expression { !skipStage() } + expression { !skipStage() && !code_coverage_build() } } agent { dockerfile { @@ -559,7 +572,7 @@ pipeline { stage('Build RPM on Leap 15.5') { when { beforeAgent true - expression { !skipStage() } + expression { !skipStage() && !code_coverage_build() } } agent { dockerfile { @@ -658,7 +671,7 @@ pipeline { stash_opt: true, scons_args: sconsArgs() + ' PREFIX=/opt/daos TARGET_TYPE=release', - code_coverage: params.CI_CODE_COVERAGE)) + code_coverage: code_coverage_build())) } post { unsuccessful { @@ -856,7 +869,7 @@ pipeline { beforeAgent true // expression { !paramsValue('CI_FUNCTIONAL_TEST_SKIP', false) && !skipStage() } // Above not working, always skipping functional VM tests. - expression { !paramsValue('CI_FUNCTIONAL_TEST_SKIP', false) } + expression { !paramsValue('CI_FUNCTIONAL_TEST_SKIP', false) && !code_coverage_build() } } parallel { stage('Functional on EL 8.8 with Valgrind') { @@ -1121,7 +1134,7 @@ pipeline { stage('Test Hardware') { when { beforeAgent true - expression { !paramsValue('CI_FUNCTIONAL_HARDWARE_TEST_SKIP', false) && !skipStage() } + expression { !paramsValue('CI_FUNCTIONAL_HARDWARE_TEST_SKIP', false) && !skipStage() && !code_coverage_build() } } steps { script { diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 762c27cc501..e705227befe 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -83,6 +83,8 @@ rm -rf "$test_log_dir" # Use default python as that's where storage_estimator is installed. python3.11 -m venv venv +# Workaround until we have a setup.py script for the storage estimator and we're able to do this: +# pip install /opt/daos/lib64/python3.6/site-packages/storage_estimator cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ mkdir venv/lib64/daos_srv cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/daos_srv/ @@ -93,12 +95,9 @@ source venv/bin/activate touch venv/pip.conf pip config set global.progress_bar off pip config set global.no_color true - pip install --upgrade pip pip install --requirement requirements-utest.txt - pip install /opt/daos/lib/daos/python/ -# pip install /opt/daos/lib64/python3.6/site-packages/storage_estimator utils/run_utest.py $RUN_TEST_VALGRIND --no-fail-on-error $VDB_ARG --log_dir="$test_log_dir" \ $SUDO_ARG From 31b4be0f52db126746f58429caf0b4adf2120924 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 26 Jun 2025 16:16:10 -0400 Subject: [PATCH 119/172] Fixed typo for startedByTimer Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0199b7c3595..615b2988dfa 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -165,7 +165,7 @@ Map update_default_commit_pragmas() { } Boolean code_coverage_build() { - if startedByTimer() { + if (startedByTimer()) { return true } return params.CI_CODE_COVERAGE From d9165af3cc59fdbe7d2cb7bc66f1f8b3ee89684d Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 26 Jun 2025 16:34:56 -0400 Subject: [PATCH 120/172] Fix skip logic Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 615b2988dfa..ee4221598f4 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -164,11 +164,11 @@ Map update_default_commit_pragmas() { } } -Boolean code_coverage_build() { +Boolean is_code_coverage() { if (startedByTimer()) { return true } - return params.CI_CODE_COVERAGE + return paramsValue('CI_CODE_COVERAGE', false) } pipeline { @@ -495,7 +495,7 @@ pipeline { stage('Build RPM on EL 8') { when { beforeAgent true - expression { !skipStage() && !code_coverage_build() } + expression { !skipStage() && !is_code_coverage() } } agent { dockerfile { @@ -534,7 +534,7 @@ pipeline { stage('Build RPM on EL 9') { when { beforeAgent true - expression { !skipStage() && !code_coverage_build() } + expression { !skipStage() && !is_code_coverage() } } agent { dockerfile { @@ -572,7 +572,7 @@ pipeline { stage('Build RPM on Leap 15.5') { when { beforeAgent true - expression { !skipStage() && !code_coverage_build() } + expression { !skipStage() && !is_code_coverage() } } agent { dockerfile { @@ -671,7 +671,7 @@ pipeline { stash_opt: true, scons_args: sconsArgs() + ' PREFIX=/opt/daos TARGET_TYPE=release', - code_coverage: code_coverage_build())) + code_coverage: is_code_coverage())) } post { unsuccessful { @@ -869,7 +869,7 @@ pipeline { beforeAgent true // expression { !paramsValue('CI_FUNCTIONAL_TEST_SKIP', false) && !skipStage() } // Above not working, always skipping functional VM tests. - expression { !paramsValue('CI_FUNCTIONAL_TEST_SKIP', false) && !code_coverage_build() } + expression { !paramsValue('CI_FUNCTIONAL_TEST_SKIP', false) && !is_code_coverage() } } parallel { stage('Functional on EL 8.8 with Valgrind') { @@ -1134,7 +1134,7 @@ pipeline { stage('Test Hardware') { when { beforeAgent true - expression { !paramsValue('CI_FUNCTIONAL_HARDWARE_TEST_SKIP', false) && !skipStage() && !code_coverage_build() } + expression { !paramsValue('CI_FUNCTIONAL_HARDWARE_TEST_SKIP', false) && !skipStage() && !is_code_coverage() } } steps { script { From 80131da17c26b7849eedf05fda159c2543de5826 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 2 Jul 2025 15:28:48 -0400 Subject: [PATCH 121/172] Test for python3 Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 2 +- ci/unit/test_main_node.sh | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index ee4221598f4..b81e46ded2c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -177,7 +177,7 @@ pipeline { triggers { // Generate a code coverage report each Sunday /* groovylint-disable-next-line AddEmptyString */ - cron(env.BRANCH_NAME == 'master' ? 'TZ=UTC\n0 5 * * 6' : '') + cron(env.BRANCH_NAME == 'master' ? 'TZ=UTC\n0 6 * * 0' : '') } environment { diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index e705227befe..2a082724c50 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -81,20 +81,22 @@ fi rm -rf "$test_log_dir" # Use default python as that's where storage_estimator is installed. -python3.11 -m venv venv +# Test Only for python3.6 +# python3.11 -m venv venv +python3 -m venv venv -# Workaround until we have a setup.py script for the storage estimator and we're able to do this: -# pip install /opt/daos/lib64/python3.6/site-packages/storage_estimator -cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ -mkdir venv/lib64/daos_srv -cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/daos_srv/ -cp /opt/daos/lib64/libdfs.so venv/lib64/ +# # Workaround until we have a setup.py script for the storage estimator and we're able to do this: +# # pip install /opt/daos/lib64/python3.6/site-packages/storage_estimator +# cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ +# mkdir venv/lib64/daos_srv +# cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/daos_srv/ +# cp /opt/daos/lib64/libdfs.so venv/lib64/ # shellcheck disable=SC1091 source venv/bin/activate -touch venv/pip.conf -pip config set global.progress_bar off -pip config set global.no_color true +# touch venv/pip.conf +# pip config set global.progress_bar off +# pip config set global.no_color true pip install --upgrade pip pip install --requirement requirements-utest.txt pip install /opt/daos/lib/daos/python/ From a32894cf8dd38f4c99d220bd7c45413d7e8170ec Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 2 Jul 2025 22:14:17 -0400 Subject: [PATCH 122/172] Restore back to python3.11 Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 2a082724c50..e705227befe 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -81,22 +81,20 @@ fi rm -rf "$test_log_dir" # Use default python as that's where storage_estimator is installed. -# Test Only for python3.6 -# python3.11 -m venv venv -python3 -m venv venv +python3.11 -m venv venv -# # Workaround until we have a setup.py script for the storage estimator and we're able to do this: -# # pip install /opt/daos/lib64/python3.6/site-packages/storage_estimator -# cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ -# mkdir venv/lib64/daos_srv -# cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/daos_srv/ -# cp /opt/daos/lib64/libdfs.so venv/lib64/ +# Workaround until we have a setup.py script for the storage estimator and we're able to do this: +# pip install /opt/daos/lib64/python3.6/site-packages/storage_estimator +cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ +mkdir venv/lib64/daos_srv +cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/daos_srv/ +cp /opt/daos/lib64/libdfs.so venv/lib64/ # shellcheck disable=SC1091 source venv/bin/activate -# touch venv/pip.conf -# pip config set global.progress_bar off -# pip config set global.no_color true +touch venv/pip.conf +pip config set global.progress_bar off +pip config set global.no_color true pip install --upgrade pip pip install --requirement requirements-utest.txt pip install /opt/daos/lib/daos/python/ From 0b306b6def2b2ec8cc0f9b1d47c0d50642341c02 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 3 Jul 2025 14:34:20 -0400 Subject: [PATCH 123/172] Tmp comment out build on EL9 and Leap15.5 stages Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 146 ++++++++++++++++++++++++++-------------------------- 1 file changed, 73 insertions(+), 73 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 2913fcb46a8..1f8198ffd9c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -689,79 +689,79 @@ pipeline { } } } - stage('Build on EL 9') { - when { - beforeAgent true - expression { !params.CI_el9_NOBUILD && !skipStage() } - } - agent { - dockerfile { - filename 'utils/docker/Dockerfile.el.9' - label 'docker_runner' - additionalBuildArgs dockerBuildArgs(repo_type: 'stable', - deps_build: true, - parallel_build: true) + - " -t ${sanitized_JOB_NAME()}-el9 " + - ' --build-arg REPOS="' + prRepos() + '"' - } - } - steps { - job_step_update( - sconsBuild(parallel_build: true, - stash_files: 'ci/test_files_to_stash.txt', - build_deps: 'no', - stash_opt: true, - scons_args: sconsArgs() + - ' PREFIX=/opt/daos TARGET_TYPE=release')) - } - post { - unsuccessful { - sh '''if [ -f config.log ]; then - mv config.log config.log-el9-gcc - fi''' - archiveArtifacts artifacts: 'config.log-el9-gcc', - allowEmptyArchive: true - } - cleanup { - job_status_update() - } - } - } - stage('Build on Leap 15.5') { - when { - beforeAgent true - expression { !params.CI_leap15_NOBUILD && !skipStage() } - } - agent { - dockerfile { - filename 'utils/docker/Dockerfile.leap.15' - label 'docker_runner' - additionalBuildArgs dockerBuildArgs(repo_type: 'stable', - parallel_build: true, - deps_build: true) + - " -t ${sanitized_JOB_NAME()}-leap15-gcc" - } - } - steps { - job_step_update( - sconsBuild(parallel_build: true, - scons_args: sconsFaultsArgs() + - ' PREFIX=/opt/daos TARGET_TYPE=release', - build_deps: 'yes')) - } - post { - unsuccessful { - sh '''if [ -f config.log ]; then - mv config.log config.log-leap15-gcc - fi''' - archiveArtifacts artifacts: 'config.log-leap15-gcc', - allowEmptyArchive: true - } - cleanup { - job_status_update() - } - } - } + // stage('Build on EL 9') { + // when { + // beforeAgent true + // expression { !params.CI_el9_NOBUILD && !skipStage() } + // } + // agent { + // dockerfile { + // filename 'utils/docker/Dockerfile.el.9' + // label 'docker_runner' + // additionalBuildArgs dockerBuildArgs(repo_type: 'stable', + // deps_build: true, + // parallel_build: true) + + // " -t ${sanitized_JOB_NAME()}-el9 " + + // ' --build-arg REPOS="' + prRepos() + '"' + // } + // } + // steps { + // job_step_update( + // sconsBuild(parallel_build: true, + // stash_files: 'ci/test_files_to_stash.txt', + // build_deps: 'no', + // stash_opt: true, + // scons_args: sconsArgs() + + // ' PREFIX=/opt/daos TARGET_TYPE=release')) + // } + // post { + // unsuccessful { + // sh '''if [ -f config.log ]; then + // mv config.log config.log-el9-gcc + // fi''' + // archiveArtifacts artifacts: 'config.log-el9-gcc', + // allowEmptyArchive: true + // } + // cleanup { + // job_status_update() + // } + // } + // } + // stage('Build on Leap 15.5') { + // when { + // beforeAgent true + // expression { !params.CI_leap15_NOBUILD && !skipStage() } + // } + // agent { + // dockerfile { + // filename 'utils/docker/Dockerfile.leap.15' + // label 'docker_runner' + // additionalBuildArgs dockerBuildArgs(repo_type: 'stable', + // parallel_build: true, + // deps_build: true) + + // " -t ${sanitized_JOB_NAME()}-leap15-gcc" + // } + // } + // steps { + // job_step_update( + // sconsBuild(parallel_build: true, + // scons_args: sconsFaultsArgs() + + // ' PREFIX=/opt/daos TARGET_TYPE=release', + // build_deps: 'yes')) + // } + // post { + // unsuccessful { + // sh '''if [ -f config.log ]; then + // mv config.log config.log-leap15-gcc + // fi''' + // archiveArtifacts artifacts: 'config.log-leap15-gcc', + // allowEmptyArchive: true + // } + // cleanup { + // job_status_update() + // } + // } + // } stage('Build on Leap 15.5 with Intel-C and TARGET_PREFIX') { when { beforeAgent true From 90f5adf22b23c95f529e267f54b7eda5264120a2 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 3 Jul 2025 15:38:08 -0400 Subject: [PATCH 124/172] Update is_code_coverage to Build on EL9 and Leap15.5 Skip-func-test: true Allow-unstable-test: true Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 414 ++++++++++++++++++++++++++-------------------------- 1 file changed, 208 insertions(+), 206 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1f8198ffd9c..91cb3c6089d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -495,193 +495,268 @@ pipeline { expression { !skipStage() } } parallel { - stage('Build RPM on EL 8') { - when { - beforeAgent true - expression { !skipStage() && !is_code_coverage() } - } - agent { - dockerfile { - filename 'utils/rpms/packaging/Dockerfile.mockbuild' - label 'docker_runner' - args '--group-add mock' + - ' --cap-add=SYS_ADMIN' + - ' --privileged=true' + - ' -v /scratch:/scratch' - additionalBuildArgs dockerBuildArgs() - } - } - steps { - job_step_update(buildRpm()) - } - post { - success { - fixup_rpmlintrc() - buildRpmPost condition: 'success', rpmlint: true - } - unstable { - buildRpmPost condition: 'unstable' - } - failure { - buildRpmPost condition: 'failure' - } - unsuccessful { - buildRpmPost condition: 'unsuccessful' - } - cleanup { - buildRpmPost condition: 'cleanup' - job_status_update() - } - } - } - stage('Build RPM on EL 9') { - when { - beforeAgent true - expression { !skipStage() && !is_code_coverage() } - } - agent { - dockerfile { - filename 'utils/rpms/packaging/Dockerfile.mockbuild' - label 'docker_runner' - args '--group-add mock' + - ' --cap-add=SYS_ADMIN' + - ' -v /scratch:/scratch' - additionalBuildArgs dockerBuildArgs() - } - } - steps { - job_step_update(buildRpm()) - } - post { - success { - fixup_rpmlintrc() - buildRpmPost condition: 'success', rpmlint: true - } - unstable { - buildRpmPost condition: 'unstable' - } - failure { - buildRpmPost condition: 'failure' - } - unsuccessful { - buildRpmPost condition: 'unsuccessful' - } - cleanup { - buildRpmPost condition: 'cleanup' - job_status_update() - } - } - } - stage('Build RPM on Leap 15.5') { + // stage('Build RPM on EL 8') { + // when { + // beforeAgent true + // expression { !skipStage() && !is_code_coverage() } + // } + // agent { + // dockerfile { + // filename 'utils/rpms/packaging/Dockerfile.mockbuild' + // label 'docker_runner' + // args '--group-add mock' + + // ' --cap-add=SYS_ADMIN' + + // ' --privileged=true' + + // ' -v /scratch:/scratch' + // additionalBuildArgs dockerBuildArgs() + // } + // } + // steps { + // job_step_update(buildRpm()) + // } + // post { + // success { + // fixup_rpmlintrc() + // buildRpmPost condition: 'success', rpmlint: true + // } + // unstable { + // buildRpmPost condition: 'unstable' + // } + // failure { + // buildRpmPost condition: 'failure' + // } + // unsuccessful { + // buildRpmPost condition: 'unsuccessful' + // } + // cleanup { + // buildRpmPost condition: 'cleanup' + // job_status_update() + // } + // } + // } + // stage('Build RPM on EL 9') { + // when { + // beforeAgent true + // expression { !skipStage() && !is_code_coverage() } + // } + // agent { + // dockerfile { + // filename 'utils/rpms/packaging/Dockerfile.mockbuild' + // label 'docker_runner' + // args '--group-add mock' + + // ' --cap-add=SYS_ADMIN' + + // ' -v /scratch:/scratch' + // additionalBuildArgs dockerBuildArgs() + // } + // } + // steps { + // job_step_update(buildRpm()) + // } + // post { + // success { + // fixup_rpmlintrc() + // buildRpmPost condition: 'success', rpmlint: true + // } + // unstable { + // buildRpmPost condition: 'unstable' + // } + // failure { + // buildRpmPost condition: 'failure' + // } + // unsuccessful { + // buildRpmPost condition: 'unsuccessful' + // } + // cleanup { + // buildRpmPost condition: 'cleanup' + // job_status_update() + // } + // } + // } + // stage('Build RPM on Leap 15.5') { + // when { + // beforeAgent true + // expression { !skipStage() && !is_code_coverage() } + // } + // agent { + // dockerfile { + // filename 'utils/rpms/packaging/Dockerfile.mockbuild' + // label 'docker_runner' + // args '--group-add mock' + + // ' --cap-add=SYS_ADMIN' + + // ' --privileged=true' + + // ' -v /scratch:/scratch' + // additionalBuildArgs dockerBuildArgs() + + // '--build-arg FVERSION=37' + // } + // } + // steps { + // job_step_update(buildRpm()) + // } + // post { + // success { + // fixup_rpmlintrc() + // buildRpmPost condition: 'success', rpmlint: true + // } + // unstable { + // buildRpmPost condition: 'unstable' + // } + // failure { + // buildRpmPost condition: 'failure' + // } + // unsuccessful { + // buildRpmPost condition: 'unsuccessful' + // } + // cleanup { + // buildRpmPost condition: 'cleanup' + // job_status_update() + // } + // } + // } + // /* This stage is commented out until it can be replaced + // with code for building the current Ubuntu release. */ + // stage('Build DEB on Ubuntu 20.04') { + // when { + // beforeAgent true + // // expression { !skipStage() } + // expression { false } + // } + // agent { + // dockerfile { + // filename 'utils/rpms/packaging/Dockerfile.ubuntu' + // label 'docker_runner' + // args '--cap-add=SYS_ADMIN' + // additionalBuildArgs dockerBuildArgs() + // } + // } + // steps { + // job_step_update(buildRpm()) + // } + // post { + // success { + // buildRpmPost condition: 'success' + // } + // unstable { + // buildRpmPost condition: 'unstable' + // } + // failure { + // buildRpmPost condition: 'failure' + // } + // unsuccessful { + // buildRpmPost condition: 'unsuccessful' + // } + // cleanup { + // buildRpmPost condition: 'cleanup' + // job_status_update() + // } + // } + // } + stage('Build on EL 8.8') { when { beforeAgent true - expression { !skipStage() && !is_code_coverage() } + expression { !params.CI_el8_NOBUILD && !skipStage() } } agent { dockerfile { - filename 'utils/rpms/packaging/Dockerfile.mockbuild' + filename 'utils/docker/Dockerfile.el.8' label 'docker_runner' - args '--group-add mock' + - ' --cap-add=SYS_ADMIN' + - ' --privileged=true' + - ' -v /scratch:/scratch' - additionalBuildArgs dockerBuildArgs() + - '--build-arg FVERSION=37' + additionalBuildArgs dockerBuildArgs(repo_type: 'stable', + deps_build: true, + parallel_build: true) + + " -t ${sanitized_JOB_NAME()}-el8 " + + ' --build-arg REPOS="' + prRepos() + '"' } } steps { - job_step_update(buildRpm()) + job_step_update( + sconsBuild(parallel_build: true, + stash_files: 'ci/test_files_to_stash.txt', + build_deps: 'no', + stash_opt: true, + scons_args: sconsArgs() + + ' PREFIX=/opt/daos TARGET_TYPE=release', + code_coverage: is_code_coverage())) } post { - success { - fixup_rpmlintrc() - buildRpmPost condition: 'success', rpmlint: true - } - unstable { - buildRpmPost condition: 'unstable' - } - failure { - buildRpmPost condition: 'failure' - } unsuccessful { - buildRpmPost condition: 'unsuccessful' + sh '''if [ -f config.log ]; then + mv config.log config.log-el8-gcc + fi''' + archiveArtifacts artifacts: 'config.log-el8-gcc', + allowEmptyArchive: true } cleanup { - buildRpmPost condition: 'cleanup' job_status_update() } } } - /* This stage is commented out until it can be replaced - with code for building the current Ubuntu release. */ - stage('Build DEB on Ubuntu 20.04') { + stage('Build on EL 9') { when { beforeAgent true - // expression { !skipStage() } - expression { false } + expression { !params.CI_el9_NOBUILD && !skipStage() } } agent { dockerfile { - filename 'utils/rpms/packaging/Dockerfile.ubuntu' + filename 'utils/docker/Dockerfile.el.9' label 'docker_runner' - args '--cap-add=SYS_ADMIN' - additionalBuildArgs dockerBuildArgs() + additionalBuildArgs dockerBuildArgs(repo_type: 'stable', + deps_build: true, + parallel_build: true) + + " -t ${sanitized_JOB_NAME()}-el9 " + + ' --build-arg REPOS="' + prRepos() + '"' } } steps { - job_step_update(buildRpm()) + job_step_update( + sconsBuild(parallel_build: true, + stash_files: 'ci/test_files_to_stash.txt', + build_deps: 'no', + stash_opt: true, + scons_args: sconsArgs() + + ' PREFIX=/opt/daos TARGET_TYPE=release', + code_coverage: is_code_coverage())) } post { - success { - buildRpmPost condition: 'success' - } - unstable { - buildRpmPost condition: 'unstable' - } - failure { - buildRpmPost condition: 'failure' - } unsuccessful { - buildRpmPost condition: 'unsuccessful' + sh '''if [ -f config.log ]; then + mv config.log config.log-el9-gcc + fi''' + archiveArtifacts artifacts: 'config.log-el9-gcc', + allowEmptyArchive: true } cleanup { - buildRpmPost condition: 'cleanup' job_status_update() } } } - stage('Build on EL 8.8') { + stage('Build on Leap 15.5') { when { beforeAgent true - expression { !params.CI_el8_NOBUILD && !skipStage() } + expression { !params.CI_leap15_NOBUILD && !skipStage() } } agent { dockerfile { - filename 'utils/docker/Dockerfile.el.8' + filename 'utils/docker/Dockerfile.leap.15' label 'docker_runner' additionalBuildArgs dockerBuildArgs(repo_type: 'stable', - deps_build: true, - parallel_build: true) + - " -t ${sanitized_JOB_NAME()}-el8 " + - ' --build-arg REPOS="' + prRepos() + '"' + parallel_build: true, + deps_build: true) + + " -t ${sanitized_JOB_NAME()}-leap15-gcc" } } steps { job_step_update( sconsBuild(parallel_build: true, - stash_files: 'ci/test_files_to_stash.txt', - build_deps: 'no', - stash_opt: true, - scons_args: sconsArgs() + - ' PREFIX=/opt/daos TARGET_TYPE=release', + scons_args: sconsFaultsArgs() + + ' PREFIX=/opt/daos TARGET_TYPE=release', + build_deps: 'yes', code_coverage: is_code_coverage())) } post { unsuccessful { sh '''if [ -f config.log ]; then - mv config.log config.log-el8-gcc + mv config.log config.log-leap15-gcc fi''' - archiveArtifacts artifacts: 'config.log-el8-gcc', + archiveArtifacts artifacts: 'config.log-leap15-gcc', allowEmptyArchive: true } cleanup { @@ -689,79 +764,6 @@ pipeline { } } } - // stage('Build on EL 9') { - // when { - // beforeAgent true - // expression { !params.CI_el9_NOBUILD && !skipStage() } - // } - // agent { - // dockerfile { - // filename 'utils/docker/Dockerfile.el.9' - // label 'docker_runner' - // additionalBuildArgs dockerBuildArgs(repo_type: 'stable', - // deps_build: true, - // parallel_build: true) + - // " -t ${sanitized_JOB_NAME()}-el9 " + - // ' --build-arg REPOS="' + prRepos() + '"' - // } - // } - // steps { - // job_step_update( - // sconsBuild(parallel_build: true, - // stash_files: 'ci/test_files_to_stash.txt', - // build_deps: 'no', - // stash_opt: true, - // scons_args: sconsArgs() + - // ' PREFIX=/opt/daos TARGET_TYPE=release')) - // } - // post { - // unsuccessful { - // sh '''if [ -f config.log ]; then - // mv config.log config.log-el9-gcc - // fi''' - // archiveArtifacts artifacts: 'config.log-el9-gcc', - // allowEmptyArchive: true - // } - // cleanup { - // job_status_update() - // } - // } - // } - // stage('Build on Leap 15.5') { - // when { - // beforeAgent true - // expression { !params.CI_leap15_NOBUILD && !skipStage() } - // } - // agent { - // dockerfile { - // filename 'utils/docker/Dockerfile.leap.15' - // label 'docker_runner' - // additionalBuildArgs dockerBuildArgs(repo_type: 'stable', - // parallel_build: true, - // deps_build: true) + - // " -t ${sanitized_JOB_NAME()}-leap15-gcc" - // } - // } - // steps { - // job_step_update( - // sconsBuild(parallel_build: true, - // scons_args: sconsFaultsArgs() + - // ' PREFIX=/opt/daos TARGET_TYPE=release', - // build_deps: 'yes')) - // } - // post { - // unsuccessful { - // sh '''if [ -f config.log ]; then - // mv config.log config.log-leap15-gcc - // fi''' - // archiveArtifacts artifacts: 'config.log-leap15-gcc', - // allowEmptyArchive: true - // } - // cleanup { - // job_status_update() - // } - // } - // } stage('Build on Leap 15.5 with Intel-C and TARGET_PREFIX') { when { beforeAgent true From f74e92f78632e1298c5e96c319f0dddf2109d92e Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 29 Aug 2025 12:41:48 -0400 Subject: [PATCH 125/172] Add debug display *.gcno & *.gcda Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 0cc9b72f41d..f93e9bcabdf 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -103,6 +103,8 @@ utils/run_utest.py $RUN_TEST_VALGRIND --no-fail-on-error $VDB_ARG --log_dir="$te $SUDO_ARG # Generate code coverage report if at least one gcda file was generated +find build -name '*.gcno' | sort -n +find build -name '*.gcda' | sort -n if [[ -n $(find build -name "*.gcda") ]]; then pip install --requirement requirements-code-coverage.txt From 08c7fc6d011e316ae29c91782ee5cdc55f3fd611 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 29 Aug 2025 15:11:01 -0400 Subject: [PATCH 126/172] Added gcovr gcov-ignore-error Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index f93e9bcabdf..4199f061013 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -109,7 +109,8 @@ if [[ -n $(find build -name "*.gcda") ]]; then pip install --requirement requirements-code-coverage.txt mkdir -p "${test_log_dir}/code_coverage" - gcovr --json "${test_log_dir}/code_coverage/code_coverage.json" --gcov-ignore-parse-errors + gcovr --json "${test_log_dir}/code_coverage/code_coverage.json" --gcov-ignore-parse-errors \ + --gcov-ignore-errors=no_working_dir_found fi HTTPS_PROXY="${DAOS_HTTPS_PROXY:-}" utils/run_utest.py $RUN_TEST_VALGRIND \ --no-fail-on-error $VDB_ARG --log_dir="$test_log_dir" $SUDO_ARG From 4fa9d9bb05077884776813537ff0a7ea53a3293a Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Fri, 12 Sep 2025 11:06:23 -0400 Subject: [PATCH 127/172] pipeline-lib updates. Signed-off-by: Phil Henderson --- Jenkinsfile | 56 ++++++++++++++++++----------------------------------- 1 file changed, 19 insertions(+), 37 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index d000bd63786..0fb65486057 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -19,7 +19,7 @@ // To use a test branch (i.e. PR) until it lands to master // I.e. for testing library changes //@Library(value='pipeline-lib@your_branch') _ -@Library(value='pipeline-lib@hendersp/DAOS-17259') _ +@Library(value='pipeline-lib@hendersp/DAOS-17259_2') _ /* groovylint-disable-next-line CompileStatic */ job_status_internal = [:] @@ -1245,43 +1245,25 @@ pipeline { } } // stage('Test Hardware') stage('Test Summary') { - when { - beforeAgent true - expression { true } + steps { + script { + parallel( + 'Code Coverage Report': getSummaryStage( + name: 'Code Coverage Report', + docker_filename: 'utils/docker/Dockerfile.el.8', + script_stashes: ['code_coverage_Unit_Test_on_EL_8.8', + 'code_coverage_Unit_Test_bdev_on_EL_8.8', + 'code_coverage_NLT_on_EL_8.8', + 'code_coverage_Unit_Test_with_memcheck_on_EL_8.8', + 'code_coverage_Unit_Test_bdev_with_memcheck_on_EL_8.8'], + script_name: 'ci/code_coverage_report.sh', + script_label: 'Code Coverage Report', + artifacts: 'code_coverage_report/*', + job_status: job_status_internal + ) + ) + } } - parallel { - stage('Code Coverage Report') { - when { - beforeAgent true - expression { params.CI_CODE_COVERAGE } - } - agent { - dockerfile { - filename 'utils/docker/Dockerfile.el.8' - label 'docker_runner' - additionalBuildArgs dockerBuildArgs(add_repos: false) - } - } - steps { - job_step_update( - codeCoverageReport( - stashes: ['code_coverage_Unit_Test_on_EL_8.8', - 'code_coverage_Unit_Test_bdev_on_EL_8.8', - 'code_coverage_NLT_on_EL_8.8', - 'code_coverage_Unit_Test_with_memcheck_on_EL_8.8', - 'code_coverage_Unit_Test_bdev_with_memcheck_on_EL_8.8'], - script: 'ci/code_coverage_report.sh', - label: 'Code Coverage Report')) - } - post { - always { - archiveArtifacts artifacts: 'code_coverage_report/*', - allowEmptyArchive: false - job_status_update() - } - } - } // stage('Code Coverage Report') - } // parallel } // stage('Test Summary') } // stages post { From cc601c990d11327af48bc27cb5f31a07b4ba5f77 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Fri, 19 Sep 2025 15:47:58 -0400 Subject: [PATCH 128/172] Go back to pipeline-lib hendersp/DAOS-17259 Signed-off-by: Phil Henderson --- Jenkinsfile | 56 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 19 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0fb65486057..d000bd63786 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -19,7 +19,7 @@ // To use a test branch (i.e. PR) until it lands to master // I.e. for testing library changes //@Library(value='pipeline-lib@your_branch') _ -@Library(value='pipeline-lib@hendersp/DAOS-17259_2') _ +@Library(value='pipeline-lib@hendersp/DAOS-17259') _ /* groovylint-disable-next-line CompileStatic */ job_status_internal = [:] @@ -1245,25 +1245,43 @@ pipeline { } } // stage('Test Hardware') stage('Test Summary') { - steps { - script { - parallel( - 'Code Coverage Report': getSummaryStage( - name: 'Code Coverage Report', - docker_filename: 'utils/docker/Dockerfile.el.8', - script_stashes: ['code_coverage_Unit_Test_on_EL_8.8', - 'code_coverage_Unit_Test_bdev_on_EL_8.8', - 'code_coverage_NLT_on_EL_8.8', - 'code_coverage_Unit_Test_with_memcheck_on_EL_8.8', - 'code_coverage_Unit_Test_bdev_with_memcheck_on_EL_8.8'], - script_name: 'ci/code_coverage_report.sh', - script_label: 'Code Coverage Report', - artifacts: 'code_coverage_report/*', - job_status: job_status_internal - ) - ) - } + when { + beforeAgent true + expression { true } } + parallel { + stage('Code Coverage Report') { + when { + beforeAgent true + expression { params.CI_CODE_COVERAGE } + } + agent { + dockerfile { + filename 'utils/docker/Dockerfile.el.8' + label 'docker_runner' + additionalBuildArgs dockerBuildArgs(add_repos: false) + } + } + steps { + job_step_update( + codeCoverageReport( + stashes: ['code_coverage_Unit_Test_on_EL_8.8', + 'code_coverage_Unit_Test_bdev_on_EL_8.8', + 'code_coverage_NLT_on_EL_8.8', + 'code_coverage_Unit_Test_with_memcheck_on_EL_8.8', + 'code_coverage_Unit_Test_bdev_with_memcheck_on_EL_8.8'], + script: 'ci/code_coverage_report.sh', + label: 'Code Coverage Report')) + } + post { + always { + archiveArtifacts artifacts: 'code_coverage_report/*', + allowEmptyArchive: false + job_status_update() + } + } + } // stage('Code Coverage Report') + } // parallel } // stage('Test Summary') } // stages post { From d11f36eb01f45af6da9156689205bc7d4a62c817 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Fri, 19 Sep 2025 15:51:59 -0400 Subject: [PATCH 129/172] Fix typo. Signed-off-by: Phil Henderson --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index d000bd63786..a62aeff2324 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1264,7 +1264,7 @@ pipeline { } steps { job_step_update( - codeCoverageReport( + runScriptWithStashes( stashes: ['code_coverage_Unit_Test_on_EL_8.8', 'code_coverage_Unit_Test_bdev_on_EL_8.8', 'code_coverage_NLT_on_EL_8.8', From 4a7b5b1fc0a83d620ccb751a8ff04e3d2b2a5b8d Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Sat, 20 Sep 2025 09:08:25 -0400 Subject: [PATCH 130/172] Installing python 3.11 in el8 docker image Signed-off-by: Phil Henderson --- utils/scripts/install-el8.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/scripts/install-el8.sh b/utils/scripts/install-el8.sh index cb51c8a7f65..8d12d2a895f 100755 --- a/utils/scripts/install-el8.sh +++ b/utils/scripts/install-el8.sh @@ -70,8 +70,8 @@ dnf --nodocs install ${dnf_install_args} \ pciutils \ pciutils-devel \ protobuf-c-devel \ - python3-devel \ - python3-pip \ + python3.11 \ + python3.11-devel \ rpm-build \ sg3_utils \ squashfs-tools \ From c0e5848a3ed2a25d499ee56f3c5c736cd833c9c9 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Sat, 20 Sep 2025 09:35:14 -0400 Subject: [PATCH 131/172] Revert previous change. Install python3.11 in code_coverage_report.sh. Signed-off-by: Phil Henderson --- ci/code_coverage_report.sh | 1 + utils/scripts/install-el8.sh | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ci/code_coverage_report.sh b/ci/code_coverage_report.sh index f578dfc6d10..2419334275d 100755 --- a/ci/code_coverage_report.sh +++ b/ci/code_coverage_report.sh @@ -4,6 +4,7 @@ set -eux # Generate code coverage report if [[ -n $(find . -name "code_coverage.json") ]]; then + dnf install -y python3.11 python3.11-devel python3.11 -m venv venv # shellcheck disable=SC1091 source venv/bin/activate diff --git a/utils/scripts/install-el8.sh b/utils/scripts/install-el8.sh index 8d12d2a895f..cb51c8a7f65 100755 --- a/utils/scripts/install-el8.sh +++ b/utils/scripts/install-el8.sh @@ -70,8 +70,8 @@ dnf --nodocs install ${dnf_install_args} \ pciutils \ pciutils-devel \ protobuf-c-devel \ - python3.11 \ - python3.11-devel \ + python3-devel \ + python3-pip \ rpm-build \ sg3_utils \ squashfs-tools \ From 74c6dc0bbcbf682e7def7b0ebe988d41f3eea92b Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Sat, 20 Sep 2025 17:18:54 -0400 Subject: [PATCH 132/172] Use sudo dnf Signed-off-by: Phil Henderson --- ci/code_coverage_report.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/code_coverage_report.sh b/ci/code_coverage_report.sh index 2419334275d..9a1b36deddb 100755 --- a/ci/code_coverage_report.sh +++ b/ci/code_coverage_report.sh @@ -4,7 +4,7 @@ set -eux # Generate code coverage report if [[ -n $(find . -name "code_coverage.json") ]]; then - dnf install -y python3.11 python3.11-devel + sudo dnf install -y python3.11 python3.11-devel python3.11 -m venv venv # shellcheck disable=SC1091 source venv/bin/activate From c182a24468b78bc72eda2393bda3719a61be572d Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Mon, 22 Sep 2025 10:06:49 -0400 Subject: [PATCH 133/172] Update python Signed-off-by: Phil Henderson --- ci/code_coverage_report.sh | 5 +++-- ci/provisioning/post_provision_config_nodes_EL.sh | 4 ++-- ci/unit/test_main_node.sh | 6 ++++-- ci/unit/test_nlt_node.sh | 3 ++- utils/docker/Dockerfile.el.8 | 5 +++++ 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/ci/code_coverage_report.sh b/ci/code_coverage_report.sh index 9a1b36deddb..1a85433f175 100755 --- a/ci/code_coverage_report.sh +++ b/ci/code_coverage_report.sh @@ -2,10 +2,11 @@ set -eux +: "${PYTHON_VERSION:=3.12}" + # Generate code coverage report if [[ -n $(find . -name "code_coverage.json") ]]; then - sudo dnf install -y python3.11 python3.11-devel - python3.11 -m venv venv + python${PYTHON_VERSION} -m venv venv # shellcheck disable=SC1091 source venv/bin/activate touch venv/pip.conf diff --git a/ci/provisioning/post_provision_config_nodes_EL.sh b/ci/provisioning/post_provision_config_nodes_EL.sh index 75e1d7934e3..1a7aaf269a2 100644 --- a/ci/provisioning/post_provision_config_nodes_EL.sh +++ b/ci/provisioning/post_provision_config_nodes_EL.sh @@ -27,11 +27,11 @@ group_repo_post() { distro_custom() { # TODO: This code is not exiting on failure. + : "${PYTHON_VERSION:=3.12}" # Use a more recent python version for unit testing, this allows us to also test installing # pydaos into virtual environments. - dnf -y install python39 python39-devel - dnf -y install python3.11 python3.11-devel + dnf -y install python${PYTHON_VERSION} python${PYTHON_VERSION}-devel } install_mofed() { diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 83b2b3f1a55..01520fa79cc 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -81,11 +81,13 @@ fi rm -rf "$test_log_dir" # Use default python as that's where storage_estimator is installed. -python3.11 -m venv venv +: "${PYTHON_VERSION:=3.12}" +python${PYTHON_VERSION} -m venv venv # Workaround until we have a setup.py script for the storage estimator and we're able to do this: # pip install /opt/daos/lib64/python3.6/site-packages/storage_estimator -cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator venv/lib64/python3.11/site-packages/ +cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator \ + venv/lib64/python${PYTHON_VERSION}/site-packages/ mkdir venv/lib64/daos_srv cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/daos_srv/ cp /opt/daos/lib64/libdfs.so venv/lib64/ diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index 6426fa3cc6d..7b9a1b2fc21 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -25,7 +25,8 @@ sudo bash -c ". ./utils/sl/setup_local.sh; ./utils/setup_daos_server_helper.sh" # --server-valgrind all # Use the latest version that CI has available. -python3.11 -m venv venv +: "${PYTHON_VERSION:=3.12}" +python${PYTHON_VERSION} -m venv venv # shellcheck disable=SC1091 source venv/bin/activate touch venv/pip.conf diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index 9108b8aab7d..c727f695db2 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -18,6 +18,10 @@ ARG BASE_DISTRO # Intermittent cache-bust. Used to reduce load on the actual CB1 later. ARG CB0 +# Use a more recent python version for unit testing +ARG PYTHON_VERSION=3.12 +FROM python:${PYTHON_VERSION}-slim + ARG REPO_FILE_URL ARG JENKINS_URL ARG REPOS @@ -64,6 +68,7 @@ ARG JENKINS_URL USER daos_server:daos_server # Setup a python venv so that python packages can be installed locally. +RUN python3 -V RUN python3 -m venv /home/daos/venv ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ From f0f64c0ac70af805a5fa29ea97cc03a227538329 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Mon, 22 Sep 2025 10:39:00 -0400 Subject: [PATCH 134/172] Adding env.PYTHON_VERSION. Signed-off-by: Phil Henderson --- Jenkinsfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index a62aeff2324..51744bb96a8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -210,6 +210,7 @@ pipeline { REPO_FILE_URL = repoFileUrl(env.REPO_FILE_URL) SCONS_FAULTS_ARGS = sconsArgs() HTTPS_PROXY = '' + PYTHON_VERSION = '3.12' } options { @@ -537,7 +538,8 @@ pipeline { " -t ${sanitized_JOB_NAME()}-el8 " + ' --build-arg DAOS_PACKAGES_BUILD=no ' + ' --build-arg DAOS_KEEP_SRC=yes ' + - ' --build-arg REPOS="' + prRepos() + '"' + ' --build-arg REPOS="' + prRepos() + '"' + + " --build-arg PYTHON_VERSION=${env.PYTHON_VERSION}" } } steps { From afa88534db2ef93106dbfb50d87f18f6f87be41c Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Mon, 22 Sep 2025 11:09:50 -0400 Subject: [PATCH 135/172] Hardcode python version. Signed-off-by: Phil Henderson --- utils/docker/Dockerfile.el.8 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index c727f695db2..a8fa81081e9 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -19,8 +19,9 @@ ARG BASE_DISTRO ARG CB0 # Use a more recent python version for unit testing -ARG PYTHON_VERSION=3.12 -FROM python:${PYTHON_VERSION}-slim +# ARG PYTHON_VERSION="3.12" +# FROM python:${PYTHON_VERSION}-slim +FROM python:3.12-slim ARG REPO_FILE_URL ARG JENKINS_URL From e4ab2ea8e20c4a4242a4f900a58212c92c5a091b Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Mon, 22 Sep 2025 11:28:37 -0400 Subject: [PATCH 136/172] Trying a different approach Signed-off-by: Phil Henderson --- utils/docker/Dockerfile.el.8 | 7 ++----- utils/scripts/install-el8.sh | 6 ++++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index a8fa81081e9..2f691530345 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -18,15 +18,11 @@ ARG BASE_DISTRO # Intermittent cache-bust. Used to reduce load on the actual CB1 later. ARG CB0 -# Use a more recent python version for unit testing -# ARG PYTHON_VERSION="3.12" -# FROM python:${PYTHON_VERSION}-slim -FROM python:3.12-slim - ARG REPO_FILE_URL ARG JENKINS_URL ARG REPOS ARG DAOS_LAB_CA_FILE_URL +ARG PYTHON_VERSION=3.12 # script to install OS updates basic tools and daos dependencies COPY ./utils/scripts/install-el8.sh /tmp/install.sh # script to setup local repo if available @@ -45,6 +41,7 @@ FROM basic RUN if [ -n "$REPO_FILE_URL" ]; then direct="${REPO_FILE_URL##*//}; "\ direct="${direct%%/*}"; export no_proxy="${direct}"; fi; \ dnf upgrade && \ + export PYTHON_VERSION=${PYTHON_VERSION} && \ /tmp/install.sh && \ dnf clean all && \ rm -f /tmp/install.sh diff --git a/utils/scripts/install-el8.sh b/utils/scripts/install-el8.sh index cb51c8a7f65..902f5a5613d 100755 --- a/utils/scripts/install-el8.sh +++ b/utils/scripts/install-el8.sh @@ -14,6 +14,8 @@ arch=$(uname -m) dnf_install_args="${1:-}" +: "${PYTHON_VERSION:=3.12}" + # shellcheck disable=SC2086 dnf --nodocs install ${dnf_install_args} \ boost-python3-devel \ @@ -70,8 +72,8 @@ dnf --nodocs install ${dnf_install_args} \ pciutils \ pciutils-devel \ protobuf-c-devel \ - python3-devel \ - python3-pip \ + python${PYTHON_VERSION}-devel \ + python${PYTHON_VERSION}-pip \ rpm-build \ sg3_utils \ squashfs-tools \ From 0029e0675e27374fd97072811bdb9fb18652e2d8 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Mon, 22 Sep 2025 12:56:09 -0400 Subject: [PATCH 137/172] Fix pip install. Signed-off-by: Phil Henderson --- utils/docker/Dockerfile.el.8 | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index 2f691530345..ca3e0dfbaca 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -65,17 +65,16 @@ ARG JENKINS_URL USER daos_server:daos_server -# Setup a python venv so that python packages can be installed locally. +# Create and activate the python virtual environment and install dependencies +COPY requirements-build.txt requirements-utest.txt ./ RUN python3 -V -RUN python3 -m venv /home/daos/venv +RUN python3 -m venv /home/daos/venv \ + && . /home/daos/venv/bin/activate \ + && python3 -m pip --no-cache-dir install --upgrade pip \ + && python3 -m pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ -# Install latest versions of python tools. -COPY requirements-build.txt requirements-utest.txt ./ -RUN python3 -m pip --no-cache-dir install --upgrade pip && \ - python3 -m pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt - WORKDIR /home/daos/pre RUN mkdir -p /home/daos/pre/site_scons/prereq_tools /home/daos/pre/site_scons/components COPY --chown=daos_server:daos_server SConstruct . From 84e041901c333da50518e31409de218debaee9df Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Mon, 22 Sep 2025 15:06:19 -0400 Subject: [PATCH 138/172] Move to python 3.11 Signed-off-by: Phil Henderson --- Jenkinsfile | 2 +- ci/code_coverage_report.sh | 4 ++-- ci/provisioning/post_provision_config_nodes_EL.sh | 2 +- ci/unit/test_main_node.sh | 2 +- ci/unit/test_nlt_node.sh | 2 +- utils/docker/Dockerfile.el.8 | 3 ++- utils/scripts/install-el8.sh | 2 +- 7 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 51744bb96a8..5cf0117a409 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -210,7 +210,7 @@ pipeline { REPO_FILE_URL = repoFileUrl(env.REPO_FILE_URL) SCONS_FAULTS_ARGS = sconsArgs() HTTPS_PROXY = '' - PYTHON_VERSION = '3.12' + PYTHON_VERSION = '3.11' } options { diff --git a/ci/code_coverage_report.sh b/ci/code_coverage_report.sh index 1a85433f175..373670b9d7a 100755 --- a/ci/code_coverage_report.sh +++ b/ci/code_coverage_report.sh @@ -2,11 +2,11 @@ set -eux -: "${PYTHON_VERSION:=3.12}" +: "${PYTHON_VERSION:=3.11}" # Generate code coverage report if [[ -n $(find . -name "code_coverage.json") ]]; then - python${PYTHON_VERSION} -m venv venv + "python${PYTHON_VERSION}" -m venv venv # shellcheck disable=SC1091 source venv/bin/activate touch venv/pip.conf diff --git a/ci/provisioning/post_provision_config_nodes_EL.sh b/ci/provisioning/post_provision_config_nodes_EL.sh index 1a7aaf269a2..b01bf429a8f 100644 --- a/ci/provisioning/post_provision_config_nodes_EL.sh +++ b/ci/provisioning/post_provision_config_nodes_EL.sh @@ -27,7 +27,7 @@ group_repo_post() { distro_custom() { # TODO: This code is not exiting on failure. - : "${PYTHON_VERSION:=3.12}" + : "${PYTHON_VERSION:=3.11}" # Use a more recent python version for unit testing, this allows us to also test installing # pydaos into virtual environments. diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 01520fa79cc..ce1ed7a4b03 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -81,7 +81,7 @@ fi rm -rf "$test_log_dir" # Use default python as that's where storage_estimator is installed. -: "${PYTHON_VERSION:=3.12}" +: "${PYTHON_VERSION:=3.11}" python${PYTHON_VERSION} -m venv venv # Workaround until we have a setup.py script for the storage estimator and we're able to do this: diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index 7b9a1b2fc21..be454e4168c 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -25,7 +25,7 @@ sudo bash -c ". ./utils/sl/setup_local.sh; ./utils/setup_daos_server_helper.sh" # --server-valgrind all # Use the latest version that CI has available. -: "${PYTHON_VERSION:=3.12}" +: "${PYTHON_VERSION:=3.11}" python${PYTHON_VERSION} -m venv venv # shellcheck disable=SC1091 source venv/bin/activate diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index ca3e0dfbaca..322c117cc5e 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -22,7 +22,8 @@ ARG REPO_FILE_URL ARG JENKINS_URL ARG REPOS ARG DAOS_LAB_CA_FILE_URL -ARG PYTHON_VERSION=3.12 +ARG PYTHON_VERSION=3.11 + # script to install OS updates basic tools and daos dependencies COPY ./utils/scripts/install-el8.sh /tmp/install.sh # script to setup local repo if available diff --git a/utils/scripts/install-el8.sh b/utils/scripts/install-el8.sh index 902f5a5613d..7f8b55536ec 100755 --- a/utils/scripts/install-el8.sh +++ b/utils/scripts/install-el8.sh @@ -14,7 +14,7 @@ arch=$(uname -m) dnf_install_args="${1:-}" -: "${PYTHON_VERSION:=3.12}" +: "${PYTHON_VERSION:=3.11}" # shellcheck disable=SC2086 dnf --nodocs install ${dnf_install_args} \ From 9d24e4e0a4abfcf97e240f0ef8229b06df7b11d3 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Mon, 22 Sep 2025 16:29:50 -0400 Subject: [PATCH 139/172] Usse same python version installed in dockerfile Signed-off-by: Phil Henderson --- utils/docker/Dockerfile.el.8 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index 322c117cc5e..842a5479de7 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -66,13 +66,13 @@ ARG JENKINS_URL USER daos_server:daos_server -# Create and activate the python virtual environment and install dependencies -COPY requirements-build.txt requirements-utest.txt ./ -RUN python3 -V -RUN python3 -m venv /home/daos/venv \ - && . /home/daos/venv/bin/activate \ - && python3 -m pip --no-cache-dir install --upgrade pip \ - && python3 -m pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt +# Setup a python venv so that python packages can be installed locally. +RUN python${PYTHON_VERSION} -m venv /home/daos/venv +COPY requirements-build.txt requirements-utest.txt /home/daos/venv/ +RUN source /home/daos/venv/bin/activate && \ + python${PYTHON_VERSION} -m pip --no-cache-dir install --upgrade pip && \ + python${PYTHON_VERSION} -m pip --no-cache-dir install \ + -r /home/daos/venv/requirements-build.txt -r /home/daos/venv/requirements-utest.txt ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ From 5d8f4ae518d1132742d611d207588dd248a44e01 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Tue, 23 Sep 2025 10:16:11 -0400 Subject: [PATCH 140/172] Adding -vvv to pip Signed-off-by: Phil Henderson --- utils/docker/Dockerfile.el.8 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index 842a5479de7..c149cd128b4 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -70,8 +70,8 @@ USER daos_server:daos_server RUN python${PYTHON_VERSION} -m venv /home/daos/venv COPY requirements-build.txt requirements-utest.txt /home/daos/venv/ RUN source /home/daos/venv/bin/activate && \ - python${PYTHON_VERSION} -m pip --no-cache-dir install --upgrade pip && \ - python${PYTHON_VERSION} -m pip --no-cache-dir install \ + python${PYTHON_VERSION} -m pip -vvv --no-cache-dir install --upgrade pip && \ + python${PYTHON_VERSION} -m pip -vvv --no-cache-dir install \ -r /home/daos/venv/requirements-build.txt -r /home/daos/venv/requirements-utest.txt ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ From 9dc61ba9ee2a4c015491a14c83974a091208276e Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Tue, 23 Sep 2025 23:36:21 -0400 Subject: [PATCH 141/172] Trying separate dockerfile for summary stage. Signed-off-by: Phil Henderson --- Jenkinsfile | 5 ++-- .../post_provision_config_nodes_EL.sh | 2 +- .../post_provision_config_nodes_LEAP.sh | 5 ++++ ci/unit/test_main_node.sh | 4 +-- ci/unit/test_nlt_node.sh | 2 +- utils/docker/Dockerfile.code_coverage | 30 +++++++++++++++++++ utils/docker/Dockerfile.el.8 | 15 ++++------ 7 files changed, 48 insertions(+), 15 deletions(-) create mode 100644 utils/docker/Dockerfile.code_coverage diff --git a/Jenkinsfile b/Jenkinsfile index 5cf0117a409..abdb5adf23a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1259,9 +1259,10 @@ pipeline { } agent { dockerfile { - filename 'utils/docker/Dockerfile.el.8' + filename 'utils/docker/Dockerfile.code_coverage' label 'docker_runner' - additionalBuildArgs dockerBuildArgs(add_repos: false) + additionalBuildArgs dockerBuildArgs(add_repos: false) + + " --build-arg PYTHON_VERSION=${env.PYTHON_VERSION}" } } steps { diff --git a/ci/provisioning/post_provision_config_nodes_EL.sh b/ci/provisioning/post_provision_config_nodes_EL.sh index b01bf429a8f..f49f7f49b30 100644 --- a/ci/provisioning/post_provision_config_nodes_EL.sh +++ b/ci/provisioning/post_provision_config_nodes_EL.sh @@ -31,7 +31,7 @@ distro_custom() { # Use a more recent python version for unit testing, this allows us to also test installing # pydaos into virtual environments. - dnf -y install python${PYTHON_VERSION} python${PYTHON_VERSION}-devel + dnf -y install "python${PYTHON_VERSION}" "python${PYTHON_VERSION}-devel" } install_mofed() { diff --git a/ci/provisioning/post_provision_config_nodes_LEAP.sh b/ci/provisioning/post_provision_config_nodes_LEAP.sh index 4e6dc3e4e41..96226b220a3 100644 --- a/ci/provisioning/post_provision_config_nodes_LEAP.sh +++ b/ci/provisioning/post_provision_config_nodes_LEAP.sh @@ -23,4 +23,9 @@ distro_custom() { sed -e '/MODULEPATH=/s/$/:\/usr\/share\/modules/' \ /etc/profile.d/lmod.sh; \ fi + + # Use a more recent python version for unit testing, this allows us to also test installing + # pydaos into virtual environments. + : "${PYTHON_VERSION:=}" + dnf -y install "python${PYTHON_VERSION//./}" "python${PYTHON_VERSION//./}-devel" } diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index ce1ed7a4b03..50f230350ab 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -82,12 +82,12 @@ rm -rf "$test_log_dir" # Use default python as that's where storage_estimator is installed. : "${PYTHON_VERSION:=3.11}" -python${PYTHON_VERSION} -m venv venv +"python${PYTHON_VERSION}" -m venv venv # Workaround until we have a setup.py script for the storage estimator and we're able to do this: # pip install /opt/daos/lib64/python3.6/site-packages/storage_estimator cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator \ - venv/lib64/python${PYTHON_VERSION}/site-packages/ + "venv/lib64/python${PYTHON_VERSION}/site-packages/" mkdir venv/lib64/daos_srv cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/daos_srv/ cp /opt/daos/lib64/libdfs.so venv/lib64/ diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index be454e4168c..5f45aaa1009 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -26,7 +26,7 @@ sudo bash -c ". ./utils/sl/setup_local.sh; ./utils/setup_daos_server_helper.sh" # Use the latest version that CI has available. : "${PYTHON_VERSION:=3.11}" -python${PYTHON_VERSION} -m venv venv +"python${PYTHON_VERSION}" -m venv venv # shellcheck disable=SC1091 source venv/bin/activate touch venv/pip.conf diff --git a/utils/docker/Dockerfile.code_coverage b/utils/docker/Dockerfile.code_coverage new file mode 100644 index 00000000000..a6ebd36fb01 --- /dev/null +++ b/utils/docker/Dockerfile.code_coverage @@ -0,0 +1,30 @@ +ARG PYTHON_VERSION= +FROM python:${PYTHON_VERSION} + +# Set working directory +WORKDIR /app + +# Set environment variables +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + PIP_NO_CACHE_DIR=1 \ + PIP_DISABLE_PIP_VERSION_CHECK=1 + +# Install basic tools +ARG DAOS_LAB_CA_FILE_URL +# script to setup local repo if available and install packages +COPY ./utils/scripts/helpers/repo-helper-ubuntu.sh /tmp/repo-helper.sh +COPY ./utils/scripts/install-ubuntu.sh /tmp/install.sh + +RUN chmod +x /tmp/repo-helper.sh /tmp/install.sh && \ + /tmp/repo-helper.sh && \ + rm -f /tmp/repo-helper.sh /tmp/install.sh + +# Upgrade pip +RUN pip install --upgrade pip + +# Copy requirements first for better caching +COPY requirements-code-coverage.txt . + +# Install Python dependencies +RUN pip install -r requirements-code-coverage.txt diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index c149cd128b4..9108b8aab7d 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -22,8 +22,6 @@ ARG REPO_FILE_URL ARG JENKINS_URL ARG REPOS ARG DAOS_LAB_CA_FILE_URL -ARG PYTHON_VERSION=3.11 - # script to install OS updates basic tools and daos dependencies COPY ./utils/scripts/install-el8.sh /tmp/install.sh # script to setup local repo if available @@ -42,7 +40,6 @@ FROM basic RUN if [ -n "$REPO_FILE_URL" ]; then direct="${REPO_FILE_URL##*//}; "\ direct="${direct%%/*}"; export no_proxy="${direct}"; fi; \ dnf upgrade && \ - export PYTHON_VERSION=${PYTHON_VERSION} && \ /tmp/install.sh && \ dnf clean all && \ rm -f /tmp/install.sh @@ -67,15 +64,15 @@ ARG JENKINS_URL USER daos_server:daos_server # Setup a python venv so that python packages can be installed locally. -RUN python${PYTHON_VERSION} -m venv /home/daos/venv -COPY requirements-build.txt requirements-utest.txt /home/daos/venv/ -RUN source /home/daos/venv/bin/activate && \ - python${PYTHON_VERSION} -m pip -vvv --no-cache-dir install --upgrade pip && \ - python${PYTHON_VERSION} -m pip -vvv --no-cache-dir install \ - -r /home/daos/venv/requirements-build.txt -r /home/daos/venv/requirements-utest.txt +RUN python3 -m venv /home/daos/venv ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ +# Install latest versions of python tools. +COPY requirements-build.txt requirements-utest.txt ./ +RUN python3 -m pip --no-cache-dir install --upgrade pip && \ + python3 -m pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt + WORKDIR /home/daos/pre RUN mkdir -p /home/daos/pre/site_scons/prereq_tools /home/daos/pre/site_scons/components COPY --chown=daos_server:daos_server SConstruct . From 6cdbb4dabe97a42fc9b015845e69929cce7d070c Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Tue, 23 Sep 2025 23:53:55 -0400 Subject: [PATCH 142/172] Removing no longer used --build-arg. Signed-off-by: Phil Henderson --- Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index abdb5adf23a..5648630a71a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -539,7 +539,6 @@ pipeline { ' --build-arg DAOS_PACKAGES_BUILD=no ' + ' --build-arg DAOS_KEEP_SRC=yes ' + ' --build-arg REPOS="' + prRepos() + '"' + - " --build-arg PYTHON_VERSION=${env.PYTHON_VERSION}" } } steps { From b8c76d8c607b844bd67354120a0c2d383f11411a Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Tue, 23 Sep 2025 23:55:05 -0400 Subject: [PATCH 143/172] Fix previous edit. Signed-off-by: Phil Henderson --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 5648630a71a..ff0ab402491 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -538,7 +538,7 @@ pipeline { " -t ${sanitized_JOB_NAME()}-el8 " + ' --build-arg DAOS_PACKAGES_BUILD=no ' + ' --build-arg DAOS_KEEP_SRC=yes ' + - ' --build-arg REPOS="' + prRepos() + '"' + + ' --build-arg REPOS="' + prRepos() + '"' } } steps { From e43c766eb942cbdd22cef8239f72eac579d1a42b Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Wed, 24 Sep 2025 14:17:39 -0400 Subject: [PATCH 144/172] Updated requirements files. Signed-off-by: Phil Henderson --- Jenkinsfile | 1 - requirements-build.txt | 47 +++++- requirements-code-coverage.txt | 293 ++++++++++++++++++++++++++++++++- requirements-utest.txt | 292 +++++++++++++++++++++++++++++++- 4 files changed, 616 insertions(+), 17 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index ff0ab402491..b3014d0ae92 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -19,7 +19,6 @@ // To use a test branch (i.e. PR) until it lands to master // I.e. for testing library changes //@Library(value='pipeline-lib@your_branch') _ -@Library(value='pipeline-lib@hendersp/DAOS-17259') _ /* groovylint-disable-next-line CompileStatic */ job_status_internal = [:] diff --git a/requirements-build.txt b/requirements-build.txt index 952e8a520db..4e91fbc0de8 100644 --- a/requirements-build.txt +++ b/requirements-build.txt @@ -1,5 +1,42 @@ -scons -ninja -meson -distro -pyelftools +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile --cert=None --client-cert=None --generate-hashes --index-url=None --pip-args=None --strip-extras requirements.in.build +# +distro==1.9.0 \ + --hash=sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed \ + --hash=sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2 + # via -r requirements.in.build +meson==1.9.1 \ + --hash=sha256:f824ab770c041a202f532f69e114c971918ed2daff7ea56583d80642564598d0 + # via -r requirements.in.build +ninja==1.13.0 \ + --hash=sha256:11be2d22027bde06f14c343f01d31446747dbb51e72d00decca2eb99be911e2f \ + --hash=sha256:1c97223cdda0417f414bf864cfb73b72d8777e57ebb279c5f6de368de0062988 \ + --hash=sha256:3c0b40b1f0bba764644385319028650087b4c1b18cdfa6f45cb39a3669b81aa9 \ + --hash=sha256:3d00c692fb717fd511abeb44b8c5d00340c36938c12d6538ba989fe764e79630 \ + --hash=sha256:3d7d7779d12cb20c6d054c61b702139fd23a7a964ec8f2c823f1ab1b084150db \ + --hash=sha256:4a40ce995ded54d9dc24f8ea37ff3bf62ad192b547f6c7126e7e25045e76f978 \ + --hash=sha256:4be9c1b082d244b1ad7ef41eb8ab088aae8c109a9f3f0b3e56a252d3e00f42c1 \ + --hash=sha256:5f8e1e8a1a30835eeb51db05cf5a67151ad37542f5a4af2a438e9490915e5b72 \ + --hash=sha256:60056592cf495e9a6a4bea3cd178903056ecb0943e4de45a2ea825edb6dc8d3e \ + --hash=sha256:6739d3352073341ad284246f81339a384eec091d9851a886dfa5b00a6d48b3e2 \ + --hash=sha256:8cfbb80b4a53456ae8a39f90ae3d7a2129f45ea164f43fadfa15dc38c4aef1c9 \ + --hash=sha256:aa45b4037b313c2f698bc13306239b8b93b4680eb47e287773156ac9e9304714 \ + --hash=sha256:b4f2a072db3c0f944c32793e91532d8948d20d9ab83da9c0c7c15b5768072200 \ + --hash=sha256:be7f478ff9f96a128b599a964fc60a6a87b9fa332ee1bd44fa243ac88d50291c \ + --hash=sha256:d741a5e6754e0bda767e3274a0f0deeef4807f1fec6c0d7921a0244018926ae5 \ + --hash=sha256:e8bad11f8a00b64137e9b315b137d8bb6cbf3086fbdc43bf1f90fd33324d2e96 \ + --hash=sha256:fa2a8bfc62e31b08f83127d1613d10821775a0eb334197154c4d6067b7068ff1 \ + --hash=sha256:fb46acf6b93b8dd0322adc3a4945452a4e774b75b91293bafcc7b7f8e6517dfa \ + --hash=sha256:fb8ee8719f8af47fed145cced4a85f0755dd55d45b2bddaf7431fa89803c5f3e + # via -r requirements.in.build +pyelftools==0.32 \ + --hash=sha256:013df952a006db5e138b1edf6d8a68ecc50630adbd0d83a2d41e7f846163d738 \ + --hash=sha256:6de90ee7b8263e740c8715a925382d4099b354f29ac48ea40d840cf7aa14ace5 + # via -r requirements.in.build +scons==4.9.1 \ + --hash=sha256:bacac880ba2e86d6a156c116e2f8f2bfa82b257046f3ac2666c85c53c615c338 \ + --hash=sha256:d2db1a22eb6039e97cbbb0106f18f435af033d0aad190299c9688378e2810a5e + # via -r requirements.in.build diff --git a/requirements-code-coverage.txt b/requirements-code-coverage.txt index 78641da6b58..841e461650e 100644 --- a/requirements-code-coverage.txt +++ b/requirements-code-coverage.txt @@ -1,3 +1,290 @@ -gcovr -pyyaml -junit_xml +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile --cert=None --client-cert=None --generate-hashes --index-url=None --pip-args=None --strip-extras requirements.in.code_coverage +# +colorlog==6.9.0 \ + --hash=sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff \ + --hash=sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2 + # via gcovr +gcovr==8.3 \ + --hash=sha256:d613a90aeea967b4972fbff69587bf8995ee3cd80df2556983b73141f30642d2 \ + --hash=sha256:faa371f9c4a7f78c9800da655107d4f99f04b718d1c0d9f48cafdcbef0049079 + # via -r requirements.in.code_coverage +jinja2==3.1.6 \ + --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \ + --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 + # via gcovr +junit-xml==1.9 \ + --hash=sha256:de16a051990d4e25a3982b2dd9e89d671067548718866416faec14d9de56db9f \ + --hash=sha256:ec5ca1a55aefdd76d28fcc0b135251d156c7106fa979686a4b48d62b761b4732 + # via -r requirements.in.code_coverage +lxml==6.0.2 \ + --hash=sha256:058027e261afed589eddcfe530fcc6f3402d7fd7e89bfd0532df82ebc1563dba \ + --hash=sha256:063eccf89df5b24e361b123e257e437f9e9878f425ee9aae3144c77faf6da6d8 \ + --hash=sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0 \ + --hash=sha256:08b9d5e803c2e4725ae9e8559ee880e5328ed61aa0935244e0515d7d9dbec0aa \ + --hash=sha256:0a3c150a95fbe5ac91de323aa756219ef9cf7fde5a3f00e2281e30f33fa5fa4f \ + --hash=sha256:0aa7070978f893954008ab73bb9e3c24a7c56c054e00566a21b553dc18105fca \ + --hash=sha256:13dcecc9946dca97b11b7c40d29fba63b55ab4170d3c0cf8c0c164343b9bfdcf \ + --hash=sha256:13e35cbc684aadf05d8711a5d1b5857c92e5e580efa9a0d2be197199c8def607 \ + --hash=sha256:17f68764f35fd78d7c4cc4ef209a184c38b65440378013d24b8aecd327c3e0c8 \ + --hash=sha256:1941354d92699fb5ffe6ed7b32f9649e43c2feb4b97205f75866f7d21aa91452 \ + --hash=sha256:1c06035eafa8404b5cf475bb37a9f6088b0aca288d4ccc9d69389750d5543700 \ + --hash=sha256:1db01e5cf14345628e0cbe71067204db658e2fb8e51e7f33631f5f4735fefd8d \ + --hash=sha256:1e786a464c191ca43b133906c6903a7e4d56bef376b75d97ccbb8ec5cf1f0a4b \ + --hash=sha256:1ea99340b3c729beea786f78c38f60f4795622f36e305d9c9be402201efdc3b7 \ + --hash=sha256:200069a593c5e40b8f6fc0d84d86d970ba43138c3e68619ffa234bc9bb806a4d \ + --hash=sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6 \ + --hash=sha256:21c73b476d3cfe836be731225ec3421fa2f048d84f6df6a8e70433dff1376d5a \ + --hash=sha256:24a8e756c982c001ca8d59e87c80c4d9dcd4d9b44a4cbeb8d9be4482c514d41d \ + --hash=sha256:252a22982dca42f6155125ac76d3432e548a7625d56f5a273ee78a5057216eca \ + --hash=sha256:2593c77efde7bfea7f6389f1ab249b15ed4aa5bc5cb5131faa3b843c429fbedb \ + --hash=sha256:25fcc59afc57d527cfc78a58f40ab4c9b8fd096a9a3f964d2781ffb6eb33f4ed \ + --hash=sha256:2613e67de13d619fd283d58bda40bff0ee07739f624ffee8b13b631abf33083d \ + --hash=sha256:27220da5be049e936c3aca06f174e8827ca6445a4353a1995584311487fc4e3e \ + --hash=sha256:2c8458c2cdd29589a8367c09c8f030f1d202be673f0ca224ec18590b3b9fb694 \ + --hash=sha256:2ca59e7e13e5981175b8b3e4ab84d7da57993eeff53c07764dcebda0d0e64ecd \ + --hash=sha256:2cbcbf6d6e924c28f04a43f3b6f6e272312a090f269eff68a2982e13e5d57659 \ + --hash=sha256:2ed6c667fcbb8c19c6791bbf40b7268ef8ddf5a96940ba9404b9f9a304832f6c \ + --hash=sha256:358d9adae670b63e95bc59747c72f4dc97c9ec58881d4627fe0120da0f90d314 \ + --hash=sha256:370cd78d5855cfbffd57c422851f7d3864e6ae72d0da615fca4dad8c45d375a5 \ + --hash=sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849 \ + --hash=sha256:3b1675e096e17c6fe9c0e8c81434f5736c0739ff9ac6123c87c2d452f48fc938 \ + --hash=sha256:3e3cb08855967a20f553ff32d147e14329b3ae70ced6edc2f282b94afbc74b2a \ + --hash=sha256:3efe1b21c7801ffa29a1112fab3b0f643628c30472d507f39544fd48e9549e34 \ + --hash=sha256:3fee0851639d06276e6b387f1c190eb9d7f06f7f53514e966b26bae46481ec90 \ + --hash=sha256:4077b7c79f31755df33b795dc12119cb557a0106bfdab0d2c2d97bd3cf3dffa6 \ + --hash=sha256:414aaa94e974e23a3e92e7ca5b97d10c0cf37b6481f50911032c69eeb3991bba \ + --hash=sha256:4197fb2534ee05fd3e7afaab5d8bfd6c2e186f65ea7f9cd6a82809c887bd1285 \ + --hash=sha256:442de7530296ef5e188373a1ea5789a46ce90c4847e597856570439621d9c553 \ + --hash=sha256:4468e3b83e10e0317a89a33d28f7aeba1caa4d1a6fd457d115dd4ffe90c5931d \ + --hash=sha256:452b899faa64f1805943ec1c0c9ebeaece01a1af83e130b69cdefeda180bb42c \ + --hash=sha256:45f93e6f75123f88d7f0cfd90f2d05f441b808562bf0bc01070a00f53f5028b5 \ + --hash=sha256:48461bd21625458dd01e14e2c38dd0aea69addc3c4f960c30d9f59d7f93be601 \ + --hash=sha256:4ddb1049fa0579d0cbd00503ad8c58b9ab34d1254c77bc6a5576d96ec7853dba \ + --hash=sha256:5179c60288204e6ddde3f774a93350177e08876eaf3ab78aa3a3649d43eb7d37 \ + --hash=sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f \ + --hash=sha256:5921d924aa5468c939d95c9814fa9f9b5935a6ff4e679e26aaf2951f74043512 \ + --hash=sha256:59c45e125140b2c4b33920d21d83681940ca29f0b83f8629ea1a2196dc8cfe6a \ + --hash=sha256:5aa0fc67ae19d7a64c3fe725dc9a1bb11f80e01f78289d05c6f62545affec438 \ + --hash=sha256:5d444858b9f07cefff6455b983aea9a67f7462ba1f6cbe4a21e8bf6791bf2153 \ + --hash=sha256:60fa43be34f78bebb27812ed90f1925ec99560b0fa1decdb7d12b84d857d31e9 \ + --hash=sha256:6162a86d86893d63084faaf4ff937b3daea233e3682fb4474db07395794fa80d \ + --hash=sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6 \ + --hash=sha256:65ac4a01aba353cfa6d5725b95d7aed6356ddc0a3cd734de00124d285b04b64f \ + --hash=sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534 \ + --hash=sha256:6605c604e6daa9e0d7f0a2137bdc47a2e93b59c60a65466353e37f8272f47c46 \ + --hash=sha256:66328dabea70b5ba7e53d94aa774b733cf66686535f3bc9250a7aab53a91caaf \ + --hash=sha256:6c8963287d7a4c5c9a432ff487c52e9c5618667179c18a204bdedb27310f022f \ + --hash=sha256:6cdaefac66e8b8f30e37a9b4768a391e1f8a16a7526d5bc77a7928408ef68e93 \ + --hash=sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8 \ + --hash=sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f \ + --hash=sha256:6ec0e3f745021bfed19c456647f0298d60a24c9ff86d9d051f52b509663feeb1 \ + --hash=sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322 \ + --hash=sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f \ + --hash=sha256:71695772df6acea9f3c0e59e44ba8ac50c4f125217e84aab21074a1a55e7e5c9 \ + --hash=sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f \ + --hash=sha256:7d2de809c2ee3b888b59f995625385f74629707c9355e0ff856445cdcae682b7 \ + --hash=sha256:80dadc234ebc532e09be1975ff538d154a7fa61ea5031c03d25178855544728f \ + --hash=sha256:817ef43a0c0b4a77bd166dc9a09a555394105ff3374777ad41f453526e37f9cb \ + --hash=sha256:846ae9a12d54e368933b9759052d6206a9e8b250291109c48e350c1f1f49d916 \ + --hash=sha256:875c6b5ab39ad5291588aed6925fac99d0097af0dd62f33c7b43736043d4a2ec \ + --hash=sha256:8799481bbdd212470d17513a54d568f44416db01250f49449647b5ab5b5dccb9 \ + --hash=sha256:8ac6e5811ae2870953390452e3476694196f98d447573234592d30488147404d \ + --hash=sha256:8f8d0cbd0674ee89863a523e6994ac25fd5be9c8486acfc3e5ccea679bad2679 \ + --hash=sha256:901e3b4219fa04ef766885fb40fa516a71662a4c61b80c94d25336b4934b71c0 \ + --hash=sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192 \ + --hash=sha256:9261bb77c2dab42f3ecd9103951aeca2c40277701eb7e912c545c1b16e0e4917 \ + --hash=sha256:945da35a48d193d27c188037a05fec5492937f66fb1958c24fc761fb9d40d43c \ + --hash=sha256:957448ac63a42e2e49531b9d6c0fa449a1970dbc32467aaad46f11545be9af1d \ + --hash=sha256:967aab75434de148ec80597b75062d8123cadf2943fb4281f385141e18b21338 \ + --hash=sha256:98a5e1660dc7de2200b00d53fa00bcd3c35a3608c305d45a7bbcaf29fa16e83d \ + --hash=sha256:995e783eb0374c120f528f807443ad5a83a656a8624c467ea73781fc5f8a8304 \ + --hash=sha256:9b33d21594afab46f37ae58dfadd06636f154923c4e8a4d754b0127554eb2e77 \ + --hash=sha256:a4bf42d2e4cf52c28cc1812d62426b9503cdb0c87a6de81442626aa7d69707ba \ + --hash=sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456 \ + --hash=sha256:a656ca105115f6b766bba324f23a67914d9c728dafec57638e2b92a9dcd76c62 \ + --hash=sha256:a6b5b39cc7e2998f968f05309e666103b53e2edd01df8dc51b90d734c0825444 \ + --hash=sha256:a7c5d5e5f1081955358533be077166ee97ed2571d6a66bdba6ec2f609a715d1a \ + --hash=sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f \ + --hash=sha256:a8ffaeec5dfea5881d4c9d8913a32d10cfe3923495386106e4a24d45300ef79c \ + --hash=sha256:abd44571493973bad4598a3be7e1d807ed45aa2adaf7ab92ab7c62609569b17d \ + --hash=sha256:ac02dc29fd397608f8eb15ac1610ae2f2f0154b03f631e6d724d9e2ad4ee2c84 \ + --hash=sha256:af85529ae8d2a453feee4c780d9406a5e3b17cee0dd75c18bd31adcd584debc3 \ + --hash=sha256:b0c732aa23de8f8aec23f4b580d1e52905ef468afb4abeafd3fec77042abb6fe \ + --hash=sha256:b2142a376b40b6736dfc214fd2902409e9e3857eff554fed2d3c60f097e62a62 \ + --hash=sha256:b22a07cbb82fea98f8a2fd814f3d1811ff9ed76d0fc6abc84eb21527596e7cc8 \ + --hash=sha256:b2c3da8d93cf5db60e8858c17684c47d01fee6405e554fb55018dd85fc23b178 \ + --hash=sha256:b2c7fdaa4d7c3d886a42534adec7cfac73860b89b4e5298752f60aa5984641a0 \ + --hash=sha256:b30d46379644fbfc3ab81f8f82ae4de55179414651f110a1514f0b1f8f6cb2d7 \ + --hash=sha256:b42f4d86b451c2f9d06ffb4f8bbc776e04df3ba070b9fe2657804b1b40277c48 \ + --hash=sha256:b738f7e648735714bbb82bdfd030203360cfeab7f6e8a34772b3c8c8b820568c \ + --hash=sha256:b7fc49c37f1786284b12af63152fe1d0990722497e2d5817acfe7a877522f9a9 \ + --hash=sha256:b8f18914faec94132e5b91e69d76a5c1d7b0c73e2489ea8929c4aaa10b76bbf7 \ + --hash=sha256:bb2f6ca0ae2d983ded09357b84af659c954722bbf04dea98030064996d156048 \ + --hash=sha256:bb4c1847b303835d89d785a18801a883436cdfd5dc3d62947f9c49e24f0f5a2c \ + --hash=sha256:bc456d04db0515ce3320d714a1eac7a97774ff0849e7718b492d957da4631dd4 \ + --hash=sha256:bc532422ff26b304cfb62b328826bd995c96154ffd2bac4544f37dbb95ecaa8f \ + --hash=sha256:be3aaa60da67e6153eb15715cc2e19091af5dc75faef8b8a585aea372507384b \ + --hash=sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0 \ + --hash=sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564 \ + --hash=sha256:c54d83a2188a10ebdba573f16bd97135d06c9ef60c3dc495315c7a28c80a263f \ + --hash=sha256:c7d13103045de1bdd6fe5d61802565f1a3537d70cd3abf596aa0af62761921ee \ + --hash=sha256:cb233f9c95f83707dae461b12b720c1af9c28c2d19208e1be03387222151daf5 \ + --hash=sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62 \ + --hash=sha256:cdcbed9ad19da81c480dfd6dd161886db6096083c9938ead313d94b30aadf272 \ + --hash=sha256:d100fcc8930d697c6561156c6810ab4a508fb264c8b6779e6e61e2ed5e7558f9 \ + --hash=sha256:d4aec24d6b72ee457ec665344a29acb2d35937d5192faebe429ea02633151aad \ + --hash=sha256:d6690ec5ec1cce0385cb20896b16be35247ac8c2046e493d03232f1c2414d321 \ + --hash=sha256:d759cdd7f3e055d6bc8d9bec3ad905227b2e4c785dc16c372eb5b5e83123f48a \ + --hash=sha256:da08e7bb297b04e893d91087df19638dc7a6bb858a954b0cc2b9f5053c922312 \ + --hash=sha256:dacf3c64ef3f7440e3167aa4b49aa9e0fb99e0aa4f9ff03795640bf94531bcb0 \ + --hash=sha256:daf42de090d59db025af61ce6bdb2521f0f102ea0e6ea310f13c17610a97da4c \ + --hash=sha256:dc051506c30b609238d79eda75ee9cab3e520570ec8219844a72a46020901e37 \ + --hash=sha256:de496365750cc472b4e7902a485d3f152ecf57bd3ba03ddd5578ed8ceb4c5964 \ + --hash=sha256:dfb874cfa53340009af6bdd7e54ebc0d21012a60a4e65d927c2e477112e63484 \ + --hash=sha256:e19e0643cc936a22e837f79d01a550678da8377d7d801a14487c10c34ee49c7e \ + --hash=sha256:e237b807d68a61fc3b1e845407e27e5eb8ef69bc93fe8505337c1acb4ee300b6 \ + --hash=sha256:e5867f2651016a3afd8dd2c8238baa66f1e2802f44bc17e236f547ace6647078 \ + --hash=sha256:e748d4cf8fef2526bb2a589a417eba0c8674e29ffcb570ce2ceca44f1e567bf6 \ + --hash=sha256:e77dd455b9a16bbd2a5036a63ddbd479c19572af81b624e79ef422f929eef388 \ + --hash=sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924 \ + --hash=sha256:e8cd2415f372e7e5a789d743d133ae474290a90b9023197fd78f32e2dc6873e2 \ + --hash=sha256:eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df \ + --hash=sha256:ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd \ + --hash=sha256:f2a50c3c1d11cad0ebebbac357a97b26aa79d2bcaf46f256551152aa85d3a4d1 \ + --hash=sha256:f2e3b1a6bb38de0bc713edd4d612969dd250ca8b724be8d460001a387507021c \ + --hash=sha256:f952dacaa552f3bb8834908dddd500ba7d508e6ea6eb8c52eb2d28f48ca06a31 \ + --hash=sha256:fa25afbadead523f7001caf0c2382afd272c315a033a7b06336da2637d92d6ed \ + --hash=sha256:fb8dae0b6b8b7f9e96c26fdd8121522ce5de9bb5538010870bd538683d30e9a2 \ + --hash=sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092 \ + --hash=sha256:fe659f6b5d10fb5a17f00a50eb903eb277a71ee35df4615db573c069bcf967ac + # via gcovr +markupsafe==3.0.2 \ + --hash=sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4 \ + --hash=sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30 \ + --hash=sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0 \ + --hash=sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9 \ + --hash=sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396 \ + --hash=sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13 \ + --hash=sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028 \ + --hash=sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca \ + --hash=sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557 \ + --hash=sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832 \ + --hash=sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0 \ + --hash=sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b \ + --hash=sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579 \ + --hash=sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a \ + --hash=sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c \ + --hash=sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff \ + --hash=sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c \ + --hash=sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22 \ + --hash=sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094 \ + --hash=sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb \ + --hash=sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e \ + --hash=sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5 \ + --hash=sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a \ + --hash=sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d \ + --hash=sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a \ + --hash=sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b \ + --hash=sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8 \ + --hash=sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225 \ + --hash=sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c \ + --hash=sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144 \ + --hash=sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f \ + --hash=sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87 \ + --hash=sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d \ + --hash=sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93 \ + --hash=sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf \ + --hash=sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158 \ + --hash=sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84 \ + --hash=sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb \ + --hash=sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48 \ + --hash=sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171 \ + --hash=sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c \ + --hash=sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6 \ + --hash=sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd \ + --hash=sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d \ + --hash=sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1 \ + --hash=sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d \ + --hash=sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca \ + --hash=sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a \ + --hash=sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29 \ + --hash=sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe \ + --hash=sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798 \ + --hash=sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c \ + --hash=sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8 \ + --hash=sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f \ + --hash=sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f \ + --hash=sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a \ + --hash=sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178 \ + --hash=sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0 \ + --hash=sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79 \ + --hash=sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430 \ + --hash=sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50 + # via jinja2 +pygments==2.19.2 \ + --hash=sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887 \ + --hash=sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b + # via gcovr +pyyaml==6.0.2 \ + --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \ + --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \ + --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \ + --hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e \ + --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \ + --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \ + --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \ + --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \ + --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \ + --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \ + --hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a \ + --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \ + --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \ + --hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 \ + --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \ + --hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 \ + --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \ + --hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a \ + --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \ + --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \ + --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \ + --hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 \ + --hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d \ + --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \ + --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \ + --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \ + --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \ + --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \ + --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \ + --hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 \ + --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 \ + --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \ + --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \ + --hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 \ + --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \ + --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \ + --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \ + --hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f \ + --hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 \ + --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \ + --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \ + --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \ + --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \ + --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \ + --hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 \ + --hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d \ + --hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 \ + --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \ + --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \ + --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \ + --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \ + --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \ + --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4 + # via -r requirements.in.code_coverage +six==1.17.0 \ + --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ + --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 + # via junit-xml diff --git a/requirements-utest.txt b/requirements-utest.txt index 687b500e2a8..7ecf905cc47 100644 --- a/requirements-utest.txt +++ b/requirements-utest.txt @@ -1,8 +1,284 @@ -tabulate -junit_xml -pyxattr -pyyaml -# Disabled for now because of DAOS-14688 -# pytest -# for pydaos.torch module -torch +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile --allow-unsafe --cert=None --client-cert=None --generate-hashes --index-url=None --pip-args=None --strip-extras requirements.in.utest +# +filelock==3.19.1 \ + --hash=sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58 \ + --hash=sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d + # via torch +fsspec==2025.9.0 \ + --hash=sha256:19fd429483d25d28b65ec68f9f4adc16c17ea2c7c7bf54ec61360d478fb19c19 \ + --hash=sha256:530dc2a2af60a414a832059574df4a6e10cce927f6f4a78209390fe38955cfb7 + # via torch +jinja2==3.1.6 \ + --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \ + --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 + # via torch +junit-xml==1.9 \ + --hash=sha256:de16a051990d4e25a3982b2dd9e89d671067548718866416faec14d9de56db9f \ + --hash=sha256:ec5ca1a55aefdd76d28fcc0b135251d156c7106fa979686a4b48d62b761b4732 + # via -r requirements.in.utest +markupsafe==3.0.2 \ + --hash=sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4 \ + --hash=sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30 \ + --hash=sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0 \ + --hash=sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9 \ + --hash=sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396 \ + --hash=sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13 \ + --hash=sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028 \ + --hash=sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca \ + --hash=sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557 \ + --hash=sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832 \ + --hash=sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0 \ + --hash=sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b \ + --hash=sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579 \ + --hash=sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a \ + --hash=sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c \ + --hash=sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff \ + --hash=sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c \ + --hash=sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22 \ + --hash=sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094 \ + --hash=sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb \ + --hash=sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e \ + --hash=sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5 \ + --hash=sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a \ + --hash=sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d \ + --hash=sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a \ + --hash=sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b \ + --hash=sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8 \ + --hash=sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225 \ + --hash=sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c \ + --hash=sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144 \ + --hash=sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f \ + --hash=sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87 \ + --hash=sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d \ + --hash=sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93 \ + --hash=sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf \ + --hash=sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158 \ + --hash=sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84 \ + --hash=sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb \ + --hash=sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48 \ + --hash=sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171 \ + --hash=sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c \ + --hash=sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6 \ + --hash=sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd \ + --hash=sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d \ + --hash=sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1 \ + --hash=sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d \ + --hash=sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca \ + --hash=sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a \ + --hash=sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29 \ + --hash=sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe \ + --hash=sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798 \ + --hash=sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c \ + --hash=sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8 \ + --hash=sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f \ + --hash=sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f \ + --hash=sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a \ + --hash=sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178 \ + --hash=sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0 \ + --hash=sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79 \ + --hash=sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430 \ + --hash=sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50 + # via jinja2 +mpmath==1.3.0 \ + --hash=sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f \ + --hash=sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + # via sympy +networkx==3.5 \ + --hash=sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec \ + --hash=sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037 + # via torch +nvidia-cublas-cu12==12.8.4.1 \ + --hash=sha256:47e9b82132fa8d2b4944e708049229601448aaad7e6f296f630f2d1a32de35af \ + --hash=sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142 \ + --hash=sha256:b86f6dd8935884615a0683b663891d43781b819ac4f2ba2b0c9604676af346d0 + # via + # nvidia-cudnn-cu12 + # nvidia-cusolver-cu12 + # torch +nvidia-cuda-cupti-cu12==12.8.90 \ + --hash=sha256:4412396548808ddfed3f17a467b104ba7751e6b58678a4b840675c56d21cf7ed \ + --hash=sha256:bb479dcdf7e6d4f8b0b01b115260399bf34154a1a2e9fe11c85c517d87efd98e \ + --hash=sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182 + # via torch +nvidia-cuda-nvrtc-cu12==12.8.93 \ + --hash=sha256:7a4b6b2904850fe78e0bd179c4b655c404d4bb799ef03ddc60804247099ae909 \ + --hash=sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994 \ + --hash=sha256:fc1fec1e1637854b4c0a65fb9a8346b51dd9ee69e61ebaccc82058441f15bce8 + # via torch +nvidia-cuda-runtime-cu12==12.8.90 \ + --hash=sha256:52bf7bbee900262ffefe5e9d5a2a69a30d97e2bc5bb6cc866688caa976966e3d \ + --hash=sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90 \ + --hash=sha256:c0c6027f01505bfed6c3b21ec546f69c687689aad5f1a377554bc6ca4aa993a8 + # via torch +nvidia-cudnn-cu12==9.10.2.21 \ + --hash=sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8 \ + --hash=sha256:c6288de7d63e6cf62988f0923f96dc339cea362decb1bf5b3141883392a7d65e \ + --hash=sha256:c9132cc3f8958447b4910a1720036d9eff5928cc3179b0a51fb6d167c6cc87d8 + # via torch +nvidia-cufft-cu12==11.3.3.83 \ + --hash=sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74 \ + --hash=sha256:7a64a98ef2a7c47f905aaf8931b69a3a43f27c55530c698bb2ed7c75c0b42cb7 \ + --hash=sha256:848ef7224d6305cdb2a4df928759dca7b1201874787083b6e7550dd6765ce69a + # via torch +nvidia-cufile-cu12==1.13.1.3 \ + --hash=sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc \ + --hash=sha256:4beb6d4cce47c1a0f1013d72e02b0994730359e17801d395bdcbf20cfb3bb00a + # via torch +nvidia-curand-cu12==10.3.9.90 \ + --hash=sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9 \ + --hash=sha256:dfab99248034673b779bc6decafdc3404a8a6f502462201f2f31f11354204acd \ + --hash=sha256:f149a8ca457277da854f89cf282d6ef43176861926c7ac85b2a0fbd237c587ec + # via torch +nvidia-cusolver-cu12==11.7.3.90 \ + --hash=sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450 \ + --hash=sha256:4a550db115fcabc4d495eb7d39ac8b58d4ab5d8e63274d3754df1c0ad6a22d34 \ + --hash=sha256:db9ed69dbef9715071232caa9b69c52ac7de3a95773c2db65bdba85916e4e5c0 + # via torch +nvidia-cusparse-cu12==12.5.8.93 \ + --hash=sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b \ + --hash=sha256:9a33604331cb2cac199f2e7f5104dfbb8a5a898c367a53dfda9ff2acb6b6b4dd \ + --hash=sha256:9b6c161cb130be1a07a27ea6923df8141f3c295852f4b260c65f18f3e0a091dc + # via + # nvidia-cusolver-cu12 + # torch +nvidia-cusparselt-cu12==0.7.1 \ + --hash=sha256:8878dce784d0fac90131b6817b607e803c36e629ba34dc5b433471382196b6a5 \ + --hash=sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623 \ + --hash=sha256:f67fbb5831940ec829c9117b7f33807db9f9678dc2a617fbe781cac17b4e1075 + # via torch +nvidia-nccl-cu12==2.27.3 \ + --hash=sha256:9ddf1a245abc36c550870f26d537a9b6087fb2e2e3d6e0ef03374c6fd19d984f \ + --hash=sha256:adf27ccf4238253e0b826bce3ff5fa532d65fc42322c8bfdfaf28024c0fbe039 + # via torch +nvidia-nvjitlink-cu12==12.8.93 \ + --hash=sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88 \ + --hash=sha256:adccd7161ace7261e01bb91e44e88da350895c270d23f744f0820c818b7229e7 \ + --hash=sha256:bd93fbeeee850917903583587f4fc3a4eafa022e34572251368238ab5e6bd67f + # via + # nvidia-cufft-cu12 + # nvidia-cusolver-cu12 + # nvidia-cusparse-cu12 + # torch +nvidia-nvtx-cu12==12.8.90 \ + --hash=sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f \ + --hash=sha256:619c8304aedc69f02ea82dd244541a83c3d9d40993381b3b590f1adaed3db41e \ + --hash=sha256:d7ad891da111ebafbf7e015d34879f7112832fc239ff0d7d776b6cb685274615 + # via torch +pyxattr==0.8.1 \ + --hash=sha256:48c578ecf8ea0bd4351b1752470e301a90a3761c7c21f00f953dcf6d6fa6ee5a + # via -r requirements.in.utest +pyyaml==6.0.2 \ + --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \ + --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \ + --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \ + --hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e \ + --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \ + --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \ + --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \ + --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \ + --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \ + --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \ + --hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a \ + --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \ + --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \ + --hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 \ + --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \ + --hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 \ + --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \ + --hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a \ + --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \ + --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \ + --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \ + --hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 \ + --hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d \ + --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \ + --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \ + --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \ + --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \ + --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \ + --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \ + --hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 \ + --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 \ + --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \ + --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \ + --hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 \ + --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \ + --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \ + --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \ + --hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f \ + --hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 \ + --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \ + --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \ + --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \ + --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \ + --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \ + --hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 \ + --hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d \ + --hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 \ + --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \ + --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \ + --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \ + --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \ + --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \ + --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4 + # via -r requirements.in.utest +six==1.17.0 \ + --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ + --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 + # via junit-xml +sympy==1.14.0 \ + --hash=sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517 \ + --hash=sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5 + # via torch +tabulate==0.9.0 \ + --hash=sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c \ + --hash=sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f + # via -r requirements.in.utest +torch==2.8.0 \ + --hash=sha256:06fcee8000e5c62a9f3e52a688b9c5abb7c6228d0e56e3452983416025c41381 \ + --hash=sha256:0be92c08b44009d4131d1ff7a8060d10bafdb7ddcb7359ef8d8c5169007ea905 \ + --hash=sha256:1a62a1ec4b0498930e2543535cf70b1bef8c777713de7ceb84cd79115f553767 \ + --hash=sha256:220a06fd7af8b653c35d359dfe1aaf32f65aa85befa342629f716acb134b9710 \ + --hash=sha256:2b2f96814e0345f5a5aed9bf9734efa913678ed19caf6dc2cddb7930672d6128 \ + --hash=sha256:2f4ac52f0130275d7517b03a33d2493bab3693c83dcfadf4f81688ea82147d2e \ + --hash=sha256:5128fe752a355d9308e56af1ad28b15266fe2da5948660fad44de9e3a9e36e8c \ + --hash=sha256:5ae0524688fb6707c57a530c2325e13bb0090b745ba7b4a2cd6a3ce262572916 \ + --hash=sha256:619c2869db3ada2c0105487ba21b5008defcc472d23f8b80ed91ac4a380283b0 \ + --hash=sha256:65616ca8ec6f43245e1f5f296603e33923f4c30f93d65e103d9e50c25b35150b \ + --hash=sha256:659df54119ae03e83a800addc125856effda88b016dfc54d9f65215c3975be16 \ + --hash=sha256:7b677e17f5a3e69fdef7eb3b9da72622f8d322692930297e4ccb52fefc6c8211 \ + --hash=sha256:83c13411a26fac3d101fe8035a6b0476ae606deb8688e904e796a3534c197def \ + --hash=sha256:89aa9ee820bb39d4d72b794345cccef106b574508dd17dbec457949678c76011 \ + --hash=sha256:8c7ef765e27551b2fbfc0f41bcf270e1292d9bf79f8e0724848b1682be6e80aa \ + --hash=sha256:8f0a9d617a66509ded240add3754e462430a6c1fc5589f86c17b433dd808f97a \ + --hash=sha256:a3f16a58a9a800f589b26d47ee15aca3acf065546137fc2af039876135f4c760 \ + --hash=sha256:a7242b86f42be98ac674b88a4988643b9bc6145437ec8f048fea23f72feb5eca \ + --hash=sha256:b2aca0939fb7e4d842561febbd4ffda67a8e958ff725c1c27e244e85e982173c \ + --hash=sha256:c12fa219f51a933d5f80eeb3a7a5d0cbe9168c0a14bbb4055f1979431660879b \ + --hash=sha256:da6afa31c13b669d4ba49d8a2169f0db2c3ec6bec4af898aa714f401d4c38904 \ + --hash=sha256:e2fab4153768d433f8ed9279c8133a114a034a61e77a3a104dcdf54388838705 \ + --hash=sha256:e8e5bf982e87e2b59d932769938b698858c64cc53753894be25629bdf5cf2f46 \ + --hash=sha256:e9f071f5b52a9f6970dc8a919694b27a91ae9dc08898b2b988abbef5eddfd1ae + # via -r requirements.in.utest +triton==3.4.0 \ + --hash=sha256:00be2964616f4c619193cb0d1b29a99bd4b001d7dc333816073f92cf2a8ccdeb \ + --hash=sha256:31c1d84a5c0ec2c0f8e8a072d7fd150cab84a9c239eaddc6706c081bfae4eb04 \ + --hash=sha256:7936b18a3499ed62059414d7df563e6c163c5e16c3773678a3ee3d417865035d \ + --hash=sha256:7b70f5e6a41e52e48cfc087436c8a28c17ff98db369447bcaff3b887a3ab4467 \ + --hash=sha256:7ff2785de9bc02f500e085420273bb5cc9c9bb767584a4aa28d6e360cec70128 \ + --hash=sha256:98e5c1442eaeabae2e2452ae765801bd53cd4ce873cab0d1bdd59a32ab2d9397 + # via torch +typing-extensions==4.15.0 \ + --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \ + --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 + # via torch + +# The following packages are considered to be unsafe in a requirements file: +setuptools==80.9.0 \ + --hash=sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 \ + --hash=sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c + # via triton From 9377a99877afe13ee352bfb94c2bd24c5d06caf1 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Wed, 24 Sep 2025 16:04:05 -0400 Subject: [PATCH 145/172] Trying setting pip proxy. Signed-off-by: Phil Henderson --- utils/docker/Dockerfile.el.8 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index 9108b8aab7d..f7dfa2c3fd2 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -70,8 +70,11 @@ ENV VIRTUAL_ENV=/home/daos/venv/ # Install latest versions of python tools. COPY requirements-build.txt requirements-utest.txt ./ -RUN python3 -m pip --no-cache-dir install --upgrade pip && \ - python3 -m pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt +RUN source /home/daos/venv/bin/activate && \ + touch /home/daos/venv/pip.conf && \ + pip config set global.proxy $HTTPS_PROXY && \ + pip --no-cache-dir install --upgrade pip && \ + pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt WORKDIR /home/daos/pre RUN mkdir -p /home/daos/pre/site_scons/prereq_tools /home/daos/pre/site_scons/components From aa3bf09492a054975831f36fa1b32cdf372f3288 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Wed, 24 Sep 2025 16:23:32 -0400 Subject: [PATCH 146/172] Use the correct python version in the dockerfile Signed-off-by: Phil Henderson --- Jenkinsfile | 2 +- utils/docker/Dockerfile.el.8 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b3014d0ae92..bc7974dcadc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1257,7 +1257,7 @@ pipeline { } agent { dockerfile { - filename 'utils/docker/Dockerfile.code_coverage' + filename 'utils/docker/Dockerfile.el.8' label 'docker_runner' additionalBuildArgs dockerBuildArgs(add_repos: false) + " --build-arg PYTHON_VERSION=${env.PYTHON_VERSION}" diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index f7dfa2c3fd2..0fc5fe6d237 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -64,7 +64,7 @@ ARG JENKINS_URL USER daos_server:daos_server # Setup a python venv so that python packages can be installed locally. -RUN python3 -m venv /home/daos/venv +RUN python${PYTHON_VERSION} -m venv /home/daos/venv ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ From 1b974dd54512bb114c08c1dbe82ddc90e5fe4cea Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Wed, 24 Sep 2025 16:32:06 -0400 Subject: [PATCH 147/172] Add missing Dockefile ARG. Signed-off-by: Phil Henderson --- utils/docker/Dockerfile.el.8 | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index 0fc5fe6d237..6801a2301cf 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -64,6 +64,7 @@ ARG JENKINS_URL USER daos_server:daos_server # Setup a python venv so that python packages can be installed locally. +ARG PYTHON_VERSION=3.11 RUN python${PYTHON_VERSION} -m venv /home/daos/venv ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ From 00c4e1abf86c6141721ef7242f5bef70de598595 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Wed, 24 Sep 2025 17:59:24 -0400 Subject: [PATCH 148/172] Remove the no longer needed storage_estimator workaround Signed-off-by: Phil Henderson --- ci/unit/test_main_node.sh | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 50f230350ab..6060adbe5b0 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -80,18 +80,8 @@ fi rm -rf "$test_log_dir" -# Use default python as that's where storage_estimator is installed. : "${PYTHON_VERSION:=3.11}" "python${PYTHON_VERSION}" -m venv venv - -# Workaround until we have a setup.py script for the storage estimator and we're able to do this: -# pip install /opt/daos/lib64/python3.6/site-packages/storage_estimator -cp -r /opt/daos/lib64/python3.6/site-packages/storage_estimator \ - "venv/lib64/python${PYTHON_VERSION}/site-packages/" -mkdir venv/lib64/daos_srv -cp -r /opt/daos/lib64/daos_srv/libvos_size.so venv/lib64/daos_srv/ -cp /opt/daos/lib64/libdfs.so venv/lib64/ - # shellcheck disable=SC1091 source venv/bin/activate touch venv/pip.conf From 1ca09d06c8b1193e37267180173e5d30a09901bc Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Wed, 24 Sep 2025 23:52:45 -0400 Subject: [PATCH 149/172] Fix pip config setup. Signed-off-by: Phil Henderson --- ci/code_coverage_report.sh | 3 --- ci/unit/test_main_node.sh | 3 --- ci/unit/test_nlt_node.sh | 5 ----- utils/docker/Dockerfile.el.8 | 2 -- utils/docker/Dockerfile.el.9 | 3 ++- utils/docker/Dockerfile.leap.15 | 3 ++- utils/scripts/helpers/repo-helper-el8.sh | 2 ++ utils/scripts/helpers/repo-helper-el9.sh | 2 ++ utils/scripts/helpers/repo-helper-leap15.sh | 2 ++ utils/scripts/helpers/repo-helper-ubuntu.sh | 2 ++ utils/scripts/install-el9.sh | 6 ++++-- utils/scripts/install-leap15.sh | 4 +++- utils/scripts/install-ubuntu.sh | 6 ++++-- 13 files changed, 23 insertions(+), 20 deletions(-) diff --git a/ci/code_coverage_report.sh b/ci/code_coverage_report.sh index 373670b9d7a..54f576beaf9 100755 --- a/ci/code_coverage_report.sh +++ b/ci/code_coverage_report.sh @@ -9,9 +9,6 @@ if [[ -n $(find . -name "code_coverage.json") ]]; then "python${PYTHON_VERSION}" -m venv venv # shellcheck disable=SC1091 source venv/bin/activate - touch venv/pip.conf - pip config set global.progress_bar off - pip config set global.no_color true pip install --upgrade pip pip install --requirement requirements-code-coverage.txt diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 6060adbe5b0..468401ccbb8 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -84,9 +84,6 @@ rm -rf "$test_log_dir" "python${PYTHON_VERSION}" -m venv venv # shellcheck disable=SC1091 source venv/bin/activate -touch venv/pip.conf -pip config set global.progress_bar off -pip config set global.no_color true pip install --upgrade pip pip install --requirement requirements-utest.txt pip install /opt/daos/lib/daos/python/ diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index 5f45aaa1009..1ec0d40d311 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -29,13 +29,8 @@ sudo bash -c ". ./utils/sl/setup_local.sh; ./utils/setup_daos_server_helper.sh" "python${PYTHON_VERSION}" -m venv venv # shellcheck disable=SC1091 source venv/bin/activate -touch venv/pip.conf -pip config set global.progress_bar off -pip config set global.no_color true - pip install --upgrade pip pip install --requirement requirements-utest.txt - pip install /opt/daos/lib/daos/python/ # set high open file limit in the shell to avoid extra warning diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index 6801a2301cf..8d684a70789 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -72,8 +72,6 @@ ENV VIRTUAL_ENV=/home/daos/venv/ # Install latest versions of python tools. COPY requirements-build.txt requirements-utest.txt ./ RUN source /home/daos/venv/bin/activate && \ - touch /home/daos/venv/pip.conf && \ - pip config set global.proxy $HTTPS_PROXY && \ pip --no-cache-dir install --upgrade pip && \ pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt diff --git a/utils/docker/Dockerfile.el.9 b/utils/docker/Dockerfile.el.9 index 5187d0d4407..c8c56c9cd09 100644 --- a/utils/docker/Dockerfile.el.9 +++ b/utils/docker/Dockerfile.el.9 @@ -56,7 +56,8 @@ RUN mkdir -p /opt/daos /mnt/daos /var/run/daos_server /var/run/daos_agent /home/ USER daos_server:daos_server # Setup a python venv so that python packages can be installed locally. -RUN python3 -m venv /home/daos/venv +ARG PYTHON_VERSION=3.11 +RUN python${PYTHON_VERSION} -m venv /home/daos/venv ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ diff --git a/utils/docker/Dockerfile.leap.15 b/utils/docker/Dockerfile.leap.15 index 7ea185fb60c..bc2ca3c32bd 100644 --- a/utils/docker/Dockerfile.leap.15 +++ b/utils/docker/Dockerfile.leap.15 @@ -63,7 +63,8 @@ RUN mkdir -p /opt/daos /mnt/daos /var/run/daos_server /var/run/daos_agent /home/ USER daos_server:daos_server # Setup a python venv so that python packages can be installed locally. -RUN python3 -m venv /home/daos/venv +ARG PYTHON_VERSION=3.11 +RUN python${PYTHON_VERSION} -m venv /home/daos/venv ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ diff --git a/utils/scripts/helpers/repo-helper-el8.sh b/utils/scripts/helpers/repo-helper-el8.sh index 88bcf6654aa..c63f6e8c18e 100755 --- a/utils/scripts/helpers/repo-helper-el8.sh +++ b/utils/scripts/helpers/repo-helper-el8.sh @@ -135,5 +135,7 @@ if [ -n "$REPO_FILE_URL" ]; then echo "trusted-host = ${trusted_host}" echo "index-url = https://${trusted_host}/artifactory/api/pypi/pypi-proxy/simple" echo "proxy = \"\"" + echo "progress_bar = off" + echo "no_color = true" } > /etc/pip.conf fi diff --git a/utils/scripts/helpers/repo-helper-el9.sh b/utils/scripts/helpers/repo-helper-el9.sh index f96a144b674..c6c1bd9f558 100644 --- a/utils/scripts/helpers/repo-helper-el9.sh +++ b/utils/scripts/helpers/repo-helper-el9.sh @@ -131,5 +131,7 @@ if [ -n "$REPO_FILE_URL" ]; then echo "trusted-host = ${trusted_host}" echo "index-url = https://${trusted_host}/artifactory/api/pypi/pypi-proxy/simple" echo "proxy = " + echo "progress_bar = off" + echo "no_color = true" } > /etc/pip.conf fi diff --git a/utils/scripts/helpers/repo-helper-leap15.sh b/utils/scripts/helpers/repo-helper-leap15.sh index ab01f2cda51..d46ff976880 100755 --- a/utils/scripts/helpers/repo-helper-leap15.sh +++ b/utils/scripts/helpers/repo-helper-leap15.sh @@ -179,5 +179,7 @@ if [ -n "$REPO_FILE_URL" ]; then echo "trusted-host = ${trusted_host}" echo "index-url = https://${trusted_host}/artifactory/api/pypi/pypi-proxy/simple" echo "proxy = \"\"" + echo "progress_bar = off" + echo "no_color = true" } > /etc/pip.conf fi diff --git a/utils/scripts/helpers/repo-helper-ubuntu.sh b/utils/scripts/helpers/repo-helper-ubuntu.sh index 32cf3663065..59bb970e9c8 100644 --- a/utils/scripts/helpers/repo-helper-ubuntu.sh +++ b/utils/scripts/helpers/repo-helper-ubuntu.sh @@ -116,5 +116,7 @@ if [ -n "$REPO_FILE_URL" ]; then echo "trusted-host = ${trusted_host}" echo "index-url = https://${trusted_host}/artifactory/api/pypi/pypi-proxy/simple" echo "proxy = \"\"" + echo "progress_bar = off" + echo "no_color = true" } > /etc/pip.conf fi diff --git a/utils/scripts/install-el9.sh b/utils/scripts/install-el9.sh index 268f1c109ca..f896bb9a370 100755 --- a/utils/scripts/install-el9.sh +++ b/utils/scripts/install-el9.sh @@ -12,6 +12,8 @@ set -e dnf_install_args="${1:-}" +: "${PYTHON_VERSION:=3.11}" + # shellcheck disable=SC2086 dnf --nodocs install ${dnf_install_args} \ boost-python3-devel \ @@ -71,8 +73,8 @@ dnf --nodocs install ${dnf_install_args} \ pciutils \ pciutils-devel \ protobuf-c-devel \ - python3-devel \ - python3-pip \ + python${PYTHON_VERSION}-devel \ + python${PYTHON_VERSION}-pip \ rpm-build \ sg3_utils \ squashfs-tools \ diff --git a/utils/scripts/install-leap15.sh b/utils/scripts/install-leap15.sh index eedfc908776..153c33c92b0 100755 --- a/utils/scripts/install-leap15.sh +++ b/utils/scripts/install-leap15.sh @@ -14,6 +14,8 @@ arch=$(uname -i) dnf_install_args="${1:-}" +: "${PYTHON_VERSION:=3.11}" + # shellcheck disable=SC2086 dnf --nodocs install ${dnf_install_args} \ boost-devel \ @@ -67,7 +69,7 @@ dnf --nodocs install ${dnf_install_args} \ patchelf \ pciutils \ pciutils-devel \ - python3-devel \ + python${PYTHON_VERSION//./}-devel \ rpm-build \ scons \ sg3_utils \ diff --git a/utils/scripts/install-ubuntu.sh b/utils/scripts/install-ubuntu.sh index 8c41006d70b..a025c24be92 100755 --- a/utils/scripts/install-ubuntu.sh +++ b/utils/scripts/install-ubuntu.sh @@ -16,6 +16,8 @@ arch=$(uname -i) apt_get_install_args="${1:-}" +: "${PYTHON_VERSION:=3.11}" + # shellcheck disable=SC2086 apt-get install ${apt_get_install_args} \ autoconf \ @@ -60,8 +62,8 @@ apt-get install ${apt_get_install_args} \ pciutils \ pkg-config \ ruby \ - python3-dev \ - python3-venv \ + python${PYTHON_VERSION}-dev \ + python${PYTHON_VERSION}-venv \ sudo \ uuid-dev \ valgrind \ From 448f20f980584b1e3c683f97549b69f33a22df9f Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Thu, 25 Sep 2025 09:46:13 -0400 Subject: [PATCH 150/172] Adding pip debug. Signed-off-by: Phil Henderson --- src/vos/setup.py | 15 -------------- utils/docker/Dockerfile.code_coverage | 30 --------------------------- utils/docker/Dockerfile.el.8 | 1 + 3 files changed, 1 insertion(+), 45 deletions(-) delete mode 100644 src/vos/setup.py delete mode 100644 utils/docker/Dockerfile.code_coverage diff --git a/src/vos/setup.py b/src/vos/setup.py deleted file mode 100644 index c9581b3e615..00000000000 --- a/src/vos/setup.py +++ /dev/null @@ -1,15 +0,0 @@ -""" -setup.py for packaging storage estimation tool. - -To use type: - -pip install . -""" -from setuptools import find_packages, setup - -setup( - name="storage_estimator", - version="0.1", - packages=find_packages(), - description="DAOS storage estimation tools" -) diff --git a/utils/docker/Dockerfile.code_coverage b/utils/docker/Dockerfile.code_coverage deleted file mode 100644 index a6ebd36fb01..00000000000 --- a/utils/docker/Dockerfile.code_coverage +++ /dev/null @@ -1,30 +0,0 @@ -ARG PYTHON_VERSION= -FROM python:${PYTHON_VERSION} - -# Set working directory -WORKDIR /app - -# Set environment variables -ENV PYTHONDONTWRITEBYTECODE=1 \ - PYTHONUNBUFFERED=1 \ - PIP_NO_CACHE_DIR=1 \ - PIP_DISABLE_PIP_VERSION_CHECK=1 - -# Install basic tools -ARG DAOS_LAB_CA_FILE_URL -# script to setup local repo if available and install packages -COPY ./utils/scripts/helpers/repo-helper-ubuntu.sh /tmp/repo-helper.sh -COPY ./utils/scripts/install-ubuntu.sh /tmp/install.sh - -RUN chmod +x /tmp/repo-helper.sh /tmp/install.sh && \ - /tmp/repo-helper.sh && \ - rm -f /tmp/repo-helper.sh /tmp/install.sh - -# Upgrade pip -RUN pip install --upgrade pip - -# Copy requirements first for better caching -COPY requirements-code-coverage.txt . - -# Install Python dependencies -RUN pip install -r requirements-code-coverage.txt diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index 8d684a70789..d43d3cf7739 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -72,6 +72,7 @@ ENV VIRTUAL_ENV=/home/daos/venv/ # Install latest versions of python tools. COPY requirements-build.txt requirements-utest.txt ./ RUN source /home/daos/venv/bin/activate && \ + pip config list && \ pip --no-cache-dir install --upgrade pip && \ pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt From 9aefb7300c0619994627c6b7bd226c7dfc578269 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Thu, 25 Sep 2025 10:13:49 -0400 Subject: [PATCH 151/172] Fix pip proxy setting. Signed-off-by: Phil Henderson --- utils/scripts/helpers/repo-helper-el8.sh | 2 +- utils/scripts/helpers/repo-helper-leap15.sh | 2 +- utils/scripts/helpers/repo-helper-ubuntu.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/scripts/helpers/repo-helper-el8.sh b/utils/scripts/helpers/repo-helper-el8.sh index c63f6e8c18e..21844db8daa 100755 --- a/utils/scripts/helpers/repo-helper-el8.sh +++ b/utils/scripts/helpers/repo-helper-el8.sh @@ -134,7 +134,7 @@ if [ -n "$REPO_FILE_URL" ]; then echo "[global]" echo "trusted-host = ${trusted_host}" echo "index-url = https://${trusted_host}/artifactory/api/pypi/pypi-proxy/simple" - echo "proxy = \"\"" + echo "proxy = " echo "progress_bar = off" echo "no_color = true" } > /etc/pip.conf diff --git a/utils/scripts/helpers/repo-helper-leap15.sh b/utils/scripts/helpers/repo-helper-leap15.sh index d46ff976880..89618f2bbd8 100755 --- a/utils/scripts/helpers/repo-helper-leap15.sh +++ b/utils/scripts/helpers/repo-helper-leap15.sh @@ -178,7 +178,7 @@ if [ -n "$REPO_FILE_URL" ]; then echo "[global]" echo "trusted-host = ${trusted_host}" echo "index-url = https://${trusted_host}/artifactory/api/pypi/pypi-proxy/simple" - echo "proxy = \"\"" + echo "proxy = " echo "progress_bar = off" echo "no_color = true" } > /etc/pip.conf diff --git a/utils/scripts/helpers/repo-helper-ubuntu.sh b/utils/scripts/helpers/repo-helper-ubuntu.sh index 59bb970e9c8..d36472404c5 100644 --- a/utils/scripts/helpers/repo-helper-ubuntu.sh +++ b/utils/scripts/helpers/repo-helper-ubuntu.sh @@ -115,7 +115,7 @@ if [ -n "$REPO_FILE_URL" ]; then echo "[global]" echo "trusted-host = ${trusted_host}" echo "index-url = https://${trusted_host}/artifactory/api/pypi/pypi-proxy/simple" - echo "proxy = \"\"" + echo "proxy = " echo "progress_bar = off" echo "no_color = true" } > /etc/pip.conf From 11b174e6eebc44607f2014a0ef2fb81cfb8d3836 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Thu, 25 Sep 2025 16:57:53 -0400 Subject: [PATCH 152/172] Updates. Signed-off-by: Phil Henderson --- ci/unit/test_main_node.sh | 5 +++-- ci/unit/test_nlt_node.sh | 3 +++ utils/docker/Dockerfile.el.8 | 1 - utils/docker/Dockerfile.el.9 | 5 +++-- utils/docker/Dockerfile.leap.15 | 5 +++-- utils/docker/Dockerfile.ubuntu | 8 +++++--- 6 files changed, 17 insertions(+), 10 deletions(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 468401ccbb8..1c8abf29989 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -84,6 +84,9 @@ rm -rf "$test_log_dir" "python${PYTHON_VERSION}" -m venv venv # shellcheck disable=SC1091 source venv/bin/activate +touch venv/pip.conf +pip config set global.progress_bar off +pip config set global.no_color true pip install --upgrade pip pip install --requirement requirements-utest.txt pip install /opt/daos/lib/daos/python/ @@ -92,8 +95,6 @@ HTTPS_PROXY="${DAOS_HTTPS_PROXY:-}" utils/run_utest.py $RUN_TEST_VALGRIND \ --no-fail-on-error $VDB_ARG --log_dir="$test_log_dir" $SUDO_ARG # Generate code coverage report if at least one gcda file was generated -find build -name '*.gcno' | sort -n -find build -name '*.gcda' | sort -n if [[ -n $(find build -name "*.gcda") ]]; then pip install --requirement requirements-code-coverage.txt mkdir -p "${test_log_dir}/code_coverage" diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index 1ec0d40d311..4818b3ebc0e 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -29,6 +29,9 @@ sudo bash -c ". ./utils/sl/setup_local.sh; ./utils/setup_daos_server_helper.sh" "python${PYTHON_VERSION}" -m venv venv # shellcheck disable=SC1091 source venv/bin/activate +touch venv/pip.conf +pip config set global.progress_bar off +pip config set global.no_color true pip install --upgrade pip pip install --requirement requirements-utest.txt pip install /opt/daos/lib/daos/python/ diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index d43d3cf7739..8d684a70789 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -72,7 +72,6 @@ ENV VIRTUAL_ENV=/home/daos/venv/ # Install latest versions of python tools. COPY requirements-build.txt requirements-utest.txt ./ RUN source /home/daos/venv/bin/activate && \ - pip config list && \ pip --no-cache-dir install --upgrade pip && \ pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt diff --git a/utils/docker/Dockerfile.el.9 b/utils/docker/Dockerfile.el.9 index c8c56c9cd09..42b415632f2 100644 --- a/utils/docker/Dockerfile.el.9 +++ b/utils/docker/Dockerfile.el.9 @@ -63,8 +63,9 @@ ENV VIRTUAL_ENV=/home/daos/venv/ # Install latest versions of python tools. COPY requirements-build.txt requirements-utest.txt ./ -RUN python3 -m pip --no-cache-dir install --upgrade pip && \ - python3 -m pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt +RUN source /home/daos/venv/bin/activate && \ + pip --no-cache-dir install --upgrade pip && \ + pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt WORKDIR /home/daos/pre RUN mkdir -p /home/daos/pre/site_scons/prereq_tools /home/daos/pre/site_scons/components diff --git a/utils/docker/Dockerfile.leap.15 b/utils/docker/Dockerfile.leap.15 index bc2ca3c32bd..1b4fe2d2131 100644 --- a/utils/docker/Dockerfile.leap.15 +++ b/utils/docker/Dockerfile.leap.15 @@ -70,8 +70,9 @@ ENV VIRTUAL_ENV=/home/daos/venv/ # Install latest versions of python tools. COPY requirements-build.txt requirements-utest.txt ./ -RUN python3 -m pip --no-cache-dir install --upgrade pip && \ - python3 -m pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt +RUN source /home/daos/venv/bin/activate && \ + pip --no-cache-dir install --upgrade pip && \ + pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt WORKDIR /home/daos/pre RUN mkdir -p /home/daos/pre/site_scons/prereq_tools /home/daos/pre/site_scons/components diff --git a/utils/docker/Dockerfile.ubuntu b/utils/docker/Dockerfile.ubuntu index b3790b5f980..f6b403452d6 100644 --- a/utils/docker/Dockerfile.ubuntu +++ b/utils/docker/Dockerfile.ubuntu @@ -54,14 +54,16 @@ RUN mkdir -p /opt/daos /mnt/daos /var/run/daos_server /var/run/daos_agent /home/ USER daos_server:daos_server # Setup a python venv so that python packages can be installed locally. -RUN python3 -m venv /home/daos/venv +ARG PYTHON_VERSION=3.11 +RUN python${PYTHON_VERSION} -m venv /home/daos/venv ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ # Install latest versions of python tools. COPY requirements-build.txt requirements-utest.txt ./ -RUN python3 -m pip --no-cache-dir install --upgrade pip && \ - python3 -m pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt +RUN source /home/daos/venv/bin/activate && \ + pip --no-cache-dir install --upgrade pip && \ + pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt WORKDIR /home/daos/pre RUN mkdir -p /home/daos/pre/site_scons/prereq_tools /home/daos/pre/site_scons/components From a1e323c10f75cee47f87b500702392e97421d8ad Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Tue, 30 Sep 2025 18:10:17 -0400 Subject: [PATCH 153/172] Update HTTPS_PROXY GCOV_PREFIX Signed-off-by: Ding-Hwa Ho --- ci/unit/test_nlt_node.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/ci/unit/test_nlt_node.sh b/ci/unit/test_nlt_node.sh index 4818b3ebc0e..3138150d4e7 100755 --- a/ci/unit/test_nlt_node.sh +++ b/ci/unit/test_nlt_node.sh @@ -41,11 +41,14 @@ sudo prlimit --nofile=1024:262144 --pid $$ prlimit -n cwd="$(pwd)" -export GCOV_PREFIX="${cwd}" -export GCOV_PREFIX_STRIP="7" - -HTTPS_PROXY="${DAOS_HTTPS_PROXY:-}" ./utils/node_local_test.py --max-log-size 1950MiB \ - --dfuse-dir /localhome/jenkins/ --log-usage-save nltir.xml --log-usage-export nltr.json all +# export GCOV_PREFIX="${cwd}" +# export GCOV_PREFIX_STRIP="7" +# HTTPS_PROXY="${DAOS_HTTPS_PROXY:-}" ./utils/node_local_test.py --max-log-size 1950MiB \ +# --dfuse-dir /localhome/jenkins/ --log-usage-save nltir.xml --log-usage-export nltr.json all + +GCOV_PREFIX="${cwd}" GCOV_PREFIX_STRIP="7" HTTPS_PROXY="${DAOS_HTTPS_PROXY:-}" \ + ./utils/node_local_test.py --max-log-size 1950MiB --dfuse-dir /localhome/jenkins/ \ + --log-usage-save nltir.xml --log-usage-export nltr.json all # Generate code coverage report if at least one gcda file was generated if [[ -n $(find build -name "*.gcda") ]]; then From 97ce9f1f478b345d519aaa03fa9ac46393a435af Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 7 Nov 2025 15:50:18 -0500 Subject: [PATCH 154/172] Fix spaces. Signed-off-by: Ding-Hwa Ho --- Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index bfdd927c189..1aa8e9e8bb5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -670,10 +670,10 @@ pipeline { script: './ci/rpm/build_deps.sh' job_step_update( sconsBuild(parallel_build: true, - scons_args: sconsFaultsArgs() + - ' PREFIX=/opt/daos TARGET_TYPE=release', - code_coverage: is_code_coverage(), - build_deps: 'yes')) + scons_args: sconsFaultsArgs() + + ' PREFIX=/opt/daos TARGET_TYPE=release', + code_coverage: is_code_coverage(), + build_deps: 'yes')) sh label: 'Generate RPMs', script: './ci/rpm/gen_rpms.sh suse.lp155 "' + env.DAOS_RELVAL + '"' } From bf5d18a6153155fde5e005a6596b4b952e5825c4 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 12 Nov 2025 15:53:57 -0500 Subject: [PATCH 155/172] Update CGO_LDFLAGS with lgcov Signed-off-by: Ding-Hwa Ho --- src/control/run_go_tests.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/control/run_go_tests.sh b/src/control/run_go_tests.sh index 5f727578283..12e6944cb9b 100755 --- a/src/control/run_go_tests.sh +++ b/src/control/run_go_tests.sh @@ -107,6 +107,9 @@ function setup_environment() if [ -d "$src_include" ]; then echo "including path \"${src_include}\" in CGO_CFLAGS" CGO_CFLAGS+=" -I${src_include}" + if [[ -n $(find "$src_include" -name "*.gcno") ]]; then + CGO_LDFLAGS+=" -lgcov" + fi fi export CGO_CFLAGS LD_LIBRARY_PATH CGO_LDFLAGS } From 091b1512bb61347879ee75138b16da1e706e7ac1 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 12 Nov 2025 19:59:59 -0500 Subject: [PATCH 156/172] Update find \*.gcno Signed-off-by: Ding-Hwa Ho --- src/control/run_go_tests.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/control/run_go_tests.sh b/src/control/run_go_tests.sh index 12e6944cb9b..e1a0376821c 100755 --- a/src/control/run_go_tests.sh +++ b/src/control/run_go_tests.sh @@ -107,7 +107,8 @@ function setup_environment() if [ -d "$src_include" ]; then echo "including path \"${src_include}\" in CGO_CFLAGS" CGO_CFLAGS+=" -I${src_include}" - if [[ -n $(find "$src_include" -name "*.gcno") ]]; then + if [[ -n $(find "$src_include" -name "\*.gcno") ]]; then + echo "including gcov flags to CGO_LDFLAGS .." CGO_LDFLAGS+=" -lgcov" fi fi From 67570bf40df82e212b07b449ee16696e2ef011f6 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 12 Nov 2025 21:08:13 -0500 Subject: [PATCH 157/172] Update find src Signed-off-by: Ding-Hwa Ho --- src/control/run_go_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/control/run_go_tests.sh b/src/control/run_go_tests.sh index e1a0376821c..3c5522471a3 100755 --- a/src/control/run_go_tests.sh +++ b/src/control/run_go_tests.sh @@ -107,7 +107,7 @@ function setup_environment() if [ -d "$src_include" ]; then echo "including path \"${src_include}\" in CGO_CFLAGS" CGO_CFLAGS+=" -I${src_include}" - if [[ -n $(find "$src_include" -name "\*.gcno") ]]; then + if [[ -n $(find "$src_include/.." -name "\*.gcno") ]]; then echo "including gcov flags to CGO_LDFLAGS .." CGO_LDFLAGS+=" -lgcov" fi From 9bf4d709bb02db8da3086435815a2b355e43ac79 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 13 Nov 2025 09:18:31 -0500 Subject: [PATCH 158/172] Update path to find gcno file Signed-off-by: Ding-Hwa Ho --- src/control/run_go_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/control/run_go_tests.sh b/src/control/run_go_tests.sh index 3c5522471a3..0b36a2fbe60 100755 --- a/src/control/run_go_tests.sh +++ b/src/control/run_go_tests.sh @@ -107,7 +107,7 @@ function setup_environment() if [ -d "$src_include" ]; then echo "including path \"${src_include}\" in CGO_CFLAGS" CGO_CFLAGS+=" -I${src_include}" - if [[ -n $(find "$src_include/.." -name "\*.gcno") ]]; then + if [[ -n $(find "$src_include/../.." -name "\*.gcno") ]]; then echo "including gcov flags to CGO_LDFLAGS .." CGO_LDFLAGS+=" -lgcov" fi From 8d9df15e0c17e70e432481b69611f9c2624c2573 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Thu, 13 Nov 2025 16:48:40 -0500 Subject: [PATCH 159/172] Update find Signed-off-by: Ding-Hwa Ho --- src/control/run_go_tests.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/control/run_go_tests.sh b/src/control/run_go_tests.sh index 0b36a2fbe60..53b262b4a93 100755 --- a/src/control/run_go_tests.sh +++ b/src/control/run_go_tests.sh @@ -107,10 +107,10 @@ function setup_environment() if [ -d "$src_include" ]; then echo "including path \"${src_include}\" in CGO_CFLAGS" CGO_CFLAGS+=" -I${src_include}" - if [[ -n $(find "$src_include/../.." -name "\*.gcno") ]]; then - echo "including gcov flags to CGO_LDFLAGS .." - CGO_LDFLAGS+=" -lgcov" - fi + fi + if [[ -n $(find "$build_source" -name "*.gcno") ]]; then + echo "including gcov flags to CGO_LDFLAGS .." + CGO_LDFLAGS+=" -lgcov" fi export CGO_CFLAGS LD_LIBRARY_PATH CGO_LDFLAGS } From b2861b86f968f23a6a104d48bf7bf5e5383afdaa Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Fri, 14 Nov 2025 09:45:14 -0500 Subject: [PATCH 160/172] Fix run_go_tests CGO_LDFLAGS assignment for code coverage. Signed-off-by: Phil Henderson --- src/control/run_go_tests.sh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/control/run_go_tests.sh b/src/control/run_go_tests.sh index 53b262b4a93..ae9cdf53832 100755 --- a/src/control/run_go_tests.sh +++ b/src/control/run_go_tests.sh @@ -96,6 +96,17 @@ function setup_environment() CGO_LDFLAGS+="${SL_SPDK_PREFIX+ -L${SL_SPDK_PREFIX}/lib64/daos_srv}" [[ -z "${SL_SPDK_PREFIX:-}" ]] && CGO_LDFLAGS+=" -L /usr/lib64/daos_srv" CGO_LDFLAGS+="${SL_OFI_PREFIX+ -L${SL_OFI_PREFIX}/lib}" + + build_dir="$(dirname "$build_source")" + # debug + find "$build_dir" -name "*.gcno" + ls "$build_dir" + # end debug + if [[ -n $(find "$build_dir" -name "*.gcno") ]]; then + echo "including gcov flags to CGO_LDFLAGS .." + CGO_LDFLAGS+=" -lgcov" + fi + CGO_CFLAGS=${SL_PREFIX+-I${SL_PREFIX}/include} CGO_CFLAGS+="${SL_MERCURY_PREFIX+ -I${SL_MERCURY_PREFIX}/include}" CGO_CFLAGS+="${SL_SPDK_PREFIX+ -I${SL_SPDK_PREFIX}/include/daos_srv}" @@ -103,15 +114,12 @@ function setup_environment() CGO_CFLAGS+="${SL_OFI_PREFIX+ -I${SL_OFI_PREFIX}/include}" CGO_CFLAGS+="${SL_ARGOBOTS_PREFIX+ -I${SL_ARGOBOTS_PREFIX}/include}" - src_include="$(dirname "$build_source")/src/include" + src_include="$build_dir/src/include" if [ -d "$src_include" ]; then echo "including path \"${src_include}\" in CGO_CFLAGS" CGO_CFLAGS+=" -I${src_include}" fi - if [[ -n $(find "$build_source" -name "*.gcno") ]]; then - echo "including gcov flags to CGO_LDFLAGS .." - CGO_LDFLAGS+=" -lgcov" - fi + export CGO_CFLAGS LD_LIBRARY_PATH CGO_LDFLAGS } From cf57222ac565390de524d00862b4750701da88ab Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Fri, 14 Nov 2025 11:19:25 -0500 Subject: [PATCH 161/172] Skip running abt_stack with code coverage. Signed-off-by: Phil Henderson --- ci/unit/test_main_node.sh | 10 ++++++++-- src/control/run_go_tests.sh | 4 ---- utils/run_utest.py | 6 ++++++ utils/utest.yaml | 2 ++ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 1c8abf29989..a574204c722 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -91,11 +91,17 @@ pip install --upgrade pip pip install --requirement requirements-utest.txt pip install /opt/daos/lib/daos/python/ +WITH_CODE_COVERAGE="no" +if [[ -n $(find build -name "*.gcda") ]]; then + WITH_CODE_COVERAGE="yes" +fi + HTTPS_PROXY="${DAOS_HTTPS_PROXY:-}" utils/run_utest.py $RUN_TEST_VALGRIND \ - --no-fail-on-error $VDB_ARG --log_dir="$test_log_dir" $SUDO_ARG + --no-fail-on-error $VDB_ARG --log_dir="$test_log_dir" $SUDO_ARG \ + --with_code_coverage="$WITH_CODE_COVERAGE" # Generate code coverage report if at least one gcda file was generated -if [[ -n $(find build -name "*.gcda") ]]; then +if [ "$WITH_CODE_COVERAGE" = "true" ]; then pip install --requirement requirements-code-coverage.txt mkdir -p "${test_log_dir}/code_coverage" gcovr --json "${test_log_dir}/code_coverage/code_coverage.json" --gcov-ignore-parse-errors \ diff --git a/src/control/run_go_tests.sh b/src/control/run_go_tests.sh index ae9cdf53832..4efc46c517b 100755 --- a/src/control/run_go_tests.sh +++ b/src/control/run_go_tests.sh @@ -98,10 +98,6 @@ function setup_environment() CGO_LDFLAGS+="${SL_OFI_PREFIX+ -L${SL_OFI_PREFIX}/lib}" build_dir="$(dirname "$build_source")" - # debug - find "$build_dir" -name "*.gcno" - ls "$build_dir" - # end debug if [[ -n $(find "$build_dir" -name "*.gcno") ]]; then echo "including gcov flags to CGO_LDFLAGS .." CGO_LDFLAGS+=" -lgcov" diff --git a/utils/run_utest.py b/utils/run_utest.py index a555e9f8203..cb90a2c3a0c 100755 --- a/utils/run_utest.py +++ b/utils/run_utest.py @@ -543,6 +543,10 @@ def skip(self, path_info, config, args): print(f"Skipped suite {self.name}, running on GitHub Actions") raise SuiteSkipped() + if args.with_code_coverage == "yes" and config.get("skip_with_code_coverage", False): + print(f"Skipped suite {self.name}, code coverage not supported") + raise SuiteSkipped() + return False def needs_aio(self): @@ -640,6 +644,8 @@ def get_args(): help="Device to use for AIO, will create file by default") parser.add_argument('--log_dir', default="/tmp/daos_utest", help="Path to store test logs") + parser.add_argument('--with_code_coverage', choices=['yes', 'no'], default='no', + help='Tests compiled with code coverage') return parser.parse_args() diff --git a/utils/utest.yaml b/utils/utest.yaml index 8710a1bae46..d291d805d36 100644 --- a/utils/utest.yaml +++ b/utils/utest.yaml @@ -212,6 +212,8 @@ - cmd: ["src/engine/tests/abt_stack", "--check-overflow"] env_vars: ABT_STACK_OVERFLOW_CHECK: "mprotect_strict" + skip_with_code_coverage: true - cmd: ["src/engine/tests/abt_stack", "--check-overflow", "--on-pool"] env_vars: ABT_STACK_OVERFLOW_CHECK: "mprotect_strict" + skip_with_code_coverage: true From 4e585db75b63dc0b7de96e453a8ff4b5975b4756 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Fri, 14 Nov 2025 13:58:53 -0500 Subject: [PATCH 162/172] Fix code coverage detection for unit tests Signed-off-by: Phil Henderson --- ci/unit/test_main_node.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index a574204c722..4fc911e1063 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -92,7 +92,7 @@ pip install --requirement requirements-utest.txt pip install /opt/daos/lib/daos/python/ WITH_CODE_COVERAGE="no" -if [[ -n $(find build -name "*.gcda") ]]; then +if [[ -n $(find build -name "*.gcno") ]]; then WITH_CODE_COVERAGE="yes" fi From 5d311607f06118da3e1322041f45fd366dc02e58 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Fri, 14 Nov 2025 15:01:14 -0500 Subject: [PATCH 163/172] Fix skipping abt_stack Signed-off-by: Phil Henderson --- utils/utest.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/utils/utest.yaml b/utils/utest.yaml index d291d805d36..aa7095a2046 100644 --- a/utils/utest.yaml +++ b/utils/utest.yaml @@ -208,12 +208,11 @@ - name: Argobot stack overflow testing base: "BUILD_DIR" memcheck: False + skip_with_code_coverage: true tests: - cmd: ["src/engine/tests/abt_stack", "--check-overflow"] env_vars: ABT_STACK_OVERFLOW_CHECK: "mprotect_strict" - skip_with_code_coverage: true - cmd: ["src/engine/tests/abt_stack", "--check-overflow", "--on-pool"] env_vars: ABT_STACK_OVERFLOW_CHECK: "mprotect_strict" - skip_with_code_coverage: true From a9f94ccd148b72c40d9fc76c8b3689afb72624c5 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Fri, 14 Nov 2025 16:03:52 -0500 Subject: [PATCH 164/172] Fix typo and exclude NLT w/ code coverage Signed-off-by: Phil Henderson --- Jenkinsfile | 2 +- ci/unit/test_main_node.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1aa8e9e8bb5..df4f6c1a109 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -750,7 +750,7 @@ pipeline { stage('NLT on EL 8.8') { when { beforeAgent true - expression { params.CI_NLT_TEST && !skipStage() } + expression { params.CI_NLT_TEST && !skipStage() && !is_code_coverage() } } agent { label params.CI_NLT_1_LABEL diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 4fc911e1063..ae32f38e05f 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -101,7 +101,7 @@ HTTPS_PROXY="${DAOS_HTTPS_PROXY:-}" utils/run_utest.py $RUN_TEST_VALGRIND \ --with_code_coverage="$WITH_CODE_COVERAGE" # Generate code coverage report if at least one gcda file was generated -if [ "$WITH_CODE_COVERAGE" = "true" ]; then +if [ "$WITH_CODE_COVERAGE" = "yes" ]; then pip install --requirement requirements-code-coverage.txt mkdir -p "${test_log_dir}/code_coverage" gcovr --json "${test_log_dir}/code_coverage/code_coverage.json" --gcov-ignore-parse-errors \ From 95d10fae1e7e46ab3adc1021038b593a8c4ad09a Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Mon, 24 Nov 2025 09:01:47 -0500 Subject: [PATCH 165/172] Moving requirements-*.txt changes to PR-16919. Signed-off-by: Phil Henderson --- requirements-build.txt | 47 +----- requirements-code-coverage.txt | 293 +-------------------------------- requirements-utest.txt | 292 +------------------------------- 3 files changed, 16 insertions(+), 616 deletions(-) diff --git a/requirements-build.txt b/requirements-build.txt index 4e91fbc0de8..952e8a520db 100644 --- a/requirements-build.txt +++ b/requirements-build.txt @@ -1,42 +1,5 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --cert=None --client-cert=None --generate-hashes --index-url=None --pip-args=None --strip-extras requirements.in.build -# -distro==1.9.0 \ - --hash=sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed \ - --hash=sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2 - # via -r requirements.in.build -meson==1.9.1 \ - --hash=sha256:f824ab770c041a202f532f69e114c971918ed2daff7ea56583d80642564598d0 - # via -r requirements.in.build -ninja==1.13.0 \ - --hash=sha256:11be2d22027bde06f14c343f01d31446747dbb51e72d00decca2eb99be911e2f \ - --hash=sha256:1c97223cdda0417f414bf864cfb73b72d8777e57ebb279c5f6de368de0062988 \ - --hash=sha256:3c0b40b1f0bba764644385319028650087b4c1b18cdfa6f45cb39a3669b81aa9 \ - --hash=sha256:3d00c692fb717fd511abeb44b8c5d00340c36938c12d6538ba989fe764e79630 \ - --hash=sha256:3d7d7779d12cb20c6d054c61b702139fd23a7a964ec8f2c823f1ab1b084150db \ - --hash=sha256:4a40ce995ded54d9dc24f8ea37ff3bf62ad192b547f6c7126e7e25045e76f978 \ - --hash=sha256:4be9c1b082d244b1ad7ef41eb8ab088aae8c109a9f3f0b3e56a252d3e00f42c1 \ - --hash=sha256:5f8e1e8a1a30835eeb51db05cf5a67151ad37542f5a4af2a438e9490915e5b72 \ - --hash=sha256:60056592cf495e9a6a4bea3cd178903056ecb0943e4de45a2ea825edb6dc8d3e \ - --hash=sha256:6739d3352073341ad284246f81339a384eec091d9851a886dfa5b00a6d48b3e2 \ - --hash=sha256:8cfbb80b4a53456ae8a39f90ae3d7a2129f45ea164f43fadfa15dc38c4aef1c9 \ - --hash=sha256:aa45b4037b313c2f698bc13306239b8b93b4680eb47e287773156ac9e9304714 \ - --hash=sha256:b4f2a072db3c0f944c32793e91532d8948d20d9ab83da9c0c7c15b5768072200 \ - --hash=sha256:be7f478ff9f96a128b599a964fc60a6a87b9fa332ee1bd44fa243ac88d50291c \ - --hash=sha256:d741a5e6754e0bda767e3274a0f0deeef4807f1fec6c0d7921a0244018926ae5 \ - --hash=sha256:e8bad11f8a00b64137e9b315b137d8bb6cbf3086fbdc43bf1f90fd33324d2e96 \ - --hash=sha256:fa2a8bfc62e31b08f83127d1613d10821775a0eb334197154c4d6067b7068ff1 \ - --hash=sha256:fb46acf6b93b8dd0322adc3a4945452a4e774b75b91293bafcc7b7f8e6517dfa \ - --hash=sha256:fb8ee8719f8af47fed145cced4a85f0755dd55d45b2bddaf7431fa89803c5f3e - # via -r requirements.in.build -pyelftools==0.32 \ - --hash=sha256:013df952a006db5e138b1edf6d8a68ecc50630adbd0d83a2d41e7f846163d738 \ - --hash=sha256:6de90ee7b8263e740c8715a925382d4099b354f29ac48ea40d840cf7aa14ace5 - # via -r requirements.in.build -scons==4.9.1 \ - --hash=sha256:bacac880ba2e86d6a156c116e2f8f2bfa82b257046f3ac2666c85c53c615c338 \ - --hash=sha256:d2db1a22eb6039e97cbbb0106f18f435af033d0aad190299c9688378e2810a5e - # via -r requirements.in.build +scons +ninja +meson +distro +pyelftools diff --git a/requirements-code-coverage.txt b/requirements-code-coverage.txt index 841e461650e..4810efd8455 100644 --- a/requirements-code-coverage.txt +++ b/requirements-code-coverage.txt @@ -1,290 +1,3 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --cert=None --client-cert=None --generate-hashes --index-url=None --pip-args=None --strip-extras requirements.in.code_coverage -# -colorlog==6.9.0 \ - --hash=sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff \ - --hash=sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2 - # via gcovr -gcovr==8.3 \ - --hash=sha256:d613a90aeea967b4972fbff69587bf8995ee3cd80df2556983b73141f30642d2 \ - --hash=sha256:faa371f9c4a7f78c9800da655107d4f99f04b718d1c0d9f48cafdcbef0049079 - # via -r requirements.in.code_coverage -jinja2==3.1.6 \ - --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \ - --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 - # via gcovr -junit-xml==1.9 \ - --hash=sha256:de16a051990d4e25a3982b2dd9e89d671067548718866416faec14d9de56db9f \ - --hash=sha256:ec5ca1a55aefdd76d28fcc0b135251d156c7106fa979686a4b48d62b761b4732 - # via -r requirements.in.code_coverage -lxml==6.0.2 \ - --hash=sha256:058027e261afed589eddcfe530fcc6f3402d7fd7e89bfd0532df82ebc1563dba \ - --hash=sha256:063eccf89df5b24e361b123e257e437f9e9878f425ee9aae3144c77faf6da6d8 \ - --hash=sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0 \ - --hash=sha256:08b9d5e803c2e4725ae9e8559ee880e5328ed61aa0935244e0515d7d9dbec0aa \ - --hash=sha256:0a3c150a95fbe5ac91de323aa756219ef9cf7fde5a3f00e2281e30f33fa5fa4f \ - --hash=sha256:0aa7070978f893954008ab73bb9e3c24a7c56c054e00566a21b553dc18105fca \ - --hash=sha256:13dcecc9946dca97b11b7c40d29fba63b55ab4170d3c0cf8c0c164343b9bfdcf \ - --hash=sha256:13e35cbc684aadf05d8711a5d1b5857c92e5e580efa9a0d2be197199c8def607 \ - --hash=sha256:17f68764f35fd78d7c4cc4ef209a184c38b65440378013d24b8aecd327c3e0c8 \ - --hash=sha256:1941354d92699fb5ffe6ed7b32f9649e43c2feb4b97205f75866f7d21aa91452 \ - --hash=sha256:1c06035eafa8404b5cf475bb37a9f6088b0aca288d4ccc9d69389750d5543700 \ - --hash=sha256:1db01e5cf14345628e0cbe71067204db658e2fb8e51e7f33631f5f4735fefd8d \ - --hash=sha256:1e786a464c191ca43b133906c6903a7e4d56bef376b75d97ccbb8ec5cf1f0a4b \ - --hash=sha256:1ea99340b3c729beea786f78c38f60f4795622f36e305d9c9be402201efdc3b7 \ - --hash=sha256:200069a593c5e40b8f6fc0d84d86d970ba43138c3e68619ffa234bc9bb806a4d \ - --hash=sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6 \ - --hash=sha256:21c73b476d3cfe836be731225ec3421fa2f048d84f6df6a8e70433dff1376d5a \ - --hash=sha256:24a8e756c982c001ca8d59e87c80c4d9dcd4d9b44a4cbeb8d9be4482c514d41d \ - --hash=sha256:252a22982dca42f6155125ac76d3432e548a7625d56f5a273ee78a5057216eca \ - --hash=sha256:2593c77efde7bfea7f6389f1ab249b15ed4aa5bc5cb5131faa3b843c429fbedb \ - --hash=sha256:25fcc59afc57d527cfc78a58f40ab4c9b8fd096a9a3f964d2781ffb6eb33f4ed \ - --hash=sha256:2613e67de13d619fd283d58bda40bff0ee07739f624ffee8b13b631abf33083d \ - --hash=sha256:27220da5be049e936c3aca06f174e8827ca6445a4353a1995584311487fc4e3e \ - --hash=sha256:2c8458c2cdd29589a8367c09c8f030f1d202be673f0ca224ec18590b3b9fb694 \ - --hash=sha256:2ca59e7e13e5981175b8b3e4ab84d7da57993eeff53c07764dcebda0d0e64ecd \ - --hash=sha256:2cbcbf6d6e924c28f04a43f3b6f6e272312a090f269eff68a2982e13e5d57659 \ - --hash=sha256:2ed6c667fcbb8c19c6791bbf40b7268ef8ddf5a96940ba9404b9f9a304832f6c \ - --hash=sha256:358d9adae670b63e95bc59747c72f4dc97c9ec58881d4627fe0120da0f90d314 \ - --hash=sha256:370cd78d5855cfbffd57c422851f7d3864e6ae72d0da615fca4dad8c45d375a5 \ - --hash=sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849 \ - --hash=sha256:3b1675e096e17c6fe9c0e8c81434f5736c0739ff9ac6123c87c2d452f48fc938 \ - --hash=sha256:3e3cb08855967a20f553ff32d147e14329b3ae70ced6edc2f282b94afbc74b2a \ - --hash=sha256:3efe1b21c7801ffa29a1112fab3b0f643628c30472d507f39544fd48e9549e34 \ - --hash=sha256:3fee0851639d06276e6b387f1c190eb9d7f06f7f53514e966b26bae46481ec90 \ - --hash=sha256:4077b7c79f31755df33b795dc12119cb557a0106bfdab0d2c2d97bd3cf3dffa6 \ - --hash=sha256:414aaa94e974e23a3e92e7ca5b97d10c0cf37b6481f50911032c69eeb3991bba \ - --hash=sha256:4197fb2534ee05fd3e7afaab5d8bfd6c2e186f65ea7f9cd6a82809c887bd1285 \ - --hash=sha256:442de7530296ef5e188373a1ea5789a46ce90c4847e597856570439621d9c553 \ - --hash=sha256:4468e3b83e10e0317a89a33d28f7aeba1caa4d1a6fd457d115dd4ffe90c5931d \ - --hash=sha256:452b899faa64f1805943ec1c0c9ebeaece01a1af83e130b69cdefeda180bb42c \ - --hash=sha256:45f93e6f75123f88d7f0cfd90f2d05f441b808562bf0bc01070a00f53f5028b5 \ - --hash=sha256:48461bd21625458dd01e14e2c38dd0aea69addc3c4f960c30d9f59d7f93be601 \ - --hash=sha256:4ddb1049fa0579d0cbd00503ad8c58b9ab34d1254c77bc6a5576d96ec7853dba \ - --hash=sha256:5179c60288204e6ddde3f774a93350177e08876eaf3ab78aa3a3649d43eb7d37 \ - --hash=sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f \ - --hash=sha256:5921d924aa5468c939d95c9814fa9f9b5935a6ff4e679e26aaf2951f74043512 \ - --hash=sha256:59c45e125140b2c4b33920d21d83681940ca29f0b83f8629ea1a2196dc8cfe6a \ - --hash=sha256:5aa0fc67ae19d7a64c3fe725dc9a1bb11f80e01f78289d05c6f62545affec438 \ - --hash=sha256:5d444858b9f07cefff6455b983aea9a67f7462ba1f6cbe4a21e8bf6791bf2153 \ - --hash=sha256:60fa43be34f78bebb27812ed90f1925ec99560b0fa1decdb7d12b84d857d31e9 \ - --hash=sha256:6162a86d86893d63084faaf4ff937b3daea233e3682fb4474db07395794fa80d \ - --hash=sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6 \ - --hash=sha256:65ac4a01aba353cfa6d5725b95d7aed6356ddc0a3cd734de00124d285b04b64f \ - --hash=sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534 \ - --hash=sha256:6605c604e6daa9e0d7f0a2137bdc47a2e93b59c60a65466353e37f8272f47c46 \ - --hash=sha256:66328dabea70b5ba7e53d94aa774b733cf66686535f3bc9250a7aab53a91caaf \ - --hash=sha256:6c8963287d7a4c5c9a432ff487c52e9c5618667179c18a204bdedb27310f022f \ - --hash=sha256:6cdaefac66e8b8f30e37a9b4768a391e1f8a16a7526d5bc77a7928408ef68e93 \ - --hash=sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8 \ - --hash=sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f \ - --hash=sha256:6ec0e3f745021bfed19c456647f0298d60a24c9ff86d9d051f52b509663feeb1 \ - --hash=sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322 \ - --hash=sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f \ - --hash=sha256:71695772df6acea9f3c0e59e44ba8ac50c4f125217e84aab21074a1a55e7e5c9 \ - --hash=sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f \ - --hash=sha256:7d2de809c2ee3b888b59f995625385f74629707c9355e0ff856445cdcae682b7 \ - --hash=sha256:80dadc234ebc532e09be1975ff538d154a7fa61ea5031c03d25178855544728f \ - --hash=sha256:817ef43a0c0b4a77bd166dc9a09a555394105ff3374777ad41f453526e37f9cb \ - --hash=sha256:846ae9a12d54e368933b9759052d6206a9e8b250291109c48e350c1f1f49d916 \ - --hash=sha256:875c6b5ab39ad5291588aed6925fac99d0097af0dd62f33c7b43736043d4a2ec \ - --hash=sha256:8799481bbdd212470d17513a54d568f44416db01250f49449647b5ab5b5dccb9 \ - --hash=sha256:8ac6e5811ae2870953390452e3476694196f98d447573234592d30488147404d \ - --hash=sha256:8f8d0cbd0674ee89863a523e6994ac25fd5be9c8486acfc3e5ccea679bad2679 \ - --hash=sha256:901e3b4219fa04ef766885fb40fa516a71662a4c61b80c94d25336b4934b71c0 \ - --hash=sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192 \ - --hash=sha256:9261bb77c2dab42f3ecd9103951aeca2c40277701eb7e912c545c1b16e0e4917 \ - --hash=sha256:945da35a48d193d27c188037a05fec5492937f66fb1958c24fc761fb9d40d43c \ - --hash=sha256:957448ac63a42e2e49531b9d6c0fa449a1970dbc32467aaad46f11545be9af1d \ - --hash=sha256:967aab75434de148ec80597b75062d8123cadf2943fb4281f385141e18b21338 \ - --hash=sha256:98a5e1660dc7de2200b00d53fa00bcd3c35a3608c305d45a7bbcaf29fa16e83d \ - --hash=sha256:995e783eb0374c120f528f807443ad5a83a656a8624c467ea73781fc5f8a8304 \ - --hash=sha256:9b33d21594afab46f37ae58dfadd06636f154923c4e8a4d754b0127554eb2e77 \ - --hash=sha256:a4bf42d2e4cf52c28cc1812d62426b9503cdb0c87a6de81442626aa7d69707ba \ - --hash=sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456 \ - --hash=sha256:a656ca105115f6b766bba324f23a67914d9c728dafec57638e2b92a9dcd76c62 \ - --hash=sha256:a6b5b39cc7e2998f968f05309e666103b53e2edd01df8dc51b90d734c0825444 \ - --hash=sha256:a7c5d5e5f1081955358533be077166ee97ed2571d6a66bdba6ec2f609a715d1a \ - --hash=sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f \ - --hash=sha256:a8ffaeec5dfea5881d4c9d8913a32d10cfe3923495386106e4a24d45300ef79c \ - --hash=sha256:abd44571493973bad4598a3be7e1d807ed45aa2adaf7ab92ab7c62609569b17d \ - --hash=sha256:ac02dc29fd397608f8eb15ac1610ae2f2f0154b03f631e6d724d9e2ad4ee2c84 \ - --hash=sha256:af85529ae8d2a453feee4c780d9406a5e3b17cee0dd75c18bd31adcd584debc3 \ - --hash=sha256:b0c732aa23de8f8aec23f4b580d1e52905ef468afb4abeafd3fec77042abb6fe \ - --hash=sha256:b2142a376b40b6736dfc214fd2902409e9e3857eff554fed2d3c60f097e62a62 \ - --hash=sha256:b22a07cbb82fea98f8a2fd814f3d1811ff9ed76d0fc6abc84eb21527596e7cc8 \ - --hash=sha256:b2c3da8d93cf5db60e8858c17684c47d01fee6405e554fb55018dd85fc23b178 \ - --hash=sha256:b2c7fdaa4d7c3d886a42534adec7cfac73860b89b4e5298752f60aa5984641a0 \ - --hash=sha256:b30d46379644fbfc3ab81f8f82ae4de55179414651f110a1514f0b1f8f6cb2d7 \ - --hash=sha256:b42f4d86b451c2f9d06ffb4f8bbc776e04df3ba070b9fe2657804b1b40277c48 \ - --hash=sha256:b738f7e648735714bbb82bdfd030203360cfeab7f6e8a34772b3c8c8b820568c \ - --hash=sha256:b7fc49c37f1786284b12af63152fe1d0990722497e2d5817acfe7a877522f9a9 \ - --hash=sha256:b8f18914faec94132e5b91e69d76a5c1d7b0c73e2489ea8929c4aaa10b76bbf7 \ - --hash=sha256:bb2f6ca0ae2d983ded09357b84af659c954722bbf04dea98030064996d156048 \ - --hash=sha256:bb4c1847b303835d89d785a18801a883436cdfd5dc3d62947f9c49e24f0f5a2c \ - --hash=sha256:bc456d04db0515ce3320d714a1eac7a97774ff0849e7718b492d957da4631dd4 \ - --hash=sha256:bc532422ff26b304cfb62b328826bd995c96154ffd2bac4544f37dbb95ecaa8f \ - --hash=sha256:be3aaa60da67e6153eb15715cc2e19091af5dc75faef8b8a585aea372507384b \ - --hash=sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0 \ - --hash=sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564 \ - --hash=sha256:c54d83a2188a10ebdba573f16bd97135d06c9ef60c3dc495315c7a28c80a263f \ - --hash=sha256:c7d13103045de1bdd6fe5d61802565f1a3537d70cd3abf596aa0af62761921ee \ - --hash=sha256:cb233f9c95f83707dae461b12b720c1af9c28c2d19208e1be03387222151daf5 \ - --hash=sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62 \ - --hash=sha256:cdcbed9ad19da81c480dfd6dd161886db6096083c9938ead313d94b30aadf272 \ - --hash=sha256:d100fcc8930d697c6561156c6810ab4a508fb264c8b6779e6e61e2ed5e7558f9 \ - --hash=sha256:d4aec24d6b72ee457ec665344a29acb2d35937d5192faebe429ea02633151aad \ - --hash=sha256:d6690ec5ec1cce0385cb20896b16be35247ac8c2046e493d03232f1c2414d321 \ - --hash=sha256:d759cdd7f3e055d6bc8d9bec3ad905227b2e4c785dc16c372eb5b5e83123f48a \ - --hash=sha256:da08e7bb297b04e893d91087df19638dc7a6bb858a954b0cc2b9f5053c922312 \ - --hash=sha256:dacf3c64ef3f7440e3167aa4b49aa9e0fb99e0aa4f9ff03795640bf94531bcb0 \ - --hash=sha256:daf42de090d59db025af61ce6bdb2521f0f102ea0e6ea310f13c17610a97da4c \ - --hash=sha256:dc051506c30b609238d79eda75ee9cab3e520570ec8219844a72a46020901e37 \ - --hash=sha256:de496365750cc472b4e7902a485d3f152ecf57bd3ba03ddd5578ed8ceb4c5964 \ - --hash=sha256:dfb874cfa53340009af6bdd7e54ebc0d21012a60a4e65d927c2e477112e63484 \ - --hash=sha256:e19e0643cc936a22e837f79d01a550678da8377d7d801a14487c10c34ee49c7e \ - --hash=sha256:e237b807d68a61fc3b1e845407e27e5eb8ef69bc93fe8505337c1acb4ee300b6 \ - --hash=sha256:e5867f2651016a3afd8dd2c8238baa66f1e2802f44bc17e236f547ace6647078 \ - --hash=sha256:e748d4cf8fef2526bb2a589a417eba0c8674e29ffcb570ce2ceca44f1e567bf6 \ - --hash=sha256:e77dd455b9a16bbd2a5036a63ddbd479c19572af81b624e79ef422f929eef388 \ - --hash=sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924 \ - --hash=sha256:e8cd2415f372e7e5a789d743d133ae474290a90b9023197fd78f32e2dc6873e2 \ - --hash=sha256:eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df \ - --hash=sha256:ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd \ - --hash=sha256:f2a50c3c1d11cad0ebebbac357a97b26aa79d2bcaf46f256551152aa85d3a4d1 \ - --hash=sha256:f2e3b1a6bb38de0bc713edd4d612969dd250ca8b724be8d460001a387507021c \ - --hash=sha256:f952dacaa552f3bb8834908dddd500ba7d508e6ea6eb8c52eb2d28f48ca06a31 \ - --hash=sha256:fa25afbadead523f7001caf0c2382afd272c315a033a7b06336da2637d92d6ed \ - --hash=sha256:fb8dae0b6b8b7f9e96c26fdd8121522ce5de9bb5538010870bd538683d30e9a2 \ - --hash=sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092 \ - --hash=sha256:fe659f6b5d10fb5a17f00a50eb903eb277a71ee35df4615db573c069bcf967ac - # via gcovr -markupsafe==3.0.2 \ - --hash=sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4 \ - --hash=sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30 \ - --hash=sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0 \ - --hash=sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9 \ - --hash=sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396 \ - --hash=sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13 \ - --hash=sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028 \ - --hash=sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca \ - --hash=sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557 \ - --hash=sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832 \ - --hash=sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0 \ - --hash=sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b \ - --hash=sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579 \ - --hash=sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a \ - --hash=sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c \ - --hash=sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff \ - --hash=sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c \ - --hash=sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22 \ - --hash=sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094 \ - --hash=sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb \ - --hash=sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e \ - --hash=sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5 \ - --hash=sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a \ - --hash=sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d \ - --hash=sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a \ - --hash=sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b \ - --hash=sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8 \ - --hash=sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225 \ - --hash=sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c \ - --hash=sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144 \ - --hash=sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f \ - --hash=sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87 \ - --hash=sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d \ - --hash=sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93 \ - --hash=sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf \ - --hash=sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158 \ - --hash=sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84 \ - --hash=sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb \ - --hash=sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48 \ - --hash=sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171 \ - --hash=sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c \ - --hash=sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6 \ - --hash=sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd \ - --hash=sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d \ - --hash=sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1 \ - --hash=sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d \ - --hash=sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca \ - --hash=sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a \ - --hash=sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29 \ - --hash=sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe \ - --hash=sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798 \ - --hash=sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c \ - --hash=sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8 \ - --hash=sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f \ - --hash=sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f \ - --hash=sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a \ - --hash=sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178 \ - --hash=sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0 \ - --hash=sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79 \ - --hash=sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430 \ - --hash=sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50 - # via jinja2 -pygments==2.19.2 \ - --hash=sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887 \ - --hash=sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b - # via gcovr -pyyaml==6.0.2 \ - --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \ - --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \ - --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \ - --hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e \ - --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \ - --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \ - --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \ - --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \ - --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \ - --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \ - --hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a \ - --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \ - --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \ - --hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 \ - --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \ - --hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 \ - --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \ - --hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a \ - --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \ - --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \ - --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \ - --hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 \ - --hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d \ - --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \ - --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \ - --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \ - --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \ - --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \ - --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \ - --hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 \ - --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 \ - --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \ - --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \ - --hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 \ - --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \ - --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \ - --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \ - --hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f \ - --hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 \ - --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \ - --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \ - --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \ - --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \ - --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \ - --hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 \ - --hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d \ - --hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 \ - --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \ - --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \ - --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \ - --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \ - --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \ - --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4 - # via -r requirements.in.code_coverage -six==1.17.0 \ - --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ - --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 - # via junit-xml +gcovr +junit-xml +pyyaml diff --git a/requirements-utest.txt b/requirements-utest.txt index 7ecf905cc47..15bc5d839cf 100644 --- a/requirements-utest.txt +++ b/requirements-utest.txt @@ -1,284 +1,8 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --allow-unsafe --cert=None --client-cert=None --generate-hashes --index-url=None --pip-args=None --strip-extras requirements.in.utest -# -filelock==3.19.1 \ - --hash=sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58 \ - --hash=sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d - # via torch -fsspec==2025.9.0 \ - --hash=sha256:19fd429483d25d28b65ec68f9f4adc16c17ea2c7c7bf54ec61360d478fb19c19 \ - --hash=sha256:530dc2a2af60a414a832059574df4a6e10cce927f6f4a78209390fe38955cfb7 - # via torch -jinja2==3.1.6 \ - --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \ - --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 - # via torch -junit-xml==1.9 \ - --hash=sha256:de16a051990d4e25a3982b2dd9e89d671067548718866416faec14d9de56db9f \ - --hash=sha256:ec5ca1a55aefdd76d28fcc0b135251d156c7106fa979686a4b48d62b761b4732 - # via -r requirements.in.utest -markupsafe==3.0.2 \ - --hash=sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4 \ - --hash=sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30 \ - --hash=sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0 \ - --hash=sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9 \ - --hash=sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396 \ - --hash=sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13 \ - --hash=sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028 \ - --hash=sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca \ - --hash=sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557 \ - --hash=sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832 \ - --hash=sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0 \ - --hash=sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b \ - --hash=sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579 \ - --hash=sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a \ - --hash=sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c \ - --hash=sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff \ - --hash=sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c \ - --hash=sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22 \ - --hash=sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094 \ - --hash=sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb \ - --hash=sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e \ - --hash=sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5 \ - --hash=sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a \ - --hash=sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d \ - --hash=sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a \ - --hash=sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b \ - --hash=sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8 \ - --hash=sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225 \ - --hash=sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c \ - --hash=sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144 \ - --hash=sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f \ - --hash=sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87 \ - --hash=sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d \ - --hash=sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93 \ - --hash=sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf \ - --hash=sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158 \ - --hash=sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84 \ - --hash=sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb \ - --hash=sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48 \ - --hash=sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171 \ - --hash=sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c \ - --hash=sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6 \ - --hash=sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd \ - --hash=sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d \ - --hash=sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1 \ - --hash=sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d \ - --hash=sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca \ - --hash=sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a \ - --hash=sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29 \ - --hash=sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe \ - --hash=sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798 \ - --hash=sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c \ - --hash=sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8 \ - --hash=sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f \ - --hash=sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f \ - --hash=sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a \ - --hash=sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178 \ - --hash=sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0 \ - --hash=sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79 \ - --hash=sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430 \ - --hash=sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50 - # via jinja2 -mpmath==1.3.0 \ - --hash=sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f \ - --hash=sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c - # via sympy -networkx==3.5 \ - --hash=sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec \ - --hash=sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037 - # via torch -nvidia-cublas-cu12==12.8.4.1 \ - --hash=sha256:47e9b82132fa8d2b4944e708049229601448aaad7e6f296f630f2d1a32de35af \ - --hash=sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142 \ - --hash=sha256:b86f6dd8935884615a0683b663891d43781b819ac4f2ba2b0c9604676af346d0 - # via - # nvidia-cudnn-cu12 - # nvidia-cusolver-cu12 - # torch -nvidia-cuda-cupti-cu12==12.8.90 \ - --hash=sha256:4412396548808ddfed3f17a467b104ba7751e6b58678a4b840675c56d21cf7ed \ - --hash=sha256:bb479dcdf7e6d4f8b0b01b115260399bf34154a1a2e9fe11c85c517d87efd98e \ - --hash=sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182 - # via torch -nvidia-cuda-nvrtc-cu12==12.8.93 \ - --hash=sha256:7a4b6b2904850fe78e0bd179c4b655c404d4bb799ef03ddc60804247099ae909 \ - --hash=sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994 \ - --hash=sha256:fc1fec1e1637854b4c0a65fb9a8346b51dd9ee69e61ebaccc82058441f15bce8 - # via torch -nvidia-cuda-runtime-cu12==12.8.90 \ - --hash=sha256:52bf7bbee900262ffefe5e9d5a2a69a30d97e2bc5bb6cc866688caa976966e3d \ - --hash=sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90 \ - --hash=sha256:c0c6027f01505bfed6c3b21ec546f69c687689aad5f1a377554bc6ca4aa993a8 - # via torch -nvidia-cudnn-cu12==9.10.2.21 \ - --hash=sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8 \ - --hash=sha256:c6288de7d63e6cf62988f0923f96dc339cea362decb1bf5b3141883392a7d65e \ - --hash=sha256:c9132cc3f8958447b4910a1720036d9eff5928cc3179b0a51fb6d167c6cc87d8 - # via torch -nvidia-cufft-cu12==11.3.3.83 \ - --hash=sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74 \ - --hash=sha256:7a64a98ef2a7c47f905aaf8931b69a3a43f27c55530c698bb2ed7c75c0b42cb7 \ - --hash=sha256:848ef7224d6305cdb2a4df928759dca7b1201874787083b6e7550dd6765ce69a - # via torch -nvidia-cufile-cu12==1.13.1.3 \ - --hash=sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc \ - --hash=sha256:4beb6d4cce47c1a0f1013d72e02b0994730359e17801d395bdcbf20cfb3bb00a - # via torch -nvidia-curand-cu12==10.3.9.90 \ - --hash=sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9 \ - --hash=sha256:dfab99248034673b779bc6decafdc3404a8a6f502462201f2f31f11354204acd \ - --hash=sha256:f149a8ca457277da854f89cf282d6ef43176861926c7ac85b2a0fbd237c587ec - # via torch -nvidia-cusolver-cu12==11.7.3.90 \ - --hash=sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450 \ - --hash=sha256:4a550db115fcabc4d495eb7d39ac8b58d4ab5d8e63274d3754df1c0ad6a22d34 \ - --hash=sha256:db9ed69dbef9715071232caa9b69c52ac7de3a95773c2db65bdba85916e4e5c0 - # via torch -nvidia-cusparse-cu12==12.5.8.93 \ - --hash=sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b \ - --hash=sha256:9a33604331cb2cac199f2e7f5104dfbb8a5a898c367a53dfda9ff2acb6b6b4dd \ - --hash=sha256:9b6c161cb130be1a07a27ea6923df8141f3c295852f4b260c65f18f3e0a091dc - # via - # nvidia-cusolver-cu12 - # torch -nvidia-cusparselt-cu12==0.7.1 \ - --hash=sha256:8878dce784d0fac90131b6817b607e803c36e629ba34dc5b433471382196b6a5 \ - --hash=sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623 \ - --hash=sha256:f67fbb5831940ec829c9117b7f33807db9f9678dc2a617fbe781cac17b4e1075 - # via torch -nvidia-nccl-cu12==2.27.3 \ - --hash=sha256:9ddf1a245abc36c550870f26d537a9b6087fb2e2e3d6e0ef03374c6fd19d984f \ - --hash=sha256:adf27ccf4238253e0b826bce3ff5fa532d65fc42322c8bfdfaf28024c0fbe039 - # via torch -nvidia-nvjitlink-cu12==12.8.93 \ - --hash=sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88 \ - --hash=sha256:adccd7161ace7261e01bb91e44e88da350895c270d23f744f0820c818b7229e7 \ - --hash=sha256:bd93fbeeee850917903583587f4fc3a4eafa022e34572251368238ab5e6bd67f - # via - # nvidia-cufft-cu12 - # nvidia-cusolver-cu12 - # nvidia-cusparse-cu12 - # torch -nvidia-nvtx-cu12==12.8.90 \ - --hash=sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f \ - --hash=sha256:619c8304aedc69f02ea82dd244541a83c3d9d40993381b3b590f1adaed3db41e \ - --hash=sha256:d7ad891da111ebafbf7e015d34879f7112832fc239ff0d7d776b6cb685274615 - # via torch -pyxattr==0.8.1 \ - --hash=sha256:48c578ecf8ea0bd4351b1752470e301a90a3761c7c21f00f953dcf6d6fa6ee5a - # via -r requirements.in.utest -pyyaml==6.0.2 \ - --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \ - --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \ - --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \ - --hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e \ - --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \ - --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \ - --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \ - --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \ - --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \ - --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \ - --hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a \ - --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \ - --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \ - --hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 \ - --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \ - --hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 \ - --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \ - --hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a \ - --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \ - --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \ - --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \ - --hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 \ - --hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d \ - --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \ - --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \ - --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \ - --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \ - --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \ - --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \ - --hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 \ - --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 \ - --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \ - --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \ - --hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 \ - --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \ - --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \ - --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \ - --hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f \ - --hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 \ - --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \ - --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \ - --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \ - --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \ - --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \ - --hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 \ - --hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d \ - --hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 \ - --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \ - --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \ - --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \ - --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \ - --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \ - --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4 - # via -r requirements.in.utest -six==1.17.0 \ - --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ - --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 - # via junit-xml -sympy==1.14.0 \ - --hash=sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517 \ - --hash=sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5 - # via torch -tabulate==0.9.0 \ - --hash=sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c \ - --hash=sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f - # via -r requirements.in.utest -torch==2.8.0 \ - --hash=sha256:06fcee8000e5c62a9f3e52a688b9c5abb7c6228d0e56e3452983416025c41381 \ - --hash=sha256:0be92c08b44009d4131d1ff7a8060d10bafdb7ddcb7359ef8d8c5169007ea905 \ - --hash=sha256:1a62a1ec4b0498930e2543535cf70b1bef8c777713de7ceb84cd79115f553767 \ - --hash=sha256:220a06fd7af8b653c35d359dfe1aaf32f65aa85befa342629f716acb134b9710 \ - --hash=sha256:2b2f96814e0345f5a5aed9bf9734efa913678ed19caf6dc2cddb7930672d6128 \ - --hash=sha256:2f4ac52f0130275d7517b03a33d2493bab3693c83dcfadf4f81688ea82147d2e \ - --hash=sha256:5128fe752a355d9308e56af1ad28b15266fe2da5948660fad44de9e3a9e36e8c \ - --hash=sha256:5ae0524688fb6707c57a530c2325e13bb0090b745ba7b4a2cd6a3ce262572916 \ - --hash=sha256:619c2869db3ada2c0105487ba21b5008defcc472d23f8b80ed91ac4a380283b0 \ - --hash=sha256:65616ca8ec6f43245e1f5f296603e33923f4c30f93d65e103d9e50c25b35150b \ - --hash=sha256:659df54119ae03e83a800addc125856effda88b016dfc54d9f65215c3975be16 \ - --hash=sha256:7b677e17f5a3e69fdef7eb3b9da72622f8d322692930297e4ccb52fefc6c8211 \ - --hash=sha256:83c13411a26fac3d101fe8035a6b0476ae606deb8688e904e796a3534c197def \ - --hash=sha256:89aa9ee820bb39d4d72b794345cccef106b574508dd17dbec457949678c76011 \ - --hash=sha256:8c7ef765e27551b2fbfc0f41bcf270e1292d9bf79f8e0724848b1682be6e80aa \ - --hash=sha256:8f0a9d617a66509ded240add3754e462430a6c1fc5589f86c17b433dd808f97a \ - --hash=sha256:a3f16a58a9a800f589b26d47ee15aca3acf065546137fc2af039876135f4c760 \ - --hash=sha256:a7242b86f42be98ac674b88a4988643b9bc6145437ec8f048fea23f72feb5eca \ - --hash=sha256:b2aca0939fb7e4d842561febbd4ffda67a8e958ff725c1c27e244e85e982173c \ - --hash=sha256:c12fa219f51a933d5f80eeb3a7a5d0cbe9168c0a14bbb4055f1979431660879b \ - --hash=sha256:da6afa31c13b669d4ba49d8a2169f0db2c3ec6bec4af898aa714f401d4c38904 \ - --hash=sha256:e2fab4153768d433f8ed9279c8133a114a034a61e77a3a104dcdf54388838705 \ - --hash=sha256:e8e5bf982e87e2b59d932769938b698858c64cc53753894be25629bdf5cf2f46 \ - --hash=sha256:e9f071f5b52a9f6970dc8a919694b27a91ae9dc08898b2b988abbef5eddfd1ae - # via -r requirements.in.utest -triton==3.4.0 \ - --hash=sha256:00be2964616f4c619193cb0d1b29a99bd4b001d7dc333816073f92cf2a8ccdeb \ - --hash=sha256:31c1d84a5c0ec2c0f8e8a072d7fd150cab84a9c239eaddc6706c081bfae4eb04 \ - --hash=sha256:7936b18a3499ed62059414d7df563e6c163c5e16c3773678a3ee3d417865035d \ - --hash=sha256:7b70f5e6a41e52e48cfc087436c8a28c17ff98db369447bcaff3b887a3ab4467 \ - --hash=sha256:7ff2785de9bc02f500e085420273bb5cc9c9bb767584a4aa28d6e360cec70128 \ - --hash=sha256:98e5c1442eaeabae2e2452ae765801bd53cd4ce873cab0d1bdd59a32ab2d9397 - # via torch -typing-extensions==4.15.0 \ - --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \ - --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 - # via torch - -# The following packages are considered to be unsafe in a requirements file: -setuptools==80.9.0 \ - --hash=sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 \ - --hash=sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c - # via triton +tabulate +junit_xml +pyxattr +PyYAML +# Disabled for now because of DAOS-14688 +# pytest +# for pydaos.torch module +torch From 19da5a95114380aa298907f023f0be3b9ca9033a Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Mon, 1 Dec 2025 16:58:07 -0500 Subject: [PATCH 166/172] Fix GHA ubuntu python version. Signed-off-by: Phil Henderson --- utils/scripts/install-ubuntu.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/scripts/install-ubuntu.sh b/utils/scripts/install-ubuntu.sh index 5a5a489c69d..0cc903a194e 100755 --- a/utils/scripts/install-ubuntu.sh +++ b/utils/scripts/install-ubuntu.sh @@ -17,7 +17,7 @@ arch=$(uname -i) apt_get_install_args="${1:-}" -: "${PYTHON_VERSION:=3.11}" +: "${PYTHON_VERSION:=3}" # shellcheck disable=SC2086 apt-get install ${apt_get_install_args} \ From 33f523b5f8fdb7c55555987a9d68a260f5f0aa6d Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Mon, 1 Dec 2025 19:31:08 -0500 Subject: [PATCH 167/172] Fix ubuntu python version Signed-off-by: Phil Henderson --- utils/docker/Dockerfile.ubuntu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/docker/Dockerfile.ubuntu b/utils/docker/Dockerfile.ubuntu index 982d810fee3..f70030dd4ee 100644 --- a/utils/docker/Dockerfile.ubuntu +++ b/utils/docker/Dockerfile.ubuntu @@ -64,7 +64,7 @@ RUN mkdir -p /opt/daos /mnt/daos /var/run/daos_server /var/run/daos_agent /home/ USER daos_server:daos_server # Setup a python venv so that python packages can be installed locally. -ARG PYTHON_VERSION=3.11 +ARG PYTHON_VERSION=3 RUN python${PYTHON_VERSION} -m venv /home/daos/venv ENV PATH=/home/daos/venv/bin:$PATH ENV VIRTUAL_ENV=/home/daos/venv/ From 74999a9d77fb66c0cf93b6f43aa5a2ee52e59e3f Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 3 Dec 2025 15:18:38 -0500 Subject: [PATCH 168/172] Update per Phil's comment. Signed-off-by: Ding-Hwa Ho --- utils/docker/Dockerfile.ubuntu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/docker/Dockerfile.ubuntu b/utils/docker/Dockerfile.ubuntu index f70030dd4ee..effa2dd64d6 100644 --- a/utils/docker/Dockerfile.ubuntu +++ b/utils/docker/Dockerfile.ubuntu @@ -71,7 +71,7 @@ ENV VIRTUAL_ENV=/home/daos/venv/ # Install latest versions of python tools. COPY requirements-build.txt requirements-utest.txt ./ -RUN source /home/daos/venv/bin/activate && \ +RUN . /home/daos/venv/bin/activate && \ pip --no-cache-dir install --upgrade pip && \ pip --no-cache-dir install -r requirements-build.txt -r requirements-utest.txt From 3b64b2c34f772e2d32921cba4e96dd890f536fd1 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Wed, 3 Dec 2025 16:07:06 -0500 Subject: [PATCH 169/172] Fix pylint issue Signed-off-by: Ding-Hwa Ho --- site_scons/site_tools/compiler_setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/site_scons/site_tools/compiler_setup.py b/site_scons/site_tools/compiler_setup.py index 4e1cade6262..87e06a354d3 100644 --- a/site_scons/site_tools/compiler_setup.py +++ b/site_scons/site_tools/compiler_setup.py @@ -35,6 +35,7 @@ def _base_setup(env): Include all our preferred compile options for the chosen compiler and build type. """ + # pylint: disable=too-many-branches if GetOption('help') or GetOption('clean'): return From 314576b2a23381609e47a76f31914f75ae00f780 Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Fri, 5 Dec 2025 17:53:28 -0500 Subject: [PATCH 170/172] Update debug Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index ae32f38e05f..8af9e905edf 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -103,6 +103,9 @@ HTTPS_PROXY="${DAOS_HTTPS_PROXY:-}" utils/run_utest.py $RUN_TEST_VALGRIND \ # Generate code coverage report if at least one gcda file was generated if [ "$WITH_CODE_COVERAGE" = "yes" ]; then pip install --requirement requirements-code-coverage.txt + find . -name "*.gcno" | xargs ls -la + find . -name "*.gcda" | xargs ls -la + find . -name "*.c" | xargs ls -la mkdir -p "${test_log_dir}/code_coverage" gcovr --json "${test_log_dir}/code_coverage/code_coverage.json" --gcov-ignore-parse-errors \ --gcov-ignore-errors=no_working_dir_found From 623e61a5133d685eb36a8ad52fd72c6bc0d8dfdf Mon Sep 17 00:00:00 2001 From: Ding-Hwa Ho Date: Sat, 6 Dec 2025 11:58:52 -0500 Subject: [PATCH 171/172] Add Debug to find build Signed-off-by: Ding-Hwa Ho --- ci/unit/test_main_node.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index 8af9e905edf..e599a4084b4 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -92,7 +92,7 @@ pip install --requirement requirements-utest.txt pip install /opt/daos/lib/daos/python/ WITH_CODE_COVERAGE="no" -if [[ -n $(find build -name "*.gcno") ]]; then +if [[ -n $(find build -name "*.gcno" | xargs ls -la) ]]; then WITH_CODE_COVERAGE="yes" fi From db96ad06ab696fd38d1fefad82578dce60aa6855 Mon Sep 17 00:00:00 2001 From: Phil Henderson Date: Mon, 8 Dec 2025 23:50:36 -0500 Subject: [PATCH 172/172] Debug Signed-off-by: Phil Henderson --- ci/unit/test_main_node.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/unit/test_main_node.sh b/ci/unit/test_main_node.sh index e599a4084b4..29eb7714d1c 100755 --- a/ci/unit/test_main_node.sh +++ b/ci/unit/test_main_node.sh @@ -106,6 +106,7 @@ if [ "$WITH_CODE_COVERAGE" = "yes" ]; then find . -name "*.gcno" | xargs ls -la find . -name "*.gcda" | xargs ls -la find . -name "*.c" | xargs ls -la + find . -name "*.h" | xargs ls -la mkdir -p "${test_log_dir}/code_coverage" gcovr --json "${test_log_dir}/code_coverage/code_coverage.json" --gcov-ignore-parse-errors \ --gcov-ignore-errors=no_working_dir_found