Skip to content

Commit

Permalink
kde-apps/ark: backport Qt 6.7 QTemporaryDir fix
Browse files Browse the repository at this point in the history
Bug: https://bugs.kde.org/487229
Signed-off-by: Sam James <[email protected]>
  • Loading branch information
thesamesam committed Jul 13, 2024
1 parent 42f813b commit 0f7b57d
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ BDEPEND="
elibc_glibc? ( test? ( amd64? ( app-arch/rar ) x86? ( app-arch/rar ) ) )
"

PATCHES=(
"${FILESDIR}"/${P}-qt6.7-qtemporarydir.patch
)

src_configure() {
local mycmakeargs=(
$(cmake_use_find_package zip LibZip)
Expand Down
37 changes: 37 additions & 0 deletions kde-apps/ark/files/ark-24.05.2-qt6.7-qtemporarydir.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
https://mail.kde.org/pipermail/distributions/2024-July/001513.html
https://invent.kde.org/utilities/ark/-/commit/85c5e26f581cf011638a53e62b92e1da8fd55fcd

[sam: Rebase for fuzz in the logline.]

From 85c5e26f581cf011638a53e62b92e1da8fd55fcd Mon Sep 17 00:00:00 2001
From: Elvis Angelaccio <[email protected]>
Date: Sat, 22 Jun 2024 17:54:07 +0200
Subject: [PATCH] cliinterface: adapt to behavior change in QTemporaryDir

Qt 6.7 changed the behavior of QTemporaryDir (see commit 935562a77b in
qtbase.git) and now QTemporaryDir::path() returns a relative path rather
than an absolute one.

We were relying on the old behavior which ensured that the extract temp
dir would always auto-delete itself, regardless of the ark CWD.

This is no longer working, because now when the temp dir gets deleted,
its destructor tries to delete a relative path, but meanwhile ark has
already changed the CWD and so that path does not exist.

The fix is to create the QTemporaryDir with an absolute path (but still
as hidden folder in the CWD), so we get back the old behavior (the
returned QTemporaryDir::path() will again be absolute).

BUG: 487229
--- a/kerfuffle/cliinterface.cpp
+++ b/kerfuffle/cliinterface.cpp
@@ -96,7 +96,7 @@ bool CliInterface::extractFiles(const QList<Archive::Entry *> &files, const QStr

if (useTmpExtractDir) {
// Create an hidden temp folder in the current directory.
- m_extractTempDir.reset(new QTemporaryDir(QStringLiteral(".%1-").arg(QCoreApplication::applicationName())));
+ m_extractTempDir.reset(new QTemporaryDir(QStringLiteral("%1/.%2-").arg(QDir::currentPath(), QCoreApplication::applicationName())));

qCDebug(ARK) << "Using temporary extraction dir:" << m_extractTempDir->path();
if (!m_extractTempDir->isValid()) {

0 comments on commit 0f7b57d

Please sign in to comment.