commit:     0b6d2f55e5f6d25e2b3bcdb70cccdd4fb37f80fb
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Wed Nov  5 20:44:16 2025 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon Nov 10 22:10:51 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0b6d2f55

dev-embedded/usbprog: Port to Qt6

Closes: https://bugs.gentoo.org/965714
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 .../files/usbprog-0.3.0_p20140828-cmake4-qt6.patch | 230 +++++++++++++++++++++
 .../usbprog/usbprog-0.3.0_p20140828-r3.ebuild      |  55 +++++
 2 files changed, 285 insertions(+)

diff --git 
a/dev-embedded/usbprog/files/usbprog-0.3.0_p20140828-cmake4-qt6.patch 
b/dev-embedded/usbprog/files/usbprog-0.3.0_p20140828-cmake4-qt6.patch
new file mode 100644
index 000000000000..930aaf652ad7
--- /dev/null
+++ b/dev-embedded/usbprog/files/usbprog-0.3.0_p20140828-cmake4-qt6.patch
@@ -0,0 +1,230 @@
+Source: https://github.com/bwalle/usbprog-tools/pull/1
+
+... but squashed for Gentoo's purpose.
+
+From b5728831447d97eda7de4424ef7eb455318942f2 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <[email protected]>
+Date: Wed, 5 Nov 2025 20:14:45 +0100
+Subject: [PATCH 1/4] Bump CMake minimum to 3.16
+
+Signed-off-by: Andreas Sturmlechner <[email protected]>
+---
+ CMakeLists.txt | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c16d2cf..c5d3957 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -16,6 +16,8 @@
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ # 02110-1301, USA.
+ #
++cmake_minimum_required(VERSION 3.16)
++
+ project(usbprog CXX C)
+ 
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
+@@ -24,10 +26,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} 
${CMAKE_SOURCE_DIR}/cmake)
+ # Configuration
+ #
+ 
+-cmake_minimum_required(VERSION 2.6)
+-if ("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 3.0)
+-    cmake_policy(SET CMP0028 NEW)
+-endif ()
+ set (PACKAGE_STRING "usbprog")
+ set (PACKAGE_VERSION "0.3.0")
+ include_directories(${CMAKE_SOURCE_DIR})
+-- 
+2.51.2
+
+
+From 2e7b5825012244a90d989709f3735c8d8f419ce3 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <[email protected]>
+Date: Wed, 5 Nov 2025 20:28:11 +0100
+Subject: [PATCH 2/4] Use auto for QDomDocument::setContent() result
+
+It is QDomDocument::ParseResult in >=Qt-6.5.
+
+Signed-off-by: Andreas Sturmlechner <[email protected]>
+---
+ usbprog/firmwarepool.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/usbprog/firmwarepool.cc b/usbprog/firmwarepool.cc
+index 5ed44d2..35cce2f 100644
+--- a/usbprog/firmwarepool.cc
++++ b/usbprog/firmwarepool.cc
+@@ -428,7 +428,7 @@ void Firmwarepool::readIndex()
+     if (!file.open(QIODevice::ReadOnly))
+         throw core::ParseError("Couldn't open " + filename);
+ 
+-    bool success = doc.setContent(&file);
++    auto success = doc.setContent(&file);
+     file.close();
+     if (!success)
+         throw core::ParseError("Unable to parse '" + filename + "'");
+-- 
+2.51.2
+
+
+From bf992a89fa948f78298b080348ce14c5d444fc57 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <[email protected]>
+Date: Wed, 5 Nov 2025 20:29:50 +0100
+Subject: [PATCH 3/4] Port from QTime to QElapsedTimer
+
+It is obsolete in Qt 5.15
+
+Signed-off-by: Andreas Sturmlechner <[email protected]>
+---
+ gui/qtsleeper.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gui/qtsleeper.cc b/gui/qtsleeper.cc
+index bdd8d03..a089cc5 100644
+--- a/gui/qtsleeper.cc
++++ b/gui/qtsleeper.cc
+@@ -15,7 +15,7 @@
+  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+  */
+ #include <QApplication>
+-#include <QTime>
++#include <QElapsedTimer>
+ 
+ #include <usbprog-core/debug.h>
+ 
+@@ -29,7 +29,7 @@ namespace gui {
+ void QtSleeper::sleep(int ms)
+ {
+     USBPROG_DEBUG_DBG("Qtsleeper: sleep %d ms", ms);
+-    QTime t;
++    QElapsedTimer t;
+     t.start();
+ 
+     while (t.elapsed() < ms)
+-- 
+2.51.2
+
+
+From 2bbe71747dc1b5de1ef3441eb7ac9c90803c8156 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <[email protected]>
+Date: Wed, 5 Nov 2025 20:17:09 +0100
+Subject: [PATCH 4/4] CMake: Port to Qt6, drop USE_QT5 (dropping option to
+ build w/ Qt4)
+
+Signed-off-by: Andreas Sturmlechner <[email protected]>
+---
+ CMakeLists.txt         | 38 +++++++-------------------------------
+ gui/CMakeLists.txt     | 12 ++----------
+ usbprog/CMakeLists.txt |  6 +-----
+ 3 files changed, 10 insertions(+), 46 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c5d3957..d9955c4 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -32,7 +32,6 @@ include_directories(${CMAKE_SOURCE_DIR})
+ include_directories(${CMAKE_BINARY_DIR})
+ 
+ option(BUILD_GUI "Build the Qt GUI" ON)
+-option(USE_QT5 "Use Qt5 instead of Qt4" OFF)
+ option(BUILD_ONLY_CORE "Builds only the usbprog-core lib and a simple CLI 
program (has no library dependencies apart from libusb" OFF)
+ option(USE_LEGACY_LIBUSB "Ignore the fact that libusb-1.0 is present and look 
for legacy libusb 0.1" OFF)
+ 
+@@ -93,35 +92,13 @@ set (EXTRA_LIBS ${EXTRA_LIBS} ${LIBUSB_LIBRARIES})
+ 
+ if (NOT BUILD_ONLY_CORE)
+ 
+-    if (USE_QT5)
+-
+-        find_package(Qt5Core)
+-        find_package(Qt5Network)
+-        find_package(Qt5Xml)
+-        set(EXTRA_LIBS ${EXTRA_LIBS} Qt5::Core Qt5::Network Qt5::Xml)
+-        if (BUILD_GUI)
+-            find_package(Qt5Widgets)
+-            set(EXTRA_LIBS ${EXTRA_LIBS} Qt5::Widgets)
+-        endif (BUILD_GUI)
+-
+-    else (USE_QT5)
+-
+-        # Qt4
+-        include(FindQt4)
+-        if (BUILD_GUI)
+-            set(Qt_Components QtCore QtGui QtXml QtNetwork QtMain)
+-        else (BUILD_GUI)
+-            set(Qt_Components QtCore QtXml QtNetwork QtMain)
+-        endif (BUILD_GUI)
+-
+-        find_package(Qt4 4.4.3 COMPONENTS ${Qt_Components} REQUIRED)
+-        include(${QT_USE_FILE})
+-        set(EXTRA_LIBS ${EXTRA_LIBS} ${QT_LIBRARIES})
+-        if (NOT QT4_FOUND)
+-            message(FATAL_ERROR "Qt4 not found. You can set the USE_QT5 
option to try to find Qt5")
+-        endif (NOT QT4_FOUND)
+-
+-    endif (USE_QT5)
++    find_package(Qt6 REQUIRED COMPONENTS Core Network Xml)
++    set(EXTRA_LIBS ${EXTRA_LIBS} Qt6::Core Qt6::Network Qt6::Xml)
++    if (BUILD_GUI)
++        find_package(Qt6Gui REQUIRED)
++        find_package(Qt6Widgets REQUIRED)
++        set(EXTRA_LIBS ${EXTRA_LIBS} Qt6::Gui Qt6::Widgets)
++    endif ()
+ 
+     # libbw
+ 
+@@ -180,7 +157,6 @@ add_subdirectory(udev)
+ 
+ message(STATUS "Build only the core parts   : ${BUILD_ONLY_CORE}")
+ message(STATUS "Building with GUI           : ${BUILD_GUI}")
+-message(STATUS "Building with Qt5           : ${USE_QT5}")
+ message(STATUS "Building manpages           : ${BUILD_MANPAGE}")
+ 
+ # vim: set sw=4 ts=4 et:
+diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt
+index d9a0b21..4c74e6a 100644
+--- a/gui/CMakeLists.txt
++++ b/gui/CMakeLists.txt
+@@ -49,18 +49,10 @@ if (BUILD_GUI)
+     set(QtApp_RCCS usbprog.qrc)
+ 
+     # generate rules for building source files from the resources
+-    if (USE_QT5)
+-        qt5_add_resources(usbprog_gui_RCC_SRCS usbprog.qrc)
+-    else (USE_QT5)
+-        qt4_add_resources(usbprog_gui_RCC_SRCS usbprog.qrc)
+-    endif (USE_QT5)
++    qt_add_resources(usbprog_gui_RCC_SRCS usbprog.qrc)
+ 
+     # generate rules for building source files that moc generates
+-    if (USE_QT5)
+-        qt5_wrap_cpp(usbprog_gui_MOC_SRCS ${usbprog_gui_MOCS})
+-    else (USE_QT5)
+-        qt4_wrap_cpp(usbprog_gui_MOC_SRCS ${usbprog_gui_MOCS})
+-    endif (USE_QT5)
++    qt_wrap_cpp(usbprog_gui_MOC_SRCS ${usbprog_gui_MOCS})
+ 
+     # build sources, moc'd sources, and rcc'd sources
+     add_executable(usbprog-gui WIN32
+diff --git a/usbprog/CMakeLists.txt b/usbprog/CMakeLists.txt
+index 1899d46..df183fb 100644
+--- a/usbprog/CMakeLists.txt
++++ b/usbprog/CMakeLists.txt
+@@ -35,11 +35,7 @@ else ()
+     set(libusbprog_SRCS ${libusbprog_SRCS} sysinfo_posix.cpp)
+ endif ()
+ 
+-if (USE_QT5)
+-    qt5_wrap_cpp(libusbprog_MOC_SRCS ${libusbprog_MOCS})
+-else (USE_QT5)
+-    qt4_wrap_cpp(libusbprog_MOC_SRCS ${libusbprog_MOCS})
+-endif (USE_QT5)
++qt_wrap_cpp(libusbprog_MOC_SRCS ${libusbprog_MOCS})
+ add_library(libusbprog STATIC ${libusbprog_SRCS} ${libusbprog_MOC_SRCS})
+ target_link_libraries(libusbprog libusbprog-core ${EXTRA_LIBS})
+ 
+-- 
+2.51.2
+

diff --git a/dev-embedded/usbprog/usbprog-0.3.0_p20140828-r3.ebuild 
b/dev-embedded/usbprog/usbprog-0.3.0_p20140828-r3.ebuild
new file mode 100644
index 000000000000..e4cf59934fa0
--- /dev/null
+++ b/dev-embedded/usbprog/usbprog-0.3.0_p20140828-r3.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+COMMIT="293d559bac55f7c7130ea2769c703c68a19d62c2"
+inherit cmake readme.gentoo-r1
+
+DESCRIPTION="flashtool for the multi purpose programming adapter usbprog"
+HOMEPAGE="https://github.com/bwalle/usbprog-tools 
https://www.aaabbb.de/FirmwareUsbprog/FirmwareUsbprog_en.php";
+SRC_URI="https://github.com/bwalle/usbprog-tools/archive/${COMMIT}.tar.gz -> 
${P}.tar.gz"
+S="${WORKDIR}/usbprog-tools-${COMMIT}"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="+gui minimal"
+
+RDEPEND="
+       !minimal? (
+               gui? ( dev-qt/qtbase:6[widgets] )
+               dev-qt/qtbase:6[network,xml]
+               sys-libs/ncurses:=
+               sys-libs/readline:=
+       )
+       virtual/libusb:1
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+       "${FILESDIR}/${P}_versions.xml.patch"
+       "${FILESDIR}/${P}-cmake4-qt6.patch" # bug #965714
+)
+
+DOC_CONTENTS="
+Please visit http://www.aaabbb.de/FirmwareUsbprog/FirmwareUsbprog_en.php
+for additional info.
+"
+
+src_configure() {
+       local mycmakeargs=(
+               -DBUILD_ONLY_CORE=$(usex minimal)
+               -DBUILD_GUI=$(usex gui)
+       )
+       cmake_src_configure
+}
+
+src_install() {
+       cmake_src_install
+       readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+       readme.gentoo_print_elog
+}

Reply via email to