Your message dated Sat, 06 Sep 2025 12:14:57 +0100
with message-id 
<165032e5317517556dd7fd8cf24843112a3fb6ac.ca...@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 [email protected]
immediately.)


-- 
1110100: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1110100
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: trixie
X-Debbugs-Cc: [email protected]
Control: affects -1 + src:rkward
User: [email protected]
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 <[email protected]>  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 <[email protected]>  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 <[email protected]>  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 <[email protected]>
+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 <[email protected]>
+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 <[email protected]>
+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 <[email protected]>
+---
+ 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 via email to