commit:     fd4352b6ea457d99eabaa63598cb60f8975ee6eb
Author:     Igor V. Kovalenko <igor.v.kovalenko <AT> gmail <DOT> com>
AuthorDate: Thu Mar 27 19:18:05 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Mar 28 15:07:00 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fd4352b6

media-sound/qpaeq: Version bump to 17.0, port to PyQt6

Bug: https://bugs.gentoo.org/948110
Bug: https://bugs.gentoo.org/952555
Signed-off-by: Igor V. Kovalenko <igor.v.kovalenko <AT> gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/41328
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-sound/qpaeq/Manifest                         |   1 +
 .../qpaeq/files/pulseaudio-17.0-pr844.patch        | 105 +++++++++++++++++++++
 media-sound/qpaeq/qpaeq-17.0.ebuild                |  48 ++++++++++
 3 files changed, 154 insertions(+)

diff --git a/media-sound/qpaeq/Manifest b/media-sound/qpaeq/Manifest
index 955eec847d0e..8ac038d21ea3 100644
--- a/media-sound/qpaeq/Manifest
+++ b/media-sound/qpaeq/Manifest
@@ -1 +1,2 @@
 DIST pulseaudio-16.1.tar.xz 1545596 BLAKE2B 
535706abcea2cae39834b23c8bdc37f71b0e633de2d8e43ea4425da97a850b57c2f980c318681cbc86cf1e746200609dad41f8b96ecf4568f86d94aa6831c9a1
 SHA512 
33b0b4292f05e0882f3ec822cf5720414bb34c523d80fe287b9740d6be219787c562e8024c9b0d9e2ee010771ca72c7ae4f27df1bbef9c9cb6bb6a23cbcc412f
+DIST pulseaudio-17.0.tar.xz 1566556 BLAKE2B 
781ece3d507916aa681d3b0132689730a621b4d92e45f86570e4d2fdebc4c0025ebe7f7a05046545f9b26caca513e8975f12498fa314524bc67eacaea72842fa
 SHA512 
be0aec46204d9c9188a796fbe41b4cf6f0f5e6b16fa08ce359b8f0f51253f0ade364b89448bbf5faa2af7e59deb6c72194734c3233944250dcfd4f31968a5e97

diff --git a/media-sound/qpaeq/files/pulseaudio-17.0-pr844.patch 
b/media-sound/qpaeq/files/pulseaudio-17.0-pr844.patch
new file mode 100644
index 000000000000..852be09598e9
--- /dev/null
+++ b/media-sound/qpaeq/files/pulseaudio-17.0-pr844.patch
@@ -0,0 +1,105 @@
+https://bugs.gentoo.org/948110
+https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/844
+
+From 5fc34d11f408e86edea57c9b69e5344da8e150ec Mon Sep 17 00:00:00 2001
+From: "Igor V. Kovalenko" <[email protected]>
+Date: Thu, 27 Mar 2025 21:27:23 +0300
+Subject: [PATCH] qpaeq: port to PyQt6
+
+---
+ src/utils/qpaeq | 30 +++++++++++++++---------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/src/utils/qpaeq b/src/utils/qpaeq
+index 7e01d873f4..53b0f461a5 100755
+--- a/src/utils/qpaeq
++++ b/src/utils/qpaeq
+@@ -18,8 +18,8 @@
+ 
+ import os,math,sys
+ try:
+-    from PyQt5 import QtWidgets,QtCore
+-    import dbus.mainloop.pyqt5
++    from PyQt6 import QtWidgets,QtCore
++    import dbus.mainloop.pyqt6
+     import dbus
+ except ImportError as e:
+     sys.stderr.write('There was an error importing needed libraries\n'
+@@ -86,7 +86,7 @@ class QPaeq(QtWidgets.QWidget):
+         self.main_layout=QtWidgets.QVBoxLayout()
+         self.setLayout(self.main_layout)
+         toprow_layout=QtWidgets.QHBoxLayout()
+-        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, 
QtWidgets.QSizePolicy.Fixed)
++        sizePolicy = 
QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, 
QtWidgets.QSizePolicy.Policy.Fixed)
+         sizePolicy.setHorizontalStretch(0)
+         sizePolicy.setVerticalStretch(0)
+         
#sizePolicy.setHeightForWidth(self.profile_box.sizePolicy().hasHeightForWidth())
+@@ -95,7 +95,7 @@ class QPaeq(QtWidgets.QWidget):
+         self.sink_box = QtWidgets.QComboBox()
+         self.sink_box.setSizePolicy(sizePolicy)
+         self.sink_box.setDuplicatesEnabled(False)
+-        
self.sink_box.setInsertPolicy(QtWidgets.QComboBox.InsertAlphabetically)
++        
self.sink_box.setInsertPolicy(QtWidgets.QComboBox.InsertPolicy.InsertAlphabetically)
+         
#self.sink_box.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContents)
+         toprow_layout.addWidget(self.sink_box)
+ 
+@@ -107,21 +107,21 @@ class QPaeq(QtWidgets.QWidget):
+         toprow_layout.addWidget(QtWidgets.QLabel('Preset'))
+         self.profile_box = QtWidgets.QComboBox()
+         self.profile_box.setSizePolicy(sizePolicy)
+-        
self.profile_box.setInsertPolicy(QtWidgets.QComboBox.InsertAlphabetically)
++        
self.profile_box.setInsertPolicy(QtWidgets.QComboBox.InsertPolicy.InsertAlphabetically)
+         
#self.profile_box.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContents)
+         toprow_layout.addWidget(self.profile_box)
+ 
+-        
large_icon_size=self.style().pixelMetric(QtWidgets.QStyle.PM_LargeIconSize)
++        
large_icon_size=self.style().pixelMetric(QtWidgets.QStyle.PixelMetric.PM_LargeIconSize)
+         large_icon_size=QtCore.QSize(large_icon_size,large_icon_size)
+         save_profile=QtWidgets.QToolButton()
+-        
save_profile.setIcon(self.style().standardIcon(QtWidgets.QStyle.SP_DriveFDIcon))
++        
save_profile.setIcon(self.style().standardIcon(QtWidgets.QStyle.StandardPixmap.SP_DriveFDIcon))
+         save_profile.setIconSize(large_icon_size)
+-        save_profile.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly)
++        
save_profile.setToolButtonStyle(QtCore.Qt.ToolButtonStyle.ToolButtonIconOnly)
+         save_profile.clicked.connect(self.save_profile)
+         remove_profile=QtWidgets.QToolButton()
+-        
remove_profile.setIcon(self.style().standardIcon(QtWidgets.QStyle.SP_TrashIcon))
++        
remove_profile.setIcon(self.style().standardIcon(QtWidgets.QStyle.StandardPixmap.SP_TrashIcon))
+         remove_profile.setIconSize(large_icon_size)
+-        remove_profile.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly)
++        
remove_profile.setToolButtonStyle(QtCore.Qt.ToolButtonStyle.ToolButtonIconOnly)
+         remove_profile.clicked.connect(self.remove_profile)
+         toprow_layout.addWidget(save_profile)
+         toprow_layout.addWidget(remove_profile)
+@@ -370,11 +370,11 @@ class SliderArraySub(QtWidgets.QWidget):
+         qt=QtCore.Qt
+         #self.layout().setHorizontalSpacing(1)
+         def add_slider(slider,label, c):
+-            self.layout().addWidget(slider,0,c,qt.AlignHCenter)
+-            self.layout().addWidget(label,1,c,qt.AlignHCenter)
++            self.layout().addWidget(slider,0,c,qt.AlignmentFlag.AlignHCenter)
++            self.layout().addWidget(label,1,c,qt.AlignmentFlag.AlignHCenter)
+             
self.layout().setColumnMinimumWidth(c,max(label.sizeHint().width(),slider.sizeHint().width()))
+         def create_slider(slider_label):
+-            slider=QtWidgets.QSlider(QtCore.Qt.Vertical,self)
++            slider=QtWidgets.QSlider(QtCore.Qt.Orientation.Vertical,self)
+             label=SliderLabel(slider_label,filter_state,self)
+             slider.setRange(-1000,2000)
+             slider.setSingleStep(1)
+@@ -564,11 +564,11 @@ def subdivide(xs, t_points):
+     return left+right
+ 
+ def main():
+-    dbus.mainloop.pyqt5.DBusQtMainLoop(set_as_default=True)
++    dbus.mainloop.pyqt6.DBusQtMainLoop(set_as_default=True)
+     app=QtWidgets.QApplication(sys.argv)
+     qpaeq_main=QPaeq()
+     qpaeq_main.show()
+-    sys.exit(app.exec_())
++    sys.exit(app.exec())
+ 
+ if __name__=='__main__':
+     main()
+-- 
+GitLab
+

diff --git a/media-sound/qpaeq/qpaeq-17.0.ebuild 
b/media-sound/qpaeq/qpaeq-17.0.ebuild
new file mode 100644
index 000000000000..5bfcea52ae61
--- /dev/null
+++ b/media-sound/qpaeq/qpaeq-17.0.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+MY_PV="${PV/_pre*}"
+MY_P="pulseaudio-${MY_PV}"
+
+PYTHON_COMPAT=( python3_{10..13} )
+inherit python-single-r1
+
+DESCRIPTION="Equalizer interface for equalizer sinks of PulseAudio (networked 
sound server)"
+HOMEPAGE="https://www.freedesktop.org/wiki/Software/PulseAudio/";
+SRC_URI="https://freedesktop.org/software/pulseaudio/releases/${MY_P}.tar.xz";
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux 
~x86-linux"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+       ${PYTHON_DEPS}
+       $(python_gen_cond_dep '
+               dev-python/pyqt6[gui,widgets,${PYTHON_USEDEP}]
+               dev-python/dbus-python[${PYTHON_USEDEP}]
+       ')
+       media-sound/pulseaudio-daemon[dbus,fftw]
+"
+PATCHES=(
+       "${FILESDIR}/pulseaudio-17.0-pr844.patch"
+)
+
+src_configure() {
+       :; # do nothing
+}
+
+src_install() {
+       python_doscript src/utils/qpaeq
+}
+
+pkg_postinst() {
+       elog "You will need to load some extra modules to make qpaeq work."
+       elog "You can do that by adding the following two lines in"
+       elog "/etc/pulse/default.pa and restarting pulseaudio:"
+       elog "load-module module-equalizer-sink"
+       elog "load-module module-dbus-protocol"
+}

Reply via email to