commit: 9557a1f92662c6437ca68f58af90eb3f72043222 Author: Jason A. Donenfeld <zx2c4 <AT> gentoo <DOT> org> AuthorDate: Mon Jan 13 18:06:48 2025 +0000 Commit: Jason A. Donenfeld <zx2c4 <AT> gentoo <DOT> org> CommitDate: Fri Jan 24 04:43:54 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9557a1f9
net-wireless/wpa_supplicant: port to qt6 Closes: https://bugs.gentoo.org/948052 Signed-off-by: Jason A. Donenfeld <zx2c4 <AT> gentoo.org> .../files/wpa_supplicant-2.10-use-qt6.patch | 311 +++++++++++++++++++++ ...t-9999.ebuild => wpa_supplicant-2.10-r6.ebuild} | 24 +- .../wpa_supplicant/wpa_supplicant-9999.ebuild | 23 +- 3 files changed, 336 insertions(+), 22 deletions(-) diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant-2.10-use-qt6.patch b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.10-use-qt6.patch new file mode 100644 index 000000000000..2dd2b753763f --- /dev/null +++ b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.10-use-qt6.patch @@ -0,0 +1,311 @@ +From 0ead8bb4889977af735f4d0b578497830ee6d6f7 Mon Sep 17 00:00:00 2001 +From: "Jason A. Donenfeld" <[email protected]> +Date: Fri, 10 Jan 2025 03:43:23 +0100 +Subject: [PATCH] wpa_gui: Port to Qt6 + +This appears to be working. Fairly straight forward. Lightly tested. +Distros are getting ready to remove Qt5, so this is somewhat important +to do. + +Signed-off-by: Jason A. Donenfeld <[email protected]> +--- + wpa_supplicant/wpa_gui-qt4/eventhistory.h | 2 +- + wpa_supplicant/wpa_gui-qt4/main.cpp | 8 ++++---- + wpa_supplicant/wpa_gui-qt4/networkconfig.cpp | 8 ++++---- + wpa_supplicant/wpa_gui-qt4/networkconfig.h | 2 +- + wpa_supplicant/wpa_gui-qt4/peers.cpp | 10 +++++----- + wpa_supplicant/wpa_gui-qt4/peers.h | 2 +- + wpa_supplicant/wpa_gui-qt4/scanresults.cpp | 2 +- + wpa_supplicant/wpa_gui-qt4/scanresults.h | 2 +- + wpa_supplicant/wpa_gui-qt4/userdatarequest.h | 2 +- + wpa_supplicant/wpa_gui-qt4/wpagui.cpp | 16 ++++++++-------- + wpa_supplicant/wpa_gui-qt4/wpagui.h | 2 +- + wpa_supplicant/wpa_gui-qt4/wpamsg.h | 4 ++-- + 12 files changed, 30 insertions(+), 30 deletions(-) + +diff --git a/wpa_supplicant/wpa_gui-qt4/eventhistory.h b/wpa_supplicant/wpa_gui-qt4/eventhistory.h +index afd7b6346..2122ab45a 100644 +--- a/wpa_supplicant/wpa_gui-qt4/eventhistory.h ++++ b/wpa_supplicant/wpa_gui-qt4/eventhistory.h +@@ -40,7 +40,7 @@ class EventHistory : public QDialog, public Ui::EventHistory + + public: + EventHistory(QWidget *parent = 0, const char *name = 0, +- bool modal = false, Qt::WindowFlags fl = 0); ++ bool modal = false, Qt::WindowFlags fl = Qt::Widget); + ~EventHistory(); + + public slots: +diff --git a/wpa_supplicant/wpa_gui-qt4/main.cpp b/wpa_supplicant/wpa_gui-qt4/main.cpp +index bbd45c6e1..d395aa135 100644 +--- a/wpa_supplicant/wpa_gui-qt4/main.cpp ++++ b/wpa_supplicant/wpa_gui-qt4/main.cpp +@@ -40,10 +40,10 @@ int main(int argc, char *argv[]) + int ret; + + locale = QLocale::system().name(); +- resourceDir = QLibraryInfo::location(QLibraryInfo::TranslationsPath); +- if (!translator.load("wpa_gui_" + locale, resourceDir)) +- translator.load("wpa_gui_" + locale, "lang"); +- app.installTranslator(&translator); ++ resourceDir = QLibraryInfo::path(QLibraryInfo::TranslationsPath); ++ if (translator.load("wpa_gui_" + locale, resourceDir) || ++ translator.load("wpa_gui_" + locale, "lang")) ++ app.installTranslator(&translator); + + WpaGui w(&app); + +diff --git a/wpa_supplicant/wpa_gui-qt4/networkconfig.cpp b/wpa_supplicant/wpa_gui-qt4/networkconfig.cpp +index 2727318bc..59af84504 100644 +--- a/wpa_supplicant/wpa_gui-qt4/networkconfig.cpp ++++ b/wpa_supplicant/wpa_gui-qt4/networkconfig.cpp +@@ -37,7 +37,7 @@ NetworkConfig::NetworkConfig(QWidget *parent, const char *, bool, + SLOT(authChanged(int))); + connect(cancelButton, SIGNAL(clicked()), this, SLOT(close())); + connect(addButton, SIGNAL(clicked()), this, SLOT(addNetwork())); +- connect(encrSelect, SIGNAL(activated(const QString &)), this, ++ connect(encrSelect, SIGNAL(textActivated(const QString &)), this, + SLOT(encrChanged(const QString &))); + connect(removeButton, SIGNAL(clicked()), this, SLOT(removeNetwork())); + connect(eapSelect, SIGNAL(activated(int)), this, +@@ -204,8 +204,8 @@ void NetworkConfig::addNetwork() + } + + if (idstrEdit->isEnabled() && !idstrEdit->text().isEmpty()) { +- QRegExp rx("^(\\w|-)+$"); +- if (rx.indexIn(idstrEdit->text()) < 0) { ++ QRegularExpression rx("^(\\w|-)+$"); ++ if (!rx.match(idstrEdit->text()).hasMatch()) { + QMessageBox::warning( + this, tr("Network ID Error"), + tr("Network ID String contains non-word " +@@ -797,7 +797,7 @@ void NetworkConfig::removeNetwork() + tr("This will permanently remove the network\n" + "from the configuration. Do you really want\n" + "to remove this network?"), +- tr("Yes"), tr("No")) != 0) ++ QMessageBox::Yes, QMessageBox::No) != 0) + return; + + snprintf(cmd, sizeof(cmd), "REMOVE_NETWORK %d", edit_network_id); +diff --git a/wpa_supplicant/wpa_gui-qt4/networkconfig.h b/wpa_supplicant/wpa_gui-qt4/networkconfig.h +index fd09dec54..a3a7d9792 100644 +--- a/wpa_supplicant/wpa_gui-qt4/networkconfig.h ++++ b/wpa_supplicant/wpa_gui-qt4/networkconfig.h +@@ -20,7 +20,7 @@ class NetworkConfig : public QDialog, public Ui::NetworkConfig + + public: + NetworkConfig(QWidget *parent = 0, const char *name = 0, +- bool modal = false, Qt::WindowFlags fl = 0); ++ bool modal = false, Qt::WindowFlags fl = Qt::Widget); + ~NetworkConfig(); + + virtual void paramsFromScanResults(QTreeWidgetItem *sel); +diff --git a/wpa_supplicant/wpa_gui-qt4/peers.cpp b/wpa_supplicant/wpa_gui-qt4/peers.cpp +index 0a0b3ffcb..268aba8b3 100644 +--- a/wpa_supplicant/wpa_gui-qt4/peers.cpp ++++ b/wpa_supplicant/wpa_gui-qt4/peers.cpp +@@ -403,7 +403,7 @@ void Peers::ctx_p2p_start_group() + + void Peers::add_station(QString info) + { +- QStringList lines = info.split(QRegExp("\\n")); ++ QStringList lines = info.split(QRegularExpression("\\n")); + QString name; + + for (QStringList::Iterator it = lines.begin(); +@@ -518,7 +518,7 @@ void Peers::add_p2p_group_client(QStandardItem * /*parent*/, QString params) + */ + + QStringList items = +- params.split(QRegExp(" (?=[^']*('[^']*'[^']*)*$)")); ++ params.split(QRegularExpression(" (?=[^']*('[^']*'[^']*)*$)")); + QString addr = ""; + QString name = ""; + int config_methods = 0; +@@ -591,7 +591,7 @@ bool Peers::add_bss(const char *cmd) + QString ssid, bssid, flags, wps_name, pri_dev_type; + int id = -1; + +- QStringList lines = bss.split(QRegExp("\\n")); ++ QStringList lines = bss.split(QRegularExpression("\\n")); + for (QStringList::Iterator it = lines.begin(); + it != lines.end(); it++) { + int pos = (*it).indexOf('=') + 1; +@@ -643,7 +643,7 @@ bool Peers::add_bss(const char *cmd) + item->setData(ssid, peer_role_ssid); + model.appendRow(item); + +- lines = bss.split(QRegExp("\\n")); ++ lines = bss.split(QRegularExpression("\\n")); + for (QStringList::Iterator it = lines.begin(); + it != lines.end(); it++) { + if ((*it).startsWith("p2p_group_client:")) +@@ -903,7 +903,7 @@ void Peers::event_notify(WpaMsg msg) + * group_capab=0x0 + */ + QStringList items = +- text.split(QRegExp(" (?=[^']*('[^']*'[^']*)*$)")); ++ text.split(QRegularExpression(" (?=[^']*('[^']*'[^']*)*$)")); + QString addr = items[1]; + QString name = ""; + QString pri_dev_type; +diff --git a/wpa_supplicant/wpa_gui-qt4/peers.h b/wpa_supplicant/wpa_gui-qt4/peers.h +index bb7373749..c44bba99a 100644 +--- a/wpa_supplicant/wpa_gui-qt4/peers.h ++++ b/wpa_supplicant/wpa_gui-qt4/peers.h +@@ -22,7 +22,7 @@ class Peers : public QDialog, public Ui::Peers + + public: + Peers(QWidget *parent = 0, const char *name = 0, +- bool modal = false, Qt::WindowFlags fl = 0); ++ bool modal = false, Qt::WindowFlags fl = Qt::Widget); + ~Peers(); + void setWpaGui(WpaGui *_wpagui); + void event_notify(WpaMsg msg); +diff --git a/wpa_supplicant/wpa_gui-qt4/scanresults.cpp b/wpa_supplicant/wpa_gui-qt4/scanresults.cpp +index a2e3072fb..ba04b4f38 100644 +--- a/wpa_supplicant/wpa_gui-qt4/scanresults.cpp ++++ b/wpa_supplicant/wpa_gui-qt4/scanresults.cpp +@@ -77,7 +77,7 @@ void ScanResults::updateResults() + + QString ssid, bssid, freq, signal, flags; + +- QStringList lines = bss.split(QRegExp("\\n")); ++ QStringList lines = bss.split(QRegularExpression("\\n")); + for (QStringList::Iterator it = lines.begin(); + it != lines.end(); it++) { + int pos = (*it).indexOf('=') + 1; +diff --git a/wpa_supplicant/wpa_gui-qt4/scanresults.h b/wpa_supplicant/wpa_gui-qt4/scanresults.h +index 2cddd133f..39bba90ce 100644 +--- a/wpa_supplicant/wpa_gui-qt4/scanresults.h ++++ b/wpa_supplicant/wpa_gui-qt4/scanresults.h +@@ -20,7 +20,7 @@ class ScanResults : public QDialog, public Ui::ScanResults + + public: + ScanResults(QWidget *parent = 0, const char *name = 0, +- bool modal = false, Qt::WindowFlags fl = 0); ++ bool modal = false, Qt::WindowFlags fl = Qt::Widget); + ~ScanResults(); + + public slots: +diff --git a/wpa_supplicant/wpa_gui-qt4/userdatarequest.h b/wpa_supplicant/wpa_gui-qt4/userdatarequest.h +index b6d1ad2f4..3f7dccb28 100644 +--- a/wpa_supplicant/wpa_gui-qt4/userdatarequest.h ++++ b/wpa_supplicant/wpa_gui-qt4/userdatarequest.h +@@ -20,7 +20,7 @@ class UserDataRequest : public QDialog, public Ui::UserDataRequest + + public: + UserDataRequest(QWidget *parent = 0, const char *name = 0, +- bool modal = false, Qt::WindowFlags fl = 0); ++ bool modal = false, Qt::WindowFlags fl = Qt::Widget); + ~UserDataRequest(); + + int setParams(WpaGui *_wpagui, const char *reqMsg); +diff --git a/wpa_supplicant/wpa_gui-qt4/wpagui.cpp b/wpa_supplicant/wpa_gui-qt4/wpagui.cpp +index 9404ab424..0c125d90f 100644 +--- a/wpa_supplicant/wpa_gui-qt4/wpagui.cpp ++++ b/wpa_supplicant/wpa_gui-qt4/wpagui.cpp +@@ -99,9 +99,9 @@ WpaGui::WpaGui(QApplication *_app, QWidget *parent, const char *, + connect(disconnectButton, SIGNAL(clicked()), this, SLOT(disconnect())); + connect(scanButton, SIGNAL(clicked()), this, SLOT(scan())); + connect(connectButton, SIGNAL(clicked()), this, SLOT(connectB())); +- connect(adapterSelect, SIGNAL(activated(const QString&)), this, ++ connect(adapterSelect, SIGNAL(textActivated(const QString&)), this, + SLOT(selectAdapter(const QString&))); +- connect(networkSelect, SIGNAL(activated(const QString&)), this, ++ connect(networkSelect, SIGNAL(textActivated(const QString&)), this, + SLOT(selectNetwork(const QString&))); + connect(addNetworkButton, SIGNAL(clicked()), this, SLOT(addNetwork())); + connect(editNetworkButton, SIGNAL(clicked()), this, +@@ -1078,7 +1078,7 @@ void WpaGui::selectNetwork( const QString &sel ) + char reply[10]; + size_t reply_len = sizeof(reply); + +- if (cmd.contains(QRegExp("^\\d+:"))) ++ if (cmd.contains(QRegularExpression("^\\d+:"))) + cmd.truncate(cmd.indexOf(':')); + else + cmd = "any"; +@@ -1095,7 +1095,7 @@ void WpaGui::enableNetwork(const QString &sel) + char reply[10]; + size_t reply_len = sizeof(reply); + +- if (cmd.contains(QRegExp("^\\d+:"))) ++ if (cmd.contains(QRegularExpression("^\\d+:"))) + cmd.truncate(cmd.indexOf(':')); + else if (!cmd.startsWith("all")) { + debug("Invalid editNetwork '%s'", +@@ -1114,7 +1114,7 @@ void WpaGui::disableNetwork(const QString &sel) + char reply[10]; + size_t reply_len = sizeof(reply); + +- if (cmd.contains(QRegExp("^\\d+:"))) ++ if (cmd.contains(QRegularExpression("^\\d+:"))) + cmd.truncate(cmd.indexOf(':')); + else if (!cmd.startsWith("all")) { + debug("Invalid editNetwork '%s'", +@@ -1132,7 +1132,7 @@ void WpaGui::editNetwork(const QString &sel) + QString cmd(sel); + int id = -1; + +- if (cmd.contains(QRegExp("^\\d+:"))) { ++ if (cmd.contains(QRegularExpression("^\\d+:"))) { + cmd.truncate(cmd.indexOf(':')); + id = cmd.toInt(); + } +@@ -1204,7 +1204,7 @@ void WpaGui::removeNetwork(const QString &sel) + char reply[10]; + size_t reply_len = sizeof(reply); + +- if (cmd.contains(QRegExp("^\\d+:"))) ++ if (cmd.contains(QRegularExpression("^\\d+:"))) + cmd.truncate(cmd.indexOf(':')); + else if (!cmd.startsWith("all")) { + debug("Invalid editNetwork '%s'", +@@ -1476,7 +1476,7 @@ void WpaGui::showTrayStatus() + + QString msg, status(buf); + +- QStringList lines = status.split(QRegExp("\\n")); ++ QStringList lines = status.split(QRegularExpression("\\n")); + for (QStringList::Iterator it = lines.begin(); + it != lines.end(); it++) { + int pos = (*it).indexOf('=') + 1; +diff --git a/wpa_supplicant/wpa_gui-qt4/wpagui.h b/wpa_supplicant/wpa_gui-qt4/wpagui.h +index f0a34c97e..898722bd9 100644 +--- a/wpa_supplicant/wpa_gui-qt4/wpagui.h ++++ b/wpa_supplicant/wpa_gui-qt4/wpagui.h +@@ -49,7 +49,7 @@ public: + }; + + WpaGui(QApplication *app, QWidget *parent = 0, const char *name = 0, +- Qt::WindowFlags fl = 0); ++ Qt::WindowFlags fl = Qt::Widget); + ~WpaGui(); + + virtual int ctrlRequest(const char *cmd, char *buf, size_t *buflen); +diff --git a/wpa_supplicant/wpa_gui-qt4/wpamsg.h b/wpa_supplicant/wpa_gui-qt4/wpamsg.h +index 8f2fcdc41..fe36e2044 100644 +--- a/wpa_supplicant/wpa_gui-qt4/wpamsg.h ++++ b/wpa_supplicant/wpa_gui-qt4/wpamsg.h +@@ -10,7 +10,7 @@ + #define WPAMSG_H + + #include <QDateTime> +-#include <QLinkedList> ++#include <QList> + + class WpaMsg { + public: +@@ -30,6 +30,6 @@ private: + QDateTime timestamp; + }; + +-typedef QLinkedList<WpaMsg> WpaMsgList; ++typedef QList<WpaMsg> WpaMsgList; + + #endif /* WPAMSG_H */ +-- +2.48.0 + diff --git a/net-wireless/wpa_supplicant/wpa_supplicant-9999.ebuild b/net-wireless/wpa_supplicant/wpa_supplicant-2.10-r6.ebuild similarity index 96% copy from net-wireless/wpa_supplicant/wpa_supplicant-9999.ebuild copy to net-wireless/wpa_supplicant/wpa_supplicant-2.10-r6.ebuild index ffa8b14e9a08..6f5307e422d3 100644 --- a/net-wireless/wpa_supplicant/wpa_supplicant-9999.ebuild +++ b/net-wireless/wpa_supplicant/wpa_supplicant-2.10-r6.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -18,7 +18,7 @@ else fi SLOT="0" -IUSE="ap broadcom-sta dbus eap-sim eapol-test fasteap +fils +hs2-0 macsec +mbo +mesh p2p privsep ps3 qt5 readline selinux smartcard tdls tkip uncommon-eap-types wep wimax wps" +IUSE="ap broadcom-sta dbus eap-sim eapol-test fasteap +fils +hs2-0 macsec +mbo +mesh p2p privsep ps3 qt6 readline selinux smartcard tdls tkip uncommon-eap-types wep wimax wps" # CONFIG_PRIVSEP=y does not have sufficient support for the new driver # interface functions used for MACsec, so this combination cannot be used @@ -37,11 +37,9 @@ DEPEND=" eap-sim? ( sys-apps/pcsc-lite ) ) !kernel_linux? ( net-libs/libpcap ) - qt5? ( - dev-qt/qtcore:5 - dev-qt/qtgui:5 - dev-qt/qtsvg:5 - dev-qt/qtwidgets:5 + qt6? ( + dev-qt/qtbase:6[gui,widgets] + dev-qt/qtsvg:6 ) readline? ( sys-libs/ncurses:0= @@ -124,6 +122,10 @@ src_prepare() { # bug (912315) eapply "${FILESDIR}/${PN}-2.10-allow-legacy-renegotiation.patch" + eapply "${FILESDIR}/${PN}-2.10-Drop-security-level-to-0-with-OpenSSL-3.0-wh.patch" + + # bug (948052) + eapply "${FILESDIR}/${PN}-2.10-use-qt6.patch" # bug (640492) sed -i 's#-Werror ##' wpa_supplicant/Makefile || die @@ -357,9 +359,9 @@ src_configure() { Kconfig_style_config LIBNL32 fi - if use qt5 ; then + if use qt6 ; then pushd "${S}"/wpa_gui-qt4 > /dev/null || die - eqmake5 wpa_gui.pro + eqmake6 wpa_gui.pro popd > /dev/null || die fi } @@ -373,7 +375,7 @@ src_compile() { emake -C ../src/eap_peer fi - if use qt5; then + if use qt6; then einfo "Building wpa_gui" emake -C "${S}"/wpa_gui-qt4 fi @@ -404,7 +406,7 @@ src_install() { doman doc/docbook/*.{5,8} fi - if use qt5 ; then + if use qt6 ; then into /usr dobin wpa_gui-qt4/wpa_gui doicon wpa_gui-qt4/icons/wpa_gui.svg diff --git a/net-wireless/wpa_supplicant/wpa_supplicant-9999.ebuild b/net-wireless/wpa_supplicant/wpa_supplicant-9999.ebuild index ffa8b14e9a08..9fef0e62ce8c 100644 --- a/net-wireless/wpa_supplicant/wpa_supplicant-9999.ebuild +++ b/net-wireless/wpa_supplicant/wpa_supplicant-9999.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -18,7 +18,7 @@ else fi SLOT="0" -IUSE="ap broadcom-sta dbus eap-sim eapol-test fasteap +fils +hs2-0 macsec +mbo +mesh p2p privsep ps3 qt5 readline selinux smartcard tdls tkip uncommon-eap-types wep wimax wps" +IUSE="ap broadcom-sta dbus eap-sim eapol-test fasteap +fils +hs2-0 macsec +mbo +mesh p2p privsep ps3 qt6 readline selinux smartcard tdls tkip uncommon-eap-types wep wimax wps" # CONFIG_PRIVSEP=y does not have sufficient support for the new driver # interface functions used for MACsec, so this combination cannot be used @@ -37,11 +37,9 @@ DEPEND=" eap-sim? ( sys-apps/pcsc-lite ) ) !kernel_linux? ( net-libs/libpcap ) - qt5? ( - dev-qt/qtcore:5 - dev-qt/qtgui:5 - dev-qt/qtsvg:5 - dev-qt/qtwidgets:5 + qt6? ( + dev-qt/qtbase:6[gui,widgets] + dev-qt/qtsvg:6 ) readline? ( sys-libs/ncurses:0= @@ -125,6 +123,9 @@ src_prepare() { # bug (912315) eapply "${FILESDIR}/${PN}-2.10-allow-legacy-renegotiation.patch" + # bug (948052) + eapply "${FILESDIR}/${PN}-2.10-use-qt6.patch" + # bug (640492) sed -i 's#-Werror ##' wpa_supplicant/Makefile || die } @@ -357,9 +358,9 @@ src_configure() { Kconfig_style_config LIBNL32 fi - if use qt5 ; then + if use qt6 ; then pushd "${S}"/wpa_gui-qt4 > /dev/null || die - eqmake5 wpa_gui.pro + eqmake6 wpa_gui.pro popd > /dev/null || die fi } @@ -373,7 +374,7 @@ src_compile() { emake -C ../src/eap_peer fi - if use qt5; then + if use qt6; then einfo "Building wpa_gui" emake -C "${S}"/wpa_gui-qt4 fi @@ -404,7 +405,7 @@ src_install() { doman doc/docbook/*.{5,8} fi - if use qt5 ; then + if use qt6 ; then into /usr dobin wpa_gui-qt4/wpa_gui doicon wpa_gui-qt4/icons/wpa_gui.svg
