commit:     1ae704f776b6fa2a67376a920bdaf6635ec971b6
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 18 12:25:59 2020 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Fri Dec 18 13:43:56 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1ae704f7

kde-misc/krename: Backport upstream patch dropping kde-frameworks/kjs

Upstream commit e0a93830d0ea0c71ab649b7e68af0238bd48eb10

Closes: https://bugs.gentoo.org/760543
Package-Manager: Portage-3.0.12, Repoman-3.0.2
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 kde-misc/krename/files/krename-5.0.1-no-kjs.patch | 519 ++++++++++++++++++++++
 kde-misc/krename/krename-5.0.1-r1.ebuild          |  58 +++
 2 files changed, 577 insertions(+)

diff --git a/kde-misc/krename/files/krename-5.0.1-no-kjs.patch 
b/kde-misc/krename/files/krename-5.0.1-no-kjs.patch
new file mode 100644
index 00000000000..f4b7eb78689
--- /dev/null
+++ b/kde-misc/krename/files/krename-5.0.1-no-kjs.patch
@@ -0,0 +1,519 @@
+From 407b612a93128b9f935a686d5ff82c7ee06087f5 Mon Sep 17 00:00:00 2001
+From: Harald Sitter <[email protected]>
+Date: Thu, 17 Dec 2020 13:19:56 +0100
+Subject: [PATCH 1/5] reduce nesting
+
+easier on the eyes
+---
+ src/scriptplugin.cpp | 63 +++++++++++++++++++++++---------------------
+ 1 file changed, 33 insertions(+), 30 deletions(-)
+
+diff --git a/src/scriptplugin.cpp b/src/scriptplugin.cpp
+index 0790fd4..8f4b11e 100644
+--- a/src/scriptplugin.cpp
++++ b/src/scriptplugin.cpp
+@@ -175,36 +175,39 @@ void ScriptPlugin::initKRenameVars(const KRenameFile 
&file, int index)
+             file.srcDirectory());
+ 
+     // User definitions, set them only on first file
+-    if (index == 0) {
+-        for (int i = 0; i < m_widget->listVariables->topLevelItemCount(); 
i++) {
+-            // TODO, we have to know the type of the variable!
+-            QTreeWidgetItem *item = m_widget->listVariables->topLevelItem(i);
+-            if (item) {
+-                EVarType eVarType = static_cast<EVarType>(item->data(1, 
Qt::UserRole).toInt());
+-                const QString &name  = item->text(0);
+-                const QString &value = item->text(1);
+-                switch (eVarType) {
+-                default:
+-                case eVarType_String:
+-                    
m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
+-                            name, value.toUtf8().data());
+-                    break;
+-                case eVarType_Int:
+-                    
m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
+-                            name, value.toInt());
+-                    break;
+-                case eVarType_Double:
+-                    
m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
+-                            name, value.toDouble());
+-                    break;
+-                case eVarType_Bool:
+-                    
m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
+-                            name,
+-                            (value.toLower() == "true" ? true : false));
+-                    break;
+-
+-                }
+-            }
++    if (index != 0) {
++        return;
++    }
++
++    for (int i = 0; i < m_widget->listVariables->topLevelItemCount(); i++) {
++        // TODO, we have to know the type of the variable!
++        QTreeWidgetItem *item = m_widget->listVariables->topLevelItem(i);
++        if (!item) {
++            continue;
++        }
++
++        EVarType eVarType = static_cast<EVarType>(item->data(1, 
Qt::UserRole).toInt());
++        const QString &name  = item->text(0);
++        const QString &value = item->text(1);
++        switch (eVarType) {
++        default:
++        case eVarType_String:
++            
m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
++                    name, value.toUtf8().data());
++            break;
++        case eVarType_Int:
++            
m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
++                    name, value.toInt());
++            break;
++        case eVarType_Double:
++            
m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
++                    name, value.toDouble());
++            break;
++        case eVarType_Bool:
++            
m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
++                    name,
++                    (value.toLower() == "true" ? true : false));
++            break;
+         }
+     }
+ }
+-- 
+2.29.2
+
+
+From f80de4b81846da45c4cc16c585a159872dcc2c29 Mon Sep 17 00:00:00 2001
+From: Harald Sitter <[email protected]>
+Date: Thu, 17 Dec 2020 13:24:37 +0100
+Subject: [PATCH 2/5] don't needlessly use qpointer
+
+for one it has no value, scopedpointer might. we don't need a pointer
+at all though, simply put qdialog on the stack and let the compiler
+take care of it
+---
+ src/scriptplugin.cpp | 44 ++++++++++++++++++++++----------------------
+ 1 file changed, 22 insertions(+), 22 deletions(-)
+
+diff --git a/src/scriptplugin.cpp b/src/scriptplugin.cpp
+index 8f4b11e..fec61e7 100644
+--- a/src/scriptplugin.cpp
++++ b/src/scriptplugin.cpp
+@@ -28,7 +28,6 @@
+ #include <QTemporaryFile>
+ #include <QFile>
+ #include <QMenu>
+-#include <QPointer>
+ #include <QTextStream>
+ #include <QVariant>
+ #include <QFileDialog>
+@@ -228,7 +227,7 @@ void ScriptPlugin::slotEnableControls()
+ 
+ void ScriptPlugin::slotAdd()
+ {
+-    QPointer<QDialog> dialog = new QDialog();
++    QDialog dialog;
+     Ui::ScriptPluginDialog dlg;
+ 
+     QStringList types;
+@@ -238,32 +237,33 @@ void ScriptPlugin::slotAdd()
+     types << i18n("Double");
+     types << i18n("Boolean");
+ 
+-    dlg.setupUi(dialog);
++    dlg.setupUi(&dialog);
+     dlg.comboType->addItems(types);
+ 
+-    if (dialog->exec() == QDialog::Accepted) {
+-        QString name  = dlg.lineName->text();
+-        QString value = dlg.lineValue->text();
++    if (dialog.exec() != QDialog::Accepted) {
++        return;
++    }
+ 
+-        // Build a Java script statement
+-        QString script = name + " = " + value + ';';
++    QString name  = dlg.lineName->text();
++    QString value = dlg.lineValue->text();
+ 
+-        KJSInterpreter interpreter;
+-        KJSResult result = m_interpreter->evaluate(script, nullptr);
+-        if (result.isException()) {
+-            KMessageBox::error(m_parent,
+-                               i18n("A JavaScript error has occurred: ") +
+-                               result.errorMessage(), this->name());
+-        } else {
+-            QTreeWidgetItem *item = new QTreeWidgetItem();
+-            item->setText(0, name);
+-            item->setText(1, value);
+-            item->setData(1, Qt::UserRole, 
QVariant(dlg.comboType->currentIndex()));
++    // Build a Java script statement
++    QString script = name + " = " + value + ';';
+ 
+-            m_widget->listVariables->addTopLevelItem(item);
+-        }
++    KJSInterpreter interpreter;
++    KJSResult result = m_interpreter->evaluate(script, nullptr);
++    if (result.isException()) {
++        KMessageBox::error(m_parent,
++                            i18n("A JavaScript error has occurred: ") +
++                            result.errorMessage(), this->name());
++    } else {
++        QTreeWidgetItem *item = new QTreeWidgetItem();
++        item->setText(0, name);
++        item->setText(1, value);
++        item->setData(1, Qt::UserRole, 
QVariant(dlg.comboType->currentIndex()));
++
++        m_widget->listVariables->addTopLevelItem(item);
+     }
+-    delete dialog;
+ }
+ 
+ void ScriptPlugin::slotRemove()
+-- 
+2.29.2
+
+
+From 5979b30da5b385008894ff5577da917dd888959e Mon Sep 17 00:00:00 2001
+From: Harald Sitter <[email protected]>
+Date: Thu, 17 Dec 2020 13:32:41 +0100
+Subject: [PATCH 3/5] fix dangerously implicit int->int->enum mapping
+
+the type order in the qstringlist was implicitly the int values of the
+type enum. incredibly scary. instead push the items into the combobox
+along with their enum value as Qt::UserRole and then pass that along.
+this ensures (kind of) that the int we cast back to enum in
+initKRenameVars will be an actual enum value
+---
+ src/scriptplugin.cpp | 15 ++++++---------
+ 1 file changed, 6 insertions(+), 9 deletions(-)
+
+diff --git a/src/scriptplugin.cpp b/src/scriptplugin.cpp
+index fec61e7..1933bc6 100644
+--- a/src/scriptplugin.cpp
++++ b/src/scriptplugin.cpp
+@@ -4,6 +4,7 @@
+     begin                : Fri Nov 9 2007
+     copyright            : (C) 2007 by Dominik Seichter
+     email                : [email protected]
++    copyright            : (C) 2020 by Harald Sitter <[email protected]>
+  ***************************************************************************/
+ 
+ /***************************************************************************
+@@ -230,15 +231,11 @@ void ScriptPlugin::slotAdd()
+     QDialog dialog;
+     Ui::ScriptPluginDialog dlg;
+ 
+-    QStringList types;
+-
+-    types << i18n("String");
+-    types << i18n("Int");
+-    types << i18n("Double");
+-    types << i18n("Boolean");
+-
+     dlg.setupUi(&dialog);
+-    dlg.comboType->addItems(types);
++    dlg.comboType->addItem(i18n("String"), eVarType_String);
++    dlg.comboType->addItem(i18n("Int"), eVarType_Int);
++    dlg.comboType->addItem(i18n("Double"), eVarType_Double);
++    dlg.comboType->addItem(i18n("Boolean"), eVarType_Bool);
+ 
+     if (dialog.exec() != QDialog::Accepted) {
+         return;
+@@ -260,7 +257,7 @@ void ScriptPlugin::slotAdd()
+         QTreeWidgetItem *item = new QTreeWidgetItem();
+         item->setText(0, name);
+         item->setText(1, value);
+-        item->setData(1, Qt::UserRole, 
QVariant(dlg.comboType->currentIndex()));
++        item->setData(1, Qt::UserRole, dlg.comboType->currentData());
+ 
+         m_widget->listVariables->addTopLevelItem(item);
+     }
+-- 
+2.29.2
+
+
+From 82161c323b7b0d4b77602551923118f304c5c536 Mon Sep 17 00:00:00 2001
+From: Harald Sitter <[email protected]>
+Date: Thu, 17 Dec 2020 15:05:49 +0100
+Subject: [PATCH 4/5] port away from stringy QMenu::addAction to functor based
+ API
+
+was introdcued in 5.6 so is fine to use and loads safer
+---
+ src/previewlist.cpp    |  8 ++++----
+ src/progressdialog.cpp |  8 ++++----
+ src/scriptplugin.cpp   | 10 +++++-----
+ 3 files changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/src/previewlist.cpp b/src/previewlist.cpp
+index df8097b..0d3ccb6 100644
+--- a/src/previewlist.cpp
++++ b/src/previewlist.cpp
+@@ -28,12 +28,12 @@ PreviewList::PreviewList(QWidget *parent)
+     : QTreeView(parent), m_model(nullptr)
+ {
+     m_menu = new QMenu("KRename", this);   // we need any text here so that 
we have a title
+-    m_menu->addAction(i18n("&Change filename manually..."), this, 
SLOT(slotManually()), QKeySequence("F2"));
++    m_menu->addAction(i18n("&Change filename manually..."), this, 
&PreviewList::slotManually, QKeySequence("F2"));
+     m_menu->addSeparator();
+-    m_menu->addAction(i18n("&Open"), this, SLOT(slotOpen()));
++    m_menu->addAction(i18n("&Open"), this, &PreviewList::slotOpen);
+     m_menu->addSeparator();
+-    m_menu->addAction(i18n("&Add..."), this, SIGNAL(addFiles()));
+-    m_menu->addAction(i18n("&Remove"), this, SLOT(slotRemove()));
++    m_menu->addAction(i18n("&Add..."), this, &PreviewList::addFiles);
++    m_menu->addAction(i18n("&Remove"), this, &PreviewList::slotRemove);
+ 
+     connect(this, &PreviewList::activated, this, &PreviewList::slotManually);
+ }
+diff --git a/src/progressdialog.cpp b/src/progressdialog.cpp
+index 4eaaf1a..d217614 100644
+--- a/src/progressdialog.cpp
++++ b/src/progressdialog.cpp
+@@ -49,11 +49,11 @@ ProgressDialog::ProgressDialog(ESplitMode eSplitMode, 
unsigned int dot, QWidget
+             qApp, &QApplication::quit, Qt::QueuedConnection);
+ 
+     QMenu *menu = new QMenu(this);
+-    menu->addAction(i18n("Restart &KRename..."), this, 
SLOT(slotRestartKRename()));
++    menu->addAction(i18n("Restart &KRename..."), this, 
&ProgressDialog::slotRestartKRename);
+     menu->addSeparator();
+-    m_actProcessed   = menu->addAction(i18n("Rename Processed Files 
&Again..."),    this, SLOT(slotRenameProcessedAgain()));
+-    m_actUnprocessed = menu->addAction(i18n("Rename &Unprocessed Files 
Again..."), this, SLOT(slotRenameUnprocessedAgain()));
+-    menu->addAction(i18n("&Rename All Files Again..."),          this, 
SLOT(slotRenameAllAgain()));
++    m_actProcessed = menu->addAction(i18n("Rename Processed Files 
&Again..."), this, &ProgressDialog::slotRenameProcessedAgain);
++    m_actUnprocessed = menu->addAction(i18n("Rename &Unprocessed Files 
Again..."), this, &ProgressDialog::slotRenameUnprocessedAgain);
++    menu->addAction(i18n("&Rename All Files Again..."), this, 
&ProgressDialog::slotRenameAllAgain);
+ 
+     m_buttonMore->setMenu(menu);
+ }
+diff --git a/src/scriptplugin.cpp b/src/scriptplugin.cpp
+index 1933bc6..46b27ca 100644
+--- a/src/scriptplugin.cpp
++++ b/src/scriptplugin.cpp
+@@ -68,11 +68,11 @@ ScriptPlugin::ScriptPlugin(PluginLoader *loader)
+ 
+     m_help.append("[js;4+5];;" + i18n("Insert a snippet of JavaScript code 
(4+5 in this case)"));
+ 
+-    m_menu->addAction(i18n("Index of the current file"),     this, 
SLOT(slotInsertIndex()));
+-    m_menu->addAction(i18n("URL of the current file"),       this, 
SLOT(slotInsertUrl()));
+-    m_menu->addAction(i18n("Filename of the current file"),  this, 
SLOT(slotInsertFilename()));
+-    m_menu->addAction(i18n("Extension of the current file"), this, 
SLOT(slotInsertExtension()));
+-    m_menu->addAction(i18n("Directory of the current file"), this, 
SLOT(slotInsertDirectory()));
++    m_menu->addAction(i18n("Index of the current file"), this, 
&ScriptPlugin::slotInsertIndex);
++    m_menu->addAction(i18n("URL of the current file"), this, 
&ScriptPlugin::slotInsertUrl);
++    m_menu->addAction(i18n("Filename of the current file"), this, 
&ScriptPlugin::slotInsertFilename);
++    m_menu->addAction(i18n("Extension of the current file"), this, 
&ScriptPlugin::slotInsertExtension);
++    m_menu->addAction(i18n("Directory of the current file"), this, 
&ScriptPlugin::slotInsertDirectory);
+ }
+ 
+ ScriptPlugin::~ScriptPlugin()
+-- 
+2.29.2
+
+
+From e0a93830d0ea0c71ab649b7e68af0238bd48eb10 Mon Sep 17 00:00:00 2001
+From: Harald Sitter <[email protected]>
+Date: Thu, 17 Dec 2020 13:45:07 +0100
+Subject: [PATCH 5/5] port from deprecated kjs to qjsengine
+
+for kf6 todo https://phabricator.kde.org/T11604
+
+kjs is deprecated and we want to move away from it. this ports to
+qjsengine which does what we need for krename just fine and is also
+supported in qt6 still
+
+all use cases of the js plugin still seem to work fine. variable
+definition, function definition and using either in the replacement.
+same for the implicit global variables.
+---
+ CMakeLists.txt       |  2 +-
+ src/CMakeLists.txt   |  2 +-
+ src/scriptplugin.cpp | 55 ++++++++++++++------------------------------
+ src/scriptplugin.h   |  6 +++--
+ 4 files changed, 23 insertions(+), 42 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2b39e18..e1673e1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -17,7 +17,7 @@ include(FeatureSummary)
+ include(KDECompilerSettings NO_POLICY_SCOPE)
+ include(FeatureSummary)
+ 
+-find_package(Qt5 REQUIRED COMPONENTS Core Widgets)
++find_package(Qt5 REQUIRED COMPONENTS Core Qml Widgets)
+ find_package(KF5 REQUIRED COMPONENTS
+     Completion
+     Config
+@@ -27,7 +27,6 @@ find_package(KF5 REQUIRED COMPONENTS
+     IconThemes
+     ItemViews
+     JobWidgets
+-    JS
+     KIO
+     Service
+     WidgetsAddons
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 3f262b3..bee7378 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -128,9 +128,9 @@ target_link_libraries(krename
+     KF5::KIOCore
+     KF5::KIOFileWidgets
+     KF5::I18n
+-    KF5::JSApi
+     KF5::IconThemes
+     Qt5::Widgets
++    Qt5::Qml
+ )
+ if(TAGLIB_FOUND)
+     target_link_libraries(krename
+diff --git a/src/scriptplugin.cpp b/src/scriptplugin.cpp
+index d7f7125..651e656 100644
+--- a/src/scriptplugin.cpp
++++ b/src/scriptplugin.cpp
+@@ -18,8 +18,7 @@
+ #include <QTextStream>
+ #include <QVariant>
+ #include <QFileDialog>
+-
+-#include <kjs/kjsinterpreter.h>
++#include <QDebug>
+ 
+ #include "ui_scriptplugindialog.h"
+ #include "ui_scriptpluginwidget.h"
+@@ -46,7 +45,6 @@ ScriptPlugin::ScriptPlugin(PluginLoader *loader)
+ {
+     m_name = i18n("JavaScript Plugin");
+     m_icon = "applications-development";
+-    m_interpreter = new KJSInterpreter();
+     m_menu   = new QMenu();
+     m_widget = new Ui::ScriptPluginWidget();
+ 
+@@ -65,7 +63,6 @@ ScriptPlugin::~ScriptPlugin()
+ {
+     delete m_widget;
+     delete m_menu;
+-    delete m_interpreter;
+ }
+ 
+ QString ScriptPlugin::processFile(BatchRenamer *b, int index,
+@@ -90,13 +87,13 @@ QString ScriptPlugin::processFile(BatchRenamer *b, int 
index,
+         // Make sure definitions are executed first
+         script = definitions + '\n' + script;
+ 
+-        KJSResult result = m_interpreter->evaluate(script, nullptr);
+-        if (result.isException()) {
+-            qDebug("JavaScript Error: %s", 
result.errorMessage().toUtf8().data());
++        const QJSValue result = m_engine.evaluate(script);
++        if (result.isError()) {
++            qDebug() << "JavaScript Error:" << result.toString();
+             return QString();
+         }
+ 
+-        return result.value().toString(m_interpreter->globalContext());
++        return result.toString();
+     }
+ 
+     return QString();
+@@ -144,21 +141,11 @@ void ScriptPlugin::createUI(QWidget *parent) const
+ void ScriptPlugin::initKRenameVars(const KRenameFile &file, int index)
+ {
+     // KRename definitions
+-    m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
+-            ScriptPlugin::s_pszVarNameIndex,
+-            index);
+-    m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
+-            ScriptPlugin::s_pszVarNameUrl,
+-            file.srcUrl().url());
+-    m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
+-            ScriptPlugin::s_pszVarNameFilename,
+-            file.srcFilename());
+-    m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
+-            ScriptPlugin::s_pszVarNameExtension,
+-            file.srcExtension());
+-    m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
+-            ScriptPlugin::s_pszVarNameDirectory,
+-            file.srcDirectory());
++    m_engine.globalObject().setProperty(ScriptPlugin::s_pszVarNameIndex, 
index);
++    m_engine.globalObject().setProperty(ScriptPlugin::s_pszVarNameUrl, 
file.srcUrl().url());
++    m_engine.globalObject().setProperty(ScriptPlugin::s_pszVarNameFilename, 
file.srcFilename());
++    m_engine.globalObject().setProperty(ScriptPlugin::s_pszVarNameExtension, 
file.srcExtension());
++    m_engine.globalObject().setProperty(ScriptPlugin::s_pszVarNameDirectory, 
file.srcDirectory());
+ 
+     // User definitions, set them only on first file
+     if (index != 0) {
+@@ -178,21 +165,16 @@ void ScriptPlugin::initKRenameVars(const KRenameFile 
&file, int index)
+         switch (eVarType) {
+         default:
+         case eVarType_String:
+-            
m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
+-                    name, value.toUtf8().data());
++            m_engine.globalObject().setProperty(name, value);
+             break;
+         case eVarType_Int:
+-            
m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
+-                    name, value.toInt());
++            m_engine.globalObject().setProperty(name, value.toInt());
+             break;
+         case eVarType_Double:
+-            
m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
+-                    name, value.toDouble());
++            m_engine.globalObject().setProperty(name, value.toDouble());
+             break;
+         case eVarType_Bool:
+-            
m_interpreter->globalObject().setProperty(m_interpreter->globalContext(),
+-                    name,
+-                    (value.toLower() == "true" ? true : false));
++            m_engine.globalObject().setProperty(name, (value.toLower() == 
"true" ? true : false));
+             break;
+         }
+     }
+@@ -233,12 +215,9 @@ void ScriptPlugin::slotAdd()
+     // Build a Java script statement
+     QString script = name + " = " + value + ';';
+ 
+-    KJSInterpreter interpreter;
+-    KJSResult result = m_interpreter->evaluate(script, nullptr);
+-    if (result.isException()) {
+-        KMessageBox::error(m_parent,
+-                            i18n("A JavaScript error has occurred: ") +
+-                            result.errorMessage(), this->name());
++    const QJSValue result = m_engine.evaluate(script);
++    if (result.isError()) {
++        KMessageBox::error(m_parent, i18n("A JavaScript error has occurred: 
") + result.toString(), this->name());
+     } else {
+         QTreeWidgetItem *item = new QTreeWidgetItem();
+         item->setText(0, name);
+diff --git a/src/scriptplugin.h b/src/scriptplugin.h
+index 367310b..f91e79b 100644
+--- a/src/scriptplugin.h
++++ b/src/scriptplugin.h
+@@ -3,9 +3,10 @@
+ 
+ #include "plugin.h"
+ 
++#include <QJSEngine>
++
+ class QMenu;
+ 
+-class KJSInterpreter;
+ class KRenameFile;
+ 
+ namespace Ui
+@@ -171,7 +173,7 @@ private:
+ 
+     QStringList         m_keys;
+     QStringList         m_help;
+-    KJSInterpreter     *m_interpreter;
++    QJSEngine           m_engine;
+     QWidget            *m_parent;
+     QMenu              *m_menu;
+ 
+-- 
+2.29.2
+

diff --git a/kde-misc/krename/krename-5.0.1-r1.ebuild 
b/kde-misc/krename/krename-5.0.1-r1.ebuild
new file mode 100644
index 00000000000..168940d1e28
--- /dev/null
+++ b/kde-misc/krename/krename-5.0.1-r1.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+ECM_TEST="true"
+KFMIN=5.70.0
+QTMIN=5.14.2
+inherit ecm kde.org
+
+DESCRIPTION="Powerful batch file renamer"
+HOMEPAGE="https://apps.kde.org/en/krename https://userbase.kde.org/KRename";
+
+if [[ ${KDE_BUILD_TYPE} != live ]]; then
+       SRC_URI="mirror://kde/stable/${PN}/${PV}/src/${P}.tar.xz"
+       KEYWORDS="~amd64 ~arm64 ~x86"
+fi
+
+LICENSE="GPL-2"
+SLOT="5"
+IUSE="exif pdf taglib truetype"
+
+BDEPEND="sys-devel/gettext"
+DEPEND="
+       >=dev-qt/qtdeclarative-${QTMIN}:5
+       >=dev-qt/qtgui-${QTMIN}:5
+       >=dev-qt/qtwidgets-${QTMIN}:5
+       >=dev-qt/qtxml-${QTMIN}:5
+       >=kde-frameworks/kcompletion-${KFMIN}:5
+       >=kde-frameworks/kconfig-${KFMIN}:5
+       >=kde-frameworks/kcoreaddons-${KFMIN}:5
+       >=kde-frameworks/kcrash-${KFMIN}:5
+       >=kde-frameworks/ki18n-${KFMIN}:5
+       >=kde-frameworks/kiconthemes-${KFMIN}:5
+       >=kde-frameworks/kio-${KFMIN}:5
+       >=kde-frameworks/kitemviews-${KFMIN}:5
+       >=kde-frameworks/kjobwidgets-${KFMIN}:5
+       >=kde-frameworks/kservice-${KFMIN}:5
+       >=kde-frameworks/kwidgetsaddons-${KFMIN}:5
+       >=kde-frameworks/kxmlgui-${KFMIN}:5
+       exif? ( media-gfx/exiv2:= )
+       pdf? ( app-text/podofo:= )
+       taglib? ( media-libs/taglib )
+       truetype? ( media-libs/freetype:2 )
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=( "${FILESDIR}/${P}-no-kjs.patch" )
+
+src_configure() {
+       local mycmakeargs=(
+               $(cmake_use_find_package exif LibExiv2)
+               $(cmake_use_find_package pdf PoDoFo)
+               $(cmake_use_find_package taglib Taglib)
+               $(cmake_use_find_package truetype Freetype)
+       )
+       ecm_src_configure
+}

Reply via email to