OpenVZ / Virtuozzo kernel development (devel@openvz.org)
 help / color / mirror / Atom feed
From: Konstantin Khorenko <khorenko@virtuozzo.com>
Subject: Re: [Devel] [PATCH vz10] selftests/damon: add script dir to sys.path for PYTHONSAFEPATH compatibility
Date: Wed, 19 Aug 2026 16:12:31 +0200	[thread overview]
Message-ID: <d3f2834f-bbdc-4d37-bee9-83729f16b255@virtuozzo.com> (raw)
In-Reply-To: <4492431c-87f8-4de6-9221-4e57107113bc@virtuozzo.com>

On 6/26/26 16:28, Pavel Tikhomirov wrote:
> 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@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.

Well, i have to disagree here.
Yes, mainstream does not have -sP option at the moment,
at the same time they have already accepted the patch
  c3b3eb565bd7 ("tools: ynl: add script dir to sys.path")

which fixes for example tools/net/ynl/pyynl/cli.py (the files was moved later here)
which also lacks -sP python option, but still ther argument

>>>>>>>>
    Python options like PYTHONSAFEPATH or -P [1] do not add script
    directory to PYTHONPATH. ynl depends on this path to build and run.

    [1] This option is default for Fedora rpmbuild since introduction of
        https://fedoraproject.org/wiki/Changes/PythonSafePath
<<<<<<<<

worked fine. So i think that will be a direction in ms.

Currently RHEL10 kernel has ~120 files with "python -sP".

> 
>>
>> 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():
> 


       reply	other threads:[~2026-08-19 14:12 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20260626113435.2210877-1-eva.kurchatova@virtuozzo.com>
     [not found] ` <4492431c-87f8-4de6-9221-4e57107113bc@virtuozzo.com>
2026-08-19 14:12   ` Konstantin Khorenko [this message]
2026-08-19 14:16 ` [Devel] [PATCH RHEL10 COMMIT] " Konstantin Khorenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d3f2834f-bbdc-4d37-bee9-83729f16b255@virtuozzo.com \
    --to=khorenko@virtuozzo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox