summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-gfx/nomacs')
-rw-r--r--media-gfx/nomacs/files/nomacs-3.16.224-DkMath-ostream.patch24
-rw-r--r--media-gfx/nomacs/files/nomacs-3.16.224-exiv2-0.28.patch241
-rw-r--r--media-gfx/nomacs/files/nomacs-3.16.224-libdir-plugins.patch23
-rw-r--r--media-gfx/nomacs/files/nomacs-3.16.224-libdir.patch30
-rw-r--r--media-gfx/nomacs/metadata.xml7
-rw-r--r--media-gfx/nomacs/nomacs-3.16.224-r6.ebuild (renamed from media-gfx/nomacs/nomacs-3.16.224-r2.ebuild)52
6 files changed, 346 insertions, 31 deletions
diff --git a/media-gfx/nomacs/files/nomacs-3.16.224-DkMath-ostream.patch b/media-gfx/nomacs/files/nomacs-3.16.224-DkMath-ostream.patch
new file mode 100644
index 000000000000..318953f7896a
--- /dev/null
+++ b/media-gfx/nomacs/files/nomacs-3.16.224-DkMath-ostream.patch
@@ -0,0 +1,24 @@
+From aca8443079ff926be873a77e3077b249a12487dd Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <sultan@gentoo.org>
+Date: Sun, 23 Jan 2022 18:51:56 +0100
+Subject: [PATCH] IWYU: add missing ostream in DkMath
+
+---
+ src/DkCore/DkMath.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/DkCore/DkMath.h b/src/DkCore/DkMath.h
+index c37ef23..2c3a5be 100644
+--- a/src/DkCore/DkMath.h
++++ b/src/DkCore/DkMath.h
+@@ -30,6 +30,7 @@
+ #pragma warning(push, 0) // no warnings from includes - begin
+ #include <cmath>
+ #include <float.h>
++#include <ostream>
+ #include <QDebug>
+ #include <QPointF>
+ #include <QPolygonF>
+--
+2.34.1
+
diff --git a/media-gfx/nomacs/files/nomacs-3.16.224-exiv2-0.28.patch b/media-gfx/nomacs/files/nomacs-3.16.224-exiv2-0.28.patch
new file mode 100644
index 000000000000..280d7ec59e8b
--- /dev/null
+++ b/media-gfx/nomacs/files/nomacs-3.16.224-exiv2-0.28.patch
@@ -0,0 +1,241 @@
+From 6785f15d9ed05ebc66ee200b3c94451c6c633646 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <asturm@gentoo.org>
+Date: Sun, 3 Sep 2023 13:30:43 +0200
+Subject: [PATCH] Fix 3.16.224 build with exiv2-0.28
+
+Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
+---
+ ImageLounge/src/DkCore/DkMetaData.cpp | 59 ++++++++++++++++++---------
+ ImageLounge/src/DkCore/DkMetaData.h | 4 +-
+ 2 files changed, 41 insertions(+), 22 deletions(-)
+
+diff --git a/ImageLounge/src/DkCore/DkMetaData.cpp b/ImageLounge/src/DkCore/DkMetaData.cpp
+index bf1d111e..5eaeebf4 100644
+--- a/ImageLounge/src/DkCore/DkMetaData.cpp
++++ b/ImageLounge/src/DkCore/DkMetaData.cpp
+@@ -73,8 +73,12 @@ void DkMetaDataT::readMetaData(const QString& filePath, QSharedPointer<QByteArra
+ mExifImg = Exiv2::ImageFactory::open(strFilePath);
+ }
+ else {
++#if EXIV2_TEST_VERSION(0, 28, 0)
++ mExifImg = Exiv2::ImageFactory::open((const byte *)ba->constData(), ba->size());
++#else
+ Exiv2::BasicIo::AutoPtr exifBuffer(new Exiv2::MemIo((const byte*)ba->constData(), ba->size()));
+ mExifImg = Exiv2::ImageFactory::open(exifBuffer);
++#endif
+ }
+ }
+ catch (...) {
+@@ -155,14 +159,18 @@ bool DkMetaDataT::saveMetaData(QSharedPointer<QByteArray>& ba, bool force) {
+ Exiv2::ExifData &exifData = mExifImg->exifData();
+ Exiv2::XmpData &xmpData = mExifImg->xmpData();
+ Exiv2::IptcData &iptcData = mExifImg->iptcData();
+-
+- Exiv2::Image::AutoPtr exifImgN;
++ std::unique_ptr<Exiv2::Image> exifImgN;
++#if !EXIV2_TEST_VERSION(0, 28, 0)
+ Exiv2::MemIo::AutoPtr exifMem;
++#endif
+
+ try {
+-
++#if EXIV2_TEST_VERSION(0, 28, 0)
++ exifImgN = Exiv2::ImageFactory::open((byte *)ba->data(), ba->size());
++#else
+ exifMem = Exiv2::MemIo::AutoPtr(new Exiv2::MemIo((byte*)ba->data(), ba->size()));
+ exifImgN = Exiv2::ImageFactory::open(exifMem);
++#endif
+ }
+ catch (...) {
+
+@@ -186,8 +194,13 @@ bool DkMetaDataT::saveMetaData(QSharedPointer<QByteArray>& ba, bool force) {
+
+ // now get the data again
+ Exiv2::DataBuf exifBuf = exifImgN->io().read((long)exifImgN->io().size());
++#if EXIV2_TEST_VERSION(0, 28, 0)
++ if (!exifBuf.empty()) {
++ QSharedPointer<QByteArray> tmp = QSharedPointer<QByteArray>(new QByteArray((const char *)exifBuf.c_data(), exifBuf.size()));
++#else
+ if (exifBuf.pData_) {
+ QSharedPointer<QByteArray> tmp = QSharedPointer<QByteArray>(new QByteArray((const char*)exifBuf.pData_, exifBuf.size_));
++#endif
+
+ if (tmp->size() > qRound(ba->size()*0.5f))
+ ba = tmp;
+@@ -197,7 +210,7 @@ bool DkMetaDataT::saveMetaData(QSharedPointer<QByteArray>& ba, bool force) {
+ else
+ return false;
+
+- mExifImg = exifImgN;
++ mExifImg.swap(exifImgN);
+ mExifState = loaded;
+
+ return true;
+@@ -250,7 +263,7 @@ int DkMetaDataT::getOrientationDegree() const {
+
+ if (pos != exifData.end() && pos->count() != 0) {
+
+- Exiv2::Value::AutoPtr v = pos->getValue();
++ std::unique_ptr<Exiv2::Value> v = pos->getValue();
+ orientation = (int)pos->toFloat();
+
+ switch (orientation) {
+@@ -315,7 +328,7 @@ int DkMetaDataT::getRating() const {
+ Exiv2::ExifData::iterator pos = exifData.findKey(key);
+
+ if (pos != exifData.end() && pos->count() != 0) {
+- Exiv2::Value::AutoPtr v = pos->getValue();
++ std::unique_ptr<Exiv2::Value> v = pos->getValue();
+ exifRating = v->toFloat();
+ }
+ }
+@@ -327,7 +340,7 @@ int DkMetaDataT::getRating() const {
+
+ //xmp Rating tag
+ if (pos != xmpData.end() && pos->count() != 0) {
+- Exiv2::Value::AutoPtr v = pos->getValue();
++ std::unique_ptr<Exiv2::Value> v = pos->getValue();
+ xmpRating = v->toFloat();
+ }
+
+@@ -336,7 +349,7 @@ int DkMetaDataT::getRating() const {
+ key = Exiv2::XmpKey("Xmp.MicrosoftPhoto.Rating");
+ pos = xmpData.findKey(key);
+ if (pos != xmpData.end() && pos->count() != 0) {
+- Exiv2::Value::AutoPtr v = pos->getValue();
++ std::unique_ptr<Exiv2::Value> v = pos->getValue();
+ xmpRating = v->toFloat();
+ }
+ }
+@@ -399,7 +412,7 @@ QString DkMetaDataT::getNativeExifValue(const QString& key) const {
+ if (pos->count () < 2000) { // diem: this is about performance - adobe obviously embeds whole images into tiff exiv data
+
+ //qDebug() << "pos count: " << pos->count();
+- //Exiv2::Value::AutoPtr v = pos->getValue();
++ //std::unique_ptr<Exiv2::Value> v = pos->getValue();
+ info = exiv2ToQString(pos->toString());
+
+ }
+@@ -436,7 +449,7 @@ QString DkMetaDataT::getXmpValue(const QString& key) const {
+ }
+
+ if (pos != xmpData.end() && pos->count() != 0) {
+- Exiv2::Value::AutoPtr v = pos->getValue();
++ std::unique_ptr<Exiv2::Value> v = pos->getValue();
+ info = exiv2ToQString(pos->toString());
+ }
+ }
+@@ -478,7 +491,7 @@ QString DkMetaDataT::getExifValue(const QString& key) const {
+ }
+
+ if (pos != exifData.end() && pos->count() != 0) {
+- //Exiv2::Value::AutoPtr v = pos->getValue();
++ //std::unique_ptr<Exiv2::Value> v = pos->getValue();
+ info = exiv2ToQString(pos->toString());
+ }
+ }
+@@ -508,7 +521,7 @@ QString DkMetaDataT::getIptcValue(const QString& key) const {
+ }
+
+ if (pos != iptcData.end() && pos->count() != 0) {
+- Exiv2::Value::AutoPtr v = pos->getValue();
++ std::unique_ptr<Exiv2::Value> v = pos->getValue();
+ info = exiv2ToQString(pos->toString());
+ }
+ }
+@@ -653,8 +666,11 @@ QImage DkMetaDataT::getThumbnail() const {
+ try {
+ Exiv2::ExifThumb thumb(exifData);
+ Exiv2::DataBuf buffer = thumb.copy();
+-
++#if EXIV2_TEST_VERSION(0, 28, 0)
++ QByteArray ba = QByteArray((char *)buffer.c_data(), buffer.size());
++#else
+ QByteArray ba = QByteArray((char*)buffer.pData_, buffer.size_);
++#endif
+ qThumb.loadFromData(ba);
+ }
+ catch (...) {
+@@ -931,9 +947,12 @@ void DkMetaDataT::setThumbnail(QImage thumb) {
+
+ try {
+ // whipe all exif data of the thumbnail
++#if EXIV2_TEST_VERSION(0, 28, 0)
++ Exiv2::Image::UniquePtr exifImgThumb = Exiv2::ImageFactory::open((const byte *)ba.constData(), ba.size());
++#else
+ Exiv2::MemIo::AutoPtr exifBufferThumb(new Exiv2::MemIo((const byte*)ba.constData(), ba.size()));
+ Exiv2::Image::AutoPtr exifImgThumb = Exiv2::ImageFactory::open(exifBufferThumb);
+-
++#endif
+ if (exifImgThumb.get() != 0 && exifImgThumb->good())
+ exifImgThumb->clearExifData();
+ }
+@@ -1045,11 +1064,11 @@ void DkMetaDataT::setOrientation(int o) {
+ pos = exifData.findKey(key);
+ }
+
+- Exiv2::Value::AutoPtr v = pos->getValue();
++ std::unique_ptr<Exiv2::Value> v = pos->getValue();
+ Exiv2::UShortValue* prv = dynamic_cast<Exiv2::UShortValue*>(v.release());
+ if (!prv) return;
+
+- Exiv2::UShortValue::AutoPtr rv = Exiv2::UShortValue::AutoPtr(prv);
++ std::unique_ptr<Exiv2::UShortValue> rv = std::unique_ptr<Exiv2::UShortValue>(prv);
+ if (rv->value_.empty()) return;
+
+ orientation = (int) rv->value_[0];
+@@ -1110,7 +1129,7 @@ void DkMetaDataT::setRating(int r) {
+ exifData["Exif.Image.Rating"] = uint16_t(r);
+ exifData["Exif.Image.RatingPercent"] = uint16_t(r);
+
+- Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::xmpText);
++ std::unique_ptr<Exiv2::Value> v = Exiv2::Value::create(Exiv2::xmpText);
+ v->read(sRating);
+ xmpData.add(Exiv2::XmpKey("Xmp.xmp.Rating"), v.get());
+ v->read(sRatingPercent);
+@@ -1354,9 +1373,9 @@ DkRotatingRect DkMetaDataT::getXMPRect(const QSize& size) const {
+ return DkRotatingRect(rr);
+ }
+
+-Exiv2::Image::AutoPtr DkMetaDataT::loadSidecar(const QString& filePath) const {
++std::unique_ptr<Exiv2::Image> DkMetaDataT::loadSidecar(const QString& filePath) const {
+
+- Exiv2::Image::AutoPtr xmpImg;
++ std::unique_ptr<Exiv2::Image> xmpImg;
+
+ //TODO: check if the file type supports xmp
+
+@@ -1409,7 +1428,7 @@ bool DkMetaDataT::setXMPValue(Exiv2::XmpData& xmpData, QString xmpKey, QString x
+ setXMPValueSuccessful = true;
+ }
+ else {
+- Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::xmpText);
++ std::unique_ptr<Exiv2::Value> v = Exiv2::Value::create(Exiv2::xmpText);
+ if (!v->read(xmpValue.toStdString())) {
+ if (!xmpData.add(Exiv2::XmpKey(key), v.get()))
+ setXMPValueSuccessful = true;
+diff --git a/ImageLounge/src/DkCore/DkMetaData.h b/ImageLounge/src/DkCore/DkMetaData.h
+index c1f73c93..183a906a 100644
+--- a/ImageLounge/src/DkCore/DkMetaData.h
++++ b/ImageLounge/src/DkCore/DkMetaData.h
+@@ -148,7 +148,7 @@ public:
+
+ protected:
+
+- Exiv2::Image::AutoPtr loadSidecar(const QString& filePath) const;
++ std::unique_ptr<Exiv2::Image> loadSidecar(const QString& filePath) const;
+
+ enum {
+ not_loaded,
+@@ -157,7 +157,7 @@ protected:
+ dirty,
+ };
+
+- Exiv2::Image::AutoPtr mExifImg;
++ std::unique_ptr<Exiv2::Image> mExifImg;
+ QString mFilePath;
+ QStringList mQtKeys;
+ QStringList mQtValues;
+--
+2.42.0
+
diff --git a/media-gfx/nomacs/files/nomacs-3.16.224-libdir-plugins.patch b/media-gfx/nomacs/files/nomacs-3.16.224-libdir-plugins.patch
new file mode 100644
index 000000000000..0c613929add0
--- /dev/null
+++ b/media-gfx/nomacs/files/nomacs-3.16.224-libdir-plugins.patch
@@ -0,0 +1,23 @@
+From e1d32cd424462b2ac414d3a4ea3e1285d5ca2aef Mon Sep 17 00:00:00 2001
+From: Markus Diem <diemmarkus@gmail.com>
+Date: Mon, 27 Jul 2020 13:11:31 +0200
+Subject: [PATCH] patches wrong plugin installation path
+
+- thanks to @tieugene
+---
+ ImageLounge/plugins/cmake/Utils.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake
+index f2d1b62..5578aa7 100644
+--- a/ImageLounge/plugins/cmake/Utils.cmake
++++ b/ImageLounge/plugins/cmake/Utils.cmake
+@@ -139,7 +139,7 @@ macro(NMC_CREATE_TARGETS)
+
+ elseif(UNIX)
+ set_target_properties(${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${NOMACS_BUILD_DIRECTORY}/plugins)
+- install(TARGETS ${PROJECT_NAME} RUNTIME LIBRARY DESTINATION lib/nomacs-plugins)
++ install(TARGETS ${PROJECT_NAME} RUNTIME LIBRARY DESTINATION lib${LIB_SUFFIX}/nomacs-plugins)
+ set_property(TARGET ${PROJECT_NAME} PROPERTY VERSION ${NOMACS_VERSION_MAJOR}.${NOMACS_VERSION_MINOR}.${NOMACS_VERSION_PATCH})
+ set_property(TARGET ${PROJECT_NAME} PROPERTY SOVERSION ${NOMACS_VERSION_MAJOR})
+ endif(MSVC)
diff --git a/media-gfx/nomacs/files/nomacs-3.16.224-libdir.patch b/media-gfx/nomacs/files/nomacs-3.16.224-libdir.patch
new file mode 100644
index 000000000000..50b73028f303
--- /dev/null
+++ b/media-gfx/nomacs/files/nomacs-3.16.224-libdir.patch
@@ -0,0 +1,30 @@
+From c8f6c325c5f5170bb473c41ee716b781d37bdd41 Mon Sep 17 00:00:00 2001
+From: Markus Diem <diemmarkus@gmail.com>
+Date: Mon, 27 Jul 2020 13:19:01 +0200
+Subject: [PATCH] fixes plugin path for fedora
+
+- thanks @tieugene
+- beta version: 3.17
+---
+ ImageLounge/src/DkCore/DkPluginManager.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/ImageLounge/src/DkCore/DkPluginManager.cpp
++++ b/ImageLounge/src/DkCore/DkPluginManager.cpp
+@@ -62,6 +62,7 @@
+ #include <QAction>
+ #include <QMenu>
+ #include <QJsonValue>
++#include <QLibraryInfo>
+ #pragma warning(pop) // no warnings from includes - end
+
+ #ifdef QT_NO_DEBUG_OUTPUT
+@@ -1309,7 +1310,7 @@ void DkPluginManager::createPluginsPath() {
+ #ifdef Q_OS_WIN
+ QDir pluginsDir = QCoreApplication::applicationDirPath() + "/plugins";
+ #else
+- QDir pluginsDir = QCoreApplication::applicationDirPath() + "/../lib/nomacs-plugins/";
++ QDir pluginsDir = QLibraryInfo::location(QLibraryInfo::LibrariesPath) + "/nomacs-plugins/";
+ #endif // Q_OS_WIN
+
+ if (!pluginsDir.exists())
diff --git a/media-gfx/nomacs/metadata.xml b/media-gfx/nomacs/metadata.xml
index 4962c2c5f92d..45360b811a6c 100644
--- a/media-gfx/nomacs/metadata.xml
+++ b/media-gfx/nomacs/metadata.xml
@@ -1,10 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
- <maintainer type="project">
- <email>qt@gentoo.org</email>
- <name>Gentoo Qt Project</name>
- </maintainer>
+ <!-- maintainer-needed -->
<upstream>
<bugs-to>https://nomacs.org/redmine/projects/nomacs</bugs-to>
<remote-id type="github">nomacs/nomacs</remote-id>
diff --git a/media-gfx/nomacs/nomacs-3.16.224-r2.ebuild b/media-gfx/nomacs/nomacs-3.16.224-r6.ebuild
index 9c6f50df1606..d174453289b1 100644
--- a/media-gfx/nomacs/nomacs-3.16.224-r2.ebuild
+++ b/media-gfx/nomacs/nomacs-3.16.224-r6.ebuild
@@ -1,20 +1,22 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=7
+EAPI=8
+CMAKE_BUILD_TYPE="Release" # buildsys: what a mess
PLUGIN_PKG="${PN}-plugins-$(ver_cut 1-2)"
-inherit cmake xdg-utils
+inherit cmake xdg
DESCRIPTION="Qt-based image viewer"
HOMEPAGE="https://nomacs.org/"
SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz
plugins? ( https://github.com/${PN}/${PN}-plugins/archive/$(ver_cut 1-2).tar.gz -> ${PLUGIN_PKG}.tar.gz )"
+CMAKE_USE_DIR="${S}/ImageLounge"
LICENSE="GPL-3+"
SLOT="0"
-KEYWORDS="amd64 ~arm64 x86 ~amd64-linux"
-IUSE="+jpeg +opencv plugins raw +tiff zip"
+KEYWORDS="amd64 ~arm64 ~riscv x86 ~amd64-linux"
+IUSE="+opencv plugins raw +tiff zip"
REQUIRED_USE="
raw? ( opencv )
@@ -24,7 +26,7 @@ REQUIRED_USE="
RDEPEND="
dev-qt/qtconcurrent:5
dev-qt/qtcore:5
- dev-qt/qtgui:5[jpeg?]
+ dev-qt/qtgui:5[jpeg]
dev-qt/qtnetwork:5
dev-qt/qtprintsupport:5
dev-qt/qtsvg:5
@@ -34,9 +36,9 @@ RDEPEND="
raw? ( media-libs/libraw:= )
tiff? (
dev-qt/qtimageformats:5
- media-libs/tiff
+ media-libs/tiff:=
)
- zip? ( dev-libs/quazip:0= )
+ zip? ( dev-libs/quazip:0=[qt5(+)] )
"
DEPEND="${RDEPEND}"
BDEPEND="
@@ -44,27 +46,33 @@ BDEPEND="
virtual/pkgconfig
"
-S="${WORKDIR}/${P}/ImageLounge"
-
DOCS=( src/changelog.txt )
-PATCHES=( "${FILESDIR}"/${P}-quazip1.patch )
+PATCHES=(
+ "${FILESDIR}"/${P}-libdir.patch
+ "${FILESDIR}"/${P}-exiv2-0.28.patch # bug 906488
+)
src_prepare() {
if use plugins ; then
- rmdir plugins || die
- mv -v ../../${PLUGIN_PKG} plugins || die
- # Fix nomacs-plugins installation and search library directory
- sed -e "s:lib/nomacs-plugins:$(get_libdir)/nomacs-plugins:" \
- -i plugins/cmake/Utils.cmake || die
- sed -e "s:lib/nomacs-plugins:$(get_libdir)/nomacs-plugins:" \
- -i src/DkCore/DkPluginManager.cpp || die
+ rmdir ImageLounge/plugins || die
+ mv -v ../${PLUGIN_PKG} ImageLounge/plugins || die
fi
+
+ # from git master # reuse existing patches w/o paths adjusted
+ pushd "ImageLounge" > /dev/null || die
+ eapply "${FILESDIR}"/${P}-quazip1.patch
+ eapply "${FILESDIR}"/${P}-DkMath-ostream.patch
+ popd > /dev/null || die
+
+ use plugins && eapply "${FILESDIR}"/${P}-libdir-plugins.patch
+
cmake_src_prepare
}
src_configure() {
local mycmakeargs=(
+ -DQT_QMAKE_EXECUTABLE=qmake5 # bug 847112
-DENABLE_CODE_COV=OFF
-DUSE_SYSTEM_QUAZIP=ON
-DENABLE_TRANSLATIONS=ON
@@ -76,11 +84,3 @@ src_configure() {
)
cmake_src_configure
}
-
-pkg_postinst() {
- xdg_desktop_database_update
-}
-
-pkg_postrm() {
- xdg_desktop_database_update
-}