diff options
Diffstat (limited to 'source/kde/kde/patch')
65 files changed, 1352 insertions, 1905 deletions
diff --git a/source/kde/kde/patch/calligra.patch b/source/kde/kde/patch/calligra.patch index 380aaa942..a5a9d2047 100644 --- a/source/kde/kde/patch/calligra.patch +++ b/source/kde/kde/patch/calligra.patch @@ -1,4 +1,10 @@ -# Fix blank page in calligragemini cat $CWD/patch/calligra/calligragemini_fix_blank_page_without_libgit2.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } -cat $CWD/patch/calligra/0053-Partial-update-of-Commit-62f51070-to-make-it-compile.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } -cat $CWD/patch/calligra/calligra-gcc11.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +cat $CWD/patch/calligra/calligra-openexr3.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +cat $CWD/patch/calligra/poppler-22.03.0.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +cat $CWD/patch/calligra/calligra.poppler.GfxFont.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +cat $CWD/patch/calligra/upstream_Partial-update-of-Commit-62f51070-to-make-it-compile.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +cat $CWD/patch/calligra/upstream_Fix-some-more-warnings.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +cat $CWD/patch/calligra/upstream_Small-CMake-modernization.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +cat $CWD/patch/calligra/upstream_Update-Cmake-and-deps-Fix-Freetype-and-FontConfig-Li.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +cat $CWD/patch/calligra/upstream_Remove-old-std-c-11-setting-for-Vc.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +cat $CWD/patch/calligra/upstream_Fix-compile-with-newer-versions-of-poppler.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/calligra/calligra-gcc11.patch b/source/kde/kde/patch/calligra/calligra-gcc11.patch deleted file mode 100644 index c47895822..000000000 --- a/source/kde/kde/patch/calligra/calligra-gcc11.patch +++ /dev/null @@ -1,48 +0,0 @@ -diff --git a/filters/sheets/excel/sidewinder/chartsubstreamhandler.cpp b/filters/sheets/excel/sidewinder/chartsubstreamhandler.cpp -index feac1c6..5739328 100644 ---- a/filters/sheets/excel/sidewinder/chartsubstreamhandler.cpp -+++ b/filters/sheets/excel/sidewinder/chartsubstreamhandler.cpp -@@ -19,6 +19,7 @@ - Boston, MA 02110-1301, USA - */ - -+#include <limits> - #include "chartsubstreamhandler.h" - #include "globalssubstreamhandler.h" - #include "worksheetsubstreamhandler.h" -diff --git a/filters/sheets/excel/sidewinder/objects.cpp b/filters/sheets/excel/sidewinder/objects.cpp -index 7531dd7..6cbca37 100644 ---- a/filters/sheets/excel/sidewinder/objects.cpp -+++ b/filters/sheets/excel/sidewinder/objects.cpp -@@ -17,6 +17,7 @@ - Boston, MA 02110-1301, USA - */ - -+#include <limits> - #include "objects.h" - - #include "generated/simpleParser.h" -diff --git a/filters/sheets/excel/sidewinder/utils.h b/filters/sheets/excel/sidewinder/utils.h -index 6e012b2..61d7624 100644 ---- a/filters/sheets/excel/sidewinder/utils.h -+++ b/filters/sheets/excel/sidewinder/utils.h -@@ -23,6 +23,7 @@ - - #include "value.h" - #include <map> -+#include <limits> - - #include <QString> - #include <QUuid> -diff --git a/filters/sheets/excel/sidewinder/value.cpp b/filters/sheets/excel/sidewinder/value.cpp -index bfa3351..3007058 100644 ---- a/filters/sheets/excel/sidewinder/value.cpp -+++ b/filters/sheets/excel/sidewinder/value.cpp -@@ -17,6 +17,7 @@ - * Boston, MA 02110-1301, USA - */ - -+#include <limits> - #include "value.h" - #include "utils.h" - diff --git a/source/kde/kde/patch/calligra/calligra-openexr3.patch b/source/kde/kde/patch/calligra/calligra-openexr3.patch new file mode 100644 index 000000000..98d8bf7fa --- /dev/null +++ b/source/kde/kde/patch/calligra/calligra-openexr3.patch @@ -0,0 +1,89 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8955357ff97..ea56c84bb11 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -363,8 +363,13 @@ endif () + ## Check for OpenEXR + ## + +-macro_optional_find_package(OpenEXR) +-macro_bool_to_01(OPENEXR_FOUND HAVE_OPENEXR) ++macro_optional_find_package(Imath 3.0 CONFIG QUIET) ++if(TARGET Imath::Imath) ++ set(OPENEXR_LIBRARIES Imath::Imath) ++else() ++ macro_optional_find_package(OpenEXR) ++endif() ++macro_bool_to_01(OpenEXR_FOUND HAVE_OPENEXR) + + ## + ## Test for GNU Scientific Library +diff --git a/libs/pigment/CMakeLists.txt b/libs/pigment/CMakeLists.txt +index a039251e2ad..6eb6a8e70b6 100644 +--- a/libs/pigment/CMakeLists.txt ++++ b/libs/pigment/CMakeLists.txt +@@ -12,7 +12,7 @@ include_directories( ${PIGMENT_INCLUDES} ${Boost_INCLUDE_DIR}) + + set(FILE_OPENEXR_SOURCES) + set(LINK_OPENEXR_LIB) +-if(OPENEXR_FOUND) ++if(OpenEXR_FOUND) + include_directories(${OPENEXR_INCLUDE_DIR}) + set(LINK_OPENEXR_LIB ${OPENEXR_LIBRARIES}) + add_definitions(${OPENEXR_DEFINITIONS}) +diff --git a/plugins/colorengines/lcms2/CMakeLists.txt b/plugins/colorengines/lcms2/CMakeLists.txt +index 77807ff9702..920adbeaf87 100644 +--- a/plugins/colorengines/lcms2/CMakeLists.txt ++++ b/plugins/colorengines/lcms2/CMakeLists.txt +@@ -31,7 +31,7 @@ include_directories( + ${CMAKE_CURRENT_SOURCE_DIR}/colorprofiles + ) + +-if (HAVE_LCMS24 AND OPENEXR_FOUND) ++if (HAVE_LCMS24 AND OpenEXR_FOUND) + include_directories( + ${CMAKE_CURRENT_SOURCE_DIR}/colorspaces/gray_f16 + ${CMAKE_CURRENT_SOURCE_DIR}/colorspaces/rgb_f16 +@@ -41,7 +41,7 @@ endif () + + set(FILE_OPENEXR_SOURCES) + set(LINK_OPENEXR_LIB) +-if(OPENEXR_FOUND) ++if(OpenEXR_FOUND) + include_directories(${OPENEXR_INCLUDE_DIR}) + set(LINK_OPENEXR_LIB ${OPENEXR_LIBRARIES}) + add_definitions(${OPENEXR_DEFINITIONS}) +@@ -80,7 +80,7 @@ set ( lcmsengine_SRCS + LcmsEnginePlugin.cpp + ) + +-if (HAVE_LCMS24 AND OPENEXR_FOUND) ++if (HAVE_LCMS24 AND OpenEXR_FOUND) + set ( lcmsengine_SRCS + ${lcmsengine_SRCS} + colorspaces/gray_f16/GrayF16ColorSpace.cpp +diff --git a/plugins/colorengines/lcms2/tests/CMakeLists.txt b/plugins/colorengines/lcms2/tests/CMakeLists.txt +index 2540acc834c..77bd0b3fe4a 100644 +--- a/plugins/colorengines/lcms2/tests/CMakeLists.txt ++++ b/plugins/colorengines/lcms2/tests/CMakeLists.txt +@@ -12,7 +12,7 @@ include_directories( ../colorspaces/cmyk_u16 + ../colorprofiles + .. + ) +-if(OPENEXR_FOUND) ++if(OpenEXR_FOUND) + include_directories(${OPENEXR_INCLUDE_DIR}) + endif() + include_directories( ${PIGMENT_INCLUDES} ${LCMS2_INCLUDE_DIR} ) +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 4a77c4be50b..89636205c2b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -341,6 +341,7 @@ endif () + macro_optional_find_package(Imath 3.0 CONFIG QUIET) + if(TARGET Imath::Imath) + set(OPENEXR_LIBRARIES Imath::Imath) ++ set(OpenEXR_FOUND TRUE) + else() + macro_optional_find_package(OpenEXR) + endif() diff --git a/source/kde/kde/patch/calligra/calligra.poppler.GfxFont.patch b/source/kde/kde/patch/calligra/calligra.poppler.GfxFont.patch new file mode 100644 index 000000000..071f6f6c8 --- /dev/null +++ b/source/kde/kde/patch/calligra/calligra.poppler.GfxFont.patch @@ -0,0 +1,11 @@ +--- ./filters/karbon/pdf/SvgOutputDev.cpp.orig 2020-05-14 01:51:30.000000000 -0500 ++++ ./filters/karbon/pdf/SvgOutputDev.cpp 2022-05-02 01:24:57.902177123 -0500 +@@ -410,7 +410,7 @@ + if (s->getLength() == 0) + return; + +- GfxFont * font = state->getFont(); ++ std::shared_ptr<GfxFont> font = state->getFont(); + + QString str; + diff --git a/source/kde/kde/patch/calligra/poppler-22.03.0.patch b/source/kde/kde/patch/calligra/poppler-22.03.0.patch new file mode 100644 index 000000000..a20747df5 --- /dev/null +++ b/source/kde/kde/patch/calligra/poppler-22.03.0.patch @@ -0,0 +1,46 @@ +diff -uprw calligra-3.2.1.orig/filters/karbon/pdf/CMakeLists.txt calligra-3.2.1/filters/karbon/pdf/CMakeLists.txt +--- calligra-3.2.1.orig/filters/karbon/pdf/CMakeLists.txt 2020-05-14 09:51:30.000000000 +0300 ++++ calligra-3.2.1/filters/karbon/pdf/CMakeLists.txt 2022-03-02 12:19:08.039939530 +0200 +@@ -14,6 +14,10 @@ if(Poppler_VERSION VERSION_LESS "0.83.0" + add_definitions("-DHAVE_POPPLER_PRE_0_83") + endif() + ++if(Poppler_VERSION VERSION_LESS "22.3.0") ++ add_definitions("-DHAVE_POPPLER_PRE_22_3") ++endif() ++ + set(pdf2svg_PART_SRCS PdfImportDebug.cpp PdfImport.cpp SvgOutputDev.cpp ) + + add_library(calligra_filter_pdf2svg MODULE ${pdf2svg_PART_SRCS}) +diff -uprw calligra-3.2.1.orig/filters/karbon/pdf/Pdf2OdgImport.cpp calligra-3.2.1/filters/karbon/pdf/Pdf2OdgImport.cpp +--- calligra-3.2.1.orig/filters/karbon/pdf/Pdf2OdgImport.cpp 2020-05-14 09:51:30.000000000 +0300 ++++ calligra-3.2.1/filters/karbon/pdf/Pdf2OdgImport.cpp 2022-03-02 12:20:35.125605950 +0200 +@@ -86,8 +86,12 @@ KoFilter::ConversionStatus Pdf2OdgImport + if (! globalParams) + return KoFilter::NotImplemented; + ++#ifdef HAVE_POPPLER_PRE_22_3 + GooString * fname = new GooString(QFile::encodeName(m_chain->inputFile()).data()); + PDFDoc * pdfDoc = new PDFDoc(fname, 0, 0, 0); ++#else ++ PDFDoc * pdfDoc = new PDFDoc(std::make_unique<GooString>(QFile::encodeName(m_chain->inputFile()).data())); ++#endif + if (! pdfDoc) { + #ifdef HAVE_POPPLER_PRE_0_83 + delete globalParams; +diff -uprw calligra-3.2.1.orig/filters/karbon/pdf/PdfImport.cpp calligra-3.2.1/filters/karbon/pdf/PdfImport.cpp +--- calligra-3.2.1.orig/filters/karbon/pdf/PdfImport.cpp 2020-05-14 09:51:30.000000000 +0300 ++++ calligra-3.2.1/filters/karbon/pdf/PdfImport.cpp 2022-03-02 12:21:46.197510028 +0200 +@@ -73,8 +73,12 @@ KoFilter::ConversionStatus PdfImport::co + if (! globalParams) + return KoFilter::NotImplemented; + ++#ifdef HAVE_POPPLER_PRE_22_3 + GooString * fname = new GooString(QFile::encodeName(m_chain->inputFile()).data()); + PDFDoc * pdfDoc = new PDFDoc(fname, 0, 0, 0); ++#else ++ PDFDoc * pdfDoc = new PDFDoc(std::make_unique<GooString>(QFile::encodeName(m_chain->inputFile()).data())); ++#endif + if (! pdfDoc) { + #ifdef HAVE_POPPLER_PRE_0_83 + delete globalParams; diff --git a/source/kde/kde/patch/calligra/upstream_Fix-compile-with-newer-versions-of-poppler.patch b/source/kde/kde/patch/calligra/upstream_Fix-compile-with-newer-versions-of-poppler.patch new file mode 100644 index 000000000..7074bfcd1 --- /dev/null +++ b/source/kde/kde/patch/calligra/upstream_Fix-compile-with-newer-versions-of-poppler.patch @@ -0,0 +1,22 @@ +From 2f220c6d1418ce7fa509e0dc598a67e66908cbd3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=96mer=20Fad=C4=B1l=20Usta?= <omerusta@gmail.com> +Date: Fri, 25 Feb 2022 15:52:31 +0000 +Subject: [PATCH] Fix compile with newer versions of poppler + +--- + CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -149,6 +149,10 @@ calligra_set_productset(${PRODUCTSET}) + set(REQUIRED_KF5_VERSION "5.7.0") + set(REQUIRED_QT_VERSION "5.3.0") + ++set(CMAKE_CXX_STANDARD 17) ++set(CMAKE_CXX_STANDARD_REQUIRED ON) ++set(CMAKE_CXX_EXTENSIONS OFF) ++ + find_package(ECM 5.19 REQUIRED NO_MODULE) + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) + diff --git a/source/kde/kde/patch/calligra/upstream_Fix-some-more-warnings.patch b/source/kde/kde/patch/calligra/upstream_Fix-some-more-warnings.patch new file mode 100644 index 000000000..0b878b3bd --- /dev/null +++ b/source/kde/kde/patch/calligra/upstream_Fix-some-more-warnings.patch @@ -0,0 +1,443 @@ +From 068cd9aec11052733e393976142516d2190e4564 Mon Sep 17 00:00:00 2001 +From: Pierre Ducroquet <pinaraf@pinaraf.info> +Date: Sun, 28 Feb 2021 23:23:02 +0100 +Subject: [PATCH] Fix some more warnings + +--- + filters/libmsooxml/MsooXmlDiagramReader_p.cpp | 1 + + filters/sheets/csv/csvimport.cc | 2 +- + filters/sheets/excel/sidewinder/excel.cpp | 1 + + filters/sheets/excel/sidewinder/formulas.cpp | 2 +- + filters/sheets/gnumeric/gnumericexport.cc | 5 ++--- + filters/sheets/html/htmlexport.cc | 2 -- + filters/sheets/latex/export/latexexport.cc | 1 - + filters/sheets/latex/export/table.cc | 1 + + filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp | 1 - + filters/stage/pptx/PptxXmlDocumentReader.cpp | 2 +- + filters/words/msword-odf/texthandler.cpp | 2 ++ + filters/words/msword-odf/wv2/src/parser9x.cpp | 4 +++- + filters/words/msword-odf/wv2/src/styles.cpp | 4 +--- + filters/words/msword-odf/wv2/src/styles.h | 11 ++++++++--- + gemini/lib/GeminiMainWindow.cpp | 2 ++ + libs/pageapp/KoPAOdfPageSaveHelper.cpp | 2 +- + plugins/spacenavigator/SpaceNavigatorDevice.h | 6 ++---- + plugins/spacenavigator/SpaceNavigatorEvent.h | 2 +- + plugins/spacenavigator/SpaceNavigatorPollingThread.h | 3 +-- + plugins/vectorshape/VectorShape.cpp | 1 + + sheets/functions/datetime.cpp | 1 + + sheets/part/Digest.cpp | 8 ++++---- + sheets/shape/TableToolFactory.h | 2 +- + sheets/tests/TestSort.cpp | 4 ++-- + 24 files changed, 38 insertions(+), 32 deletions(-) + +diff --git a/filters/libmsooxml/MsooXmlDiagramReader_p.cpp b/filters/libmsooxml/MsooXmlDiagramReader_p.cpp +index 14b08531262..14fc6ab9a71 100644 +--- a/filters/libmsooxml/MsooXmlDiagramReader_p.cpp ++++ b/filters/libmsooxml/MsooXmlDiagramReader_p.cpp +@@ -872,6 +872,7 @@ void LayoutNodeAtom::finishBuild(Context* context) { + case AlgorithmAtom::UnknownAlg: + warnMsooXml << "Layout with name=" << m_name << "defines an unknown algorithm."; + // fall through and use the composite-algorithm ++ // fall through + case AlgorithmAtom::CompositeAlg: m_algorithmImpl = new CompositeAlgorithm; break; + case AlgorithmAtom::ConnectorAlg: m_algorithmImpl = new ConnectorAlgorithm; break; + case AlgorithmAtom::CycleAlg: m_algorithmImpl = new CycleAlgorithm; break; +diff --git a/filters/sheets/csv/csvimport.cc b/filters/sheets/csv/csvimport.cc +index 89fb7162e00..1008d186f18 100644 +--- a/filters/sheets/csv/csvimport.cc ++++ b/filters/sheets/csv/csvimport.cc +@@ -97,8 +97,8 @@ KoFilter::ConversionStatus CSVFilter::convert(const QByteArray& from, const QByt + return KoFilter::FileNotFound; + } + +- QString csv_delimiter; + // ###### FIXME: disabled for now ++ //QString csv_delimiter; + //if (!config.isNull()) + // csv_delimiter = config[0]; + +diff --git a/filters/sheets/excel/sidewinder/excel.cpp b/filters/sheets/excel/sidewinder/excel.cpp +index ab592225ca6..7fa5633d433 100644 +--- a/filters/sheets/excel/sidewinder/excel.cpp ++++ b/filters/sheets/excel/sidewinder/excel.cpp +@@ -2449,6 +2449,7 @@ bool ExcelReader::load(Workbook* workbook, const char* filename) + } else { + bytes_read = combObjStream->read( buffer, markerOrLength ); + QString ansiString = readByteString(buffer, markerOrLength); ++ Q_UNUSED(ansiString); + //TODO... + //printf( "markerOrLength=%i ansiString=%s\n",markerOrLength,ansiString.ascii() ); + } +diff --git a/filters/sheets/excel/sidewinder/formulas.cpp b/filters/sheets/excel/sidewinder/formulas.cpp +index 62747469a49..0132d39e024 100644 +--- a/filters/sheets/excel/sidewinder/formulas.cpp ++++ b/filters/sheets/excel/sidewinder/formulas.cpp +@@ -1513,7 +1513,7 @@ static void mergeTokens(UStringStack* stack, unsigned count, const QString &merg + if (!stack) return; + if (stack->size() < count) return; + +- QString s1, s2; ++ QString s1; + + while (count) { + count--; +diff --git a/filters/sheets/gnumeric/gnumericexport.cc b/filters/sheets/gnumeric/gnumericexport.cc +index 1256c68bc74..2468548edb3 100644 +--- a/filters/sheets/gnumeric/gnumericexport.cc ++++ b/filters/sheets/gnumeric/gnumericexport.cc +@@ -1293,15 +1293,13 @@ KoFilter::ConversionStatus GNUMERICExport::convert(const QByteArray& from, const + i = 0; + } + +- QString line; + for (int currentcolumn = 1; currentcolumn <= iMaxColumn; currentcolumn++) { + QDomElement cell_contents; + Cell cell(table, currentcolumn, currentrow); + +- QString text, style; ++ QString text; + QDomDocument domLink; + QDomElement domRoot; +- QDomNode domNode; + QDomNodeList childNodes; + + if (!cell.isDefault() && !cell.isEmpty()) { +@@ -1342,6 +1340,7 @@ KoFilter::ConversionStatus GNUMERICExport::convert(const QByteArray& from, const + text = domNode.toElement().text(); + + while (!domNode.isNull()) { ++ QString style; + style = domNode.toElement().tagName(); + + if (style == "b") +diff --git a/filters/sheets/html/htmlexport.cc b/filters/sheets/html/htmlexport.cc +index 2d116e0608c..bf41a6f743e 100644 +--- a/filters/sheets/html/htmlexport.cc ++++ b/filters/sheets/html/htmlexport.cc +@@ -242,7 +242,6 @@ void HTMLExport::convertSheet(Sheet *sheet, QString &str, int iMaxUsedRow, int i + i = 0; + } + +- QString separators; + QString line; + unsigned int nonempty_cells = 0; + +@@ -435,7 +434,6 @@ void HTMLExport::detectFilledCells(Sheet *sheet, int &rows, int &columns) + int iUsedColumn = 0; + for (int currentcolumn = 1 ; currentcolumn <= iMaxColumn ; currentcolumn++) { + cell = Cell(sheet, currentcolumn, currentrow); +- QString text; + if (!cell.isDefault() && !cell.isEmpty()) { + iUsedColumn = currentcolumn; + } +diff --git a/filters/sheets/latex/export/latexexport.cc b/filters/sheets/latex/export/latexexport.cc +index 8d0698a3420..4f8caf235d9 100644 +--- a/filters/sheets/latex/export/latexexport.cc ++++ b/filters/sheets/latex/export/latexexport.cc +@@ -38,7 +38,6 @@ LATEXExport::LATEXExport(QObject* parent, const QVariantList&) : + + KoFilter::ConversionStatus LATEXExport::convert(const QByteArray& from, const QByteArray& to) + { +- QString config; + + if (to != "text/x-tex" || from != "application/x-kspread") + return KoFilter::NotImplemented; +diff --git a/filters/sheets/latex/export/table.cc b/filters/sheets/latex/export/table.cc +index 8d8b6701a39..e58827dfbc7 100644 +--- a/filters/sheets/latex/export/table.cc ++++ b/filters/sheets/latex/export/table.cc +@@ -118,6 +118,7 @@ void Table::analyzePaper(const QDomNode node) + + /* borders */ + QDomNode border = getChild(node, "borders"); ++ Q_UNUSED(border); + setBorderRight(getAttr(node, "right").toLong()); + setBorderLeft(getAttr(node, "left").toLong()); + setBorderBottom(getAttr(node, "bottom").toLong()); +diff --git a/filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp b/filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp +index 782a5914729..eda8ffc6b47 100644 +--- a/filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp ++++ b/filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp +@@ -872,7 +872,6 @@ KoFilter::ConversionStatus XlsxXmlWorksheetReader::read_conditionalFormatting() + while (index < m_conditionalIndices.size()) { + QString conditionalArea; + Condition examinedCondition = m_conditionalIndices.at(index); +- QString sqrefOriginal = sqref; + int areaIndex = 0; + Condition previousCond; + +diff --git a/filters/stage/pptx/PptxXmlDocumentReader.cpp b/filters/stage/pptx/PptxXmlDocumentReader.cpp +index 4cf86aea8c8..11b5ad266b9 100644 +--- a/filters/stage/pptx/PptxXmlDocumentReader.cpp ++++ b/filters/stage/pptx/PptxXmlDocumentReader.cpp +@@ -316,7 +316,7 @@ KoFilter::ConversionStatus PptxXmlDocumentReader::read_sldId() + + QString slideMasterPath, slideMasterFile; + MSOOXML::Utils::splitPathAndFile(m_context->relationships->targetForType(slidePath, slideFile, QLatin1String(MSOOXML::Schemas::officeDocument::relationships) + "/slideLayout"), &slideMasterPath, &slideMasterFile); +- const QString slideMasterPathAndFile = m_context->relationships->targetForType(slideMasterPath, slideMasterFile, QLatin1String(MSOOXML::Schemas::officeDocument::relationships) + "/slideMaster"); ++ // const QString slideMasterPathAndFile = m_context->relationships->targetForType(slideMasterPath, slideMasterFile, QLatin1String(MSOOXML::Schemas::officeDocument::relationships) + "/slideMaster"); + + // Delay the reading of a tableStyle until we find a table as we need the + // clrMap from the master slide +diff --git a/filters/words/msword-odf/texthandler.cpp b/filters/words/msword-odf/texthandler.cpp +index e167d86e028..89ef678961a 100644 +--- a/filters/words/msword-odf/texthandler.cpp ++++ b/filters/words/msword-odf/texthandler.cpp +@@ -408,6 +408,7 @@ void WordsTextHandler::footnoteFound(wvWare::FootnoteData data, + } + case msonfcUCLetter: + letter = 'A'; ++ // fall through + case msonfcLCLetter: + { + while (noteNumber / 25 > 0) { +@@ -1064,6 +1065,7 @@ void WordsTextHandler::fieldStart(const wvWare::FLD* fld, wvWare::SharedPtr<cons + break; + case UNSUPPORTED: + warnMsDoc << "Warning: Fld data missing, ignoring!"; ++ // fall through + default: + warnMsDoc << "Warning: unrecognized field type, ignoring!"; + m_fld->m_type = UNSUPPORTED; +diff --git a/filters/words/msword-odf/wv2/src/parser9x.cpp b/filters/words/msword-odf/wv2/src/parser9x.cpp +index 9a6d1606ce9..e5d7d14691c 100644 +--- a/filters/words/msword-odf/wv2/src/parser9x.cpp ++++ b/filters/words/msword-odf/wv2/src/parser9x.cpp +@@ -581,7 +581,8 @@ void Parser9x::processPiece( String* string, U32 fc, U32 limit, const Position& + // same ASCII code as TTP_MARK (0x0007), NOTE: table depth == 1 + case CELL_MARK: + m_cellMarkFound = true; +- // Fall-through intended. A row/cell end is also a paragraph end. ++ // A row/cell end is also a paragraph end. ++ // fall through + case PARAGRAPH_MARK: + { + // No "index - start + 1" here, as we don't want to copy the +@@ -1064,6 +1065,7 @@ void Parser9x::emitSpecialCharacter( UChar character, U32 globalCP, SharedPtr<co + if (m_subDocument == Main) { + emitAnnotation( UString(character), globalCP, chp ); + } ++ break; + } + case TextHandler::FieldEscapeChar: + wvlog << "Found an escape character ++++++++++++++++++++?" << endl; +diff --git a/filters/words/msword-odf/wv2/src/styles.cpp b/filters/words/msword-odf/wv2/src/styles.cpp +index f47c3dd8d51..d2c96e3d92b 100644 +--- a/filters/words/msword-odf/wv2/src/styles.cpp ++++ b/filters/words/msword-odf/wv2/src/styles.cpp +@@ -42,7 +42,6 @@ STD::STD() + } + + STD::STD( U16 baseSize, U16 totalSize, OLEStreamReader* stream, bool preservePos ) +-throw(InvalidFormatException) + { + clearInternal(); + if (!read( baseSize, totalSize, stream, preservePos )) { +@@ -112,7 +111,6 @@ STD& STD::operator=( const STD& rhs ) + } + + bool STD::read( const U16 cbStd, const U16 stdfSize, OLEStreamReader* stream, bool preservePos ) +-throw(InvalidFormatException) + { + U16 shifterU16; + S32 startOffset=stream->tell(); // address where the STD starts +@@ -938,7 +936,7 @@ void Style::mergeUpechpx( const Style* parentStyle, WordVersion version ) + } + + +-StyleSheet::StyleSheet( OLEStreamReader* tableStream, U32 fcStshf, U32 lcbStshf ) throw(InvalidFormatException) ++StyleSheet::StyleSheet( OLEStreamReader* tableStream, U32 fcStshf, U32 lcbStshf ) + : m_udsNum(0) + { + WordVersion version = Word8; +diff --git a/filters/words/msword-odf/wv2/src/styles.h b/filters/words/msword-odf/wv2/src/styles.h +index ba02def6845..41c8278dd21 100644 +--- a/filters/words/msword-odf/wv2/src/styles.h ++++ b/filters/words/msword-odf/wv2/src/styles.h +@@ -58,8 +58,9 @@ struct STD + STD(); + /** + * Simply calls read(...) ++ * @throw InvalidFormatException + */ +- STD( U16 stdfSize, U16 totalSize, OLEStreamReader* stream, bool preservePos = false ) throw(InvalidFormatException); ++ STD( U16 stdfSize, U16 totalSize, OLEStreamReader* stream, bool preservePos = false ); + /** + * Attention: This struct allocates memory on the heap + */ +@@ -74,8 +75,9 @@ struct STD + * false the state of stream will be changed! + * + * @return true - success, false - failed ++ * @throw InvalidFormatException + */ +- bool read( const U16 cbStd, const U16 stdfSize, OLEStreamReader* stream, bool preservePos = false ) throw(InvalidFormatException); ++ bool read( const U16 cbStd, const U16 stdfSize, OLEStreamReader* stream, bool preservePos = false ); + + /** + * Same as reading :) +@@ -365,7 +367,10 @@ private: + class WV2_EXPORT StyleSheet + { + public: +- StyleSheet( OLEStreamReader* tableStream, U32 fcStshf, U32 lcbStshf ) throw(InvalidFormatException); ++ /** ++ * @throw InvalidFormatException ++ */ ++ StyleSheet( OLEStreamReader* tableStream, U32 fcStshf, U32 lcbStshf ); + ~StyleSheet(); + + /** +diff --git a/gemini/lib/GeminiMainWindow.cpp b/gemini/lib/GeminiMainWindow.cpp +index 3d05f6461e0..eb5f120c0f7 100644 +--- a/gemini/lib/GeminiMainWindow.cpp ++++ b/gemini/lib/GeminiMainWindow.cpp +@@ -136,8 +136,10 @@ void GeminiMainWindow::setFullScreen(bool newState) + } + + ++ + void GeminiMainWindow::changeState(GeminiMainWindow::GeminiState newState, bool lockNewState) + { ++ Q_UNUSED(lockNewState); + d->syncObject = new GeminiModeSynchronisationObject; + + if(centralWidget()) { +diff --git a/libs/pageapp/KoPAOdfPageSaveHelper.cpp b/libs/pageapp/KoPAOdfPageSaveHelper.cpp +index 92c6dfd4cb4..068501c8af1 100644 +--- a/libs/pageapp/KoPAOdfPageSaveHelper.cpp ++++ b/libs/pageapp/KoPAOdfPageSaveHelper.cpp +@@ -49,7 +49,7 @@ KoPAOdfPageSaveHelper::KoPAOdfPageSaveHelper( KoPADocument * doc, QList<KoPAPage + KoPAPage * p = static_cast<KoPAPage *>( page ); + masterPages.insert( p->masterPage() ); + } +- m_masterPages = masterPages.toList(); ++ m_masterPages = masterPages.values(); + } + } + +diff --git a/plugins/spacenavigator/SpaceNavigatorDevice.h b/plugins/spacenavigator/SpaceNavigatorDevice.h +index b9056ac98c1..ecd696e415f 100644 +--- a/plugins/spacenavigator/SpaceNavigatorDevice.h ++++ b/plugins/spacenavigator/SpaceNavigatorDevice.h +@@ -31,10 +31,8 @@ public: + explicit SpaceNavigatorDevice(QObject *parent); + virtual ~SpaceNavigatorDevice(); + +- /// reimplemented from KoInputDeviceHandler +- virtual bool start(); +- /// reimplemented from KoInputDeviceHandler +- virtual bool stop(); ++ virtual bool start() override; ++ virtual bool stop() override; + private Q_SLOTS: + void slotMoveEvent( int x, int y, int z, int rx, int ry, int rz, Qt::MouseButtons ); + void slotButtonEvent( int x, int y, int z, int rx, int ry, int rz, Qt::MouseButtons, Qt::MouseButton, int type ); +diff --git a/plugins/spacenavigator/SpaceNavigatorEvent.h b/plugins/spacenavigator/SpaceNavigatorEvent.h +index 73751ec88ff..76ee8e2f880 100644 +--- a/plugins/spacenavigator/SpaceNavigatorEvent.h ++++ b/plugins/spacenavigator/SpaceNavigatorEvent.h +@@ -33,7 +33,7 @@ public: + void setPosition( int x, int y, int z ); + void setRotation( int rx, int ry, int rz ); + +- virtual KoPointerEvent * pointerEvent(); ++ virtual KoPointerEvent * pointerEvent() override; + + private: + int m_x, m_y, m_z; +diff --git a/plugins/spacenavigator/SpaceNavigatorPollingThread.h b/plugins/spacenavigator/SpaceNavigatorPollingThread.h +index 62c4de8ab73..67d59177021 100644 +--- a/plugins/spacenavigator/SpaceNavigatorPollingThread.h ++++ b/plugins/spacenavigator/SpaceNavigatorPollingThread.h +@@ -39,8 +39,7 @@ Q_SIGNALS: + + protected: + +- /// reimplemented from QThread +- virtual void run(); ++ virtual void run() override; + + private: + bool m_stopped; +diff --git a/plugins/vectorshape/VectorShape.cpp b/plugins/vectorshape/VectorShape.cpp +index a25ab3fc561..9acbd251c94 100644 +--- a/plugins/vectorshape/VectorShape.cpp ++++ b/plugins/vectorshape/VectorShape.cpp +@@ -294,6 +294,7 @@ void VectorShape::saveOdf(KoShapeSavingContext & context) const + break; + case VectorTypeSvg: + mimeType = "image/svg+xml"; ++ break; + default: + // FIXME: What here? + mimeType = "application/x-what"; +diff --git a/sheets/functions/datetime.cpp b/sheets/functions/datetime.cpp +index 9f59fe2cf75..6157b0996c1 100644 +--- a/sheets/functions/datetime.cpp ++++ b/sheets/functions/datetime.cpp +@@ -597,6 +597,7 @@ Value func_currentDate(valVector, ValueCalc * calc, FuncExtra *) + // Function: CURRENTTIME + Value func_currentTime(valVector, ValueCalc * calc, FuncExtra *) + { ++ Q_UNUSED(calc); + return Value(QTime::currentTime()); + } + +diff --git a/sheets/part/Digest.cpp b/sheets/part/Digest.cpp +index 8cd972db989..e9246ce6e7d 100644 +--- a/sheets/part/Digest.cpp ++++ b/sheets/part/Digest.cpp +@@ -596,10 +596,10 @@ static void __rtl_digest_endSHA(DigestContextSHA *ctx) + } + + switch (ctx->m_nDatLen & 0x03) { +- case 0: X[i] = ((sal_uInt32)(*(p++))) << 0L; +- case 1: X[i] |= ((sal_uInt32)(*(p++))) << 8L; +- case 2: X[i] |= ((sal_uInt32)(*(p++))) << 16L; +- case 3: X[i] |= ((sal_uInt32)(*(p++))) << 24L; ++ case 0: X[i] = ((sal_uInt32)(*(p++))) << 0L; /* fall through */ ++ case 1: X[i] |= ((sal_uInt32)(*(p++))) << 8L; /* fall through */ ++ case 2: X[i] |= ((sal_uInt32)(*(p++))) << 16L; /* fall through */ ++ case 3: X[i] |= ((sal_uInt32)(*(p++))) << 24L; /* fall through */ + } + + __rtl_digest_swapLong(X, i + 1); +diff --git a/sheets/shape/TableToolFactory.h b/sheets/shape/TableToolFactory.h +index 679bfe14b8e..9412d8ffdc5 100644 +--- a/sheets/shape/TableToolFactory.h ++++ b/sheets/shape/TableToolFactory.h +@@ -34,7 +34,7 @@ public: + TableToolFactory(); + ~TableToolFactory(); + +- KoToolBase* createTool(KoCanvasBase* canvas); ++ KoToolBase* createTool(KoCanvasBase* canvas) override; + }; + + } // namespace Sheets +diff --git a/sheets/tests/TestSort.cpp b/sheets/tests/TestSort.cpp +index b3f1e35169d..6354d79abc5 100644 +--- a/sheets/tests/TestSort.cpp ++++ b/sheets/tests/TestSort.cpp +@@ -68,7 +68,7 @@ void TestSort::AscendingOrder() + command->setSheet(sheet); + + // Parameters. +- command->setSortRows(Qt::Vertical); ++ command->setSortRows(true); + command->setSkipFirst(false); + command->setCopyFormat(false); + +@@ -121,7 +121,7 @@ void TestSort::DescendingOrder() + command->setSheet(sheet); + + // Parameters. +- command->setSortRows(Qt::Vertical); ++ command->setSortRows(true); + command->setSkipFirst(false); + command->setCopyFormat(false); + +-- +2.35.1 + diff --git a/source/kde/kde/patch/calligra/0053-Partial-update-of-Commit-62f51070-to-make-it-compile.patch b/source/kde/kde/patch/calligra/upstream_Partial-update-of-Commit-62f51070-to-make-it-compile.patch index 46f6dd044..3715f3108 100644 --- a/source/kde/kde/patch/calligra/0053-Partial-update-of-Commit-62f51070-to-make-it-compile.patch +++ b/source/kde/kde/patch/calligra/upstream_Partial-update-of-Commit-62f51070-to-make-it-compile.patch @@ -1,8 +1,8 @@ From c7636fb343c848000300a9429410b74d17a4d54d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20Fad=C4=B1l=20Usta?= <omerusta@gmail.com> Date: Tue, 8 Jun 2021 05:13:23 +0000 -Subject: [PATCH 53/54] Partial update of Commit 62f51070 to make it - compileable again +Subject: [PATCH] Partial update of Commit 62f51070 to make it compileable + again Cmake to 3.16 Fix Fontconfig's FOUND variable @@ -82,5 +82,5 @@ index 16d7e066fa2..429afe79704 100644 -- -2.31.1 +2.33.0 diff --git a/source/kde/kde/patch/calligra/upstream_Remove-old-std-c-11-setting-for-Vc.patch b/source/kde/kde/patch/calligra/upstream_Remove-old-std-c-11-setting-for-Vc.patch new file mode 100644 index 000000000..3ab8279c3 --- /dev/null +++ b/source/kde/kde/patch/calligra/upstream_Remove-old-std-c-11-setting-for-Vc.patch @@ -0,0 +1,32 @@ +From 19584bed9588860047e3bd04e3fd2cf7e36adc3a Mon Sep 17 00:00:00 2001 +From: Antonio Rojas <arojas@archlinux.org> +Date: Sat, 8 Jan 2022 11:28:37 +0000 +Subject: [PATCH] Remove old -std=c++11 setting for Vc + +This is set by ECM nowadays, and causes issues when a newer standard is needed (eg. for latest poppler) +--- + CMakeLists.txt | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 3a86ec88f7d..9e87b9bda89 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -520,14 +520,6 @@ if (BUILD_VC) + set(ADDITIONAL_VC_FLAGS "-Wabi -fabi-version=0 -ffp-contract=fast -fPIC") + endif() + +- #Handle Vc master +- if(Vc_COMPILER_IS_GCC OR Vc_COMPILER_IS_CLANG) +- AddCompilerFlag("-std=c++11" _ok) +- if(NOT _ok) +- AddCompilerFlag("-std=c++0x" _ok) +- endif() +- endif() +- + macro(ko_compile_for_all_implementations_no_scalar _objs _src) + if(PACKAGERS_BUILD) + vc_compile_for_all_implementations(${_objs} ${_src} FLAGS ${ADDITIONAL_VC_FLAGS} ONLY SSE2 SSSE3 SSE4_1 AVX AVX2+FMA+BMI2) +-- +2.35.1 + diff --git a/source/kde/kde/patch/calligra/upstream_Small-CMake-modernization.patch b/source/kde/kde/patch/calligra/upstream_Small-CMake-modernization.patch new file mode 100644 index 000000000..c309a99d6 --- /dev/null +++ b/source/kde/kde/patch/calligra/upstream_Small-CMake-modernization.patch @@ -0,0 +1,128 @@ +From 2ac46db52c6ad401f67ae5b5fcd859a5872f0311 Mon Sep 17 00:00:00 2001 +From: Pierre Ducroquet <pinaraf@pinaraf.info> +Date: Sat, 1 May 2021 15:08:57 +0200 +Subject: [PATCH] Small CMake modernization + +Since we are now on CMake 3.2+, we can simplify policies. +And in order to simplify further, remove our use of +deprecated features in CMake. +--- + CMakeLists.txt | 21 +------------------ + cmake/modules/MacroCalligraAddBenchmark.cmake | 2 +- + filters/words/msword-odf/wv2/CMakeLists.txt | 7 +------ + .../wv2/src/generator/CMakeLists.txt | 7 +------ + .../rtf/import/3rdparty/rtf-qt/CMakeLists.txt | 7 +------ + 5 files changed, 5 insertions(+), 39 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fe6502493ed..b237f68fcb6 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -4,24 +4,9 @@ project(calligra) + + message(STATUS "Using CMake version: ${CMAKE_VERSION}") + +-if (POLICY CMP0002) +- cmake_policy(SET CMP0002 OLD) +-endif() +-if (POLICY CMP0017) +- cmake_policy(SET CMP0017 NEW) +-endif () + if (POLICY CMP0022) + cmake_policy(SET CMP0022 OLD) + endif () +-if (POLICY CMP0026) +- cmake_policy(SET CMP0026 OLD) +-endif() +-if (POLICY CMP0046) +- cmake_policy(SET CMP0046 OLD) +-endif () +-if (POLICY CMP0059) +- cmake_policy(SET CMP0059 OLD) +-endif() + if (POLICY CMP0063) + cmake_policy(SET CMP0063 NEW) + endif() +@@ -105,11 +90,7 @@ endif() + message(STATUS "Release build: ${RELEASE_BUILD}") + + # use CPP-11 +-if (CMAKE_VERSION VERSION_LESS "3.1") +- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +-else () +- set (CMAKE_CXX_STANDARD 11) +-endif () ++set (CMAKE_CXX_STANDARD 11) + + ############ + ############# +diff --git a/cmake/modules/MacroCalligraAddBenchmark.cmake b/cmake/modules/MacroCalligraAddBenchmark.cmake +index bfd1e1dc938..ad428a8459d 100644 +--- a/cmake/modules/MacroCalligraAddBenchmark.cmake ++++ b/cmake/modules/MacroCalligraAddBenchmark.cmake +@@ -41,7 +41,7 @@ macro (CALLIGRA_ADD_BENCHMARK _test_NAME) + endif() + endforeach(_filename) + +- get_target_property( loc ${_test_NAME} LOCATION ) ++ set(loc $<TARGET_FILE:${_test_NAME}>) + if(WIN32) + if(MSVC_IDE) + string(REGEX REPLACE "\\$\\(.*\\)" "\${CTEST_CONFIGURATION_TYPE}" loc "${loc}") +diff --git a/filters/words/msword-odf/wv2/CMakeLists.txt b/filters/words/msword-odf/wv2/CMakeLists.txt +index 6f9cddfe018..421c20b60f1 100644 +--- a/filters/words/msword-odf/wv2/CMakeLists.txt ++++ b/filters/words/msword-odf/wv2/CMakeLists.txt +@@ -1,12 +1,7 @@ +-cmake_minimum_required(VERSION 2.8.0) ++cmake_minimum_required(VERSION 3.2) + + add_definitions(-DUNICODE -D_UNICODE) + +-#cmake_policy CMP0017 was introduced in version 2.8.4 +-if(${CMAKE_VERSION} VERSION_GREATER 2.8.3) +- cmake_policy(SET CMP0017 NEW) +-endif() +- + # wv2 versioning + set( WV2_MAJOR_VERSION 0 ) + set( WV2_MINOR_VERSION 9 ) +diff --git a/filters/words/msword-odf/wv2/src/generator/CMakeLists.txt b/filters/words/msword-odf/wv2/src/generator/CMakeLists.txt +index 7d5086a0ebd..10d1c022e9e 100644 +--- a/filters/words/msword-odf/wv2/src/generator/CMakeLists.txt ++++ b/filters/words/msword-odf/wv2/src/generator/CMakeLists.txt +@@ -1,10 +1,5 @@ + # Generate parsers for some Word structures. +-cmake_minimum_required(VERSION 2.8.0) +- +-#cmake_policy CMP0017 was introduced in version 2.8.4 +-if(${CMAKE_VERSION} VERSION_GREATER 2.8.3) +- cmake_policy(SET CMP0017 NEW) +-endif() ++cmake_minimum_required(VERSION 3.2.0) + + set( scanner_word95 + ${CMAKE_CURRENT_BINARY_DIR}/word95_generated.h +diff --git a/filters/words/rtf/import/3rdparty/rtf-qt/CMakeLists.txt b/filters/words/rtf/import/3rdparty/rtf-qt/CMakeLists.txt +index 41e932d5869..cbd6ad9a83e 100644 +--- a/filters/words/rtf/import/3rdparty/rtf-qt/CMakeLists.txt ++++ b/filters/words/rtf/import/3rdparty/rtf-qt/CMakeLists.txt +@@ -1,14 +1,9 @@ + project( RtfReader ) + +-cmake_minimum_required(VERSION 2.8.12) ++cmake_minimum_required(VERSION 3.2) + + include(GenerateExportHeader) + +-#cmake_policy CMP0017 was introduced in version 2.8.4 +-if(${CMAKE_VERSION} VERSION_GREATER 2.8.3) +- cmake_policy(SET CMP0017 NEW) +-endif() +- + find_package(Qt5 5.2.0 REQUIRED Gui) + + add_subdirectory( src ) +-- +2.35.1 + diff --git a/source/kde/kde/patch/calligra/upstream_Update-Cmake-and-deps-Fix-Freetype-and-FontConfig-Li.patch b/source/kde/kde/patch/calligra/upstream_Update-Cmake-and-deps-Fix-Freetype-and-FontConfig-Li.patch new file mode 100644 index 000000000..5f2718875 --- /dev/null +++ b/source/kde/kde/patch/calligra/upstream_Update-Cmake-and-deps-Fix-Freetype-and-FontConfig-Li.patch @@ -0,0 +1,38 @@ +From 62f510702ef9c34ac50f8d8601a4290ab558464c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=96mer=20Fad=C4=B1l=20Usta?= <omerusta@gmail.com> +Date: Sun, 6 Jun 2021 08:41:05 +0000 +Subject: [PATCH] Update Cmake and deps, Fix Freetype and FontConfig Linkage + +Cmake to 3.16 +KF to 5.76 +QT to 5.12 +ECM follow KF's version +Update CALLIGRA_YEAR to 2021 +Fix Fontconfig's FOUND variable +Fix Fontconfig's include_dirs variable +Use Correct Target to link FontConfig and Freetype +--- + CMakeLists.txt | 20 +++++++------------- + libs/text/CMakeLists.txt | 4 ++-- + 2 files changed, 9 insertions(+), 15 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b237f68fcb6..cdcc02f0236 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -89,9 +89,6 @@ if(NOT DEFINED RELEASE_BUILD) + endif() + message(STATUS "Release build: ${RELEASE_BUILD}") + +-# use CPP-11 +-set (CMAKE_CXX_STANDARD 11) +- + ############ + ############# + ## Options ## + endif() + + +-- +2.35.1 + diff --git a/source/kde/kde/patch/dolphin.patch b/source/kde/kde/patch/dolphin.patch deleted file mode 100644 index 02a7950c8..000000000 --- a/source/kde/kde/patch/dolphin.patch +++ /dev/null @@ -1,2 +0,0 @@ -# Let the user decide whether she wants to run Dolphin as root: -cat $CWD/patch/dolphin/dolphin_revert_noroot.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/dolphin/dolphin_revert_noroot.patch b/source/kde/kde/patch/dolphin/dolphin_revert_noroot.patch deleted file mode 100644 index 423e17074..000000000 --- a/source/kde/kde/patch/dolphin/dolphin_revert_noroot.patch +++ /dev/null @@ -1,23 +0,0 @@ -# Let the user decide whether she wants to run Dolphin as root: - -diff -uar dolphin-18.08.0.orig/src/main.cpp dolphin-18.08.0/src/main.cpp ---- dolphin-18.08.0.orig/src/main.cpp 2018-08-06 22:41:40.000000000 +0200 -+++ dolphin-18.08.0/src/main.cpp 2018-08-11 00:32:48.073913157 +0200 -@@ -43,14 +43,12 @@ - extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv) - { - #ifndef Q_OS_WIN -- // Prohibit using sudo or kdesu (but allow using the root user directly) -+ // Warn using sudo or kdesu (but allow using the root user directly) - if (getuid() == 0) { - if (!qEnvironmentVariableIsEmpty("SUDO_USER")) { -- std::cout << "Executing Dolphin with sudo is not possible due to unfixable security vulnerabilities." << std::endl; -- return EXIT_FAILURE; -+ std::cout << "Executing Dolphin with sudo is UNSAFE due to unfixable security vulnerabilities." << std::endl; - } else if (!qEnvironmentVariableIsEmpty("KDESU_USER")) { -- std::cout << "Executing Dolphin with kdesu is not possible due to unfixable security vulnerabilities." << std::endl; -- return EXIT_FAILURE; -+ std::cout << "Executing Dolphin with kdesu is UNSAFE due to unfixable security vulnerabilities." << std::endl; - } - } - #endif diff --git a/source/kde/kde/patch/drkonqi.patch b/source/kde/kde/patch/drkonqi.patch new file mode 100644 index 000000000..bec49c925 --- /dev/null +++ b/source/kde/kde/patch/drkonqi.patch @@ -0,0 +1 @@ +cat $CWD/patch/drkonqi/drkonqi.disable.kuserfeedback.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/drkonqi/drkonqi.disable.kuserfeedback.patch b/source/kde/kde/patch/drkonqi/drkonqi.disable.kuserfeedback.patch new file mode 100644 index 000000000..fa53e86fd --- /dev/null +++ b/source/kde/kde/patch/drkonqi/drkonqi.disable.kuserfeedback.patch @@ -0,0 +1,46 @@ +--- ./CMakeLists.txt.orig 2023-02-09 05:58:46.000000000 -0600 ++++ ./CMakeLists.txt 2023-02-14 16:05:41.083008231 -0600 +@@ -57,9 +57,6 @@ + SyntaxHighlighting + ) + +-find_package(KUserFeedback) +-set_package_properties(KUserFeedback PROPERTIES TYPE REQUIRED PURPOSE "Checking whether feedback is enabled or not") +- + ecm_find_qmlmodule(org.kde.kirigami 2.19) + ecm_find_qmlmodule(org.kde.kitemmodels 1.0) + ecm_find_qmlmodule(org.kde.kcm 1.6) +--- ./src/CMakeLists.txt.orig 2023-02-14 16:05:41.083008231 -0600 ++++ ./src/CMakeLists.txt 2023-02-14 16:05:55.423007438 -0600 +@@ -103,7 +103,6 @@ + KF5::SyntaxHighlighting # Backtrace Highlighting + drkonqi_backtrace_parser + qbugzilla +- KUserFeedbackCore + ) + + if(Systemd_FOUND) +--- ./src/bugzillaintegration/reportinterface.cpp.orig 2023-02-09 05:58:46.000000000 -0600 ++++ ./src/bugzillaintegration/reportinterface.cpp 2023-02-14 16:05:41.083008231 -0600 +@@ -14,7 +14,6 @@ + + #include <KIO/TransferJob> + #include <KLocalizedString> +-#include <KUserFeedback/Provider> + + #include "backtracegenerator.h" + #include "bugzillalib.h" +@@ -58,13 +57,6 @@ + m_sentryUserFeedbackSent = true; + maybeDone(); + }); +- if (KUserFeedback::Provider provider; provider.isEnabled() && provider.telemetryMode() == KUserFeedback::Provider::DetailedUsageStatistics +- && !DrKonqi::isTestingBugzilla() && qgetenv("DRKONQI_KDE_BUGZILLA_URL").isEmpty() && !DrKonqi::crashedApplication()->hasDeletedFiles()) { +- metaObject()->invokeMethod(this, [this] { +- // Send crash event ASAP, if applicable. Trace quality doesn't matter for it. +- sendCrashEvent(); +- }); +- } + } + + void ReportInterface::setBugAwarenessPageData(bool rememberSituation, Reproducible reproducible, bool actions, bool unusual, bool configuration) diff --git a/source/kde/kde/patch/falkon.patch b/source/kde/kde/patch/falkon.patch deleted file mode 100644 index 27a466836..000000000 --- a/source/kde/kde/patch/falkon.patch +++ /dev/null @@ -1,2 +0,0 @@ -# Fix build against Qt 5.15: -cat $CWD/patch/falkon/falkon.qt-5.15.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/falkon/falkon.qt-5.15.diff b/source/kde/kde/patch/falkon/falkon.qt-5.15.diff deleted file mode 100644 index 60f1699e8..000000000 --- a/source/kde/kde/patch/falkon/falkon.qt-5.15.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- ./src/lib/tools/qztools.cpp.orig 2019-03-19 13:06:45.000000000 -0500 -+++ ./src/lib/tools/qztools.cpp 2020-07-18 15:00:08.881313780 -0500 -@@ -25,6 +25,7 @@ - #include <QByteArray> - #include <QPixmap> - #include <QPainter> -+#include <QPainterPath> - #include <QBuffer> - #include <QFile> - #include <QDir> ---- ./src/plugins/VerticalTabs/verticaltabsplugin.cpp.orig 2019-03-19 13:06:45.000000000 -0500 -+++ ./src/plugins/VerticalTabs/verticaltabsplugin.cpp 2020-07-18 15:03:16.468303404 -0500 -@@ -31,6 +31,7 @@ - #include "desktopfile.h" - - #include <QSettings> -+#include <QFile> - - VerticalTabsPlugin::VerticalTabsPlugin() - : QObject() diff --git a/source/kde/kde/patch/kapidox.patch b/source/kde/kde/patch/kapidox.patch new file mode 100644 index 000000000..d0dc7d79b --- /dev/null +++ b/source/kde/kde/patch/kapidox.patch @@ -0,0 +1,4 @@ +# Clear this first: +echo > CMakeLists.txt + +cat $CWD/patch/kapidox/kapidox.CMakeLists.txt.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/kapidox/kapidox.CMakeLists.txt.diff b/source/kde/kde/patch/kapidox/kapidox.CMakeLists.txt.diff new file mode 100644 index 000000000..592df2eb4 --- /dev/null +++ b/source/kde/kde/patch/kapidox/kapidox.CMakeLists.txt.diff @@ -0,0 +1,39 @@ +--- ./CMakeLists.txt.orig 2022-03-13 13:25:35.004123460 -0500 ++++ ./CMakeLists.txt 2022-03-13 13:25:28.609123316 -0500 +@@ -0,0 +1,36 @@ ++cmake_minimum_required(VERSION 3.16) ++project(KApiDox NONE) ++ ++find_package(Python3 COMPONENTS Interpreter) ++ ++if(WIN32) ++ # Needs native path and extra escaping of spaces ++ file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}" BINARY_DIR) ++else() ++ set(BINARY_DIR ${CMAKE_BINARY_DIR}) ++endif() ++ ++add_custom_target(build ALL ++ COMMAND ${Python3_EXECUTABLE} setup.py build --build-base ${BINARY_DIR} ++ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ++ ) ++ ++# DESTDIR may be set at install time (eg: `make DESTDIR=/tmp/package install`) ++# so we need to check for it when the install code is run and pass the appropriate ++# argument to distutils. ++# ++# Note that if(\$ENV{DESTDIR}) always fails, regardless of the value of the DESTDIR ++# environment variable, hence the STREQUAL test. ++# See https://public.kitware.com/Bug/view.php?id=14737 ++install(CODE ++ "set(_root_arg) ++ if (NOT \$ENV{DESTDIR} STREQUAL \"\") ++ file(TO_NATIVE_PATH \$ENV{DESTDIR} DESTDIR) ++ set(_root_arg --root \"\${DESTDIR}\") ++ endif() ++ file(TO_NATIVE_PATH ${CMAKE_INSTALL_PREFIX} INSTALL_PREFIX) ++ execute_process( ++ COMMAND ${Python3_EXECUTABLE} setup.py install --prefix \"\${INSTALL_PREFIX}\" \${_root_arg} ++ WORKING_DIRECTORY \"${CMAKE_SOURCE_DIR}\" ++ )" ++ ) diff --git a/source/kde/kde/patch/kate.patch b/source/kde/kde/patch/kate.patch deleted file mode 100644 index 59df062a0..000000000 --- a/source/kde/kde/patch/kate.patch +++ /dev/null @@ -1,3 +0,0 @@ -# Allow Kate to be started by the root user; disallowing this is not -# a decision that a developer should make for the user, it is patronizing: -cat $CWD/patch/kate/kate_runasroot.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/kate/kate_runasroot.patch b/source/kde/kde/patch/kate/kate_runasroot.patch deleted file mode 100644 index 3cc919faf..000000000 --- a/source/kde/kde/patch/kate/kate_runasroot.patch +++ /dev/null @@ -1,44 +0,0 @@ ---- ./kwrite/main.cpp.orig 2021-08-12 21:30:09.752256555 -0500 -+++ ./kwrite/main.cpp 2021-08-12 21:32:05.046259134 -0500 -@@ -41,17 +41,15 @@ - // Prohibit using sudo or kdesu (but allow using the root user directly) - if (getuid() == 0) { - if (!qEnvironmentVariableIsEmpty("SUDO_USER")) { -- std::cout << "Executing KWrite with sudo is not possible due to unfixable security vulnerabilities. " -+ std::cout << "Executing KWrite with sudo is UNSAFE due to unfixable security vulnerabilities. " - "It is also not necessary; simply use KWrite normally, and you will be prompted for " - "elevated privileges when saving documents if needed." - << std::endl; -- return EXIT_FAILURE; - } else if (!qEnvironmentVariableIsEmpty("KDESU_USER")) { -- std::cout << "Executing KWrite with kdesu is not possible due to unfixable security vulnerabilities. " -+ std::cout << "Executing KWrite with kdesu is UNSAFE due to unfixable security vulnerabilities. " - "It is also not necessary; simply use KWrite normally, and you will be prompted for " - "elevated privileges when saving documents if needed." - << std::endl; -- return EXIT_FAILURE; - } - } - #endif ---- ./kate/main.cpp.orig 2021-08-04 21:13:14.000000000 -0500 -+++ ./kate/main.cpp 2021-08-12 21:30:09.753256555 -0500 -@@ -49,17 +49,15 @@ - // Prohibit using sudo or kdesu (but allow using the root user directly) - if (getuid() == 0) { - if (!qEnvironmentVariableIsEmpty("SUDO_USER")) { -- std::cout << "Executing Kate with sudo is not possible due to unfixable security vulnerabilities. " -+ std::cout << "Executing Kate with sudo is UNSAFE due to unfixable security vulnerabilities. " - "It is also not necessary; simply use Kate normally, and you will be prompted for " - "elevated privileges when saving documents if needed." - << std::endl; -- return EXIT_FAILURE; - } else if (!qEnvironmentVariableIsEmpty("KDESU_USER")) { -- std::cout << "Executing Kate with kdesu is not possible due to unfixable security vulnerabilities. " -+ std::cout << "Executing Kate with kdesu is UNSAFE due to unfixable security vulnerabilities. " - "It is also not necessary; simply use Kate normally, and you will be prompted for " - "elevated privileges when saving documents if needed." - << std::endl; -- return EXIT_FAILURE; - } - } - #endif diff --git a/source/kde/kde/patch/kdeconnect-kde.patch b/source/kde/kde/patch/kdeconnect-kde.patch deleted file mode 100644 index 122440d2a..000000000 --- a/source/kde/kde/patch/kdeconnect-kde.patch +++ /dev/null @@ -1,2 +0,0 @@ -# Fix remote device browsing with openssh 8.2: -cat $CWD/patch/kdeconnect-kde/kdeconnect-kde_openssh-8.2.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/kdeconnect-kde/kdeconnect-kde_openssh-8.2.diff b/source/kde/kde/patch/kdeconnect-kde/kdeconnect-kde_openssh-8.2.diff deleted file mode 100644 index ff067aa8e..000000000 --- a/source/kde/kde/patch/kdeconnect-kde/kdeconnect-kde_openssh-8.2.diff +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/plugins/sftp/mounter.cpp b/plugins/sftp/mounter.cpp -index fca9907c..f673c9f7 100644 ---- a/plugins/sftp/mounter.cpp -+++ b/plugins/sftp/mounter.cpp -@@ -145,6 +145,7 @@ void Mounter::onPackageReceived(const NetworkPacket& np) - << QStringLiteral("-o") << QStringLiteral("reconnect") - << QStringLiteral("-o") << QStringLiteral("ServerAliveInterval=30") - << QStringLiteral("-o") << QStringLiteral("password_stdin") -+ << QStringLiteral("-o") << QStringLiteral("KexAlgorithms=+diffie-hellman-group14-sha1") - ; - - m_proc->setProgram(program, arguments); diff --git a/source/kde/kde/patch/kdewebkit.patch b/source/kde/kde/patch/kdewebkit.patch new file mode 100644 index 000000000..52bf69a6f --- /dev/null +++ b/source/kde/kde/patch/kdewebkit.patch @@ -0,0 +1,2 @@ +# Smite the accidental backport: +cat $CWD/patch/kdewebkit/kdewebkit.ECMFeatureSummary.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/kdewebkit/kdewebkit.ECMFeatureSummary.patch b/source/kde/kde/patch/kdewebkit/kdewebkit.ECMFeatureSummary.patch new file mode 100644 index 000000000..13ff8ce89 --- /dev/null +++ b/source/kde/kde/patch/kdewebkit/kdewebkit.ECMFeatureSummary.patch @@ -0,0 +1,9 @@ +--- ./CMakeLists.txt.orig 2024-02-03 08:23:17.000000000 -0600 ++++ ./CMakeLists.txt 2024-02-10 13:12:28.148883115 -0600 +@@ -76,5 +76,4 @@ + DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KDEWebKit COMPONENT Devel + ) + +-include(ECMFeatureSummary) +-ecm_feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) ++feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/source/kde/kde/patch/kid3.patch b/source/kde/kde/patch/kid3.patch new file mode 100644 index 000000000..fdb8e61ef --- /dev/null +++ b/source/kde/kde/patch/kid3.patch @@ -0,0 +1 @@ +cat $CWD/patch/kid3/build-with-qt5.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/kid3/build-with-qt5.patch b/source/kde/kde/patch/kid3/build-with-qt5.patch new file mode 100644 index 000000000..5287c4c36 --- /dev/null +++ b/source/kde/kde/patch/kid3/build-with-qt5.patch @@ -0,0 +1,15 @@ +--- ./CMakeLists.txt.orig 2024-02-23 16:50:39.000000000 -0000 ++++ ./CMakeLists.txt 2024-03-14 20:49:46.015432993 -0000 +@@ -271,11 +271,7 @@ + endif() + endif() + endif() +-if(BUILD_WITH_QT6) +- find_package(QT NAMES Qt6 COMPONENTS Core REQUIRED) +-else() +- find_package(QT NAMES Qt5 Qt6 COMPONENTS Core REQUIRED) +-endif() ++find_package(QT NAMES Qt5 COMPONENTS Core REQUIRED) + if(QT_VERSION_MAJOR EQUAL 6 AND QT_VERSION_MINOR LESS 2) + set(WITH_MULTIMEDIA OFF) + endif() diff --git a/source/kde/kde/patch/kinfocenter.patch b/source/kde/kde/patch/kinfocenter.patch deleted file mode 100644 index b57d434fc..000000000 --- a/source/kde/kde/patch/kinfocenter.patch +++ /dev/null @@ -1,2 +0,0 @@ -# Fix linking error : -cat $CWD/patch/kinfocenter/kinfocenter_libpci.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/kinfocenter/kinfocenter_libpci.patch b/source/kde/kde/patch/kinfocenter/kinfocenter_libpci.patch deleted file mode 100644 index a2bc00796..000000000 --- a/source/kde/kde/patch/kinfocenter/kinfocenter_libpci.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- kinfocenter-5.5.5/cmake/FindPCIUTILS.cmake.orig 2016-03-01 14:32:01.000000000 +0100 -+++ kinfocenter-5.5.5/cmake/FindPCIUTILS.cmake 2016-03-11 13:00:12.412315320 +0100 -@@ -19,6 +19,14 @@ - else(RESOLV_LIBRARY) - set(PCIUTILS_LIBRARIES ${PCIUTILS_LIBRARY}) - endif(RESOLV_LIBRARY) -+ FIND_LIBRARY(UDEV_LIBRARY NAMES udev) -+ if(UDEV_LIBRARY) -+ set(PCIUTILS_LIBRARIES ${PCIUTILS_LIBRARIES} ${UDEV_LIBRARY}) -+ endif(UDEV_LIBRARY) -+ FIND_LIBRARY(ZLIB_LIBRARY NAMES z) -+ if(ZLIB_LIBRARY) -+ set(ZLIB_LIBRARIES ${ZLIB_LIBRARY}) -+ endif(ZLIB_LIBRARY) - endif(PCIUTILS_LIBRARY) - - diff --git a/source/kde/kde/patch/kmymoney.patch b/source/kde/kde/patch/kmymoney.patch deleted file mode 100644 index ead3686fe..000000000 --- a/source/kde/kde/patch/kmymoney.patch +++ /dev/null @@ -1,2 +0,0 @@ -# Fix build with recent akonadi: -cat $CWD/patch/kmymoney/kmymoney.akonadi.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/kmymoney/kmymoney.akonadi.patch b/source/kde/kde/patch/kmymoney/kmymoney.akonadi.patch deleted file mode 100644 index 6d062326c..000000000 --- a/source/kde/kde/patch/kmymoney/kmymoney.akonadi.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff -aurN kmymoney-5.1.2/kmymoney/mymoney/mymoneycontact.cpp kmymoney-5.1.2-mod/kmymoney/mymoney/mymoneycontact.cpp ---- kmymoney-5.1.2/kmymoney/mymoney/mymoneycontact.cpp 2021-06-23 17:49:12.000000000 +0200 -+++ kmymoney-5.1.2-mod/kmymoney/mymoney/mymoneycontact.cpp 2021-12-12 17:03:38.513691645 +0100 -@@ -8,11 +8,20 @@ - #include "mymoneycontact.h" - - #ifdef ENABLE_ADDRESSBOOK --#include <KIdentityManagement/IdentityManager> - #include <KIdentityManagement/Identity> -+#include <KIdentityManagement/IdentityManager> -+#include <akonadi_version.h> -+ -+#if AKONADI_VERSION >= QT_VERSION_CHECK(5, 18, 41) -+#include <Akonadi/Collection> -+#include <Akonadi/ItemFetchScope> -+#include <Akonadi/RecursiveItemFetchJob> -+#else - #include <AkonadiCore/RecursiveItemFetchJob> - #include <AkonadiCore/ItemFetchScope> - #include <AkonadiCore/Collection> -+#endif -+ - #include <KContacts/Addressee> - #include <QRegularExpression> - #endif -@@ -67,7 +76,7 @@ - job->fetchScope().fetchFullPayload(); - job->fetchScope().setAncestorRetrieval(Akonadi::ItemFetchScope::Parent); - job->setProperty("MyMoneyContact_email", email); -- connect(job, SIGNAL(result(KJob*)), this, SLOT(searchContactResult(KJob*))); -+ connect(job, &Akonadi::RecursiveItemFetchJob::result, this, &MyMoneyContact::searchContactResult); - job->start(); - } - #else diff --git a/source/kde/kde/patch/konsole.patch b/source/kde/kde/patch/konsole.patch deleted file mode 100644 index 99f44a3dd..000000000 --- a/source/kde/kde/patch/konsole.patch +++ /dev/null @@ -1 +0,0 @@ -cat $CWD/patch/konsole/eb44240235fa61e662e9a521f72e8be9213bb536.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/krename.patch b/source/kde/kde/patch/krename.patch index 6e79ecb66..9581a5060 100644 --- a/source/kde/kde/patch/krename.patch +++ b/source/kde/kde/patch/krename.patch @@ -1 +1,2 @@ cat $CWD/patch/krename/krename.taglib.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } +cat $CWD/patch/krename/krename.exiv2-0.28.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/krename/krename.exiv2-0.28.diff b/source/kde/kde/patch/krename/krename.exiv2-0.28.diff new file mode 100644 index 000000000..bf095aea2 --- /dev/null +++ b/source/kde/kde/patch/krename/krename.exiv2-0.28.diff @@ -0,0 +1,11 @@ +--- ./src/exiv2plugin.cpp.orig 2022-08-31 16:22:21.000000000 -0500 ++++ ./src/exiv2plugin.cpp 2023-10-27 13:53:53.697705529 -0500 +@@ -395,7 +395,7 @@ + std::string strFilename(asc.constData(), asc.length()); + + try { +- Image::AutoPtr image = Exiv2::ImageFactory::open(strFilename); ++ Image::UniquePtr image = Exiv2::ImageFactory::open(strFilename); + if (image.get() != nullptr && image->good()) { + image->readMetadata(); + diff --git a/source/kde/kde/patch/krita.patch b/source/kde/kde/patch/krita.patch new file mode 100644 index 000000000..df5259ebd --- /dev/null +++ b/source/kde/kde/patch/krita.patch @@ -0,0 +1 @@ +cat $CWD/patch/krita/sip-6.8.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/krita/sip-6.8.patch b/source/kde/kde/patch/krita/sip-6.8.patch new file mode 100644 index 000000000..9579e4f3c --- /dev/null +++ b/source/kde/kde/patch/krita/sip-6.8.patch @@ -0,0 +1,13 @@ +diff --git a/cmake/modules/pyproject.toml.in b/cmake/modules/pyproject.toml.in +index 090b2d4b0c..085ddf4179 100644 +--- a/cmake/modules/pyproject.toml.in ++++ b/cmake/modules/pyproject.toml.in +@@ -9,7 +9,7 @@ name = "@module_name_toml@" + sip-module = "@sip_name@" + sip-include-dirs = @sip_include_dirs@ + sip-files-dir = "@module_srcs@" +-abi-version = "12" ++abi-version = "12.8" + + [tool.sip.bindings.@module_name_toml@] + tags = @module_tags@ diff --git a/source/kde/kde/patch/kross-interpreters.patch b/source/kde/kde/patch/kross-interpreters.patch new file mode 100644 index 000000000..0c0038b19 --- /dev/null +++ b/source/kde/kde/patch/kross-interpreters.patch @@ -0,0 +1 @@ +cat $CWD/patch/kross-interpreters/dump-python2.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/kross-interpreters/dump-python2.patch b/source/kde/kde/patch/kross-interpreters/dump-python2.patch new file mode 100644 index 000000000..c4fa64268 --- /dev/null +++ b/source/kde/kde/patch/kross-interpreters/dump-python2.patch @@ -0,0 +1,42 @@ +--- ./CMakeLists.txt.orig 2024-01-11 15:29:12.000000000 -0600 ++++ ./CMakeLists.txt 2024-03-19 22:59:23.005420760 -0500 +@@ -16,28 +16,6 @@ + find_package(Qt5 5.2.0 CONFIG REQUIRED Core Gui Widgets) + find_package(KF5 5.11.0 REQUIRED Kross) + +-# ========================= Find Python 2 ========================= +- +-# TODO: CMake's FindPythonLibs.cmake needs fixing, because without the +-# following hack find_package(PythonLibs 3) would find the previously found +-# version 2.7. Due to this hack one cannot predefine PYTHON_LIBRARY and/or +-# PYTHON_INCLUDE_DIR by editing CMakeCache.txt. +-unset(PYTHON_INCLUDE_DIR CACHE) +-unset(PYTHON_LIBRARY CACHE) +-unset(PYTHON_LIBRARY_DEBUG CACHE) +-# Unset variables set by find_package(PythonInterp) which is called by KI18n +-unset(PYTHON_VERSION_MAJOR) +-unset(PYTHON_VERSION_MINOR) +-find_package(PythonLibs 2 EXACT) +- +-set(PYTHON2_LIBS_FOUND ${PYTHONLIBS_FOUND}) +-set(PYTHON2_LIBRARIES ${PYTHON_LIBRARIES}) +-set(PYTHON2_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS}) +-set(PYTHON2_LIBS_VERSION_STRING ${PYTHONLIBS_VERSION_STRING}) +-if(PYTHON2_LIBS_FOUND) +- message(STATUS "Found Python 2: ${PYTHON2_LIBRARIES} (found version \"${PYTHON2_LIBS_VERSION_STRING}\")") +-endif() +- + # ========================= Find FALCON ========================= + + ### Falcon support disabled because it does not work with most modern falcon-0.9.x +@@ -61,10 +39,6 @@ + + # ========================= Traverse subdirectories for actual targets ========================= + +-if(PYTHON2_LIBS_FOUND) +- ecm_optional_add_subdirectory(python) +-endif(PYTHON2_LIBS_FOUND) +- + ### Falcon support disabled because it does not work with most modern falcon-0.9.x + # if(FALCON_FOUND) + # ecm_optional_add_subdirectory(falcon) diff --git a/source/kde/kde/patch/kscreen.patch b/source/kde/kde/patch/kscreen.patch deleted file mode 100644 index 7b0a24332..000000000 --- a/source/kde/kde/patch/kscreen.patch +++ /dev/null @@ -1 +0,0 @@ -cat $CWD/patch/kscreen/57.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/kscreen/57.patch b/source/kde/kde/patch/kscreen/57.patch deleted file mode 100644 index bb8befc91..000000000 --- a/source/kde/kde/patch/kscreen/57.patch +++ /dev/null @@ -1,189 +0,0 @@ -From 4d025b68022405ce889b563ed67646ccbfe4a658 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com> -Date: Mon, 29 Nov 2021 17:15:26 +0100 -Subject: [PATCH 1/4] Compute logicalSize taking into account current config - -BUG: 441417 ---- - kcm/output_identifier.cpp | 2 +- - kcm/output_model.cpp | 23 +++++++++++++++-------- - kded/output.cpp | 4 ++-- - 3 files changed, 18 insertions(+), 11 deletions(-) - -diff --git a/kcm/output_identifier.cpp b/kcm/output_identifier.cpp -index a672995..ba51470 100644 ---- a/kcm/output_identifier.cpp -+++ b/kcm/output_identifier.cpp -@@ -56,7 +56,7 @@ OutputIdentifier::OutputIdentifier(KScreen::ConfigPtr config, QObject *parent) - } - if (config->supportedFeatures() & KScreen::Config::Feature::PerOutputScaling) { - // Scale adjustment is not needed on Wayland, we use logical size. -- logicalSize = output->logicalSize().toSize(); -+ logicalSize = output->explicitLogicalSize().toSize(); - } else { - logicalSize = deviceSize / view->effectiveDevicePixelRatio(); - } -diff --git a/kcm/output_model.cpp b/kcm/output_model.cpp -index a497c90..020b96f 100644 ---- a/kcm/output_model.cpp -+++ b/kcm/output_model.cpp -@@ -161,10 +161,13 @@ bool OutputModel::setData(const QModelIndex &index, const QVariant &value, int r - bool ok; - const qreal scale = value.toReal(&ok); - if (ok && !qFuzzyCompare(output.ptr->scale(), scale)) { -- const auto oldSize = output.ptr->logicalSize().toSize(); -+ const auto oldSize = output.ptr->explicitLogicalSize().toSize(); -+ - output.ptr->setScale(scale); - m_config->setScale(output.ptr, scale); -- const auto newSize = output.ptr->logicalSize().toSize(); -+ -+ const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize(); -+ output.ptr->setExplicitLogicalSize(newSize); - - maintainSnapping(output, oldSize, newSize); - -@@ -385,9 +388,11 @@ bool OutputModel::setResolution(int outputIndex, int resIndex) - if (output.ptr->currentModeId() == id) { - return false; - } -- const auto oldSize = output.ptr->logicalSize().toSize(); -+ const auto oldSize = output.ptr->explicitLogicalSize().toSize(); - output.ptr->setCurrentModeId(id); -- const auto newSize = output.ptr->logicalSize().toSize(); -+ -+ const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize(); -+ output.ptr->setExplicitLogicalSize(newSize); - - maintainSnapping(output, oldSize, newSize); - -@@ -466,9 +471,11 @@ bool OutputModel::setRotation(int outputIndex, KScreen::Output::Rotation rotatio - if (output.ptr->rotation() == rotation) { - return false; - } -- const auto oldSize = output.ptr->logicalSize().toSize(); -+ const auto oldSize = output.ptr->explicitLogicalSize().toSize(); - output.ptr->setRotation(rotation); -- const auto newSize = output.ptr->logicalSize().toSize(); -+ -+ const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize(); -+ output.ptr->setExplicitLogicalSize(newSize); - - maintainSnapping(output, oldSize, newSize); - -@@ -653,7 +660,7 @@ bool OutputModel::setReplicationSourceIndex(int outputIndex, int sourceIndex) - return false; - } - m_config->setReplicationSource(output.ptr, nullptr); -- output.ptr->setLogicalSize(QSizeF()); -+ output.ptr->setExplicitLogicalSize(QSizeF()); - resetPosition(output); - } else { - const auto source = m_outputs[sourceIndex].ptr; -@@ -664,7 +671,7 @@ bool OutputModel::setReplicationSourceIndex(int outputIndex, int sourceIndex) - m_config->setReplicationSource(output.ptr, source); - output.posReset = output.ptr->pos(); - output.ptr->setPos(source->pos()); -- output.ptr->setLogicalSize(source->logicalSize()); -+ output.ptr->setExplicitLogicalSize(m_config->config()->logicalSizeForOutput(*source)); - } - - reposition(); -diff --git a/kded/output.cpp b/kded/output.cpp -index 7463b8a..44251e5 100644 ---- a/kded/output.cpp -+++ b/kded/output.cpp -@@ -404,9 +404,9 @@ void Output::readInOutputs(KScreen::ConfigPtr config, const QVariantList &output - auto replicationSource = control.getReplicationSource(output); - if (replicationSource) { - output->setPos(replicationSource->pos()); -- output->setLogicalSize(replicationSource->logicalSize()); -+ output->setExplicitLogicalSize(config->logicalSizeForOutput(*replicationSource)); - } else { -- output->setLogicalSize(QSizeF()); -+ output->setExplicitLogicalSize(QSizeF()); - } - } - --- -GitLab - - -From 3b90217f21e62285e78fff86ae562c692799e28f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com> -Date: Tue, 30 Nov 2021 14:58:40 +0100 -Subject: [PATCH 2/4] Update screen size when mode changes - ---- - kcm/output_model.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/kcm/output_model.cpp b/kcm/output_model.cpp -index 020b96f..ae01307 100644 ---- a/kcm/output_model.cpp -+++ b/kcm/output_model.cpp -@@ -390,6 +390,7 @@ bool OutputModel::setResolution(int outputIndex, int resIndex) - } - const auto oldSize = output.ptr->explicitLogicalSize().toSize(); - output.ptr->setCurrentModeId(id); -+ output.ptr->setSize(output.ptr->currentMode()->size()); - - const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize(); - output.ptr->setExplicitLogicalSize(newSize); --- -GitLab - - -From ad8d66c2c39c15a9fd668a0a292f4cd970731123 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com> -Date: Wed, 1 Dec 2021 13:39:21 +0100 -Subject: [PATCH 3/4] Ensure to set outputs explicitLogicalSize upon loading - config - ---- - kcm/config_handler.cpp | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/kcm/config_handler.cpp b/kcm/config_handler.cpp -index d7e7c7c..dabbcb2 100644 ---- a/kcm/config_handler.cpp -+++ b/kcm/config_handler.cpp -@@ -78,6 +78,8 @@ void ConfigHandler::resetScale(const KScreen::OutputPtr &output) - - void ConfigHandler::initOutput(const KScreen::OutputPtr &output) - { -+ output->setExplicitLogicalSize(config()->logicalSizeForOutput(*output)); -+ - if (output->isConnected()) { - resetScale(output); - m_outputs->add(output); --- -GitLab - - -From ad7dda0b64c6f76066cdd199b0aa6ed2e2982f88 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com> -Date: Wed, 1 Dec 2021 14:40:32 +0100 -Subject: [PATCH 4/4] Fix output identifier window positioning in wayland with - some scale - ---- - kcm/output_identifier.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kcm/output_identifier.cpp b/kcm/output_identifier.cpp -index ba51470..d21d36f 100644 ---- a/kcm/output_identifier.cpp -+++ b/kcm/output_identifier.cpp -@@ -56,7 +56,7 @@ OutputIdentifier::OutputIdentifier(KScreen::ConfigPtr config, QObject *parent) - } - if (config->supportedFeatures() & KScreen::Config::Feature::PerOutputScaling) { - // Scale adjustment is not needed on Wayland, we use logical size. -- logicalSize = output->explicitLogicalSize().toSize(); -+ logicalSize = config->logicalSizeForOutput(*output.data()).toSize(); - } else { - logicalSize = deviceSize / view->effectiveDevicePixelRatio(); - } --- -GitLab - diff --git a/source/kde/kde/patch/ktorrent/ktorrent.geoip.revert.6c1ae6b2530c5f7c72611a95aea92275520a5aee.patch b/source/kde/kde/patch/ktorrent/ktorrent.geoip.revert.6c1ae6b2530c5f7c72611a95aea92275520a5aee.patch index b23a20e12..b29f8289f 100644 --- a/source/kde/kde/patch/ktorrent/ktorrent.geoip.revert.6c1ae6b2530c5f7c72611a95aea92275520a5aee.patch +++ b/source/kde/kde/patch/ktorrent/ktorrent.geoip.revert.6c1ae6b2530c5f7c72611a95aea92275520a5aee.patch @@ -1,5 +1,85 @@ ---- ./plugins/infowidget/GeoIP.h.orig 2021-08-15 00:18:01.329498947 -0500 -+++ ./plugins/infowidget/GeoIP.h 2021-08-15 00:18:01.329498947 -0500 +--- ./plugins/infowidget/peerviewmodel.h.orig 2022-04-13 21:50:05.000000000 -0500 ++++ ./plugins/infowidget/peerviewmodel.h 2022-04-22 13:03:03.206722648 -0500 +@@ -61,12 +61,7 @@ + QString country; + QIcon flag; + +- Item(bt::PeerInterface *peer +-#if BUILD_WITH_GEOIP +- , +- GeoIPManager *geo_ip +-#endif +- ); ++ Item(bt::PeerInterface *peer, GeoIPManager *geo_ip); + + bool changed() const; + QVariant data(int col) const; +@@ -76,9 +71,7 @@ + + private: + QVector<Item *> items; +-#if BUILD_WITH_GEOIP +- GeoIPManager *geo_ip = nullptr; +-#endif ++ GeoIPManager *geo_ip; + }; + + } +--- ./plugins/infowidget/geoipmanager.h.orig 2022-04-13 21:50:05.000000000 -0500 ++++ ./plugins/infowidget/geoipmanager.h 2022-04-22 13:03:03.206722648 -0500 +@@ -7,7 +7,21 @@ + #define KT_GEOIPMANAGER_H + + #include <QObject> ++#include <QThread> ++#include <QUrl> ++ ++#ifdef USE_SYSTEM_GEOIP + #include <GeoIP.h> ++#else ++#include "GeoIP.h" ++#endif ++ ++class KJob; ++ ++namespace bt ++{ ++class DecompressThread; ++} + + namespace kt + { +@@ -42,8 +56,28 @@ + */ + QString countryCode(int country_id); + ++ /// Get the database URL ++ static QUrl geoIPUrl() ++ { ++ return geoip_url; ++ } ++ ++ /// Set the database URL ++ static void setGeoIPUrl(const QUrl &url); ++ ++ /// Download the database ++ void downloadDataBase(); ++ ++private Q_SLOTS: ++ void databaseDownloadFinished(KJob *job); ++ void decompressFinished(); ++ + private: + GeoIP *geo_ip; ++ QString geoip_data_file; ++ QString download_destination; ++ bt::DecompressThread *decompress_thread; ++ static QUrl geoip_url; + }; + + } +--- ./plugins/infowidget/GeoIP.h.orig 2022-04-22 13:03:03.205722648 -0500 ++++ ./plugins/infowidget/GeoIP.h 2022-04-22 13:03:03.205722648 -0500 @@ -0,0 +1,148 @@ +/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */ +/* GeoIP.h @@ -149,125 +229,153 @@ +#endif + +#endif /* GEOIP_H */ ---- ./plugins/infowidget/geoipmanager.cpp.orig 2021-08-04 21:50:44.000000000 -0500 -+++ ./plugins/infowidget/geoipmanager.cpp 2021-08-15 00:18:01.329498947 -0500 -@@ -20,16 +20,47 @@ +--- ./plugins/infowidget/peerviewmodel.cpp.orig 2022-04-13 21:50:05.000000000 -0500 ++++ ./plugins/infowidget/peerviewmodel.cpp 2022-04-22 13:03:03.206722648 -0500 +@@ -13,13 +13,10 @@ + #include <KLocalizedString> + + #include "flagdb.h" ++#include "geoipmanager.h" + #include <interfaces/torrentinterface.h> + #include <util/functions.h> + +-#if BUILD_WITH_GEOIP +-#include "geoipmanager.h" +-#endif +- + using namespace bt; namespace kt +@@ -28,12 +25,7 @@ + static bool icons_loaded = false; + static FlagDB flagDB(22, 18); + +-PeerViewModel::Item::Item(bt::PeerInterface *peer +-#if BUILD_WITH_GEOIP +- , +- GeoIPManager *geo_ip +-#endif +- ) ++PeerViewModel::Item::Item(bt::PeerInterface *peer, GeoIPManager *geo_ip) + : peer(peer) { -+QUrl GeoIPManager::geoip_url = QUrl(QStringLiteral("http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz")); -+ - GeoIPManager::GeoIPManager(QObject *parent) - : QObject(parent) -+ , geo_ip(nullptr) -+ , decompress_thread(nullptr) - { -+#ifdef USE_SYSTEM_GEOIP - geo_ip = GeoIP_open_type(GEOIP_COUNTRY_EDITION, GEOIP_STANDARD); -+#else -+ geoip_data_file = QStandardPaths::locate(QStandardPaths::AppDataLocation, QStringLiteral("geoip.dat")); -+ if (geoip_data_file.isEmpty()) -+ geoip_data_file = QStandardPaths::locate(QStandardPaths::AppDataLocation, QStringLiteral("GeoIP.dat")); -+ -+ if (geoip_data_file.isEmpty()) { -+ downloadDataBase(); -+ } else { -+ geo_ip = GeoIP_open(QFile::encodeName(geoip_data_file).data(), 0); -+ if (geo_ip) { -+ QFileInfo fi(geoip_data_file); -+ QDateTime now = QDateTime::currentDateTime(); -+ if (fi.lastModified().daysTo(now) >= 30) { -+ // if the last time the geoip file was modified, was more then -+ // 30 days ago, redownload it -+ downloadDataBase(); -+ } + stats = peer->getStats(); +@@ -47,13 +39,13 @@ + flagDB.addFlagSource(path + QStringLiteral("/%1/flag.png")); + } + +-#if BUILD_WITH_GEOIP +- int country_id = geo_ip->findCountry(stats.ip_address); +- if (country_id > 0) { +- country = geo_ip->countryName(country_id); +- flag = flagDB.getFlag(geo_ip->countryCode(country_id)); ++ if (geo_ip) { ++ int country_id = geo_ip->findCountry(stats.ip_address); ++ if (country_id > 0) { ++ country = geo_ip->countryName(country_id); ++ flag = flagDB.getFlag(geo_ip->countryCode(country_id)); + } -+ } -+#endif + } +-#endif } - GeoIPManager::~GeoIPManager() + bool PeerViewModel::Item::changed() const +@@ -191,10 +183,9 @@ + + PeerViewModel::PeerViewModel(QObject *parent) + : QAbstractTableModel(parent) ++ , geo_ip(nullptr) { - if (geo_ip) - GeoIP_delete(geo_ip); -+ -+ if (decompress_thread) { -+ decompress_thread->cancel(); -+ decompress_thread->wait(); -+ delete decompress_thread; -+ } +-#if BUILD_WITH_GEOIP + geo_ip = new GeoIPManager(this); +-#endif } - int GeoIPManager::findCountry(const QString &addr) -@@ -56,4 +87,66 @@ - return QString(); + PeerViewModel::~PeerViewModel() +@@ -204,12 +195,7 @@ + + void PeerViewModel::peerAdded(bt::PeerInterface *peer) + { +- items.append(new Item(peer +-#if BUILD_WITH_GEOIP +- , +- geo_ip +-#endif +- )); ++ items.append(new Item(peer, geo_ip)); + insertRow(items.count() - 1); } -+void GeoIPManager::downloadDataBase() -+{ -+#ifndef USE_SYSTEM_GEOIP -+ Out(SYS_INW | LOG_NOTICE) << "Downloading GeoIP database: " << geoip_url << endl; -+ download_destination = kt::DataDir(CreateIfNotExists) + geoip_url.fileName(); -+ KIO::CopyJob *job = KIO::copy(geoip_url, QUrl::fromLocalFile(download_destination), KIO::Overwrite | KIO::HideProgressInfo); -+ connect(job, &KIO::CopyJob::result, this, &GeoIPManager::databaseDownloadFinished); -+#endif -+} -+ -+void GeoIPManager::databaseDownloadFinished(KJob *job) -+{ -+ if (job->error()) { -+ Out(SYS_INW | LOG_IMPORTANT) << "Failed to download GeoIP database: " << job->errorString() << endl; -+ return; -+ } -+ -+ if (download_destination.endsWith(QLatin1String(".dat")) || download_destination.endsWith(QLatin1String(".DAT"))) { -+ Out(SYS_INW | LOG_NOTICE) << "GeoIP database downloaded, opening ... " << endl; -+ geoip_data_file = download_destination; -+ if (geo_ip) { -+ GeoIP_delete(geo_ip); -+ geo_ip = nullptr; -+ } -+ geo_ip = GeoIP_open(QFile::encodeName(geoip_data_file).data(), 0); -+ if (!geo_ip) -+ Out(SYS_INW | LOG_NOTICE) << "Failed to open GeoIP database " << endl; -+ } else { -+ Out(SYS_INW | LOG_NOTICE) << "GeoIP database downloaded, decompressing ... " << endl; -+ // decompress the file -+ decompress_thread = new bt::DecompressThread(download_destination, kt::DataDir() + QLatin1String("geoip.dat")); -+ connect(decompress_thread, &bt::DecompressThread::finished, this, &GeoIPManager::decompressFinished, Qt::QueuedConnection); -+ decompress_thread->start(QThread::IdlePriority); -+ } -+} -+ -+void GeoIPManager::decompressFinished() -+{ -+ Out(SYS_INW | LOG_NOTICE) << "GeoIP database decompressed, opening ... " << endl; -+ if (!decompress_thread->error()) { -+ geoip_data_file = kt::DataDir() + QLatin1String("geoip.dat"); -+ if (geo_ip) { -+ GeoIP_delete(geo_ip); -+ geo_ip = nullptr; -+ } -+ geo_ip = GeoIP_open(QFile::encodeName(geoip_data_file).data(), 0); -+ if (!geo_ip) -+ Out(SYS_INW | LOG_NOTICE) << "Failed to open GeoIP database " << endl; -+ } -+ -+ decompress_thread->wait(); -+ delete decompress_thread; -+ decompress_thread = nullptr; -+} -+ -+void GeoIPManager::setGeoIPUrl(const QUrl &url) -+{ -+ geoip_url = url; -+} +--- ./plugins/infowidget/CMakeLists.txt.orig 2022-04-13 21:50:05.000000000 -0500 ++++ ./plugins/infowidget/CMakeLists.txt 2022-04-22 13:06:19.029711817 -0500 +@@ -1,23 +1,31 @@ +-# Add an option to compile & link against system GeoIP ++# Add an option to compile & link against system GeoIP (off by default) + option(BUILD_WITH_GEOIP + "Link InfoWidget plugin against system GeoIP library and use system-wide default GeoIP Country database" +- ON) ++ OFF) + +-if (BUILD_WITH_GEOIP) ++if (WITH_SYSTEM_GEOIP) + find_path(GEOIP_INCLUDE_DIR NAMES GeoIP.h PATHS / ${INCLUDE_INSTALL_DIR}/) +- find_library(GEOIP_LIBRARY NAMES GeoIP PATHS ${LIB_INSTALL_DIR}) ++ find_library(GEOIP_LIBRARY NAMES GeoIP PATHS ${KDE4_LIB_DIR} ${LIB_INSTALL_DIR}) + + if (NOT GEOIP_INCLUDE_DIR OR NOT GEOIP_LIBRARY) +- set(BUILD_WITH_GEOIP OFF CACHE BOOL ++ set(WITH_SYSTEM_GEOIP OFF CACHE BOOL + "GeoIP development files could not be found on this system. Forcing this option to OFF" + FORCE) +- message(WARNING "GeoIP library development files could not be found on your system.") +- else() +- message(STATUS " Linking InfoWidget against system GeoIP library") +- include_directories(${GEOIP_INCLUDE_DIR}) +- set(geoip_link ${GEOIP_LIBRARY}) +- endif() +-endif(BUILD_WITH_GEOIP) ++ message(SEND_ERROR ++ "GeoIP library development files could not be found on your system. Embedding a local copy of GeoIP instead") ++ endif(NOT GEOIP_INCLUDE_DIR OR NOT GEOIP_LIBRARY) ++endif(WITH_SYSTEM_GEOIP) + -+/////////////////////////////////// ++if (WITH_SYSTEM_GEOIP) ++ message(STATUS " Linking InfoWidget against system GeoIP library") ++ add_definitions( -DUSE_SYSTEM_GEOIP ) ++ include_directories(GEOIP_INCLUDE_DIR) ++ set(geoip_link ${GEOIP_LIBRARY}) ++else(WITH_SYSTEM_GEOIP) ++ message(STATUS " Compiling GeoIP support directly into InfoWidget plugin") ++ set(geoip_src GeoIP.c) ++endif(WITH_SYSTEM_GEOIP) + - } ---- ./plugins/infowidget/GeoIP.c.orig 2021-08-15 00:18:01.329498947 -0500 -+++ ./plugins/infowidget/GeoIP.c 2021-08-15 00:18:01.329498947 -0500 + + ktorrent_add_plugin(ktorrent_infowidget) + +@@ -36,19 +44,14 @@ + trackerview.cpp + trackermodel.cpp + addtrackersdialog.cpp ++ ${geoip_src} ++ geoipmanager.cpp + flagdb.cpp + iwfiletreemodel.cpp + iwfilelistmodel.cpp + webseedstab.cpp + webseedsmodel.cpp) + +-if (BUILD_WITH_GEOIP) +- target_sources(ktorrent_infowidget PRIVATE geoipmanager.cpp) +- add_definitions(-DBUILD_WITH_GEOIP=1) +-else() +- add_definitions(-DBUILD_WITH_GEOIP=0) +-endif() +- + ki18n_wrap_ui(ktorrent_infowidget iwprefpage.ui statustab.ui chunkdownloadview.ui trackerview.ui webseedstab.ui) + kconfig_add_kcfg_files(ktorrent_infowidget infowidgetpluginsettings.kcfgc) + +--- ./plugins/infowidget/GeoIP.c.orig 2022-04-22 13:03:03.206722648 -0500 ++++ ./plugins/infowidget/GeoIP.c 2022-04-22 13:03:03.206722648 -0500 @@ -0,0 +1,968 @@ +/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */ +/* GeoIP.c @@ -1237,238 +1345,130 @@ +{ + return gi->databaseType; +} ---- ./plugins/infowidget/CMakeLists.txt.orig 2021-08-04 21:50:44.000000000 -0500 -+++ ./plugins/infowidget/CMakeLists.txt 2021-08-15 00:20:25.218503074 -0500 -@@ -1,23 +1,30 @@ --# Add an option to compile & link against system GeoIP --option(BUILD_WITH_GEOIP -+# Add an option to compile & link against system GeoIP (off by default) -+option(WITH_SYSTEM_GEOIP - "Link InfoWidget plugin against system GeoIP library and use system-wide default GeoIP Country database" -- ON) -+ OFF) - --if (BUILD_WITH_GEOIP) -+if (WITH_SYSTEM_GEOIP) - find_path(GEOIP_INCLUDE_DIR NAMES GeoIP.h PATHS / ${INCLUDE_INSTALL_DIR}/) -- find_library(GEOIP_LIBRARY NAMES GeoIP PATHS ${LIB_INSTALL_DIR}) -+ find_library(GEOIP_LIBRARY NAMES GeoIP PATHS ${KDE4_LIB_DIR} ${LIB_INSTALL_DIR}) - - if (NOT GEOIP_INCLUDE_DIR OR NOT GEOIP_LIBRARY) -- set(BUILD_WITH_GEOIP OFF CACHE BOOL -+ set(WITH_SYSTEM_GEOIP OFF CACHE BOOL - "GeoIP development files could not be found on this system. Forcing this option to OFF" - FORCE) -- message(WARNING "GeoIP library development files could not be found on your system.") -- else() -- message(STATUS " Linking InfoWidget against system GeoIP library") -- include_directories(GEOIP_INCLUDE_DIR) -- set(geoip_link ${GEOIP_LIBRARY}) -- endif() --endif(BUILD_WITH_GEOIP) -+ message(SEND_ERROR -+ "GeoIP library development files could not be found on your system. Embedding a local copy of GeoIP instead") -+ endif(NOT GEOIP_INCLUDE_DIR OR NOT GEOIP_LIBRARY) -+endif(WITH_SYSTEM_GEOIP) -+ -+if (WITH_SYSTEM_GEOIP) -+ message(STATUS " Linking InfoWidget against system GeoIP library") -+ add_definitions( -DUSE_SYSTEM_GEOIP ) -+ include_directories(GEOIP_INCLUDE_DIR) -+ set(geoip_link ${GEOIP_LIBRARY}) -+else(WITH_SYSTEM_GEOIP) -+ message(STATUS " Compiling GeoIP support directly into InfoWidget plugin") -+ set(geoip_src GeoIP.c) -+endif(WITH_SYSTEM_GEOIP) - - add_library(ktorrent_infowidget MODULE) - -@@ -36,19 +43,14 @@ - trackerview.cpp - trackermodel.cpp - addtrackersdialog.cpp -+ ${geoip_src} -+ geoipmanager.cpp - flagdb.cpp - iwfiletreemodel.cpp - iwfilelistmodel.cpp - webseedstab.cpp - webseedsmodel.cpp) - --if (BUILD_WITH_GEOIP) -- target_sources(ktorrent_infowidget PRIVATE geoipmanager.cpp) -- add_definitions(-DBUILD_WITH_GEOIP=1) --else() -- add_definitions(-DBUILD_WITH_GEOIP=0) --endif() -- - ki18n_wrap_ui(ktorrent_infowidget iwprefpage.ui statustab.ui chunkdownloadview.ui trackerview.ui webseedstab.ui) - kconfig_add_kcfg_files(ktorrent_infowidget infowidgetpluginsettings.kcfgc) +--- ./plugins/infowidget/infowidgetplugin.cpp.orig 2022-04-13 21:50:05.000000000 -0500 ++++ ./plugins/infowidget/infowidgetplugin.cpp 2022-04-22 13:03:03.206722648 -0500 +@@ -18,6 +18,7 @@ ---- ./plugins/infowidget/geoipmanager.h.orig 2021-08-04 21:50:44.000000000 -0500 -+++ ./plugins/infowidget/geoipmanager.h 2021-08-15 00:18:01.330498947 -0500 -@@ -7,7 +7,21 @@ - #define KT_GEOIPMANAGER_H + #include "chunkdownloadview.h" + #include "fileview.h" ++#include "geoipmanager.h" + #include "infowidgetpluginsettings.h" + #include "iwprefpage.h" + #include "monitor.h" +--- ./plugins/infowidget/geoipmanager.cpp.orig 2022-04-13 21:50:05.000000000 -0500 ++++ ./plugins/infowidget/geoipmanager.cpp 2022-04-22 13:03:03.206722648 -0500 +@@ -20,16 +20,47 @@ - #include <QObject> -+#include <QThread> -+#include <QUrl> + namespace kt + { ++QUrl GeoIPManager::geoip_url = QUrl(QStringLiteral("http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz")); + + GeoIPManager::GeoIPManager(QObject *parent) + : QObject(parent) ++ , geo_ip(nullptr) ++ , decompress_thread(nullptr) + { +#ifdef USE_SYSTEM_GEOIP - #include <GeoIP.h> + geo_ip = GeoIP_open_type(GEOIP_COUNTRY_EDITION, GEOIP_STANDARD); +#else -+#include "GeoIP.h" ++ geoip_data_file = QStandardPaths::locate(QStandardPaths::AppDataLocation, QStringLiteral("geoip.dat")); ++ if (geoip_data_file.isEmpty()) ++ geoip_data_file = QStandardPaths::locate(QStandardPaths::AppDataLocation, QStringLiteral("GeoIP.dat")); ++ ++ if (geoip_data_file.isEmpty()) { ++ downloadDataBase(); ++ } else { ++ geo_ip = GeoIP_open(QFile::encodeName(geoip_data_file).data(), 0); ++ if (geo_ip) { ++ QFileInfo fi(geoip_data_file); ++ QDateTime now = QDateTime::currentDateTime(); ++ if (fi.lastModified().daysTo(now) >= 30) { ++ // if the last time the geoip file was modified, was more then ++ // 30 days ago, redownload it ++ downloadDataBase(); ++ } ++ } ++ } +#endif + } + + GeoIPManager::~GeoIPManager() + { + if (geo_ip) + GeoIP_delete(geo_ip); + -+class KJob; ++ if (decompress_thread) { ++ decompress_thread->cancel(); ++ decompress_thread->wait(); ++ delete decompress_thread; ++ } + } + + int GeoIPManager::findCountry(const QString &addr) +@@ -56,4 +87,66 @@ + return QString(); + } + ++void GeoIPManager::downloadDataBase() ++{ ++#ifndef USE_SYSTEM_GEOIP ++ Out(SYS_INW | LOG_NOTICE) << "Downloading GeoIP database: " << geoip_url << endl; ++ download_destination = kt::DataDir(CreateIfNotExists) + geoip_url.fileName(); ++ KIO::CopyJob *job = KIO::copy(geoip_url, QUrl::fromLocalFile(download_destination), KIO::Overwrite | KIO::HideProgressInfo); ++ connect(job, &KIO::CopyJob::result, this, &GeoIPManager::databaseDownloadFinished); ++#endif ++} + -+namespace bt ++void GeoIPManager::databaseDownloadFinished(KJob *job) +{ -+class DecompressThread; ++ if (job->error()) { ++ Out(SYS_INW | LOG_IMPORTANT) << "Failed to download GeoIP database: " << job->errorString() << endl; ++ return; ++ } ++ ++ if (download_destination.endsWith(QLatin1String(".dat")) || download_destination.endsWith(QLatin1String(".DAT"))) { ++ Out(SYS_INW | LOG_NOTICE) << "GeoIP database downloaded, opening ... " << endl; ++ geoip_data_file = download_destination; ++ if (geo_ip) { ++ GeoIP_delete(geo_ip); ++ geo_ip = nullptr; ++ } ++ geo_ip = GeoIP_open(QFile::encodeName(geoip_data_file).data(), 0); ++ if (!geo_ip) ++ Out(SYS_INW | LOG_NOTICE) << "Failed to open GeoIP database " << endl; ++ } else { ++ Out(SYS_INW | LOG_NOTICE) << "GeoIP database downloaded, decompressing ... " << endl; ++ // decompress the file ++ decompress_thread = new bt::DecompressThread(download_destination, kt::DataDir() + QLatin1String("geoip.dat")); ++ connect(decompress_thread, &bt::DecompressThread::finished, this, &GeoIPManager::decompressFinished, Qt::QueuedConnection); ++ decompress_thread->start(QThread::IdlePriority); ++ } +} - - namespace kt - { -@@ -42,8 +56,28 @@ - */ - QString countryCode(int country_id); - -+ /// Get the database URL -+ static QUrl geoIPUrl() -+ { -+ return geoip_url; ++ ++void GeoIPManager::decompressFinished() ++{ ++ Out(SYS_INW | LOG_NOTICE) << "GeoIP database decompressed, opening ... " << endl; ++ if (!decompress_thread->error()) { ++ geoip_data_file = kt::DataDir() + QLatin1String("geoip.dat"); ++ if (geo_ip) { ++ GeoIP_delete(geo_ip); ++ geo_ip = nullptr; ++ } ++ geo_ip = GeoIP_open(QFile::encodeName(geoip_data_file).data(), 0); ++ if (!geo_ip) ++ Out(SYS_INW | LOG_NOTICE) << "Failed to open GeoIP database " << endl; + } + -+ /// Set the database URL -+ static void setGeoIPUrl(const QUrl &url); ++ decompress_thread->wait(); ++ delete decompress_thread; ++ decompress_thread = nullptr; ++} + -+ /// Download the database -+ void downloadDataBase(); ++void GeoIPManager::setGeoIPUrl(const QUrl &url) ++{ ++ geoip_url = url; ++} + -+private Q_SLOTS: -+ void databaseDownloadFinished(KJob *job); -+ void decompressFinished(); ++/////////////////////////////////// + - private: - GeoIP *geo_ip; -+ QString geoip_data_file; -+ QString download_destination; -+ bt::DecompressThread *decompress_thread; -+ static QUrl geoip_url; - }; - - } ---- ./plugins/infowidget/peerviewmodel.cpp.orig 2021-08-04 21:50:44.000000000 -0500 -+++ ./plugins/infowidget/peerviewmodel.cpp 2021-08-15 00:18:01.330498947 -0500 -@@ -13,13 +13,10 @@ - #include <KLocalizedString> - - #include "flagdb.h" -+#include "geoipmanager.h" - #include <interfaces/torrentinterface.h> - #include <util/functions.h> - --#if BUILD_WITH_GEOIP --#include "geoipmanager.h" --#endif -- - using namespace bt; - - namespace kt -@@ -28,12 +25,7 @@ - static bool icons_loaded = false; - static FlagDB flagDB(22, 18); - --PeerViewModel::Item::Item(bt::PeerInterface *peer --#if BUILD_WITH_GEOIP -- , -- GeoIPManager *geo_ip --#endif -- ) -+PeerViewModel::Item::Item(bt::PeerInterface *peer, GeoIPManager *geo_ip) - : peer(peer) - { - stats = peer->getStats(); -@@ -47,13 +39,13 @@ - flagDB.addFlagSource(path + QStringLiteral("/%1/flag.png")); - } - --#if BUILD_WITH_GEOIP -- int country_id = geo_ip->findCountry(stats.ip_address); -- if (country_id > 0) { -- country = geo_ip->countryName(country_id); -- flag = flagDB.getFlag(geo_ip->countryCode(country_id)); -+ if (geo_ip) { -+ int country_id = geo_ip->findCountry(stats.ip_address); -+ if (country_id > 0) { -+ country = geo_ip->countryName(country_id); -+ flag = flagDB.getFlag(geo_ip->countryCode(country_id)); -+ } - } --#endif - } - - bool PeerViewModel::Item::changed() const -@@ -191,10 +183,9 @@ - - PeerViewModel::PeerViewModel(QObject *parent) - : QAbstractTableModel(parent) -+ , geo_ip(nullptr) - { --#if BUILD_WITH_GEOIP - geo_ip = new GeoIPManager(this); --#endif - } - - PeerViewModel::~PeerViewModel() -@@ -204,12 +195,7 @@ - - void PeerViewModel::peerAdded(bt::PeerInterface *peer) - { -- items.append(new Item(peer --#if BUILD_WITH_GEOIP -- , -- geo_ip --#endif -- )); -+ items.append(new Item(peer, geo_ip)); - insertRow(items.count() - 1); - } - ---- ./plugins/infowidget/infowidgetplugin.cpp.orig 2021-08-04 21:50:44.000000000 -0500 -+++ ./plugins/infowidget/infowidgetplugin.cpp 2021-08-15 00:18:01.330498947 -0500 -@@ -18,6 +18,7 @@ - - #include "chunkdownloadview.h" - #include "fileview.h" -+#include "geoipmanager.h" - #include "infowidgetpluginsettings.h" - #include "iwprefpage.h" - #include "monitor.h" ---- ./plugins/infowidget/peerviewmodel.h.orig 2021-08-04 21:50:44.000000000 -0500 -+++ ./plugins/infowidget/peerviewmodel.h 2021-08-15 00:18:01.331498947 -0500 -@@ -61,12 +61,7 @@ - QString country; - QIcon flag; - -- Item(bt::PeerInterface *peer --#if BUILD_WITH_GEOIP -- , -- GeoIPManager *geo_ip --#endif -- ); -+ Item(bt::PeerInterface *peer, GeoIPManager *geo_ip); - - bool changed() const; - QVariant data(int col) const; -@@ -76,9 +71,7 @@ - - private: - QVector<Item *> items; --#if BUILD_WITH_GEOIP -- GeoIPManager *geo_ip = nullptr; --#endif -+ GeoIPManager *geo_ip; - }; - } diff --git a/source/kde/kde/patch/kwave.patch b/source/kde/kde/patch/kwave.patch deleted file mode 100644 index e2c07b02d..000000000 --- a/source/kde/kde/patch/kwave.patch +++ /dev/null @@ -1 +0,0 @@ -cat $CWD/patch/kwave/kwave.gcc11.limits.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/kwave/kwave.gcc11.limits.patch b/source/kde/kde/patch/kwave/kwave.gcc11.limits.patch deleted file mode 100644 index 09df72a97..000000000 --- a/source/kde/kde/patch/kwave/kwave.gcc11.limits.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- ./plugins/codec_wav/WavDecoder.cpp.orig 2021-07-05 14:10:02.000000000 -0500 -+++ ./plugins/codec_wav/WavDecoder.cpp 2021-08-05 11:47:18.353814614 -0500 -@@ -18,6 +18,7 @@ - #include "config.h" - #include <stdlib.h> - #include <new> -+#include <limits> - - #include <audiofile.h> - diff --git a/source/kde/kde/patch/kwayland-server.patch b/source/kde/kde/patch/kwayland-server.patch deleted file mode 100644 index f1b4e7273..000000000 --- a/source/kde/kde/patch/kwayland-server.patch +++ /dev/null @@ -1 +0,0 @@ -cat $CWD/patch/kwayland-server/5f5bea1648590f24f11ce232eb78112953a4d20e.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/kwayland-server/5f5bea1648590f24f11ce232eb78112953a4d20e.patch b/source/kde/kde/patch/kwayland-server/5f5bea1648590f24f11ce232eb78112953a4d20e.patch deleted file mode 100644 index 50d1314cf..000000000 --- a/source/kde/kde/patch/kwayland-server/5f5bea1648590f24f11ce232eb78112953a4d20e.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 5f5bea1648590f24f11ce232eb78112953a4d20e Mon Sep 17 00:00:00 2001 -From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> -Date: Mon, 10 Jan 2022 13:17:32 +0200 -Subject: [PATCH] Store surface object in tablet cursor using QPointer - -The SurfaceInterface can get destroyed and TabletCursorV2 may return a -dangling pointer. - -BUG: 446255 ---- - src/server/tablet_v2_interface.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/server/tablet_v2_interface.cpp b/src/server/tablet_v2_interface.cpp -index 59a4b2fb..8af80603 100644 ---- a/src/server/tablet_v2_interface.cpp -+++ b/src/server/tablet_v2_interface.cpp -@@ -91,7 +91,7 @@ public: - TabletCursorV2 *const q; - - quint32 m_serial = 0; -- SurfaceInterface *m_surface = nullptr; -+ QPointer<SurfaceInterface> m_surface; - QPoint m_hotspot; - }; - --- -GitLab - diff --git a/source/kde/kde/patch/kwin.patch b/source/kde/kde/patch/kwin.patch deleted file mode 100644 index 829028e5b..000000000 --- a/source/kde/kde/patch/kwin.patch +++ /dev/null @@ -1 +0,0 @@ -cat $CWD/patch/kwin/0001-Bypass-wayland-interface-blacklisting.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/kwin/0001-Bypass-wayland-interface-blacklisting.patch b/source/kde/kde/patch/kwin/0001-Bypass-wayland-interface-blacklisting.patch deleted file mode 100644 index 7968887a6..000000000 --- a/source/kde/kde/patch/kwin/0001-Bypass-wayland-interface-blacklisting.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 76abce728d3abb94c71076e6211a0da655397b0f Mon Sep 17 00:00:00 2001 -From: Fabian Vogt <fabian@ritter-vogt.de> -Date: Tue, 12 Nov 2019 13:18:26 +0100 -Subject: [PATCH] Bypass wayland interface blacklisting - -Currently the check isn't worth anything and it breaks some applications. -See discussion on https://phabricator.kde.org/D22571 and https://phabricator.kde.org/T4437#207062. ---- - src/wayland_server.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/wayland_server.cpp b/src/wayland_server.cpp -index e93d51911..95f3a746a 100644 ---- a/src/wayland_server.cpp -+++ b/src/wayland_server.cpp -@@ -130,6 +130,7 @@ public: - QSet<QString> m_reported; - - bool allowInterface(KWaylandServer::ClientConnection *client, const QByteArray &interfaceName) override { -+ return true; - if (client->processId() == getpid()) { - return true; - } --- -2.25.1 - diff --git a/source/kde/kde/patch/libkscreen.patch b/source/kde/kde/patch/libkscreen.patch deleted file mode 100644 index 13980ceb2..000000000 --- a/source/kde/kde/patch/libkscreen.patch +++ /dev/null @@ -1,2 +0,0 @@ -cat $CWD/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } -cat $CWD/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch b/source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch deleted file mode 100644 index b0e5e7136..000000000 --- a/source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch +++ /dev/null @@ -1,240 +0,0 @@ -From 7eb0390bf70fc7fb5a39bd501ffcc327a07c328a Mon Sep 17 00:00:00 2001 -From: Ilya Pominov <ipominov@astralinux.ru> -Date: Thu, 23 Sep 2021 14:24:16 +0300 -Subject: [PATCH] XrandR: Fix impossibilty to change resolution in VirtualBox - -In VirtualBox KDE runs at low resolution, -and when you try to change the resolution through the "Screen Settings" -it returns to the original one again. -How to check: -- run KDE neon on VirtualBox -- change the resolution - -VirtualBox sets the hotplug_mode_update property, but its preferred mode -is always 800x600, and KScreen returns the resolution to 800x600. - -Now XRandRCrtc stores the timestamp of the last resolution change -request from backend, and the timestamp of the last config update from -X11. -If the changes were initiated by XRandR backend (i.e. 'timestamp of the -last config update from X11' less or equal 'last resolution change -request'), then the followPreferedMode flag in KScreenConfig is set to -false. - -BUG: 407058 ---- - backends/xcbeventlistener.cpp | 7 ++++++- - backends/xcbeventlistener.h | 2 +- - backends/xrandr/xrandr.cpp | 4 +++- - backends/xrandr/xrandr.h | 2 +- - backends/xrandr/xrandrconfig.cpp | 9 +++++++-- - backends/xrandr/xrandrcrtc.cpp | 23 +++++++++++++++++++++++ - backends/xrandr/xrandrcrtc.h | 7 +++++++ - backends/xrandr/xrandroutput.cpp | 2 +- - 8 files changed, 49 insertions(+), 7 deletions(-) - -diff --git a/backends/xcbeventlistener.cpp b/backends/xcbeventlistener.cpp -index dba81dc..4c3a527 100644 ---- a/backends/xcbeventlistener.cpp -+++ b/backends/xcbeventlistener.cpp -@@ -139,6 +139,8 @@ void XCBEventListener::handleScreenChange(xcb_generic_event_t *e) - } - - qCDebug(KSCREEN_XCB_HELPER) << "RRScreenChangeNotify"; -+ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << e2->timestamp; -+ qCDebug(KSCREEN_XCB_HELPER) << "\tConfig_timestamp: " << e2->config_timestamp; - qCDebug(KSCREEN_XCB_HELPER) << "\tWindow:" << e2->request_window; - qCDebug(KSCREEN_XCB_HELPER) << "\tRoot:" << e2->root; - qCDebug(KSCREEN_XCB_HELPER) << "\tRotation: " << rotationToString((xcb_randr_rotation_t)e2->rotation); -@@ -157,15 +159,17 @@ void XCBEventListener::handleXRandRNotify(xcb_generic_event_t *e) - if (randrEvent->subCode == XCB_RANDR_NOTIFY_CRTC_CHANGE) { - xcb_randr_crtc_change_t crtc = randrEvent->u.cc; - qCDebug(KSCREEN_XCB_HELPER) << "RRNotify_CrtcChange"; -+ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << crtc.timestamp; - qCDebug(KSCREEN_XCB_HELPER) << "\tCRTC: " << crtc.crtc; - qCDebug(KSCREEN_XCB_HELPER) << "\tMode: " << crtc.mode; - qCDebug(KSCREEN_XCB_HELPER) << "\tRotation: " << rotationToString((xcb_randr_rotation_t)crtc.rotation); - qCDebug(KSCREEN_XCB_HELPER) << "\tGeometry: " << crtc.x << crtc.y << crtc.width << crtc.height; -- Q_EMIT crtcChanged(crtc.crtc, crtc.mode, (xcb_randr_rotation_t)crtc.rotation, QRect(crtc.x, crtc.y, crtc.width, crtc.height)); -+ Q_EMIT crtcChanged(crtc.crtc, crtc.mode, (xcb_randr_rotation_t)crtc.rotation, QRect(crtc.x, crtc.y, crtc.width, crtc.height), crtc.timestamp); - - } else if (randrEvent->subCode == XCB_RANDR_NOTIFY_OUTPUT_CHANGE) { - xcb_randr_output_change_t output = randrEvent->u.oc; - qCDebug(KSCREEN_XCB_HELPER) << "RRNotify_OutputChange"; -+ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << output.timestamp; - qCDebug(KSCREEN_XCB_HELPER) << "\tOutput: " << output.output; - qCDebug(KSCREEN_XCB_HELPER) << "\tCRTC: " << output.crtc; - qCDebug(KSCREEN_XCB_HELPER) << "\tMode: " << output.mode; -@@ -181,6 +185,7 @@ void XCBEventListener::handleXRandRNotify(xcb_generic_event_t *e) - xcb_get_atom_name_reply(QX11Info::connection(), xcb_get_atom_name(QX11Info::connection(), property.atom), nullptr)); - - qCDebug(KSCREEN_XCB_HELPER) << "RRNotify_OutputProperty (ignored)"; -+ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << property.timestamp; - qCDebug(KSCREEN_XCB_HELPER) << "\tOutput: " << property.output; - qCDebug(KSCREEN_XCB_HELPER) << "\tProperty: " << xcb_get_atom_name_name(reply.data()); - qCDebug(KSCREEN_XCB_HELPER) << "\tState (newValue, Deleted): " << property.status; -diff --git a/backends/xcbeventlistener.h b/backends/xcbeventlistener.h -index 35577d9..68136d8 100644 ---- a/backends/xcbeventlistener.h -+++ b/backends/xcbeventlistener.h -@@ -30,7 +30,7 @@ Q_SIGNALS: - void outputsChanged(); - - /* Emitted only when XRandR 1.2 or newer is available */ -- void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom); -+ void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom, xcb_timestamp_t timestamp); - void outputChanged(xcb_randr_output_t output, xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_connection_t connection); - void outputPropertyChanged(xcb_randr_output_t output); - -diff --git a/backends/xrandr/xrandr.cpp b/backends/xrandr/xrandr.cpp -index 71cbd77..115f268 100644 ---- a/backends/xrandr/xrandr.cpp -+++ b/backends/xrandr/xrandr.cpp -@@ -45,6 +45,7 @@ XRandR::XRandR() - qRegisterMetaType<xcb_randr_mode_t>("xcb_randr_mode_t"); - qRegisterMetaType<xcb_randr_connection_t>("xcb_randr_connection_t"); - qRegisterMetaType<xcb_randr_rotation_t>("xcb_randr_rotation_t"); -+ qRegisterMetaType<xcb_timestamp_t>("xcb_timestamp_t"); - - // Use our own connection to make sure that we won't mess up Qt's connection - // if something goes wrong on our side. -@@ -143,7 +144,7 @@ void XRandR::outputChanged(xcb_randr_output_t output, xcb_randr_crtc_t crtc, xcb - qCDebug(KSCREEN_XRANDR) << "Output" << xOutput->id() << ": connected =" << xOutput->isConnected() << ", enabled =" << xOutput->isEnabled(); - } - --void XRandR::crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom) -+void XRandR::crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom, xcb_timestamp_t timestamp) - { - XRandRCrtc *xCrtc = s_internalConfig->crtc(crtc); - if (!xCrtc) { -@@ -152,6 +153,7 @@ void XRandR::crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr - xCrtc->update(mode, rotation, geom); - } - -+ xCrtc->updateConfigTimestamp(timestamp); - m_configChangeCompressor->start(); - } - -diff --git a/backends/xrandr/xrandr.h b/backends/xrandr/xrandr.h -index 91dd7aa..6b998c8 100644 ---- a/backends/xrandr/xrandr.h -+++ b/backends/xrandr/xrandr.h -@@ -44,7 +44,7 @@ public: - - private: - void outputChanged(xcb_randr_output_t output, xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_connection_t connection); -- void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom); -+ void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom, xcb_timestamp_t timestamp); - void screenChanged(xcb_randr_rotation_t rotation, const QSize &sizePx, const QSize &sizeMm); - - static quint8 *getXProperty(xcb_randr_output_t output, xcb_atom_t atom, size_t &len); -diff --git a/backends/xrandr/xrandrconfig.cpp b/backends/xrandr/xrandrconfig.cpp -index fa0929c..5cbf4c7 100644 ---- a/backends/xrandr/xrandrconfig.cpp -+++ b/backends/xrandr/xrandrconfig.cpp -@@ -504,6 +504,8 @@ bool XRandRConfig::disableOutput(const OutputPtr &kscreenOutput) const - XCB_NONE, - xOutput->isConnected() ? XCB_RANDR_CONNECTION_CONNECTED : XCB_RANDR_CONNECTION_DISCONNECTED, - kscreenOutput->isPrimary()); -+ if (xOutput->crtc()) -+ xOutput->crtc()->updateTimestamp(reply->timestamp); - } - return (reply->status == XCB_RANDR_SET_CONFIG_SUCCESS); - } -@@ -573,7 +575,7 @@ bool XRandRConfig::changeOutput(const KScreen::OutputPtr &kscreenOutput) const - << "\n" - << "\tCRTC:" << xOutput->crtc()->crtc() << "\n" - << "\tPos:" << kscreenOutput->pos() << "\n" -- << "\tMode:" << modeId << kscreenOutput->currentMode() << "\n" -+ << "\tMode:" << kscreenOutput->currentMode() << "Preferred:" << kscreenOutput->preferredModeId() << "\n" - << "\tRotation:" << kscreenOutput->rotation(); - - if (!sendConfig(kscreenOutput, xOutput->crtc())) { -@@ -605,6 +607,9 @@ bool XRandRConfig::sendConfig(const KScreen::OutputPtr &kscreenOutput, XRandRCrt - qCDebug(KSCREEN_XRANDR) << "\tResult: unknown (error)"; - return false; - } -- qCDebug(KSCREEN_XRANDR) << "\tResult: " << reply->status; -+ -+ crtc->updateTimestamp(reply->timestamp); -+ -+ qCDebug(KSCREEN_XRANDR) << "\tResult: " << reply->status << " timestamp: " << reply->timestamp; - return (reply->status == XCB_RANDR_SET_CONFIG_SUCCESS); - } -diff --git a/backends/xrandr/xrandrcrtc.cpp b/backends/xrandr/xrandrcrtc.cpp -index c3cd291..9209501 100644 ---- a/backends/xrandr/xrandrcrtc.cpp -+++ b/backends/xrandr/xrandrcrtc.cpp -@@ -16,6 +16,8 @@ XRandRCrtc::XRandRCrtc(xcb_randr_crtc_t crtc, XRandRConfig *config) - , m_crtc(crtc) - , m_mode(0) - , m_rotation(XCB_RANDR_ROTATION_ROTATE_0) -+ , m_timestamp(XCB_CURRENT_TIME) -+ , m_configTimestamp(XCB_CURRENT_TIME) - { - update(); - } -@@ -111,3 +113,24 @@ void XRandRCrtc::update(xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, co - m_geometry = geom; - m_rotation = rotation; - } -+ -+void XRandRCrtc::updateTimestamp(const xcb_timestamp_t tmstamp) -+{ -+ if (tmstamp > m_timestamp) { -+ qCDebug(KSCREEN_XRANDR) << "XRandRCrtc " << m_crtc << " m_timestamp update " << m_timestamp << " => " << tmstamp; -+ m_timestamp = tmstamp; -+ } -+} -+ -+void XRandRCrtc::updateConfigTimestamp(const xcb_timestamp_t tmstamp) -+{ -+ if (tmstamp > m_configTimestamp) { -+ qCDebug(KSCREEN_XRANDR) << "XRandRCrtc " << m_crtc << " m_configTimestamp update" << m_configTimestamp << " => " << tmstamp; -+ m_configTimestamp = tmstamp; -+ } -+} -+ -+bool XRandRCrtc::isChangedFromOutside() const -+{ -+ return m_configTimestamp > m_timestamp; -+} -diff --git a/backends/xrandr/xrandrcrtc.h b/backends/xrandr/xrandrcrtc.h -index 4de4a09..8be23d2 100644 ---- a/backends/xrandr/xrandrcrtc.h -+++ b/backends/xrandr/xrandrcrtc.h -@@ -41,6 +41,10 @@ public: - void update(); - void update(xcb_randr_crtc_t mode, xcb_randr_rotation_t rotation, const QRect &geom); - -+ void updateTimestamp(const xcb_timestamp_t tmstamp); -+ void updateConfigTimestamp(const xcb_timestamp_t tmstamp); -+ bool isChangedFromOutside() const; -+ - private: - xcb_randr_crtc_t m_crtc; - xcb_randr_mode_t m_mode; -@@ -50,4 +54,7 @@ private: - - QVector<xcb_randr_output_t> m_possibleOutputs; - QVector<xcb_randr_output_t> m_outputs; -+ -+ xcb_timestamp_t m_timestamp; -+ xcb_timestamp_t m_configTimestamp; - }; -diff --git a/backends/xrandr/xrandroutput.cpp b/backends/xrandr/xrandroutput.cpp -index 92a39cf..4aa2290 100644 ---- a/backends/xrandr/xrandroutput.cpp -+++ b/backends/xrandr/xrandroutput.cpp -@@ -403,7 +403,7 @@ KScreen::OutputPtr XRandROutput::toKScreenOutput() const - - // See https://bugzilla.redhat.com/show_bug.cgi?id=1290586 - // QXL will be creating a new mode we need to jump to every time the display is resized -- kscreenOutput->setFollowPreferredMode(m_hotplugModeUpdate); -+ kscreenOutput->setFollowPreferredMode(m_hotplugModeUpdate && m_crtc && m_crtc->isChangedFromOutside()); - - kscreenOutput->setConnected(isConnected()); - if (isConnected()) { --- -GitLab - diff --git a/source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch b/source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch deleted file mode 100644 index 38e932be9..000000000 --- a/source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch +++ /dev/null @@ -1,219 +0,0 @@ -From cf0921f3fbde31cb94b9ccddcaba36da3a488483 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven29@gmail.com> -Date: Thu, 2 Dec 2021 16:04:20 +0000 -Subject: [PATCH] Under X11 ignore per-screen scale to compute logicalSize - ---- - src/config.cpp | 32 ++++++++++++++++++++++++++++++++ - src/config.h | 4 ++++ - src/output.cpp | 39 +++++++++------------------------------ - src/output.h | 18 ++++-------------- - 4 files changed, 49 insertions(+), 44 deletions(-) - mode change 100644 => 100755 src/output.h - -diff --git a/src/config.cpp b/src/config.cpp -index 37e1038..41abf70 100644 ---- a/src/config.cpp -+++ b/src/config.cpp -@@ -325,6 +325,7 @@ void Config::setPrimaryOutput(const OutputPtr &newPrimary) - void Config::addOutput(const OutputPtr &output) - { - d->outputs.insert(output->id(), output); -+ output->setExplicitLogicalSize(logicalSizeForOutput(*output)); - connect(output.data(), &KScreen::Output::isPrimaryChanged, d, &KScreen::Config::Private::onPrimaryOutputChanged); - - Q_EMIT outputAdded(output); -@@ -391,6 +392,37 @@ void Config::apply(const ConfigPtr &other) - setValid(other->isValid()); - } - -+QRect Config::outputGeometryForOutput(const KScreen::Output &output) const -+{ -+ QSize size = logicalSizeForOutput(output).toSize(); -+ if (!size.isValid()) { -+ return QRect(); -+ } -+ -+ return QRect(output.pos(), size); -+} -+ -+QSizeF Config::logicalSizeForOutput(const KScreen::Output &output) const -+{ -+ QSizeF size = output.enforcedModeSize(); -+ if (!size.isValid()) { -+ return QSizeF(); -+ } -+ // ignore scale where scaling is not per-output -+ if (supportedFeatures().testFlag(Feature::PerOutputScaling)) { -+ size = size / output.scale(); -+ } -+ -+ // We can't use output.size(), because it does not reflect the actual rotation() set by caller. -+ // It is only updated when we get update from KScreen, but not when user changes mode or -+ // rotation manually. -+ -+ if (!output.isHorizontal()) { -+ size = size.transposed(); -+ } -+ return size; -+} -+ - QDebug operator<<(QDebug dbg, const KScreen::ConfigPtr &config) - { - if (config) { -diff --git a/src/config.h b/src/config.h -index 551d7d0..4629dab 100644 ---- a/src/config.h -+++ b/src/config.h -@@ -190,6 +190,10 @@ public: - */ - void setTabletModeEngaged(bool engaged); - -+ QRect outputGeometryForOutput(const KScreen::Output &output) const; -+ -+ QSizeF logicalSizeForOutput(const KScreen::Output &output) const; -+ - Q_SIGNALS: - void outputAdded(const KScreen::OutputPtr &output); - void outputRemoved(int outputId); -diff --git a/src/output.cpp b/src/output.cpp -index c7f5949..a0fae28 100644 ---- a/src/output.cpp -+++ b/src/output.cpp -@@ -13,6 +13,7 @@ - #include "mode.h" - - #include <QCryptographicHash> -+#include <QGuiApplication> - #include <QRect> - #include <QScopedPointer> - #include <QStringList> -@@ -28,7 +29,7 @@ public: - , replicationSource(0) - , rotation(None) - , scale(1.0) -- , logicalSize(QSizeF()) -+ , explicitLogicalSize(QSizeF()) - , connected(false) - , enabled(false) - , primary(false) -@@ -87,7 +88,7 @@ public: - QSize size; - Rotation rotation; - qreal scale; -- QSizeF logicalSize; -+ QSizeF explicitLogicalSize; - bool connected; - bool enabled; - bool primary; -@@ -459,40 +460,18 @@ void Output::setScale(qreal factor) - Q_EMIT scaleChanged(); - } - --QSizeF Output::logicalSize() const --{ -- if (d->logicalSize.isValid()) { -- return d->logicalSize; -- } -- -- QSizeF size = enforcedModeSize(); -- if (!size.isValid()) { -- return QSizeF(); -- } -- size = size / d->scale; -- -- // We can't use d->size, because d->size does not reflect the actual rotation() set by caller. -- // It is only updated when we get update from KScreen, but not when user changes mode or -- // rotation manually. -- -- if (!isHorizontal()) { -- size = size.transposed(); -- } -- return size; --} -- - QSizeF Output::explicitLogicalSize() const - { -- return d->logicalSize; -+ return d->explicitLogicalSize; - } - --void Output::setLogicalSize(const QSizeF &size) -+void Output::setExplicitLogicalSize(const QSizeF &size) - { -- if (qFuzzyCompare(d->logicalSize.width(), size.width()) && qFuzzyCompare(d->logicalSize.height(), size.height())) { -+ if (qFuzzyCompare(d->explicitLogicalSize.width(), size.width()) && qFuzzyCompare(d->explicitLogicalSize.height(), size.height())) { - return; - } -- d->logicalSize = size; -- Q_EMIT logicalSizeChanged(); -+ d->explicitLogicalSize = size; -+ Q_EMIT explicitLogicalSizeChanged(); - } - - bool Output::isConnected() const -@@ -628,7 +607,7 @@ QSize Output::enforcedModeSize() const - - QRect Output::geometry() const - { -- QSize size = logicalSize().toSize(); -+ QSize size = explicitLogicalSize().toSize(); - if (!size.isValid()) { - return QRect(); - } -diff --git a/src/output.h b/src/output.h -old mode 100644 -new mode 100755 -index 2b23ac4..7edb74c ---- a/src/output.h -+++ b/src/output.h -@@ -47,7 +47,7 @@ public: - Q_PROPERTY(QSize sizeMm READ sizeMm CONSTANT) - Q_PROPERTY(qreal scale READ scale WRITE setScale NOTIFY scaleChanged) - Q_PROPERTY(bool followPreferredMode READ followPreferredMode WRITE setFollowPreferredMode NOTIFY followPreferredModeChanged) -- Q_PROPERTY(QSizeF logicalSize READ logicalSize WRITE setLogicalSize NOTIFY logicalSizeChanged) -+ Q_PROPERTY(QSizeF explicitLogicalSize READ explicitLogicalSize WRITE setExplicitLogicalSize NOTIFY explicitLogicalSizeChanged) - Q_PROPERTY(Capabilities capabilities READ capabilities NOTIFY capabilitiesChanged) - Q_PROPERTY(uint32_t overscan READ overscan WRITE setOverscan NOTIFY overscanChanged) - Q_PROPERTY(VrrPolicy vrrPolicy READ vrrPolicy WRITE setVrrPolicy NOTIFY vrrPolicyChanged) -@@ -311,16 +311,6 @@ public: - */ - void setScale(qreal factor); - -- /** -- * The logical size is the output's representation internal to the display server and its -- * overall screen geometry. -- * -- * returns the logical size of this output -- * -- * @since 5.18 -- */ -- QSizeF logicalSize() const; -- - /** - * The logical size is the output's representation internal to the display server and its - * overall screen geometry. -@@ -338,9 +328,9 @@ public: - * - * @param size of this output in logical space - * -- * @since 5.18 -+ * @since 5.24 - */ -- void setLogicalSize(const QSizeF &size); -+ void setExplicitLogicalSize(const QSizeF &size); - - /** - * @returns whether the mode should be changed to the new preferred mode -@@ -421,7 +411,7 @@ Q_SIGNALS: - void clonesChanged(); - void replicationSourceChanged(); - void scaleChanged(); -- void logicalSizeChanged(); -+ void explicitLogicalSizeChanged(); - void followPreferredModeChanged(bool followPreferredMode); - void capabilitiesChanged(); - void overscanChanged(); --- -GitLab - diff --git a/source/kde/kde/patch/plasma-nm.patch b/source/kde/kde/patch/plasma-nm.patch deleted file mode 100644 index 283ff8ebe..000000000 --- a/source/kde/kde/patch/plasma-nm.patch +++ /dev/null @@ -1 +0,0 @@ -cat $CWD/patch/plasma-nm/80c47e577b80364c995aa0530a48e17c1a7e460f.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/plasma-nm/80c47e577b80364c995aa0530a48e17c1a7e460f.patch b/source/kde/kde/patch/plasma-nm/80c47e577b80364c995aa0530a48e17c1a7e460f.patch deleted file mode 100644 index 99dbad0f6..000000000 --- a/source/kde/kde/patch/plasma-nm/80c47e577b80364c995aa0530a48e17c1a7e460f.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 80c47e577b80364c995aa0530a48e17c1a7e460f Mon Sep 17 00:00:00 2001 -From: PJ Beers <pj@floorenpj.nl> -Date: Wed, 1 Dec 2021 20:36:55 +0100 -Subject: [PATCH] OpenVPN: Import tls-crypt keys - -Enable importing tls-crypt keys from an openvpn config file. Previously, -inline tls-crypt keys from *.ovpn files were ignored, causing the -associated connection to fail after import. ---- - vpn/openvpn/openvpn.cpp | 34 ++++++++++++++++++++++++++++++++++ - 1 file changed, 34 insertions(+) - -diff --git a/vpn/openvpn/openvpn.cpp b/vpn/openvpn/openvpn.cpp -index 9d1bf8ea..b69f7ec0 100644 ---- a/vpn/openvpn/openvpn.cpp -+++ b/vpn/openvpn/openvpn.cpp -@@ -55,6 +55,7 @@ K_PLUGIN_CLASS_WITH_JSON(OpenVpnUiPlugin, "plasmanetworkmanagement_openvpnui.jso - #define RPORT_TAG "rport" - #define SECRET_TAG "secret" - #define TLS_AUTH_TAG "tls-auth" -+#define TLS_CRYPT_TAG "tls-crypt" - #define TLS_CLIENT_TAG "tls-client" - #define TLS_REMOTE_TAG "tls-remote" - #define TUNMTU_TAG "tun-mtu" -@@ -70,6 +71,8 @@ K_PLUGIN_CLASS_WITH_JSON(OpenVpnUiPlugin, "plasmanetworkmanagement_openvpnui.jso - #define END_KEY_SECRET_TAG "</secret>" - #define BEGIN_TLS_AUTH_TAG "<tls-auth>" - #define END_TLS_AUTH_TAG "</tls-auth>" -+#define BEGIN_TLS_CRYPT_TAG "<tls-crypt>" -+#define END_TLS_CRYPT_TAG "</tls-crypt>" - - #define PROC_TYPE_TAG "Proc-Type: 4,ENCRYPTED" - #define PKCS8_TAG "-----BEGIN ENCRYPTED PRIVATE KEY-----" -@@ -497,6 +500,27 @@ NMVariantMapMap OpenVpnUiPlugin::importConnectionSettings(const QString &fileNam - } - continue; - } -+ if (key_value[0] == TLS_CRYPT_TAG && key_value.count() > 1) { -+ key_value[1] = line.right(line.length() - line.indexOf(QRegExp("\\s"))); // Get whole string after key -+ -+ // We will copy inline certificate later when we reach <tls-crypt> tag. -+ if (key_value[1].trimmed() != QLatin1String("[inline]")) { -+ if (copyCertificates) { -+ const QString absoluteFilePath = tryToCopyToCertificatesDirectory(connectionName, unQuote(key_value[1], fileName)); -+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TLS_CRYPT), absoluteFilePath); -+ } else { -+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TLS_CRYPT), unQuote(key_value[1], fileName)); -+ } -+ } -+ -+ if (key_value.count() > 2) { -+ key_value[2] = key_value[1]; -+ if (!key_value[2].isEmpty() && (key_value[2].toLong() == 0 || key_value[2].toLong() == 1)) { -+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TA_DIR), key_value[2]); -+ } -+ } -+ continue; -+ } - if (key_value[0] == CIPHER_TAG) { - if (key_value.count() == 2) { - dataMap.insert(QLatin1String(NM_OPENVPN_KEY_CIPHER), key_value[1]); -@@ -596,6 +620,16 @@ NMVariantMapMap OpenVpnUiPlugin::importConnectionSettings(const QString &fileNam - } - } - continue; -+ } else if (key_value[0] == BEGIN_TLS_CRYPT_TAG) { -+ const QString tlsAuthAbsolutePath = saveFile(in, QLatin1String(END_TLS_CRYPT_TAG), connectionName, "tls_crypt.key"); -+ if (!tlsAuthAbsolutePath.isEmpty()) { -+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TLS_CRYPT), tlsAuthAbsolutePath); -+ -+ if (key_direction > -1) { -+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TA_DIR), QString().setNum(key_direction)); -+ } -+ } -+ continue; - } - - // Import X-NM-Routes if present --- -GitLab - - diff --git a/source/kde/kde/patch/plasma-sdk.patch b/source/kde/kde/patch/plasma-sdk.patch new file mode 100644 index 000000000..c232fca2c --- /dev/null +++ b/source/kde/kde/patch/plasma-sdk.patch @@ -0,0 +1,2 @@ +# Remove mistakenly packaged directory to fix build: +rm -rf po/sv/docs/plasma-sdk diff --git a/source/kde/kde/patch/plasma-workspace.patch b/source/kde/kde/patch/plasma-workspace.patch index 7d2b9d398..77645b0cb 100644 --- a/source/kde/kde/patch/plasma-workspace.patch +++ b/source/kde/kde/patch/plasma-workspace.patch @@ -1,5 +1 @@ cat $CWD/patch/plasma-workspace/0001-Revert-No-icons-on-the-desktop-by-default.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } -cat $CWD/patch/plasma-workspace/70d23b89.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } -cat $CWD/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } -cat $CWD/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } -cat $CWD/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch b/source/kde/kde/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch deleted file mode 100644 index 4ed7dc6fa..000000000 --- a/source/kde/kde/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 5db85cf17cd11236f8ee44ba95dd56b81087c6aa Mon Sep 17 00:00:00 2001 -From: Fabian Vogt <fabian@ritter-vogt.de> -Date: Thu, 21 Oct 2021 08:20:33 +0200 -Subject: [PATCH 1/2] Revert "Drop setupX11 from startplasma-waylandsession" - -This reverts commit 8bf0e43620de3416e783c307ba10111c6964757b. ---- - startkde/startplasma-waylandsession.cpp | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/startkde/startplasma-waylandsession.cpp b/startkde/startplasma-waylandsession.cpp -index 3a054a04f..ed496cc24 100644 ---- a/startkde/startplasma-waylandsession.cpp -+++ b/startkde/startplasma-waylandsession.cpp -@@ -19,6 +19,12 @@ int main(int argc, char **argv) - - out << "startplasma-waylandsession: Starting up..."; - -+ if (qEnvironmentVariableIsSet("DISPLAY")) { -+ setupX11(); -+ } else { -+ qWarning() << "running kwin without Xwayland support"; -+ } -+ - if (!syncDBusEnvironment()) { - out << "Could not sync environment to dbus.\n"; - return 2; --- -2.33.0 - diff --git a/source/kde/kde/patch/plasma-workspace/0001-Revert-No-icons-on-the-desktop-by-default.patch b/source/kde/kde/patch/plasma-workspace/0001-Revert-No-icons-on-the-desktop-by-default.patch index f4215c4f9..554632be6 100644 --- a/source/kde/kde/patch/plasma-workspace/0001-Revert-No-icons-on-the-desktop-by-default.patch +++ b/source/kde/kde/patch/plasma-workspace/0001-Revert-No-icons-on-the-desktop-by-default.patch @@ -8,25 +8,14 @@ This reverts commit 240d0d6fe1e5db88e304199339396bd48c23e130. We want those icons in openSUSE. They've always been there and there is no reason not to have them. --- - kioslave/desktop/CMakeLists.txt | 1 + - kioslave/desktop/Home.desktop | 88 ++++++++++++++++++++++++++++++++++++++++ - kioslave/desktop/kio_desktop.cpp | 4 ++ + kioworkers/desktop/CMakeLists.txt | 1 + + kioworkers/desktop/Home.desktop | 88 ++++++++++++++++++++++++++++++++++++++++ + kioworkers/desktop/kio_desktop.cpp | 4 ++ 3 files changed, 93 insertions(+) - create mode 100644 kioslave/desktop/Home.desktop + create mode 100644 kioworkers/desktop/Home.desktop -Index: plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/CMakeLists.txt -=================================================================== ---- plasma-workspace-5.17.80git.20210531T011335~40d302afe.orig/kioslave/desktop/CMakeLists.txt 2021-05-31 03:13:35.000000000 +0200 -+++ plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/CMakeLists.txt 2021-05-31 06:59:47.519362944 +0200 -@@ -31,3 +31,4 @@ - ########### install files ############### - - install(FILES directory.desktop directory.trash DESTINATION ${KDE_INSTALL_DATADIR}/kio_desktop) -+install(FILES Home.desktop DESTINATION ${KDE_INSTALL_DATADIR}/kio_desktop/DesktopLinks) -Index: plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/Home.desktop -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/Home.desktop 2021-05-31 06:59:47.519362944 +0200 +--- ./kioworkers/desktop/Home.desktop.orig 2023-02-14 12:08:58.205793836 -0600 ++++ ./kioworkers/desktop/Home.desktop 2023-02-14 12:08:58.205793836 -0600 @@ -0,0 +1,88 @@ +[Desktop Entry] +Encoding=UTF-8 @@ -116,11 +105,16 @@ Index: plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/Ho +Icon=user-home +Type=Link + -Index: plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/kio_desktop.cpp -=================================================================== ---- plasma-workspace-5.17.80git.20210531T011335~40d302afe.orig/kioslave/desktop/kio_desktop.cpp 2021-05-31 03:13:35.000000000 +0200 -+++ plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/kio_desktop.cpp 2021-05-31 06:59:47.519362944 +0200 -@@ -90,6 +90,10 @@ +--- ./kioworkers/desktop/CMakeLists.txt.orig 2023-02-13 10:02:12.000000000 -0600 ++++ ./kioworkers/desktop/CMakeLists.txt 2023-02-14 12:08:58.205793836 -0600 +@@ -24,3 +24,4 @@ + ########### install files ############### + + install(FILES directory.desktop directory.trash DESTINATION ${KDE_INSTALL_DATADIR}/kio_desktop) ++install(FILES Home.desktop DESTINATION ${KDE_INSTALL_DATADIR}/kio_desktop/DesktopLinks) +--- ./kioworkers/desktop/kio_desktop.cpp.orig 2023-02-13 10:02:12.000000000 -0600 ++++ ./kioworkers/desktop/kio_desktop.cpp 2023-02-14 12:08:58.205793836 -0600 +@@ -76,6 +76,10 @@ // Copy the .directory file QFile::copy(QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("kio_desktop/directory.desktop")), desktopPath + "/.directory"); diff --git a/source/kde/kde/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch b/source/kde/kde/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch deleted file mode 100644 index 3f6d71970..000000000 --- a/source/kde/kde/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 075b2f27722d2f28a5c3d4e201c7e7e787cb68de Mon Sep 17 00:00:00 2001 -From: Fabian Vogt <fabian@ritter-vogt.de> -Date: Thu, 21 Oct 2021 08:20:38 +0200 -Subject: [PATCH 2/2] Revert "Drop X11 root properties for KDE full session / - session version" - -This reverts commit 9a4e3d39c2a9ca48f39a60ae2ea88e9921723cec. ---- - startkde/startplasma-waylandsession.cpp | 1 + - startkde/startplasma-x11.cpp | 1 + - startkde/startplasma.cpp | 22 ++++++++++++++++++++++ - startkde/startplasma.h | 1 + - 4 files changed, 25 insertions(+) - -diff --git a/startkde/startplasma-waylandsession.cpp b/startkde/startplasma-waylandsession.cpp -index ed496cc24..d0c83bf5a 100644 ---- a/startkde/startplasma-waylandsession.cpp -+++ b/startkde/startplasma-waylandsession.cpp -@@ -41,6 +41,7 @@ int main(int argc, char **argv) - // Keep for KF5; remove in KF6 (KInit will be gone then) - runSync(QStringLiteral("kdeinit5_shutdown"), {}); - -+ cleanupX11(); - out << "startplasma-waylandsession: Done.\n"; - - return 0; -diff --git a/startkde/startplasma-x11.cpp b/startkde/startplasma-x11.cpp -index d6b2c5439..7ddf7b3ea 100644 ---- a/startkde/startplasma-x11.cpp -+++ b/startkde/startplasma-x11.cpp -@@ -93,6 +93,7 @@ int main(int argc, char **argv) - runSync(QStringLiteral("kdeinit5_shutdown"), {}); - - cleanupPlasmaEnvironment(oldSystemdEnvironment); -+ cleanupX11(); - - out << "startkde: Done.\n"; - -diff --git a/startkde/startplasma.cpp b/startkde/startplasma.cpp -index 8d0b0ba89..5f78e7016 100644 ---- a/startkde/startplasma.cpp -+++ b/startkde/startplasma.cpp -@@ -336,6 +336,28 @@ void setupX11() - // so don't move this up. - - runSync(QStringLiteral("xsetroot"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")}); -+ runSync(QStringLiteral("xprop"), -+ {QStringLiteral("-root"), -+ QStringLiteral("-f"), -+ QStringLiteral("KDE_FULL_SESSION"), -+ QStringLiteral("8t"), -+ QStringLiteral("-set"), -+ QStringLiteral("KDE_FULL_SESSION"), -+ QStringLiteral("true")}); -+ runSync(QStringLiteral("xprop"), -+ {QStringLiteral("-root"), -+ QStringLiteral("-f"), -+ QStringLiteral("KDE_SESSION_VERSION"), -+ QStringLiteral("32c"), -+ QStringLiteral("-set"), -+ QStringLiteral("KDE_SESSION_VERSION"), -+ QStringLiteral("5")}); -+} -+ -+void cleanupX11() -+{ -+ runSync(QStringLiteral("xprop"), {QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_FULL_SESSION")}); -+ runSync(QStringLiteral("xprop"), {QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_SESSION_VERSION")}); - } - - void cleanupPlasmaEnvironment(const std::optional<QStringList> &oldSystemdEnvironment) -diff --git a/startkde/startplasma.h b/startkde/startplasma.h -index e8684be74..00c5c1570 100644 ---- a/startkde/startplasma.h -+++ b/startkde/startplasma.h -@@ -26,6 +26,7 @@ void importSystemdEnvrionment(); - void runEnvironmentScripts(); - void setupPlasmaEnvironment(); - void cleanupPlasmaEnvironment(const std::optional<QStringList> &oldSystemdEnvironment); -+void cleanupX11(); - bool syncDBusEnvironment(); - void setupFontDpi(); - QProcess *setupKSplash(); --- -2.33.0 - diff --git a/source/kde/kde/patch/plasma-workspace/70d23b89.patch b/source/kde/kde/patch/plasma-workspace/70d23b89.patch deleted file mode 100644 index 2d9c2a0f8..000000000 --- a/source/kde/kde/patch/plasma-workspace/70d23b89.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 70d23b891e95bc6911389773f320a4406a12bd87 Mon Sep 17 00:00:00 2001 -From: Lufan Zhong <lufanzhong@gmail.com> -Date: Sun, 26 Dec 2021 19:33:09 +0000 -Subject: [PATCH] runners/shell: Port from KToolInvocation::invokeTerminal to - KTerminalLauncherJob - -kinit is being deprecated; this change will allow it to open a terminal and execute -commands normally without kinit being present. - -BUG: 437131 -FIXED-IN: 5.24 ---- - runners/shell/shellrunner.cpp | 15 +++++++++++++-- - 1 file changed, 13 insertions(+), 2 deletions(-) - -diff --git a/runners/shell/shellrunner.cpp b/runners/shell/shellrunner.cpp -index 03b54e1f1..be4058acf 100644 ---- a/runners/shell/shellrunner.cpp -+++ b/runners/shell/shellrunner.cpp -@@ -12,8 +12,9 @@ - #include <KLocalizedString> - #include <KNotificationJobUiDelegate> - #include <KShell> --#include <KToolInvocation> -+#include <KTerminalLauncherJob> - #include <QAction> -+#include <QProcessEnvironment> - #include <QRegularExpression> - #include <QStandardPaths> - -@@ -62,7 +63,17 @@ void ShellRunner::run(const Plasma::RunnerContext &context, const Plasma::QueryM - { - if (match.selectedAction()) { - const QVariantList data = match.data().toList(); -- KToolInvocation::invokeTerminal(data.at(0).toString(), data.at(1).toStringList()); -+ const QStringList list = data.at(1).toStringList(); -+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); -+ for (const auto& str : list) -+ { -+ const int pos = str.indexOf('='); -+ env.insert(str.left(pos), str.mid(pos+1)); -+ } -+ auto job = new KTerminalLauncherJob(data.at(0).toString()); -+ job->setProcessEnvironment(env); -+ job->setUiDelegate(new KNotificationJobUiDelegate(KJobUiDelegate::AutoHandlingEnabled)); -+ job->start(); - return; - } - --- -GitLab - diff --git a/source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch b/source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch deleted file mode 100644 index 4c30b8dec..000000000 --- a/source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 926f864756e5586f38574c166abdb5befa3dc771 Mon Sep 17 00:00:00 2001 -From: David Edmundson <kde@davidedmundson.co.uk> -Date: Wed, 8 Dec 2021 13:08:43 +0000 -Subject: [PATCH] [libtaskmanager] Increase buffer for pipewire format - negotiation - -Libtaskmanager's buffer for spa_builder is too small on certain -configurations. Because podBuilder->state.offset is never reset, the -buffer space can run out when EGL returns a long list of dma_buf -modifiers, causing PipeWire negotiation to fail. - -An example is when EGL returns 20 modifiers. There are 6 formats defined -in pipewiresourcestream.cpp, for each format it will construct 2 frames, -one with 21*8=168 bytes long of modifiers. The modifier lists for all -frames will be 6*168=1008 bytes (only 16 bytes left of 1024 bytes), let -alone other frames. - -BUG: 446061 ---- - libtaskmanager/declarative/pipewiresourcestream.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libtaskmanager/declarative/pipewiresourcestream.cpp b/libtaskmanager/declarative/pipewiresourcestream.cpp -index a6713ae76..f1d3032a5 100644 ---- a/libtaskmanager/declarative/pipewiresourcestream.cpp -+++ b/libtaskmanager/declarative/pipewiresourcestream.cpp -@@ -260,7 +260,7 @@ bool PipeWireSourceStream::createStream(uint nodeid) - pwNodeId = nodeid; - pw_stream_add_listener(pwStream, &streamListener, &pwStreamEvents, this); - -- uint8_t buffer[1024]; -+ uint8_t buffer[4096]; - spa_pod_builder podBuilder = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer)); - - const QVector<spa_video_format> formats = --- -GitLab - diff --git a/source/kde/kde/patch/sddm.patch b/source/kde/kde/patch/sddm.patch deleted file mode 100644 index 319bad684..000000000 --- a/source/kde/kde/patch/sddm.patch +++ /dev/null @@ -1,14 +0,0 @@ -# Properly honor supplemental groups, https://github.com/sddm/sddm/issues/1159 : -cat $CWD/patch/sddm/sddm_revert-honor-PAM-supplemental-groups.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } -cat $CWD/patch/sddm/sddm_honor-PAM-supplemental-groups-v2.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } - -# Don't source $HOME/.xession in SDDM's Xsession script. It may cause the -# wrong session type to launch, or run a second copy of dbus-run-session which -# will break logout: -cat $CWD/patch/sddm/sddm.do.not.source.HOME.xsession.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } - -# List Wayland sessions after X11 sessions since Wayland is more experimental: -cat $CWD/patch/sddm/sddm.list.X11.sessions.before.Wayland.Sessions.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } - -# Fix build with Qt from git: -cat $CWD/patch/sddm/sddm.fix.build.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/source/kde/kde/patch/sddm/sddm.do.not.source.HOME.xsession.diff b/source/kde/kde/patch/sddm/sddm.do.not.source.HOME.xsession.diff deleted file mode 100644 index c14b266d6..000000000 --- a/source/kde/kde/patch/sddm/sddm.do.not.source.HOME.xsession.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- ./data/scripts/Xsession.orig 2020-11-03 01:41:06.000000000 -0600 -+++ ./data/scripts/Xsession 2020-12-15 14:16:30.968724577 -0600 -@@ -94,9 +94,12 @@ - if [ -f "$USERXSESSIONRC" ]; then - . "$USERXSESSIONRC" - fi --if [ -f "$USERXSESSION" ]; then -- . "$USERXSESSION" --fi -+ -+# Commented out because $HOME/.xsession may start the wrong session type or -+# cause dbus-run-session to start twice. -+#if [ -f "$USERXSESSION" ]; then -+# . "$USERXSESSION" -+#fi - - if [ -z "$*" ]; then - exec xmessage -center -buttons OK:0 -default OK "Sorry, $DESKTOP_SESSION is no valid session." diff --git a/source/kde/kde/patch/sddm/sddm.fix.build.diff b/source/kde/kde/patch/sddm/sddm.fix.build.diff deleted file mode 100644 index b481cfa6a..000000000 --- a/source/kde/kde/patch/sddm/sddm.fix.build.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- ./src/daemon/XorgDisplayServer.cpp.orig 2020-11-03 03:49:10.000000000 -0600 -+++ ./src/daemon/XorgDisplayServer.cpp 2021-08-29 11:36:20.356811948 -0500 -@@ -65,7 +65,7 @@ - // create a random hexadecimal number - const char *digits = "0123456789abcdef"; - for (int i = 0; i < 32; ++i) -- m_cookie[i] = digits[dis(gen)]; -+ m_cookie[i] = QLatin1Char(digits[dis(gen)]); - } - - XorgDisplayServer::~XorgDisplayServer() { diff --git a/source/kde/kde/patch/sddm/sddm.list.X11.sessions.before.Wayland.Sessions.diff b/source/kde/kde/patch/sddm/sddm.list.X11.sessions.before.Wayland.Sessions.diff deleted file mode 100644 index 78a6c966b..000000000 --- a/source/kde/kde/patch/sddm/sddm.list.X11.sessions.before.Wayland.Sessions.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- ./src/greeter/SessionModel.cpp.orig 2020-11-03 01:41:06.000000000 -0600 -+++ ./src/greeter/SessionModel.cpp 2021-04-26 12:54:48.558769977 -0500 -@@ -41,8 +41,8 @@ - SessionModel::SessionModel(QObject *parent) : QAbstractListModel(parent), d(new SessionModelPrivate()) { - // initial population - beginResetModel(); -- populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get()); - populate(Session::X11Session, mainConfig.X11.SessionDir.get()); -+ populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get()); - endResetModel(); - - // refresh everytime a file is changed, added or removed diff --git a/source/kde/kde/patch/sddm/sddm_honor-PAM-supplemental-groups-v2.patch b/source/kde/kde/patch/sddm/sddm_honor-PAM-supplemental-groups-v2.patch deleted file mode 100644 index bf3bfd255..000000000 --- a/source/kde/kde/patch/sddm/sddm_honor-PAM-supplemental-groups-v2.patch +++ /dev/null @@ -1,183 +0,0 @@ -From 75e6e00d9e1ecf25e3a9c8332530a1e40d737cdb Mon Sep 17 00:00:00 2001 -From: "J. Konrad Tegtmeier-Rottach" <jktr@0x16.de> -Date: Thu, 9 May 2019 03:06:48 +0200 -Subject: [PATCH] Honor PAM's supplemental groups (v2) (#834, #1159) - -This moves the supplemental group initialization step from -UserSession.cpp to the Backend system, so that the Pam Backend can -inject additional supplemental groups via modules like pam_group.so. - -pam_setcred(3) assumes that it operates on an already initialized -supplemental group list. However, PamBackend calls -pam_setcred(PAM_ESTABLISH_CRED) earlier, at the start -PamBackend::openSession, so a pam_setcred(PAM_REINITIALIZE_CRED) call -must be issued to repeat the injection of PAM's supplemental groups. ---- - src/helper/Backend.cpp | 5 +++++ - src/helper/Backend.h | 3 +++ - src/helper/HelperApp.cpp | 4 ++++ - src/helper/HelperApp.h | 1 + - src/helper/UserSession.cpp | 13 ++++++++----- - src/helper/backend/PamBackend.cpp | 18 ++++++++++++++++++ - src/helper/backend/PamBackend.h | 2 ++ - 7 files changed, 41 insertions(+), 5 deletions(-) - -diff --git a/src/helper/Backend.cpp b/src/helper/Backend.cpp -index d6bb4d0a..35ae2bdf 100644 ---- a/src/helper/Backend.cpp -+++ b/src/helper/Backend.cpp -@@ -29,6 +29,7 @@ - #include <QtCore/QProcessEnvironment> - - #include <pwd.h> -+#include <grp.h> - - namespace SDDM { - Backend::Backend(HelperApp* parent) -@@ -79,4 +80,8 @@ namespace SDDM { - bool Backend::closeSession() { - return true; - } -+ -+ bool Backend::setupSupplementalGroups(struct passwd *pw) { -+ return !initgroups(pw->pw_name, pw->pw_gid); -+ } - } -diff --git a/src/helper/Backend.h b/src/helper/Backend.h -index b790e001..3caf1592 100644 ---- a/src/helper/Backend.h -+++ b/src/helper/Backend.h -@@ -22,6 +22,7 @@ - #define BACKEND_H - - #include <QtCore/QObject> -+#include <pwd.h> - - namespace SDDM { - class HelperApp; -@@ -38,6 +39,8 @@ namespace SDDM { - void setAutologin(bool on = true); - void setGreeter(bool on = true); - -+ virtual bool setupSupplementalGroups(struct passwd *pw); -+ - public slots: - virtual bool start(const QString &user = QString()) = 0; - virtual bool authenticate() = 0; -diff --git a/src/helper/HelperApp.cpp b/src/helper/HelperApp.cpp -index cad93bd8..d0891d75 100644 ---- a/src/helper/HelperApp.cpp -+++ b/src/helper/HelperApp.cpp -@@ -253,6 +253,10 @@ namespace SDDM { - return m_session; - } - -+ Backend *HelperApp::backend() { -+ return m_backend; -+ } -+ - const QString& HelperApp::user() const { - return m_user; - } -diff --git a/src/helper/HelperApp.h b/src/helper/HelperApp.h -index 3742df12..cb5959a7 100644 ---- a/src/helper/HelperApp.h -+++ b/src/helper/HelperApp.h -@@ -39,6 +39,7 @@ namespace SDDM { - virtual ~HelperApp(); - - UserSession *session(); -+ Backend *backend(); - const QString &user() const; - const QString &cookie() const; - -diff --git a/src/helper/UserSession.cpp b/src/helper/UserSession.cpp -index f71fd358..62fd4d70 100644 ---- a/src/helper/UserSession.cpp -+++ b/src/helper/UserSession.cpp -@@ -19,6 +19,7 @@ - * - */ - -+#include "Backend.h" - #include "Configuration.h" - #include "UserSession.h" - #include "HelperApp.h" -@@ -129,7 +130,8 @@ namespace SDDM { - #endif - - // switch user -- const QByteArray username = qobject_cast<HelperApp*>(parent())->user().toLocal8Bit(); -+ HelperApp* app = qobject_cast<HelperApp*>(parent()); -+ const QByteArray username = app->user().toLocal8Bit(); - struct passwd pw; - struct passwd *rpw; - long bufsize = sysconf(_SC_GETPW_R_SIZE_MAX); -@@ -146,12 +148,13 @@ namespace SDDM { - qCritical() << "getpwnam_r(" << username << ") failed with error: " << strerror(err); - exit(Auth::HELPER_OTHER_ERROR); - } -- if (setgid(pw.pw_gid) != 0) { -- qCritical() << "setgid(" << pw.pw_gid << ") failed for user: " << username; -+ -+ if (!app->backend()->setupSupplementalGroups(&pw)) { -+ qCritical() << "failed to set up supplemental groups for user: " << username; - exit(Auth::HELPER_OTHER_ERROR); - } -- if (initgroups(pw.pw_name, pw.pw_gid) != 0) { -- qCritical() << "initgroups(" << pw.pw_name << ", " << pw.pw_gid << ") failed for user: " << username; -+ if (setgid(pw.pw_gid) != 0) { -+ qCritical() << "setgid(" << pw.pw_gid << ") failed for user: " << username; - exit(Auth::HELPER_OTHER_ERROR); - } - if (setuid(pw.pw_uid) != 0) { -diff --git a/src/helper/backend/PamBackend.cpp b/src/helper/backend/PamBackend.cpp -index f86d77d6..cccfa258 100644 ---- a/src/helper/backend/PamBackend.cpp -+++ b/src/helper/backend/PamBackend.cpp -@@ -289,6 +289,24 @@ namespace SDDM { - return QString::fromLocal8Bit((const char*) m_pam->getItem(PAM_USER)); - } - -+ bool PamBackend::setupSupplementalGroups(struct passwd *pw) { -+ if (!Backend::setupSupplementalGroups(pw)) -+ return false; -+ -+ // pam_setcred(3) may inject additional groups into the user's -+ // list of supplemental groups, and assumes that the user's -+ // supplemental groups have already been initialized before -+ // its invocation. Since pam_setcred was already called at the -+ // start of openSession, we need to repeat this step here as -+ // the user's groups have only just now been initialized. -+ -+ if (!m_pam->setCred(PAM_REINITIALIZE_CRED)) { -+ m_app->error(m_pam->errorString(), Auth::ERROR_AUTHENTICATION); -+ return false; -+ } -+ return true; -+ } -+ - int PamBackend::converse(int n, const struct pam_message **msg, struct pam_response **resp) { - qDebug() << "[PAM] Conversation with" << n << "messages"; - -diff --git a/src/helper/backend/PamBackend.h b/src/helper/backend/PamBackend.h -index 4c8b4b35..5b079099 100644 ---- a/src/helper/backend/PamBackend.h -+++ b/src/helper/backend/PamBackend.h -@@ -28,6 +28,7 @@ - #include <QtCore/QObject> - - #include <security/pam_appl.h> -+#include <pwd.h> - - namespace SDDM { - class PamHandle; -@@ -61,6 +62,7 @@ namespace SDDM { - explicit PamBackend(HelperApp *parent); - virtual ~PamBackend(); - int converse(int n, const struct pam_message **msg, struct pam_response **resp); -+ virtual bool setupSupplementalGroups(struct passwd *pw); - - public slots: - virtual bool start(const QString &user = QString()); - diff --git a/source/kde/kde/patch/sddm/sddm_revert-honor-PAM-supplemental-groups.patch b/source/kde/kde/patch/sddm/sddm_revert-honor-PAM-supplemental-groups.patch deleted file mode 100644 index 2391c80ce..000000000 --- a/source/kde/kde/patch/sddm/sddm_revert-honor-PAM-supplemental-groups.patch +++ /dev/null @@ -1,88 +0,0 @@ -From d3953e88a94ec25a87d3c5136517b3d1009cb1fd Mon Sep 17 00:00:00 2001 -From: "J. Konrad Tegtmeier-Rottach" <jktr@0x16.de> -Date: Wed, 8 May 2019 18:58:53 +0200 -Subject: [PATCH] Revert "Honor PAM's ambient supplemental groups. (#834)" - -This reverts commit 1bc813d08b8130e458a6550ec47fb2bfbe6de080, which -misuses PAM and leads to pulling in all of root's supplemental groups -during session initialization instead of only adding PAM's extra -groups. The problem was masked due to the root user not having any -supplemental groups in some common contexts, like running sddm from a -systemd unit. ---- - src/helper/UserSession.cpp | 57 -------------------------------------- - 1 file changed, 57 deletions(-) - -diff --git a/src/helper/UserSession.cpp b/src/helper/UserSession.cpp -index b3aec356..f71fd358 100644 ---- a/src/helper/UserSession.cpp -+++ b/src/helper/UserSession.cpp -@@ -150,67 +150,10 @@ namespace SDDM { - qCritical() << "setgid(" << pw.pw_gid << ") failed for user: " << username; - exit(Auth::HELPER_OTHER_ERROR); - } -- --#ifdef USE_PAM -- -- // fetch ambient groups from PAM's environment; -- // these are set by modules such as pam_groups.so -- int n_pam_groups = getgroups(0, NULL); -- gid_t *pam_groups = NULL; -- if (n_pam_groups > 0) { -- pam_groups = new gid_t[n_pam_groups]; -- if ((n_pam_groups = getgroups(n_pam_groups, pam_groups)) == -1) { -- qCritical() << "getgroups() failed to fetch supplemental" -- << "PAM groups for user:" << username; -- exit(Auth::HELPER_OTHER_ERROR); -- } -- } else { -- n_pam_groups = 0; -- } -- -- // fetch session's user's groups -- int n_user_groups = 0; -- gid_t *user_groups = NULL; -- if (-1 == getgrouplist(username.constData(), pw.pw_gid, -- NULL, &n_user_groups)) { -- user_groups = new gid_t[n_user_groups]; -- if ((n_user_groups = getgrouplist(username.constData(), -- pw.pw_gid, user_groups, -- &n_user_groups)) == -1 ) { -- qCritical() << "getgrouplist(" << username << ", " << pw.pw_gid -- << ") failed"; -- exit(Auth::HELPER_OTHER_ERROR); -- } -- } -- -- // set groups to concatenation of PAM's ambient -- // groups and the session's user's groups -- int n_groups = n_pam_groups + n_user_groups; -- if (n_groups > 0) { -- gid_t *groups = new gid_t[n_groups]; -- memcpy(groups, pam_groups, (n_pam_groups * sizeof(gid_t))); -- memcpy((groups + n_pam_groups), user_groups, -- (n_user_groups * sizeof(gid_t))); -- -- // setgroups(2) handles duplicate groups -- if (setgroups(n_groups, groups) != 0) { -- qCritical() << "setgroups() failed for user: " << username; -- exit (Auth::HELPER_OTHER_ERROR); -- } -- delete[] groups; -- } -- delete[] pam_groups; -- delete[] user_groups; -- --#else -- - if (initgroups(pw.pw_name, pw.pw_gid) != 0) { - qCritical() << "initgroups(" << pw.pw_name << ", " << pw.pw_gid << ") failed for user: " << username; - exit(Auth::HELPER_OTHER_ERROR); - } -- --#endif /* USE_PAM */ -- - if (setuid(pw.pw_uid) != 0) { - qCritical() << "setuid(" << pw.pw_uid << ") failed for user: " << username; - exit(Auth::HELPER_OTHER_ERROR); - |