[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1110100: marked as done (trixie-pu: package rkward/0.8.0-4.1~deb13u1)



Your message dated Sat, 06 Sep 2025 12:14:57 +0100
with message-id <165032e5317517556dd7fd8cf24843112a3fb6ac.camel@adam-barratt.org.uk>
and subject line Closing p-u requests for fixes included in 13.1
has caused the Debian Bug report #1110100,
regarding trixie-pu: package rkward/0.8.0-4.1~deb13u1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1110100: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1110100
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: trixie
X-Debbugs-Cc: rkward@packages.debian.org
Control: affects -1 + src:rkward
User: release.debian.org@packages.debian.org
Usertags: pu

rkward started to FTBFS when R 4.5.0 entered unstable and trixie
relatively late, and cannot migrate due to R 4.5.1 now being
unmigratable in unstable.

Rebuilding the package in trixie is the easy solution.

The unrelated older change of using the system kdsingleapplication
instead of a vendored version is also included, it's in general
desirable for security support and has been in unstable for over
3 months without problems reported.

The additional Standards-Version and debian/copyright updates
shouldn't be problematic.
diffstat for rkward-0.8.0 rkward-0.8.0

 changelog                                                                   |   26 +
 control                                                                     |    3 
 copyright                                                                   |   11 
 patches/0001-Adjust-to-the-removal-of-Rf_addTaskCallback-in-R-dev.patch     |  145 ++++++++++
 patches/0002-Adjust-to-hiding-for-R_checkActivityEx-in-R-devel-fo.patch     |   39 ++
 patches/series                                                              |    3 
 patches/upstream_Make-it-possible-to-build-against-system-kdsingleapp.patch |   57 +++
 7 files changed, 272 insertions(+), 12 deletions(-)

diff -Nru rkward-0.8.0/debian/changelog rkward-0.8.0/debian/changelog
--- rkward-0.8.0/debian/changelog	2025-02-11 21:12:08.000000000 +0200
+++ rkward-0.8.0/debian/changelog	2025-07-29 17:20:42.000000000 +0300
@@ -1,3 +1,29 @@
+rkward (0.8.0-4.1~deb13u1) trixie; urgency=medium
+
+  * Non-maintainer upload.
+  * Rebuild for trixie.
+
+ -- Adrian Bunk <bunk@debian.org>  Tue, 29 Jul 2025 17:20:42 +0300
+
+rkward (0.8.0-4.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Backport upstream fixes for R 4.5. (Closes: #1103204)
+
+ -- Adrian Bunk <bunk@debian.org>  Mon, 30 Jun 2025 15:53:42 +0300
+
+rkward (0.8.0-4) unstable; urgency=medium
+
+  * Team upload.
+  * Bump Standards-Version to 4.7.2, no changes required.
+  * Simplify GPL license text in debian/copyright.
+  * Use the system version of kdsingleapplication:
+    - backport upstream commit 997c8a7280fe0f99a29465f67b56fd001cdac4e1; patch
+      upstream_Make-it-possible-to-build-against-system-kdsingleapp.patch
+    - add the libkdsingleapplication-qt6-dev build dependency
+
+ -- Pino Toscano <pino@debian.org>  Fri, 11 Apr 2025 04:57:31 +0200
+
 rkward (0.8.0-3) unstable; urgency=medium
 
   * Team upload.
diff -Nru rkward-0.8.0/debian/control rkward-0.8.0/debian/control
--- rkward-0.8.0/debian/control	2025-02-06 11:32:37.000000000 +0200
+++ rkward-0.8.0/debian/control	2025-04-10 21:16:25.000000000 +0300
@@ -13,6 +13,7 @@
                qt6-5compat-dev (>= 6.6.0~),
                qt6-declarative-dev (>= 6.6.0~),
                qt6-webengine-dev (>= 6.6.0~),
+               libkdsingleapplication-qt6-dev (>= 1.1.0~),
                libkf6archive-dev (>= 6.0.0~),
                libkf6breezeicons-dev (>= 6.0.0~),
                libkf6config-dev (>= 6.0.0~),
@@ -31,7 +32,7 @@
                qt6-svg-plugins <!nocheck>,
                xauth <!nocheck>,
                xvfb <!nocheck>,
-Standards-Version: 4.7.0
+Standards-Version: 4.7.2
 Vcs-Browser: https://salsa.debian.org/qt-kde-team/extras/rkward
 Vcs-Git: https://salsa.debian.org/qt-kde-team/extras/rkward.git
 Homepage: https://rkward.kde.org
diff -Nru rkward-0.8.0/debian/copyright rkward-0.8.0/debian/copyright
--- rkward-0.8.0/debian/copyright	2025-02-05 14:10:41.000000000 +0200
+++ rkward-0.8.0/debian/copyright	2025-04-10 17:31:41.000000000 +0300
@@ -18,17 +18,6 @@
  version 2 of the License, or (at your option) any later
  version.
  .
- This program is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied
- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE.  See the GNU General Public License for more
- details.
- .
- You should have received a copy of the GNU General Public
- License along with this package; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- Boston, MA  02110-1301 USA
- .
  On Debian systems, the full text of the GNU General Public
  License version 2 can be found in the file
  `/usr/share/common-licenses/GPL-2'.
diff -Nru rkward-0.8.0/debian/patches/0001-Adjust-to-the-removal-of-Rf_addTaskCallback-in-R-dev.patch rkward-0.8.0/debian/patches/0001-Adjust-to-the-removal-of-Rf_addTaskCallback-in-R-dev.patch
--- rkward-0.8.0/debian/patches/0001-Adjust-to-the-removal-of-Rf_addTaskCallback-in-R-dev.patch	1970-01-01 02:00:00.000000000 +0200
+++ rkward-0.8.0/debian/patches/0001-Adjust-to-the-removal-of-Rf_addTaskCallback-in-R-dev.patch	2025-06-30 15:44:28.000000000 +0300
@@ -0,0 +1,145 @@
+From 9fc53972f94bcc6e22ba0ffc2bd246cdee1bf119 Mon Sep 17 00:00:00 2001
+From: Thomas Friedrichsmeier <thomas.friedrichsmeier@kdemail.net>
+Date: Sun, 28 Jul 2024 15:51:08 +0200
+Subject: Adjust to the removal of Rf_addTaskCallback() in R (devel) 4.5
+
+---
+ rkward/autotests/core_test.cpp | 28 ++++++++++++++++++++
+ rkward/rbackend/rkrapi.h       |  1 -
+ rkward/rbackend/rkrbackend.cpp | 47 +++++-----------------------------
+ 3 files changed, 35 insertions(+), 41 deletions(-)
+
+diff --git a/rkward/autotests/core_test.cpp b/rkward/autotests/core_test.cpp
+index a3514ff61..e8daf14e7 100644
+--- a/rkward/autotests/core_test.cpp
++++ b/rkward/autotests/core_test.cpp
+@@ -303,6 +303,34 @@ private Q_SLOTS:
+ 		cleanGlobalenv();
+ 	}
+ 
++	void userCommandTest() {
++		// Two commands submitted on one user line should both be run
++		runCommandWithTimeout(new RCommand("print('first'); print('second')", RCommand::User), nullptr, [](RCommand *command) {
++			QVERIFY(!command->failed());
++			QVERIFY(command->fullOutput().contains("first"));
++			QVERIFY(command->fullOutput().contains("second"));
++		});
++		// Also, of course for commands on separate lines:
++		runCommandWithTimeout(new RCommand("print('first')\nprint('second')", RCommand::User), nullptr, [](RCommand *command) {
++			QVERIFY(!command->failed());
++			QVERIFY(command->fullOutput().contains("first"));
++			QVERIFY(command->fullOutput().contains("second"));
++		});
++		// or multi-line commands:
++		runCommandWithTimeout(new RCommand("{ print('first')\nprint('second') }", RCommand::User), nullptr, [](RCommand *command) {
++			QVERIFY(!command->failed());
++			QVERIFY(command->fullOutput().contains("first"));
++			QVERIFY(command->fullOutput().contains("second"));
++		});
++		// However, if a partial command fails, the next part should not get parsed:
++		runCommandWithTimeout(new RCommand("stop('first'); print('second')", RCommand::User), nullptr, [](RCommand *command) {
++			QVERIFY(command->failed());
++			QVERIFY(command->fullOutput().contains("first"));
++			QVERIFY(!command->fullOutput().contains("second"));
++		});
++		// TODO: verify that calls to readline() and browser() are handled, correctly
++	}
++
+ 	void commandOrderAndOutputTest() {
+ 		// commands shall run in the order 1, 3, 2, 5, 4, but also, of course, all different types of output shall be captured
+ 		QStringList output;
+diff --git a/rkward/rbackend/rkrapi.h b/rkward/rbackend/rkrapi.h
+index cb68aa4ad..643ac8983 100644
+--- a/rkward/rbackend/rkrapi.h
++++ b/rkward/rbackend/rkrapi.h
+@@ -228,7 +228,6 @@ IMPORT_R_API(Rf_GetOption);
+ IMPORT_R_API(Rf_GetOption1);
+ IMPORT_R_API(Rf_KillAllDevices);
+ IMPORT_R_API(Rf_ScalarInteger);
+-IMPORT_R_API(Rf_addTaskCallback);
+ IMPORT_R_API(Rf_allocList);
+ IMPORT_R_API(Rf_allocVector);
+ IMPORT_R_API(Rf_asChar);
+diff --git a/rkward/rbackend/rkrbackend.cpp b/rkward/rbackend/rkrbackend.cpp
+index 6130f18c1..5eea2bd20 100644
+--- a/rkward/rbackend/rkrbackend.cpp
++++ b/rkward/rbackend/rkrbackend.cpp
+@@ -133,38 +133,6 @@ void RKRBackend::clearPendingInterrupt () {
+ extern SEXP RKWard_RData_Tag;
+ 
+ // ############## R Standard callback overrides BEGIN ####################
+-Rboolean RKToplevelStatementFinishedCallback (SEXP expr, SEXP value, Rboolean succeeded, Rboolean visible, void *) {
+-	RK_TRACE (RBACKEND);
+-	Q_UNUSED (expr);
+-	Q_UNUSED (value);
+-	Q_UNUSED (visible);
+-
+-	if ((RKRBackend::repl_status.eval_depth == 0) && (!RKRBackend::repl_status.browser_context)) {		// Yes, toplevel-handlers _do_ get called in a browser context!
+-		RK_ASSERT (RKRBackend::repl_status.user_command_status = RKRBackend::RKReplStatus::UserCommandRunning);
+-		if (succeeded) {
+-			RKRBackend::repl_status.user_command_successful_up_to = RKRBackend::repl_status.user_command_parsed_up_to;
+-			if (RKRBackend::repl_status.user_command_completely_transmitted) {
+-				RKRBackend::repl_status.user_command_status = RKRBackend::RKReplStatus::NoUserCommand;
+-				RKRBackend::this_pointer->commandFinished ();
+-			} else RKRBackend::repl_status.user_command_status = RKRBackend::RKReplStatus::UserCommandTransmitted;
+-		} else {
+-			// well, this point of code is never reached with R up to 2.12.0. Instead failed user commands are handled in doError().
+-			RKRBackend::repl_status.user_command_status = RKRBackend::RKReplStatus::UserCommandFailed;
+-		}
+-	}
+-	
+-	return (Rboolean) true;
+-}
+-
+-void RKInsertToplevelStatementFinishedCallback (void *) {
+-	RK_TRACE (RBACKEND);
+-
+-	if (RKRBackend::this_pointer->r_running) {
+-		int pos;
+-		RFn::Rf_addTaskCallback(&RKToplevelStatementFinishedCallback, nullptr, &RKInsertToplevelStatementFinishedCallback, "_rkward_main_callback", &pos);
+-	}
+-}
+-
+ void RKTransmitNextUserCommandChunk (unsigned char* buf, int buflen) {
+ 	RK_TRACE (RBACKEND);
+ 
+@@ -284,7 +252,7 @@ int RReadConsole (const char* prompt, unsigned char* buf, int buflen, int hist)
+ 				// This can mean three different things:
+ 				// 1) User called readline ()
+ 				// 2) User called browser ()
+-				// 3) R jumped us back to toplevel behind our backs.
++				// 3) The user command has finished (successfully or not)
+ 				// Let's find out, which one it is.
+ 				if (hist && (RKRBackend::default_global_context != ROb(R_GlobalContext))) {
+ 					break;	// this looks like a call to browser(). Will be handled below.
+@@ -296,13 +264,13 @@ int RReadConsole (const char* prompt, unsigned char* buf, int buflen, int hist)
+ 					n_frames = dummy->intVector ().at (0);
+ 				}
+ 				// What the ??? Why does this simple version always return 0?
+-				//int n_frames = RKRSupport::SEXPToInt (RKRSupport::callSimpleFun0 (RFn::Rf_install ("sys.nframe"), ROb(R_GlobalEnv)));
++				//int n_frames = RKRSupport::SEXPToInt (RKRSupport::callSimpleFun0 (RFn::Rf_install ("sys.nframe"), ROb(R_GlobalEnv);
+ 				if (n_frames < 1) {
+-					// No active frames? This can't be a call to readline(), then, so probably R jumped us back to toplevel, behind our backs.
+-					// For safety, let's reset and start over.
+-					RKRBackend::this_pointer->current_command->status |= RCommand::Failed | RCommand::ErrorOther;
+-					RKRBackend::repl_status.user_command_status = RKRBackend::RKReplStatus::ReplIterationKilled;
+-					RFn::Rf_error("");	// to discard the buffer
++					// No active frames? This can't be a call to readline(), so the previous command must have finished.
++					if (RKRBackend::repl_status.user_command_completely_transmitted) {
++						RKRBackend::repl_status.user_command_status = RKRBackend::RKReplStatus::NoUserCommand;
++						RKRBackend::this_pointer->commandFinished ();
++					} else RKRBackend::repl_status.user_command_status = RKRBackend::RKReplStatus::UserCommandTransmitted;
+ 				} else {
+ 					// A call to readline(). Will be handled below
+ 					break;
+@@ -1108,7 +1076,6 @@ bool RKRBackend::startR () {
+ 	RFn::R_registerRoutines(RFn::R_getEmbeddingDllInfo(), nullptr, callMethods, nullptr, nullptr);
+ 
+ 	connectCallbacks();
+-	RKInsertToplevelStatementFinishedCallback(nullptr);
+ 	RKREventLoop::setRKEventHandler(doPendingPriorityCommands);
+ 	default_global_context = ROb(R_GlobalContext);
+ #ifdef Q_OS_WIN
+-- 
+2.30.2
+
diff -Nru rkward-0.8.0/debian/patches/0002-Adjust-to-hiding-for-R_checkActivityEx-in-R-devel-fo.patch rkward-0.8.0/debian/patches/0002-Adjust-to-hiding-for-R_checkActivityEx-in-R-devel-fo.patch
--- rkward-0.8.0/debian/patches/0002-Adjust-to-hiding-for-R_checkActivityEx-in-R-devel-fo.patch	1970-01-01 02:00:00.000000000 +0200
+++ rkward-0.8.0/debian/patches/0002-Adjust-to-hiding-for-R_checkActivityEx-in-R-devel-fo.patch	2025-06-30 15:44:28.000000000 +0300
@@ -0,0 +1,39 @@
+From 51b0b0bf5a15d742f20922713018125036df9aa3 Mon Sep 17 00:00:00 2001
+From: Thomas Friedrichsmeier <thomas.friedrichsmeier@kdemail.net>
+Date: Mon, 29 Jul 2024 14:58:22 +0200
+Subject: Adjust to hiding for R_checkActivityEx in R-devel (for R 4.5)
+
+---
+ rkward/rbackend/rkrapi.h         | 2 +-
+ rkward/rbackend/rkreventloop.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/rkward/rbackend/rkrapi.h b/rkward/rbackend/rkrapi.h
+index 643ac8983..e72f817e2 100644
+--- a/rkward/rbackend/rkrapi.h
++++ b/rkward/rbackend/rkrapi.h
+@@ -323,7 +323,7 @@ IMPORT_R_API(ptr_R_WriteConsoleEx);
+ 
+ IMPORT_R_API(R_InputHandlers);
+ IMPORT_R_API(R_PolledEvents);
+-IMPORT_R_API(R_checkActivityEx);
++IMPORT_R_API(R_checkActivity);
+ IMPORT_R_API(R_runHandlers);
+ IMPORT_R_API(addInputHandler);
+ 
+diff --git a/rkward/rbackend/rkreventloop.cpp b/rkward/rbackend/rkreventloop.cpp
+index 8671cc725..19a510479 100644
+--- a/rkward/rbackend/rkreventloop.cpp
++++ b/rkward/rbackend/rkreventloop.cpp
+@@ -19,7 +19,7 @@ static void processX11EventsWorker (void *) {
+ #ifndef Q_OS_WIN
+ 	for (;;) {
+ 		fd_set *what;
+-		what = RFn::R_checkActivityEx(ROb(R_wait_usec) > 0 ? ROb(R_wait_usec) : 50, 1, RK_doIntr);
++		what = RFn::R_checkActivity(ROb(R_wait_usec) > 0 ? ROb(R_wait_usec) : 50, 1);
+ 		RFn::R_runHandlers(ROb(R_InputHandlers), what);
+ 		if (!what) break;
+ 	}
+-- 
+2.30.2
+
diff -Nru rkward-0.8.0/debian/patches/series rkward-0.8.0/debian/patches/series
--- rkward-0.8.0/debian/patches/series	2025-02-06 11:37:02.000000000 +0200
+++ rkward-0.8.0/debian/patches/series	2025-06-30 15:53:42.000000000 +0300
@@ -1,2 +1,5 @@
 upstream_Also-set-file-modes-when-creating-reproducible-archi.patch
+upstream_Make-it-possible-to-build-against-system-kdsingleapp.patch
 tests-disable-encodingtest.diff
+0001-Adjust-to-the-removal-of-Rf_addTaskCallback-in-R-dev.patch
+0002-Adjust-to-hiding-for-R_checkActivityEx-in-R-devel-fo.patch
diff -Nru rkward-0.8.0/debian/patches/upstream_Make-it-possible-to-build-against-system-kdsingleapp.patch rkward-0.8.0/debian/patches/upstream_Make-it-possible-to-build-against-system-kdsingleapp.patch
--- rkward-0.8.0/debian/patches/upstream_Make-it-possible-to-build-against-system-kdsingleapp.patch	1970-01-01 02:00:00.000000000 +0200
+++ rkward-0.8.0/debian/patches/upstream_Make-it-possible-to-build-against-system-kdsingleapp.patch	2025-04-10 21:13:58.000000000 +0300
@@ -0,0 +1,57 @@
+From 997c8a7280fe0f99a29465f67b56fd001cdac4e1 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <asturm@gentoo.org>
+Date: Mon, 22 Jul 2024 22:20:26 +0200
+Subject: [PATCH] Make it possible to build against system kdsingleapplication
+
+Bundling must be avoided wherever possible.
+
+Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
+---
+ CMakeLists.txt  | 10 +++++++++-
+ rkward/main.cpp |  2 +-
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3b9833164..1af6cd172 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -26,6 +26,15 @@ FIND_PACKAGE(Qt6 6.6 CONFIG REQUIRED COMPONENTS Widgets Core Xml Network Qml Pri
+ FIND_PACKAGE(KF6 6.0.0 REQUIRED COMPONENTS CoreAddons DocTools I18n XmlGui TextEditor WidgetsAddons Parts Config Notifications WindowSystem Archive BreezeIcons OPTIONAL_COMPONENTS Crash)
+ FIND_PACKAGE(Gettext REQUIRED)
+ 
++FIND_PACKAGE(KDSingleApplication-qt6 1.1.0 QUIET)
++if(KDSingleApplication-qt6_FOUND)
++  message(STATUS "Using system KDSingleApplication")
++else()
++  message(STATUS "Using bundled KDSingleApplication")
++  add_subdirectory(3rdparty/KDSingleApplication)
++  add_definitions(-DKDSINGLEAPPLICATION_STATIC_BUILD)
++endif()
++
+ IF(FORCE_PRETTY_MAKEFILE)
+ 	SET(CMAKE_VERBOSE_MAKEFILE OFF)
+ ENDIF(FORCE_PRETTY_MAKEFILE)
+@@ -37,7 +46,6 @@ remove_definitions(-DQT_NO_CAST_FROM_ASCII) # TODO remove to compley to KDECompi
+ #uncomment the line below to save ~250-350kB in object size
+ #ADD_DEFINITIONS(-DRKWARD_NO_TRACE)
+ 
+-ADD_SUBDIRECTORY(3rdparty/KDSingleApplication)
+ ADD_SUBDIRECTORY(rkward)
+ ADD_SUBDIRECTORY(doc)
+ ADD_SUBDIRECTORY(tests)
+diff --git a/rkward/main.cpp b/rkward/main.cpp
+index 2804e99d8..df959ba82 100644
+--- a/rkward/main.cpp
++++ b/rkward/main.cpp
+@@ -72,7 +72,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
+ #include "rbackend/rksessionvars.h"
+ #include "windows/rkdebugmessagewindow.h"
+ #include "misc/rkcommonfunctions.h"
+-#include "../3rdparty/KDSingleApplication/kdsingleapplication.h"
++#include "kdsingleapplication.h"
+ #include "misc/rkcommandlineargs.h"
+ 
+ #ifdef Q_OS_WIN
+-- 
+2.47.2
+

--- End Message ---
--- Begin Message ---
Package: release.debian.org
Version: 13.1

Hi,

Each of the updates referenced by these requests was included in
today's 13.1 point release for trixie.

Regards,

Adam

--- End Message ---

Reply to: