- switch all the Qt gui implementations to Qt6 except for the krita

one, as this also still pulls KF5 libraries, not sure how well
  mixing KF5 and QT6 would work. (boo#1218653#c14)

OBS-URL: https://build.opensuse.org/package/show/graphics/gmic?expand=0&rev=109
This commit is contained in:
Christophe Marin 2025-01-10 20:44:43 +00:00 committed by Git OBS Bridge
commit 390726d1ec
10 changed files with 2974 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

View File

@ -0,0 +1,57 @@
From 7c185a08bd2f37c1831542651db3b048ba231ae6 Mon Sep 17 00:00:00 2001
From: Christophe Marin <christophe@krop.fr>
Date: Mon, 17 Apr 2023 16:07:00 +0200
Subject: [PATCH] Find the local gmic library
GMic's working build system was replaced by a Makefile for unknown reasons
To keep using CMake in gmic-qt, we need to find the locally built gmic library.
---
gmic-qt/CMakeLists.txt | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/gmic-qt/CMakeLists.txt b/gmic-qt/CMakeLists.txt
index 0641f4c..17d1535 100644
--- a/gmic-qt/CMakeLists.txt
+++ b/gmic-qt/CMakeLists.txt
@@ -149,7 +149,13 @@ endif()
# Gmic
#
if (ENABLE_SYSTEM_GMIC)
- find_package(Gmic REQUIRED CONFIG)
+ find_library(GMIC_LIBRARY gmic PATHS ${CMAKE_SOURCE_DIR}/../src)
+ find_path(GMIC_INCLUDE_DIR gmic.h PATHS ${CMAKE_SOURCE_DIR}/../src)
+ add_library(GMic::GMic UNKNOWN IMPORTED)
+ set_target_properties(GMic::GMic PROPERTIES
+ IMPORTED_LOCATION "${GMIC_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${GMIC_INCLUDE_DIR}"
+ )
endif (ENABLE_SYSTEM_GMIC)
#
@@ -610,10 +616,10 @@ if(ENABLE_DYNAMIC_LINKING)
${gmic_qt_LIBRARIES}
libgmicstatic
)
- elseif(TARGET libgmic)
+ elseif(TARGET GMic::GMic)
set(gmic_qt_LIBRARIES
${gmic_qt_LIBRARIES}
- libgmic
+ GMic::GMic
)
elseif(GMIC_LIB_PATH)
set(gmic_qt_LIBRARIES
@@ -645,9 +651,6 @@ if(ENABLE_DYNAMIC_LINKING)
${CURL_LIBRARIES}
${EXTRA_LIBRARIES})
endif()
- else()
- # Inject the G'MIC CImg plugin.
- include_directories(../src)
endif()
else(ENABLE_DYNAMIC_LINKING)
set(gmic_qt_SRCS
--
2.45.2

17
_constraints Normal file
View File

@ -0,0 +1,17 @@
<constraints>
<hardware>
<memory>
<size unit="G">4</size>
</memory>
</hardware>
<overwrite>
<conditions>
<arch>ppc64le</arch>
</conditions>
<hardware>
<memory>
<size unit="G">5</size>
</memory>
</hardware>
</overwrite>
</constraints>

1140
gmic.changes Normal file

File diff suppressed because it is too large Load Diff

285
gmic.spec Normal file
View File

@ -0,0 +1,285 @@
#
# spec file for package gmic
#
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%if %{pkg_vcmp krita >= 5}
%bcond_without krita5
%else
%bcond_with krita5
%endif
%if %{pkg_vcmp gimp >= 3}
%define gimp_suffix 3
%global _gimpplugindir %(gimptool-3.0 --gimpplugindir)/plug-ins/gmic_gimp_qt/
%else
%global _gimpplugindir %(gimptool-2.0 --gimpplugindir)/plug-ins/
%endif
%if %{with krita5}
%define hostapps gimp%{?gimp_suffix}
%else
%define hostapps gimp%{?gimp_suffix} krita
%endif
%define gmic_qt_options -DENABLE_SYSTEM_GMIC=ON -DENABLE_DYNAMIC_LINKING=ON
%define gmic_datadir %{_datadir}/gmic
Name: gmic
Version: 3.5.0
Release: 0
Summary: GREYC's Magick for Image Computing (denoise and others)
# gmic-qt is GPL-3.0-or-later, zart is CECILL-2.0, libgmic and cli program are
# CECILL-2.1
License: CECILL-2.1
URL: https://gmic.eu
# Git URL: https://github.com/dtschump/gmic
Source0: https://gmic.eu/files/source/gmic_%{version}.tar.gz
# PATCH-FIX-UPSTREAM krita.patch - Will be sent upstream soon. For now https://github.com/darix/gmic-qt/tree/krita5
Patch0: krita5.patch
# PATCH-FEATURE-OPENSUSE
Patch1: 0001-Find-the-local-gmic-library.patch
#
# SECTION pkg_vcmp
#
# Those 2 are used for the pkg_vcmp conditionals above and also the rich expressions in the BuildRequires below
#
BuildRequires: gimp
BuildRequires: krita
#
# /SECTION
#
BuildRequires: cmake >= 3.14.0
BuildRequires: dos2unix
BuildRequires: extra-cmake-modules
BuildRequires: fftw3-threads-devel
BuildRequires: hicolor-icon-theme
BuildRequires: pkgconfig
BuildRequires: update-desktop-files
BuildRequires: (krita-devel if krita >= 5)
BuildRequires: (pkgconfig(gimp-2.0) if gimp < 2.99)
BuildRequires: (pkgconfig(gimp-3.0) if gimp >= 2.99)
BuildRequires: cmake(KF5CoreAddons)
BuildRequires: cmake(Qt5Core)
BuildRequires: cmake(Qt5Gui)
BuildRequires: cmake(Qt5LinguistTools)
BuildRequires: cmake(Qt5Network)
BuildRequires: cmake(Qt5Widgets)
BuildRequires: cmake(Qt5Xml)
BuildRequires: cmake(Qt6Core)
BuildRequires: cmake(Qt6Gui)
BuildRequires: cmake(Qt6LinguistTools)
BuildRequires: cmake(Qt6Network)
BuildRequires: cmake(Qt6Widgets)
BuildRequires: cmake(Qt6Xml)
BuildRequires: pkgconfig(OpenEXR)
BuildRequires: pkgconfig(fftw3)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(libheif)
BuildRequires: pkgconfig(libjpeg)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(libtiff-4)
BuildRequires: pkgconfig(libwebp)
BuildRequires: pkgconfig(opencv4)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xcb-shm)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xproto)
BuildRequires: pkgconfig(xrandr)
BuildRequires: pkgconfig(zlib)
Requires: gmic-data = %{version}
%description
G'MIC is a framework for image processing, providing
several different user interfaces to convert/manipulate/filter/visualize
generic image datasets, from 1d scalar signals to 3d+t sequences of
multi-spectral volumetric images.
%package -n libgmic3
Summary: Shared library that belongs to gmic
License: CECILL-2.1
%package -n libgmic-devel
Summary: Header and library from gmic for use in other C++ projects
License: CECILL-2.1
Requires: libgmic3 = %{version}
%description -n libgmic3
This shared library allows using gmic functionality from other
programs.
%description -n libgmic-devel
Header and library from gmic to needed to develop C++ code that
uses the gmic functionality provided by the gmic library.
%package -n gimp-plugin-gmic
Summary: GMIC plugin for gimp
License: GPL-3.0-or-later
Requires: gmic-data = %{version}
%requires_eq gimp
# This package was only available in the 'graphics' repo
Provides: gmic-gimp = %{version}
Obsoletes: gmic-gimp < %{version}
%description -n gimp-plugin-gmic
This is a plugin for gimp that exposes many of the nice gmic features
for interactive use in gimp.
%package -n krita-plugin-gmic
Summary: GMIC plugin for krita
License: GPL-3.0-or-later
Requires: gmic-data = %{version}
%requires_eq krita
%description -n krita-plugin-gmic
This is a plugin for krita to provide gmic features.
%package bash-completion
Summary: Bash completion for gmic
License: CECILL-2.1
Requires: bash-completion
Supplements: (%{name} and bash-completion)
BuildArch: noarch
%description bash-completion
This package contains the bash completion command for gmic.
%package data
Summary: Shared data files for the various gmic frontends
License: CECILL-2.1
BuildArch: noarch
%description data
This package contains shared data files for the various gmic frontends.
%prep
%autosetup -p1
dos2unix src/gmic_libc.*
%build
# Build gmic
# Starting with gmic 3.1.0, the gmic dev replaced their CMake build system with a non-configurable Makefile...
sed -i 's#LIB ?= lib#LIB ?= %{_lib}#' src/Makefile
# Breaks compilation for a couple archs
sed -i 's#-mtune=generic##' src/Makefile
# Broken rpath
sed -i 's# -Wl,-rpath,.##' src/Makefile
# The file is moved post-install in a directory not owned by gimp
sed -i 's#/usr/lib/gimp/2.0/plug-ins#%{gmic_datadir}#' src/gmic_stdlib.gmic
# There's no concept of build order in the crappy Makefile provided
EXTRA_CFLAGS='%{optflags}' NOSTRIP=1 %__make lib %{?_smp_mflags}
EXTRA_CFLAGS='%{optflags}' NOSTRIP=1 %__make cli_shared %{?_smp_mflags}
# Build gmic{_gimp|_krita}_qt
pushd gmic-qt
%cmake %{gmic_qt_options} -DGMIC_QT_HOST=none -DBUILD_WITH_QT6=ON
%cmake_build
cd ..
for hostapp in %{hostapps} ; do
%cmake %{gmic_qt_options} -DGMIC_QT_HOST=${hostapp} -DBUILD_WITH_QT6=ON
%cmake_build
cd ..
done
%if %{with krita5}
%cmake_kf5 -d plugin-build -- -DCMAKE_INSTALL_LOCALEDIR=%{_kf5_localedir} %{gmic_qt_options} -DGMIC_QT_HOST=krita-plugin -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_WITH_QT6=OFF
%cmake_build
cd ..
%endif
popd
%install
%make_install
# As planned, only providing a Makefile partially works...
install -m 0644 src/CImg.h %{buildroot}%{_includedir}
# Install icons
for size in 16 32 48 64; do
install -Dm 0644 gmic-qt/icons/application/${size}-gmic_qt.png %{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/gmic_qt.png
done
install -Dm 0644 gmic-qt/icons/application/gmic_qt.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/gmic_qt.svg
%if %{with krita5}
DESTDIR=%{buildroot} cmake --install gmic-qt/plugin-build
%else
# krita plugin
install -m 0755 gmic-qt/build/gmic_krita_qt %{buildroot}%{_bindir}/gmic_krita_qt
%endif
%suse_update_desktop_file -c gmic_qt "G'Mic Qt" "G'MIC Qt GUI" "gmic_qt %%F" gmic_qt "Qt;Graphics;Photography;"
# This manpage isn't translated
rm %{buildroot}%{_mandir}/fr/man1/gmic.1*
# qt_gmic
pushd gmic-qt
install -m 0755 build/gmic_qt %{buildroot}%{_bindir}/gmic_qt
# gimp plugin
install -D -m 0755 build/gmic_gimp_qt %{buildroot}%{_gimpplugindir}/gmic_gimp_qt
popd
%ldconfig_scriptlets -n libgmic3
%files
%doc README gmic-qt/README.md
%{_bindir}/gmic
%{_bindir}/gmic_qt
%{_mandir}/man1/gmic.1%{?ext_man}
%{_datadir}/applications/gmic_qt.desktop
%{_datadir}/icons/hicolor/*/apps/gmic_qt.png
%{_datadir}/icons/hicolor/scalable/apps/gmic_qt.svg
%files data
%{gmic_datadir}/
%files -n gimp-plugin-gmic
%{_gimpplugindir}/
%files -n krita-plugin-gmic
%if %{with krita5}
%{_kf5_libdir}/kritaplugins/krita_gmic_qt.so
%else
%{_bindir}/gmic_krita_qt
%endif
%files -n libgmic3
%license COPYING
%{_libdir}/libgmic.so.*
%files -n libgmic-devel
%{_includedir}/CImg.h
%{_includedir}/gmic.h
%{_includedir}/gmic_libc.h
%{_libdir}/libgmic.so
%files bash-completion
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/gmic
%changelog

3
gmic_3.4.0.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:df6f087af3db935d5788f7fa20c4fc46a426991919db91853b0db1c9e7cd792a
size 18020463

3
gmic_3.4.3.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:79951d06db2928c68bad1d352e536af3f454e9a3c09beefc2c1049d8b4084507
size 18037858

3
gmic_3.5.0.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:847ddf438bbe73ec1447a8d98916571c75664bed050ac11212e45b2eb4c1cad0
size 19705183

1442
krita5.patch Normal file

File diff suppressed because it is too large Load Diff