[scarthgap][PATCH] libvirt: fix python3 compatibility in hook_support.py

Massimiliano Minella <[email protected]> Wed, 03 Jun 2026 18:36:18 +0200
Newsgroups org.yoctoproject.lists.meta-virtualization
Message-ID <20260603-backport_fix_libvirt_hook_script-v1-1-81e73d7e2d94@se.com>
From: Massimiliano Minella <[email protected]>

By default Popen expects all the streams to be bytes-like objects but,
in the Popen.communicate() function call, the "input" argument is a
string, making the call fail with the error:

qemu hook error: a bytes-like object is required, not 'str'

Fix the error by setting text mode to True in the subprocess creation.

Also fix the "SyntaxWarning: invalid escape sequence '\w'" in the regex
used to match script names.

Signed-off-by: Massimiliano Minella <[email protected]>
Signed-off-by: Bruce Ashfield <[email protected]>
(cherry picked from commit fb1d9123351c86d7804e78e1518788913fb7c672)

Signed-off-by: Massimiliano Minella <[email protected]>
---
 recipes-extended/libvirt/libvirt/hook_support.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/recipes-extended/libvirt/libvirt/hook_support.py b/recipes-extended/libvirt/libvirt/hook_support.py
index 7c5e2a94..63e78b79 100755
--- a/recipes-extended/libvirt/libvirt/hook_support.py
+++ b/recipes-extended/libvirt/libvirt/hook_support.py
@@ -35,7 +35,7 @@ def main():
 			stdin_save = sys.stdin.readlines()
 		# Match the name name of the hook + a dash + atleast
 		# one alpha-numeric character.
-		matcher = re.compile( "%s-\w+" % hook_name )
+		matcher = re.compile( rf"%s-\w+" % hook_name )
 		for file_name in sorted( os.listdir( hook_dir ) ):
 			file_path = os.path.join( hook_dir, file_name )
 			if matcher.match( file_name ) \
@@ -43,7 +43,7 @@ def main():
 			   and os.path.isfile( file_path ) \
 			   and return_value == 0:
 				cmd = [ file_path ] + hook_args
-				p = subprocess.Popen( cmd, stdin=subprocess.PIPE )
+				p = subprocess.Popen( cmd, stdin=subprocess.PIPE, text=True )
 				p.communicate( input = ''.join( stdin_save ) )[0]
 				return_value = p.wait()
 	except Exception as e:

---
base-commit: 89da4f56b4c510059f8dc1527d289d9fd4fef133
change-id: 20260519-backport_fix_libvirt_hook_script-7f72b9a18d7c

Best regards,
--  
Massimiliano Minella <[email protected]>