aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGleb Popov <arrowd@FreeBSD.org>2023-08-18 07:42:04 +0000
committerGleb Popov <arrowd@FreeBSD.org>2023-08-18 07:43:08 +0000
commit2e217b7dc6ae43089fcccd7783ae900ae78f98df (patch)
treecc954ad600ac698526efd48c1b424a8e183d2ef1
parent2d9a70d8949f18c867932cb450ebe06747dd76e1 (diff)
downloadports-2e217b7dc6ae43089fcccd7783ae900ae78f98df.tar.gz
ports-2e217b7dc6ae43089fcccd7783ae900ae78f98df.zip
x11/plasma5-plasma-workspace: Restore a patch for kcm_regionandlang.
Sponsored by: Serenity Cybersecurity, LLC
-rw-r--r--x11/plasma5-plasma-workspace/Makefile1
-rw-r--r--x11/plasma5-plasma-workspace/files/patch-regionandlang322
2 files changed, 323 insertions, 0 deletions
diff --git a/x11/plasma5-plasma-workspace/Makefile b/x11/plasma5-plasma-workspace/Makefile
index 684e7fec59eb..f0d6fb6851ec 100644
--- a/x11/plasma5-plasma-workspace/Makefile
+++ b/x11/plasma5-plasma-workspace/Makefile
@@ -1,5 +1,6 @@
PORTNAME= plasma-workspace
DISTVERSION= ${KDE_PLASMA_VERSION}
+PORTREVISION= 1
CATEGORIES= x11 kde kde-plasma
MAINTAINER= kde@FreeBSD.org
diff --git a/x11/plasma5-plasma-workspace/files/patch-regionandlang b/x11/plasma5-plasma-workspace/files/patch-regionandlang
new file mode 100644
index 000000000000..23113c2e722d
--- /dev/null
+++ b/x11/plasma5-plasma-workspace/files/patch-regionandlang
@@ -0,0 +1,322 @@
+From 6fff5ebf2eb9ec2def4f7b5f0569b48c36061844 Mon Sep 17 00:00:00 2001
+From: Gleb Popov <6yearold@gmail.com>
+Date: Fri, 28 Jul 2023 10:59:40 +0300
+Subject: [PATCH 1/2] Rename REGION_LANG_GENERATE_LOCALE to
+ REGION_LANG_GENERATE_LOCALE_HELPER
+
+(cherry picked from commit 09d0b42a9)
+---
+ CMakeLists.txt | 6 +++---
+ kcms/region_language/CMakeLists.txt | 2 +-
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/CMakeLists.txt CMakeLists.txt
+index afd3bdcf22..54da6be721 100644
+--- a/CMakeLists.txt
++++ CMakeLists.txt
+@@ -253,19 +253,19 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+ set(GLIBC_LOCALE TRUE)
+ endif()
+ if(UBUNTU_PACKAGEKIT OR GLIBC_LOCALE_GEN)
+- set(REGION_LANG_GENERATE_LOCALE TRUE)
++ set(REGION_LANG_GENERATE_LOCALE_HELPER TRUE)
+ endif()
+
+ option(GLIBC_LOCALE_GENERATED "Systems that don't require locale generation. Such as openSUSE or Fedora" OFF)
+ if(GLIBC_LOCALE_GENERATED)
+ set(LOCALE_GENERATED TRUE)
+ endif()
+- if(REGION_LANG_GENERATE_LOCALE AND GLIBC_LOCALE_GENERATED)
++ if(REGION_LANG_GENERATE_LOCALE_HELPER AND GLIBC_LOCALE_GENERATED)
+ message(FATAL_ERROR "(UBUNTU_PACKAGEKIT || GLIBC_LOCALE_GEN) and GLIBC_LOCALE_GENERATED both enabled")
+ endif()
+
+ ################## Find libraries ###################
+- if(REGION_LANG_GENERATE_LOCALE)
++ if(REGION_LANG_GENERATE_LOCALE_HELPER)
+ find_package(PolkitQt${QT_MAJOR_VERSION}-1)
+ set_package_properties(PolkitQt${QT_MAJOR_VERSION}-1
+ PROPERTIES DESCRIPTION "DBus interface wrapper for Polkit"
+diff --git a/kcms/region_language/CMakeLists.txt kcms/region_language/CMakeLists.txt
+index d134937b77..56ccec7cba 100644
+--- a/kcms/region_language/CMakeLists.txt
++++ kcms/region_language/CMakeLists.txt
+@@ -47,7 +47,7 @@ ecm_qt_declare_logging_category(
+ )
+
+ ################ Build helper and add additional source files #############
+-if(REGION_LANG_GENERATE_LOCALE)
++if(REGION_LANG_GENERATE_LOCALE_HELPER)
+ add_subdirectory("localegenhelper")
+ qt_generate_dbus_interface(
+ ${CMAKE_CURRENT_SOURCE_DIR}/localegenhelper/localegenhelper.h
+--
+GitLab
+
+
+From 0d53975b637620cc7619a67df3397fd43f710eba Mon Sep 17 00:00:00 2001
+From: Gleb Popov <6yearold@gmail.com>
+Date: Mon, 26 Jun 2023 08:46:23 +0300
+Subject: [PATCH 2/2] region_language KCM: Guard glibc-related code with
+ ifdefs.
+
+This introduces GLIBC_LOCALE_AUTO and GLIBC_LOCALE_GENERATED to differentiate
+between Linux distributions. The GLIBC_LOCALE define is set for both cases.
+
+The change unbreaks the KCM on FreeBSD.
+
+Sponsored by: Serenity Cybersecurity, LLC
+
+(cherry picked from commit e8eabb689f82f99a362b6860915a8269b8e1268c)
+---
+ CMakeLists.txt | 14 +++++++-------
+ config-workspace.h.cmake | 8 ++++++--
+ kcms/region_language/kcmregionandlang.cpp | 16 ++++++++++++++--
+ kcms/region_language/kcmregionandlang.h | 7 +++++++
+ kcms/region_language/languagelistmodel.cpp | 6 ++++++
+ kcms/region_language/localegenerator.cpp | 6 +++---
+ 6 files changed, 43 insertions(+), 14 deletions(-)
+
+diff --git a/CMakeLists.txt CMakeLists.txt
+index 54da6be721..af371f8455 100644
+--- a/CMakeLists.txt
++++ CMakeLists.txt
+@@ -209,7 +209,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+ #
+ # For Glibc systems that come with pre-generated locales, such as Fedora and openSUSE
+ # a note to let user install fonts themselves if required is displayed
+- # You should enable GLIBC_LOCALE_GENERATED option
++ # You should enable GLIBC_LOCALE_PREGENERATED option
+ #
+ # For non-glibc systems such as VoidLinux and *BSD
+ # A warning of configure locale manually is displayed (although the relevant ENVs are set by Plasma)
+@@ -250,18 +250,18 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+ message(FATAL_ERROR "UBUNTU_PACKAGEKIT and GLIBC_LOCALE_GEN both enabled, only UBUNTU_PACKEGKIT will be used")
+ endif()
+ if(GLIBC_LOCALE_GEN)
+- set(GLIBC_LOCALE TRUE)
++ set(GLIBC_LOCALE_AUTO TRUE)
+ endif()
+ if(UBUNTU_PACKAGEKIT OR GLIBC_LOCALE_GEN)
+ set(REGION_LANG_GENERATE_LOCALE_HELPER TRUE)
+ endif()
+
+- option(GLIBC_LOCALE_GENERATED "Systems that don't require locale generation. Such as openSUSE or Fedora" OFF)
+- if(GLIBC_LOCALE_GENERATED)
+- set(LOCALE_GENERATED TRUE)
++ option(GLIBC_LOCALE_PREGENERATED "Systems that don't require locale generation. Such as openSUSE or Fedora" OFF)
++ if(GLIBC_LOCALE_PREGENERATED)
++ set(GLIBC_LOCALE_GENERATED TRUE)
+ endif()
+- if(REGION_LANG_GENERATE_LOCALE_HELPER AND GLIBC_LOCALE_GENERATED)
+- message(FATAL_ERROR "(UBUNTU_PACKAGEKIT || GLIBC_LOCALE_GEN) and GLIBC_LOCALE_GENERATED both enabled")
++ if(REGION_LANG_GENERATE_LOCALE_HELPER AND GLIBC_LOCALE_PREGENERATED)
++ message(FATAL_ERROR "(UBUNTU_PACKAGEKIT || GLIBC_LOCALE_GEN) and GLIBC_LOCALE_PREGENERATED both enabled")
+ endif()
+
+ ################## Find libraries ###################
+diff --git a/config-workspace.h.cmake config-workspace.h.cmake
+index d7cf5fe7ed..b696cd8fa5 100644
+--- a/config-workspace.h.cmake
++++ config-workspace.h.cmake
+@@ -12,5 +12,9 @@
+ #define WORKSPACE_VERSION_STRING "${PROJECT_VERSION}"
+
+ #cmakedefine OS_UBUNTU 1
+-#cmakedefine GLIBC_LOCALE 1
+-#cmakedefine LOCALE_GENERATED 1
++#cmakedefine01 GLIBC_LOCALE_AUTO
++#cmakedefine01 GLIBC_LOCALE_GENERATED
++
++#if defined(GLIBC_LOCALE_AUTO) || defined(GLIBC_LOCALE_GENERATED)
++#define GLIBC_LOCALE
++#endif
+diff --git a/kcms/region_language/kcmregionandlang.cpp kcms/region_language/kcmregionandlang.cpp
+index 9e99466a40..364b8767cd 100644
+--- a/kcms/region_language/kcmregionandlang.cpp
++++ kcms/region_language/kcmregionandlang.cpp
+@@ -2,10 +2,11 @@
+ kcmregionandlang.cpp
+ SPDX-FileCopyrightText: 2014 Sebastian Kügler <sebas@kde.org>
+ SPDX-FileCopyrightText: 2021 Han Young <hanyoung@protonmail.com>
++ SPDX-FileCopyrightText: 2023 Serenity Cybersecurity, LLC <license@futurecrew.ru>
++ Author: Gleb Popov <arrowd@FreeBSD.org>
+
+ SPDX-License-Identifier: GPL-2.0-or-later
+ */
+-#include "config-workspace.h"
+
+ #include "kcmregionandlang.h"
+
+@@ -60,6 +61,7 @@ KCMRegionAndLang::KCMRegionAndLang(QObject *parent, const KPluginMetaData &data,
+ qRegisterMetaType<KCM_RegionAndLang::SettingType>();
+ qmlRegisterUncreatableMetaObject(KCM_RegionAndLang::staticMetaObject, "kcmregionandlang", 1, 0, "SettingType", "Error: SettingType is an enum");
+
++#ifdef GLIBC_LOCALE_GENERATED
+ // fedora pre generate locales, fetch available locales from localectl. /usr/share/i18n/locales is empty in fedora
+ QDir glibcLocaleDir(localeFileDirPath());
+ if (glibcLocaleDir.isEmpty()) {
+@@ -80,6 +82,9 @@ KCMRegionAndLang::KCMRegionAndLang(QObject *parent, const KPluginMetaData &data,
+ } else {
+ m_enabled = true;
+ }
++#else
++ m_enabled = true;
++#endif
+ }
+
+ QString KCMRegionAndLang::failedFindLocalesMessage()
+@@ -124,6 +129,7 @@ void KCMRegionAndLang::save()
+ if (!settings()->isDefaultSetting(SettingType::PhoneNumbers)) {
+ locales.append(settings()->phoneNumbers());
+ }
++#ifdef GLIBC_LOCALE
+ if (!settings()->language().isEmpty()) {
+ QStringList languages = settings()->language().split(QLatin1Char(':'));
+ for (const QString &lang : languages) {
+@@ -133,6 +139,7 @@ void KCMRegionAndLang::save()
+ }
+ }
+ }
++#endif
+
+ auto setLangCall = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.Accounts"),
+ QStringLiteral("/org/freedesktop/Accounts/User%1").arg(getuid()),
+@@ -214,7 +221,7 @@ bool KCMRegionAndLang::isGlibc()
+ {
+ #ifdef OS_UBUNTU
+ return true;
+-#elif GLIBC_LOCALE
++#elif defined(GLIBC_LOCALE)
+ return true;
+ #else
+ return false;
+@@ -226,6 +233,7 @@ bool KCMRegionAndLang::enabled() const
+ return m_enabled;
+ }
+
++#ifdef GLIBC_LOCALE
+ std::optional<QString> KCMRegionAndLang::toGlibcLocale(const QString &lang)
+ {
+ static std::unordered_map<QString, QString> map = constructGlibcLocaleMap();
+@@ -235,6 +243,7 @@ std::optional<QString> KCMRegionAndLang::toGlibcLocale(const QString &lang)
+ }
+ return std::nullopt;
+ }
++#endif
+
+ QString KCMRegionAndLang::toUTF8Locale(const QString &locale)
+ {
+@@ -252,6 +261,7 @@ QString KCMRegionAndLang::toUTF8Locale(const QString &locale)
+ return locale + QLatin1String(".UTF-8");
+ }
+
++#ifdef GLIBC_LOCALE
+ std::unordered_map<QString, QString> KCMRegionAndLang::constructGlibcLocaleMap()
+ {
+ std::unordered_map<QString, QString> localeMap;
+@@ -338,5 +348,7 @@ std::unordered_map<QString, QString> KCMRegionAndLang::constructGlibcLocaleMap()
+ }
+ return localeMap;
+ }
++#endif
++
+ #include "kcmregionandlang.moc"
+ #include "moc_kcmregionandlang.cpp"
+diff --git a/kcms/region_language/kcmregionandlang.h kcms/region_language/kcmregionandlang.h
+index bdf9d19dbb..4649983b03 100644
+--- a/kcms/region_language/kcmregionandlang.h
++++ kcms/region_language/kcmregionandlang.h
+@@ -2,6 +2,8 @@
+ kcmregionandlang.h
+ SPDX-FileCopyrightText: 2014 Sebastian Kügler <sebas@kde.org>
+ SPDX-FileCopyrightText: 2021 Han Young <hanyoung@protonmail.com>
++ SPDX-FileCopyrightText: 2023 Serenity Cybersecurity, LLC <license@futurecrew.ru>
++ Author: Gleb Popov <arrowd@FreeBSD.org>
+
+ SPDX-License-Identifier: GPL-2.0-or-later
+ */
+@@ -11,6 +13,7 @@
+ #include <optional>
+ #include <unordered_map>
+
++#include "config-workspace.h"
+ #include "settingtype.h"
+
+ #include <KConfigGroup>
+@@ -36,7 +39,9 @@ public:
+ OptionsModel *optionsModel() const;
+ bool enabled() const;
+ static bool isGlibc();
++#ifdef GLIBC_LOCALE
+ std::optional<QString> toGlibcLocale(const QString &lang);
++#endif
+ Q_INVOKABLE void unset(KCM_RegionAndLang::SettingType setting);
+ Q_INVOKABLE void reboot();
+ Q_SIGNALS:
+@@ -53,7 +58,9 @@ private Q_SLOTS:
+ void saveToConfigFile();
+
+ private:
++#ifdef GLIBC_LOCALE
+ std::unordered_map<QString, QString> constructGlibcLocaleMap();
++#endif
+ static QString failedFindLocalesMessage();
+ static QString localeFileDirPath();
+ static QString toUTF8Locale(const QString &locale);
+diff --git a/kcms/region_language/languagelistmodel.cpp kcms/region_language/languagelistmodel.cpp
+index d9846226da..cc73178f86 100644
+--- a/kcms/region_language/languagelistmodel.cpp
++++ kcms/region_language/languagelistmodel.cpp
+@@ -2,6 +2,8 @@
+ languagelistmodel.h
+ SPDX-FileCopyrightText: 2021 Han Young <hanyoung@protonmail.com>
+ SPDX-FileCopyrightText: 2019 Kevin Ottens <kevin.ottens@enioka.com>
++ SPDX-FileCopyrightText: 2023 Serenity Cybersecurity, LLC <license@futurecrew.ru>
++ Author: Gleb Popov <arrowd@FreeBSD.org>
+ SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+@@ -384,10 +386,14 @@ void SelectedLanguageModel::saveLanguages()
+ Q_EMIT unsupportedLanguageChanged();
+ }
+
++#ifdef GLIBC_LOCALE
+ auto glibcLang = m_kcm->toGlibcLocale(m_selectedLanguages.front());
+ if (glibcLang.has_value()) {
+ m_settings->setLang(glibcLang.value());
+ }
++#else
++ m_settings->setLang(m_selectedLanguages.front());
++#endif
+ }
+ QString languages;
+ for (auto i = m_selectedLanguages.cbegin(); i != m_selectedLanguages.cend(); i++) {
+diff --git a/kcms/region_language/localegenerator.cpp kcms/region_language/localegenerator.cpp
+index 2da02617a4..fb8033c95d 100644
+--- a/kcms/region_language/localegenerator.cpp
++++ kcms/region_language/localegenerator.cpp
+@@ -15,7 +15,7 @@
+
+ #ifdef OS_UBUNTU
+ #include "localegeneratorubuntu.h"
+-#elif GLIBC_LOCALE
++#elif GLIBC_LOCALE_AUTO
+ #include "localegeneratorglibc.h"
+ #endif
+
+@@ -23,9 +23,9 @@ LocaleGeneratorBase *LocaleGenerator::getGenerator()
+ {
+ #ifdef OS_UBUNTU
+ static LocaleGeneratorUbuntu singleton;
+-#elif GLIBC_LOCALE
++#elif GLIBC_LOCALE_AUTO
+ static LocaleGeneratorGlibc singleton;
+-#elif LOCALE_GENERATED
++#elif GLIBC_LOCALE_GENERATED
+ static LocaleGeneratorGeneratedGlibc singleton;
+ #else
+ static LocaleGeneratorBase singleton;
+--
+GitLab
+