Python 3.13 removed the deprecated pipes module. Fortunately shlex.quote is a direct replacement for pipes.quote.
With this diff I was able to build qtwebengine under Python 3.13. ok? Index: Makefile =================================================================== RCS file: /cvs/ports/x11/qt5/qtwebengine/Makefile,v diff -u -p -u -r1.69 Makefile --- Makefile 14 Feb 2025 13:30:24 -0000 1.69 +++ Makefile 24 Feb 2025 02:31:18 -0000 @@ -9,7 +9,7 @@ USE_NOBTCFI = Yes QT5NAME = QtWebEngine KDE_COMMIT = 17fd3176988586168bee8654008a097a5f23ec1d KDE_VERSION = 11 -REVISION = 1 +REVISION = 2 # Override VERSION = ${QT5_WEBENGINE_VERSION} Index: patches/patch-src_3rdparty_chromium_build_android_gyp_util_build_utils_py =================================================================== RCS file: patches/patch-src_3rdparty_chromium_build_android_gyp_util_build_utils_py diff -N patches/patch-src_3rdparty_chromium_build_android_gyp_util_build_utils_py --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_3rdparty_chromium_build_android_gyp_util_build_utils_py 24 Feb 2025 02:31:18 -0000 @@ -0,0 +1,23 @@ +Fix build with Python 3.13 + +Index: src/3rdparty/chromium/build/android/gyp/util/build_utils.py +--- src/3rdparty/chromium/build/android/gyp/util/build_utils.py.orig ++++ src/3rdparty/chromium/build/android/gyp/util/build_utils.py +@@ -12,7 +12,7 @@ import fnmatch + import json + import logging + import os +-import pipes ++import shlex + import re + import shutil + import stat +@@ -198,7 +198,7 @@ class CalledProcessError(Exception): + # A user should be able to simply copy and paste the command that failed + # into their shell. + copyable_command = '( cd {}; {} )'.format(os.path.abspath(self.cwd), +- ' '.join(map(pipes.quote, self.args))) ++ ' '.join(map(shlex.quote, self.args))) + return 'Command failed: {}\n{}'.format(copyable_command, self.output) + +