[Devel] [PATCH vz10] selftests/damon: add script dir to sys.path for PYTHONSAFEPATH compatibility

Pavel Tikhomirov ptikhomirov at virtuozzo.com
Fri Jun 26 17:28:33 MSK 2026


On 6/26/26 13:34, Eva Kurchatova wrote:
> The RHEL10 import (commit 9f055df11343) changed the Python shebang from
> '#!/usr/bin/python3 -s' to '#!/usr/bin/python3 -sP'. The -P flag enables
> Python's safe path mode (PYTHONSAFEPATH, added in Python 3.11), which
> prevents prepending the script's directory to sys.path.
> 
> This breaks all 7 DAMON Python selftests that import the _damon_sysfs
> helper module located in the same directory:
> 
>   ModuleNotFoundError: No module named '_damon_sysfs'
> 
> Fix this by explicitly adding the script's directory to sys.path before
> importing _damon_sysfs, following the same pattern used in commit
> c3b3eb565bd7 ("tools: ynl: add script dir to sys.path") which fixed the
> identical issue for the YNL tools.
> 
> Fixes: 9f055df11343 ("rh10: import RHEL10 kernel-6.12.0-211.16.1.el10")
> Signed-off-by: Eva Kurchatova <eva.kurchatova at virtuozzo.com>

There is no -sP in mainstream so this test is not meant to be run with those
flags, we should either avoid running this test or just remove the flags.

> 
> https://virtuozzo.atlassian.net/browse/VSTOR-132453
> Feature: fix selftests
> 
> ---
>  tools/testing/selftests/damon/damon_nr_regions.py              | 3 +++
>  tools/testing/selftests/damon/damos_apply_interval.py          | 3 +++
>  tools/testing/selftests/damon/damos_quota.py                   | 3 +++
>  tools/testing/selftests/damon/damos_quota_goal.py              | 3 +++
>  tools/testing/selftests/damon/damos_tried_regions.py           | 3 +++
>  .../selftests/damon/sysfs_update_schemes_tried_regions_hang.py | 3 +++
>  .../damon/sysfs_update_schemes_tried_regions_wss_estimation.py | 3 +++
>  7 files changed, 21 insertions(+)
> 
> diff --git a/tools/testing/selftests/damon/damon_nr_regions.py b/tools/testing/selftests/damon/damon_nr_regions.py
> index cb31cd140d22..8d0a352f7e85 100755
> --- a/tools/testing/selftests/damon/damon_nr_regions.py
> +++ b/tools/testing/selftests/damon/damon_nr_regions.py
> @@ -1,9 +1,12 @@
>  #! /usr/bin/python3 -sP
>  # SPDX-License-Identifier: GPL-2.0
>  
> +import os
>  import subprocess
> +import sys
>  import time
>  
> +sys.path.append(os.path.dirname(os.path.abspath(__file__)))
>  import _damon_sysfs
>  
>  def test_nr_regions(real_nr_regions, min_nr_regions, max_nr_regions):
> diff --git a/tools/testing/selftests/damon/damos_apply_interval.py b/tools/testing/selftests/damon/damos_apply_interval.py
> index e81de3c06a8d..b1d78397bc41 100755
> --- a/tools/testing/selftests/damon/damos_apply_interval.py
> +++ b/tools/testing/selftests/damon/damos_apply_interval.py
> @@ -1,9 +1,12 @@
>  #! /usr/bin/python3 -sP
>  # SPDX-License-Identifier: GPL-2.0
>  
> +import os
>  import subprocess
> +import sys
>  import time
>  
> +sys.path.append(os.path.dirname(os.path.abspath(__file__)))
>  import _damon_sysfs
>  
>  def main():
> diff --git a/tools/testing/selftests/damon/damos_quota.py b/tools/testing/selftests/damon/damos_quota.py
> index 7498b9472e9f..45b8b17f940a 100755
> --- a/tools/testing/selftests/damon/damos_quota.py
> +++ b/tools/testing/selftests/damon/damos_quota.py
> @@ -1,9 +1,12 @@
>  #! /usr/bin/python3 -sP
>  # SPDX-License-Identifier: GPL-2.0
>  
> +import os
>  import subprocess
> +import sys
>  import time
>  
> +sys.path.append(os.path.dirname(os.path.abspath(__file__)))
>  import _damon_sysfs
>  
>  def main():
> diff --git a/tools/testing/selftests/damon/damos_quota_goal.py b/tools/testing/selftests/damon/damos_quota_goal.py
> index da43f69ed30d..a2d3abd780ae 100755
> --- a/tools/testing/selftests/damon/damos_quota_goal.py
> +++ b/tools/testing/selftests/damon/damos_quota_goal.py
> @@ -1,9 +1,12 @@
>  #! /usr/bin/python3 -sP
>  # SPDX-License-Identifier: GPL-2.0
>  
> +import os
>  import subprocess
> +import sys
>  import time
>  
> +sys.path.append(os.path.dirname(os.path.abspath(__file__)))
>  import _damon_sysfs
>  
>  def main():
> diff --git a/tools/testing/selftests/damon/damos_tried_regions.py b/tools/testing/selftests/damon/damos_tried_regions.py
> index 7d1a44dbbe3d..188097475aa4 100755
> --- a/tools/testing/selftests/damon/damos_tried_regions.py
> +++ b/tools/testing/selftests/damon/damos_tried_regions.py
> @@ -1,9 +1,12 @@
>  #! /usr/bin/python3 -sP
>  # SPDX-License-Identifier: GPL-2.0
>  
> +import os
>  import subprocess
> +import sys
>  import time
>  
> +sys.path.append(os.path.dirname(os.path.abspath(__file__)))
>  import _damon_sysfs
>  
>  def main():
> diff --git a/tools/testing/selftests/damon/sysfs_update_schemes_tried_regions_hang.py b/tools/testing/selftests/damon/sysfs_update_schemes_tried_regions_hang.py
> index 1ae639549f6d..b0710fb371f1 100755
> --- a/tools/testing/selftests/damon/sysfs_update_schemes_tried_regions_hang.py
> +++ b/tools/testing/selftests/damon/sysfs_update_schemes_tried_regions_hang.py
> @@ -1,9 +1,12 @@
>  #! /usr/bin/python3 -sP
>  # SPDX-License-Identifier: GPL-2.0
>  
> +import os
>  import subprocess
> +import sys
>  import time
>  
> +sys.path.append(os.path.dirname(os.path.abspath(__file__)))
>  import _damon_sysfs
>  
>  def main():
> diff --git a/tools/testing/selftests/damon/sysfs_update_schemes_tried_regions_wss_estimation.py b/tools/testing/selftests/damon/sysfs_update_schemes_tried_regions_wss_estimation.py
> index b7d35ca4c129..cd8d901b8263 100755
> --- a/tools/testing/selftests/damon/sysfs_update_schemes_tried_regions_wss_estimation.py
> +++ b/tools/testing/selftests/damon/sysfs_update_schemes_tried_regions_wss_estimation.py
> @@ -1,9 +1,12 @@
>  #! /usr/bin/python3 -sP
>  # SPDX-License-Identifier: GPL-2.0
>  
> +import os
>  import subprocess
> +import sys
>  import time
>  
> +sys.path.append(os.path.dirname(os.path.abspath(__file__)))
>  import _damon_sysfs
>  
>  def main():

-- 
Best regards, Pavel Tikhomirov
Senior Software Developer, Virtuozzo.



More information about the Devel mailing list