From b9ef7cab6264f1838672efbbcb4ba3b3abd5323f Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sat, 9 Dec 2017 09:14:02 +0000 Subject: gentoo resync : 09.12.2017 --- media-gfx/digikam/Manifest | 6 +- media-gfx/digikam/digikam-5.7.0-r1.ebuild | 2 +- media-gfx/digikam/digikam-5.7.0-r2.ebuild | 174 +++++++++++++++++++++ .../digikam/files/digikam-5.7.0-kreadconfig5.patch | 28 ++++ .../files/digikam-5.7.0-mariadb-10.2-1.patch | 58 +++++++ .../files/digikam-5.7.0-mariadb-10.2-2.patch | 117 ++++++++++++++ 6 files changed, 383 insertions(+), 2 deletions(-) create mode 100644 media-gfx/digikam/digikam-5.7.0-r2.ebuild create mode 100644 media-gfx/digikam/files/digikam-5.7.0-kreadconfig5.patch create mode 100644 media-gfx/digikam/files/digikam-5.7.0-mariadb-10.2-1.patch create mode 100644 media-gfx/digikam/files/digikam-5.7.0-mariadb-10.2-2.patch (limited to 'media-gfx/digikam') diff --git a/media-gfx/digikam/Manifest b/media-gfx/digikam/Manifest index 0d9f74fde61b..10616f42aea0 100644 --- a/media-gfx/digikam/Manifest +++ b/media-gfx/digikam/Manifest @@ -1,7 +1,11 @@ AUX digikam-5.5.0-cmake-3.9.patch 7298 BLAKE2B d4c9085b9d65977dad1932cbd57f132c8aee844827d28dd74b4ab3ce8dea199ce959306f56064f5abe0a6acaad11c2c45f3932444bda79bb72520ab68c240320 SHA512 0a0f33f8b288fc98b95397ff615ab747bb78e35f8b6ed517e814dfebd32dd3f626f0c232d5b45a69bf80c4b548b72932fb376ce2308b0786b196e7fcdeda9b19 +AUX digikam-5.7.0-kreadconfig5.patch 1068 BLAKE2B 4a19e8c0806e7d4ba6219711385db7865507414203f4a273114e1ece3e62983f36cac3b299c3d498a6118dd608719d18ad1c29d1d66bf4774151f530fcb08e01 SHA512 cc78a318f865a85c5a1b0a89734c6c320367c961313db1f8acac25a340c481aa79154ae0c21683f967e0042008235ccf5c9a28078d359c07aaa3e4244b543871 +AUX digikam-5.7.0-mariadb-10.2-1.patch 1949 BLAKE2B 5af708e8e6296031752acdb579cc20a502968deb791a1bcc305fe2fef72dd67ff8b7d78bc85a6311a301428167d985f1ccb67b322e80b61c2b22e9909d7324c2 SHA512 13b83b1b32d33955f140345a47dda2d8ef0eb9057e154962f382b415e0bc46ca34ccc9b2fa782b4660eb05c947c8555fae6f9e6828a904c41d66e9a032399f82 +AUX digikam-5.7.0-mariadb-10.2-2.patch 3714 BLAKE2B b08c0544def660bfef87c68204bf00dff2661d58877f514fbfbe6bb8c856cfcb72acc10c2f8661a19230b2a4ec92407c401b90af8482ff97fbcce87bd8c7e6d1 SHA512 c7865329b6387f5c4decfa750f3bfeba3d3b61df5c86b35147050d5fbf4c3585cb8ed5e8789b6dcab6f1887dc4322200920b432006d80457edf286cad594ef51 AUX digikam-5.7.0-qt-5.9.3.patch 1137 BLAKE2B bf369d28083de46d11444eea8ddd35ccc1aa8d052bcd48d8da04a14737d404238717cc70eec7681931f46a455f2e1b441fd1851d3df12d19d8f5653fcc9b2847 SHA512 bfd453d6f4212dfd3e2402d0bba73f9498c04264a7199119fe117a9af834aa95bd12ac8cb2df8be063a8120bbfe159d52f96229692ac7258c4128909dbbffe61 DIST digikam-5.5.0.tar.xz 129499600 SHA256 df9cbf1b8dbfb9235cebc97e77c02fcb1498c5a905c7fd3b9fb42fd7accc6252 SHA512 3c64774916d4804d932009ba3753d387ecf31e9e3d435c580497d3badb6cc3e57ab5ef1a2334a23379d0987d96dd107be4f01adbb63039f4510aa94ac6d71344 WHIRLPOOL e67b444975ad37e939b2f62bba949bcafb41eee2975470daa02e4ffdd62c6c792b6656edf4811daead52fdc1bf064951fbec7b687192e5d5ee542d5d706140be DIST digikam-5.7.0.tar.xz 123315064 BLAKE2B 0879b25e674e39d204038ab629dec36757ae034e3dd7e9a0a3700f9703272c4a972a21c1db5a42c6c294247a1226b1cb9a8b980bb90cdcc12e0cd752459273ef SHA512 626c9854311c637b994325237f171adce3dba39159fb336dfe95f1de287e2d08a3aaddd611eea87e8018047d331aff252b555c382cfbe1d8e14413c51a3849f4 EBUILD digikam-5.5.0.ebuild 4754 BLAKE2B 15740067a8a2da70baa564d5dbac7af3998c65975dc48938b67c52326ff500fecc35e6d1a7cdaa7e2b75cefca3ab0354d1c45a742b65a6e9bc2f428f6b60dfeb SHA512 19dd72651406bb4f3a899aa2e4e4ea6c650c5b33963bd9c437510c355349baeea89a91e7394868d57f3b73cf24433833428076cf574429dc9224c2799a08ed19 -EBUILD digikam-5.7.0-r1.ebuild 4855 BLAKE2B 7f3d5e6002b3daccee31f1c7ab7fe9a57824bdf4f31d50b4319b07e71c5ecbd476f6c6140b84497b4fbc8fa5cfa707d358b0afa69a0883dc9689018e4726321e SHA512 c6836145cc5cc8b69b66da9494ef0d7101a7fd4c9df1779d1bd2a296ae14f9da88384a7fb58e79c56c53d8c731b1b027145e858b6b919642cfb7bdeada0d5954 +EBUILD digikam-5.7.0-r1.ebuild 4854 BLAKE2B dd83efcbfb9e76ddeb1a50dd38c48985edf285f0e0812755be54a25d21c451c625947a90c788330beb38f2f68c92585cd430c7192e6d26a0bbeb97fe0cc171ce SHA512 2353dc0b9475e79ffeae9f43c847e4ef87f918f2b1d768496369b9b8eb2d79852f7b957e57b569679f0258e00d4974be71ac223367a6a40cd7b8fa6e404c780e +EBUILD digikam-5.7.0-r2.ebuild 4940 BLAKE2B 7a2ab69cadaf4183411df54924883c8401910b2ebf4825c07f1a73b8f98bdebd780da17d6da52074c1e19bf1dab71311d2a736617f284750428c8d78e0cac55e SHA512 81cba5421883f2f3ceffc0af3b0bb00cbff54f5ebfc2ee01833b10bf522b99f5088d25ce80cbb3698e574ea6bea90ad6e39ec9e9d1f1e11fabdf2a5131a0478c MISC metadata.xml 962 BLAKE2B 918fd2665df0b74bfcac369d306bd8989723db59dd436085ba7ad24e640401b8f39d2005674c4ef85c1875d2b31c9603af9b8ee7465b11f94b09ba9c93a6d9f2 SHA512 c8998f630fca57844cb258b42d6d557c7a6c65f8b0b90caf44225b62827e24eeaaa6defdf1334c7b7c80a1132aac96e178fe3b18ab59035534b605aed4665bab diff --git a/media-gfx/digikam/digikam-5.7.0-r1.ebuild b/media-gfx/digikam/digikam-5.7.0-r1.ebuild index 62c259e566c2..2b9a28dd0213 100644 --- a/media-gfx/digikam/digikam-5.7.0-r1.ebuild +++ b/media-gfx/digikam/digikam-5.7.0-r1.ebuild @@ -17,7 +17,7 @@ LICENSE="GPL-2" IUSE="addressbook calendar gphoto2 jpeg2k +kipi +lensfun marble mediaplayer semantic-desktop mysql opengl openmp +panorama scanner X" if [[ ${KDE_BUILD_TYPE} != live ]]; then - KEYWORDS="~amd64 ~x86" + KEYWORDS="~amd64 x86" MY_PV=${PV/_/-} MY_P=${PN}-${MY_PV} SRC_BRANCH=stable diff --git a/media-gfx/digikam/digikam-5.7.0-r2.ebuild b/media-gfx/digikam/digikam-5.7.0-r2.ebuild new file mode 100644 index 000000000000..0b1c44fc5b4b --- /dev/null +++ b/media-gfx/digikam/digikam-5.7.0-r2.ebuild @@ -0,0 +1,174 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +if [[ ${KDE_BUILD_TYPE} != live ]]; then + KDE_HANDBOOK="true" + KDE_TEST="true" +fi +CMAKE_MAKEFILE_GENERATOR="emake" +inherit kde5 toolchain-funcs + +DESCRIPTION="Digital photo management application" +HOMEPAGE="https://www.digikam.org/" + +LICENSE="GPL-2" +IUSE="addressbook calendar gphoto2 jpeg2k +kipi +lensfun marble mediaplayer semantic-desktop mysql opengl openmp +panorama scanner X" + +if [[ ${KDE_BUILD_TYPE} != live ]]; then + KEYWORDS="~amd64 ~x86" + MY_PV=${PV/_/-} + MY_P=${PN}-${MY_PV} + SRC_BRANCH=stable + [[ ${PV} =~ beta[0-9]$ ]] && SRC_BRANCH=unstable + SRC_URI="mirror://kde/${SRC_BRANCH}/digikam/${MY_P}.tar.xz" + S="${WORKDIR}/${MY_P}/core" +fi + +# TODO: Package QtAV http://www.qtav.org/ +# video? ( media-video/qtav ) +COMMON_DEPEND=" + $(add_frameworks_dep kconfig) + $(add_frameworks_dep kconfigwidgets) + $(add_frameworks_dep kcoreaddons) + $(add_frameworks_dep ki18n) + $(add_frameworks_dep kiconthemes) + $(add_frameworks_dep kio) + $(add_frameworks_dep knotifications) + $(add_frameworks_dep knotifyconfig) + $(add_frameworks_dep kservice) + $(add_frameworks_dep kwidgetsaddons) + $(add_frameworks_dep kwindowsystem) + $(add_frameworks_dep kxmlgui) + $(add_frameworks_dep solid) + $(add_qt_dep qtconcurrent) + $(add_qt_dep qtdbus) + $(add_qt_dep qtgui '-gles2') + $(add_qt_dep qtprintsupport) + $(add_qt_dep qtsql 'mysql?') + $(add_qt_dep qtwebkit) + $(add_qt_dep qtwidgets) + $(add_qt_dep qtxml) + dev-libs/expat + >=media-gfx/exiv2-0.26:= + media-libs/lcms:2 + media-libs/liblqr + media-libs/libpng:0= + media-libs/opencv:=[-qt4(-)] + || ( =media-libs/opencv-3.1.0 ) + media-libs/tiff:0 + virtual/jpeg:0 + addressbook? ( + $(add_kdeapps_dep akonadi-contacts) + $(add_kdeapps_dep kcontacts) + ) + calendar? ( $(add_kdeapps_dep kcalcore) ) + gphoto2? ( media-libs/libgphoto2:= ) + jpeg2k? ( media-libs/jasper:= ) + kipi? ( $(add_kdeapps_dep libkipi '' '16.03.80') ) + lensfun? ( media-libs/lensfun ) + marble? ( + $(add_frameworks_dep kbookmarks) + $(add_kdeapps_dep marble) + $(add_qt_dep qtconcurrent) + $(add_qt_dep qtnetwork) + ) + mediaplayer? ( media-libs/qtav[opengl] ) + mysql? ( virtual/mysql[server] ) + opengl? ( + $(add_qt_dep qtopengl) + virtual/opengl + ) + panorama? ( $(add_frameworks_dep threadweaver) ) + scanner? ( $(add_kdeapps_dep libksane) ) + semantic-desktop? ( $(add_frameworks_dep kfilemetadata) ) + X? ( + $(add_qt_dep qtx11extras) + x11-libs/libX11 + ) +" +DEPEND="${COMMON_DEPEND} + dev-cpp/eigen:3 + dev-libs/boost[threads] + sys-devel/gettext + panorama? ( + sys-devel/bison + sys-devel/flex + ) +" +RDEPEND="${COMMON_DEPEND} + media-plugins/kipi-plugins:5 + panorama? ( media-gfx/hugin ) + !media-gfx/digikam:4 +" + +RESTRICT=test +# bug 366505 + +PATCHES=( + "${FILESDIR}"/${P}-qt-5.9.3.patch + "${FILESDIR}"/${P}-mariadb-10.2-{1,2}.patch + "${FILESDIR}"/${P}-kreadconfig5.patch +) + +pkg_pretend() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp + kde5_pkg_pretend +} + +pkg_setup() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp + kde5_pkg_setup +} + +# FIXME: Unbundle libraw (libs/rawengine/libraw) +src_prepare() { + if [[ ${KDE_BUILD_TYPE} != live ]]; then + # prepare the translations + mv "${WORKDIR}/${MY_P}/po" po || die + find po -name "*.po" -and -not -name "digikam.po" -delete || die + echo "set_property(GLOBAL PROPERTY ALLOW_DUPLICATE_CUSTOM_TARGETS 1)" >> CMakeLists.txt || die + echo "find_package(Gettext REQUIRED)" >> CMakeLists.txt || die + echo "add_subdirectory( po )" >> CMakeLists.txt || die + + if use handbook; then + # subdirs need to be preserved b/c relative paths... + # doc-translated is, in fact, broken, and ignored + mv "${WORKDIR}/${MY_P}/doc/${PN}" doc-default || die + echo "find_package(KF5DocTools REQUIRED)" >> CMakeLists.txt || die + echo "add_subdirectory( doc-default )" >> CMakeLists.txt || die + fi + fi + + if ! use marble; then + punt_bogus_dep Qt5 Network + fi + + kde5_src_prepare +} + +src_configure() { + local mycmakeargs=( + -DENABLE_APPSTYLES=ON + -DENABLE_AKONADICONTACTSUPPORT=$(usex addressbook) + -DENABLE_MEDIAPLAYER=$(usex mediaplayer) + -DENABLE_MYSQLSUPPORT=$(usex mysql) + -DENABLE_OPENCV3=$(has_version ">=media-libs/opencv-3" && echo yes || echo no) + $(cmake-utils_use_find_package calendar KF5CalendarCore) + $(cmake-utils_use_find_package gphoto2 Gphoto2) + $(cmake-utils_use_find_package jpeg2k Jasper) + $(cmake-utils_use_find_package kipi KF5Kipi) + $(cmake-utils_use_find_package lensfun LensFun) + $(cmake-utils_use_find_package marble Marble) + $(cmake-utils_use_find_package mediaplayer QtAV) + $(cmake-utils_use_find_package opengl OpenGL) + $(cmake-utils_use_find_package openmp OpenMP) + $(cmake-utils_use_find_package panorama KF5ThreadWeaver) + $(cmake-utils_use_find_package scanner KF5Sane) + $(cmake-utils_use_find_package semantic-desktop KF5FileMetaData) + $(cmake-utils_use_find_package X X11) + ) + + kde5_src_configure +} diff --git a/media-gfx/digikam/files/digikam-5.7.0-kreadconfig5.patch b/media-gfx/digikam/files/digikam-5.7.0-kreadconfig5.patch new file mode 100644 index 000000000000..7305f64aa3fb --- /dev/null +++ b/media-gfx/digikam/files/digikam-5.7.0-kreadconfig5.patch @@ -0,0 +1,28 @@ +From bbf087645d426e20ce96fa2accd70ff4198d30ec Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner +Date: Wed, 6 Dec 2017 22:31:29 +0100 +Subject: [PATCH] cleanup_digikamdb: Don't depend on kde-runtime + +Summary: This needs to use kreadconfig5 in a Frameworks world. + +Differential Revision: https://phabricator.kde.org/D9235 +--- + data/scripts/cleanup_digikamdb/cleanup_digikamdb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/scripts/cleanup_digikamdb/cleanup_digikamdb b/data/scripts/cleanup_digikamdb/cleanup_digikamdb +index 3a68d3d040..9cfcd6ac8d 100644 +--- a/data/scripts/cleanup_digikamdb/cleanup_digikamdb ++++ b/data/scripts/cleanup_digikamdb/cleanup_digikamdb +@@ -58,7 +58,7 @@ readConfigValue() + { + local config_file="digikamrc" + local config_group="Database Settings" +- local db_dir=$(kreadconfig --file "${config_file}" --group "${config_group}" --key "$1") ++ local db_dir=$(kreadconfig5 --file "${config_file}" --group "${config_group}" --key "$1") + echo "${db_dir}" + } + +-- +2.15.1 + diff --git a/media-gfx/digikam/files/digikam-5.7.0-mariadb-10.2-1.patch b/media-gfx/digikam/files/digikam-5.7.0-mariadb-10.2-1.patch new file mode 100644 index 000000000000..e3e968fbaac6 --- /dev/null +++ b/media-gfx/digikam/files/digikam-5.7.0-mariadb-10.2-1.patch @@ -0,0 +1,58 @@ +From 395ab5b02ed7d02736a08e370217c0c96b391bb9 Mon Sep 17 00:00:00 2001 +From: Maik Qualmann +Date: Wed, 6 Dec 2017 08:09:44 +0100 +Subject: Workaround for the problem mariaDB >= 10.2 and QTBUG-63108 + +--- + libs/album/albummanager.cpp | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/libs/album/albummanager.cpp b/libs/album/albummanager.cpp +index a72acc3..2ea40e9 100644 +--- a/libs/album/albummanager.cpp ++++ b/libs/album/albummanager.cpp +@@ -162,6 +162,7 @@ public: + hasPriorizedDbPath(false), + dbPort(0), + dbInternalServer(false), ++ dbFakeConnection(false), + showOnlyAvailableAlbums(false), + albumListJob(0), + dateListJob(0), +@@ -192,6 +193,7 @@ public: + QString dbHostName; + int dbPort; + bool dbInternalServer; ++ bool dbFakeConnection; + + bool showOnlyAvailableAlbums; + +@@ -391,6 +393,11 @@ void AlbumManager::cleanUp() + d->personListJob->cancel(); + d->personListJob = 0; + } ++ ++ if (d->dbFakeConnection) ++ { ++ QSqlDatabase::removeDatabase(QLatin1String("FakeConnection")); ++ } + } + + bool AlbumManager::databaseEqual(const DbEngineParameters& parameters) const +@@ -727,6 +734,13 @@ bool AlbumManager::setDatabase(const DbEngineParameters& params, bool priority, + // ensure, embedded database is loaded + qCDebug(DIGIKAM_GENERAL_LOG) << params; + ++ // workaround for the problem mariaDB >= 10.2 and QTBUG-63108. ++ if (params.isMySQL() && !d->dbFakeConnection) ++ { ++ QSqlDatabase::addDatabase(QLatin1String("QMYSQL"), QLatin1String("FakeConnection")); ++ d->dbFakeConnection = true; ++ } ++ + if (params.internalServer) + { + DatabaseServerError result = DatabaseServerStarter::instance()->startServerManagerProcess(params); +-- +cgit v0.11.2 + diff --git a/media-gfx/digikam/files/digikam-5.7.0-mariadb-10.2-2.patch b/media-gfx/digikam/files/digikam-5.7.0-mariadb-10.2-2.patch new file mode 100644 index 000000000000..eed213c3bc9e --- /dev/null +++ b/media-gfx/digikam/files/digikam-5.7.0-mariadb-10.2-2.patch @@ -0,0 +1,117 @@ +From ba1ceda1448895009ba6524398ca42441695cc3e Mon Sep 17 00:00:00 2001 +From: Maik Qualmann +Date: Wed, 6 Dec 2017 18:28:32 +0100 +Subject: workaround for QTBUG-63108 now works in all cases + +--- + app/main/digikamapp.cpp | 2 ++ + libs/album/albummanager.cpp | 30 +++++++++++++++++++++--------- + libs/album/albummanager.h | 3 +++ + libs/database/utils/dbsettingswidget.cpp | 3 +++ + 4 files changed, 29 insertions(+), 9 deletions(-) + +diff --git a/app/main/digikamapp.cpp b/app/main/digikamapp.cpp +index 4349271..935b786 100644 +--- a/app/main/digikamapp.cpp ++++ b/app/main/digikamapp.cpp +@@ -383,6 +383,8 @@ DigikamApp::~DigikamApp() + DatabaseServerStarter::instance()->stopServerManagerProcess(); + } + ++ AlbumManager::instance()->removeFakeConnection(); ++ + m_instance = 0; + + delete d->modelCollection; +diff --git a/libs/album/albummanager.cpp b/libs/album/albummanager.cpp +index 2ea40e9..92a8b37 100644 +--- a/libs/album/albummanager.cpp ++++ b/libs/album/albummanager.cpp +@@ -393,11 +393,6 @@ void AlbumManager::cleanUp() + d->personListJob->cancel(); + d->personListJob = 0; + } +- +- if (d->dbFakeConnection) +- { +- QSqlDatabase::removeDatabase(QLatin1String("FakeConnection")); +- } + } + + bool AlbumManager::databaseEqual(const DbEngineParameters& parameters) const +@@ -734,11 +729,10 @@ bool AlbumManager::setDatabase(const DbEngineParameters& params, bool priority, + // ensure, embedded database is loaded + qCDebug(DIGIKAM_GENERAL_LOG) << params; + +- // workaround for the problem mariaDB >= 10.2 and QTBUG-63108. +- if (params.isMySQL() && !d->dbFakeConnection) ++ // workaround for the problem mariaDB >= 10.2 and QTBUG-63108 ++ if (params.isMySQL()) + { +- QSqlDatabase::addDatabase(QLatin1String("QMYSQL"), QLatin1String("FakeConnection")); +- d->dbFakeConnection = true; ++ addFakeConnection(); + } + + if (params.internalServer) +@@ -3558,4 +3552,22 @@ void AlbumManager::removeWatchedPAlbums(const PAlbum* const album) + d->albumWatch->removeWatchedPAlbums(album); + } + ++void AlbumManager::addFakeConnection() ++{ ++ if (!d->dbFakeConnection) ++ { ++ // workaround for the problem mariaDB >= 10.2 and QTBUG-63108 ++ QSqlDatabase::addDatabase(QLatin1String("QMYSQL"), QLatin1String("FakeConnection")); ++ d->dbFakeConnection = true; ++ } ++} ++ ++void AlbumManager::removeFakeConnection() ++{ ++ if (d->dbFakeConnection) ++ { ++ QSqlDatabase::removeDatabase(QLatin1String("FakeConnection")); ++ } ++} ++ + } // namespace Digikam +diff --git a/libs/album/albummanager.h b/libs/album/albummanager.h +index bee58c4..5b24c8d 100644 +--- a/libs/album/albummanager.h ++++ b/libs/album/albummanager.h +@@ -625,6 +625,9 @@ public: + + void removeWatchedPAlbums(const PAlbum* const album); + ++ void addFakeConnection(); ++ void removeFakeConnection(); ++ + //@} + + Q_SIGNALS: +diff --git a/libs/database/utils/dbsettingswidget.cpp b/libs/database/utils/dbsettingswidget.cpp +index ca95646..4f1e1a4 100644 +--- a/libs/database/utils/dbsettingswidget.cpp ++++ b/libs/database/utils/dbsettingswidget.cpp +@@ -65,6 +65,7 @@ + #include "dlayoutbox.h" + #include "mysqlinitbinary.h" + #include "mysqlservbinary.h" ++#include "albummanager.h" + + namespace Digikam + { +@@ -669,6 +670,8 @@ bool DatabaseSettingsWidget::checkMysqlServerConnection(QString& error) + + qApp->setOverrideCursor(Qt::WaitCursor); + ++ AlbumManager::instance()->addFakeConnection(); ++ + QString databaseID(QLatin1String("ConnectionTest")); + QSqlDatabase testDatabase = QSqlDatabase::addDatabase(databaseBackend(), databaseID); + +-- +cgit v0.11.2 + -- cgit v1.2.3