gmic/gmic.spec

338 lines
10 KiB
RPMSpec
Raw Normal View History

#
# spec file for package gmic
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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/
#
%global _gimpplugindir %(gimptool-2.0 --gimpplugindir)/plug-ins
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150200
%bcond_without digikam_plugin
%else
%bcond_with digikam_plugin
%endif
# opencv3 is not available for ppc
%ifnarch ppc64 ppc64le
%bcond_without opencv
%else
%bcond_with opencv
%endif
Name: gmic
Version: 2.7.1
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 and CECILL-C
License: CECILL-2.1 AND CECILL-C
Group: Productivity/Graphics/Bitmap Editors
URL: https://gmic.eu
# Git URL: https://framagit.org/dtschump/gmic
Source0: https://gmic.eu/files/source/gmic_%{version}.tar.gz
Source1: gmic_qt.png
BuildRequires: cmake > 3.8
BuildRequires: fftw3-threads-devel
BuildRequires: pkgconfig
BuildRequires: update-desktop-files
# Not available yet
# %%if %%{with digikam_plugin}
# BuildRequires: cmake(DigikamCore) >= 6.3.0
# %%endif
BuildRequires: cmake(Qt5Core)
BuildRequires: cmake(Qt5Gui)
BuildRequires: cmake(Qt5LinguistTools)
BuildRequires: cmake(Qt5Network)
BuildRequires: cmake(Qt5Widgets)
BuildRequires: cmake(Qt5Xml)
BuildRequires: pkgconfig(GraphicsMagick++)
BuildRequires: pkgconfig(OpenEXR)
BuildRequires: pkgconfig(fftw3)
BuildRequires: pkgconfig(gimp-2.0)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(libjpeg)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(libtiff-4)
BuildRequires: pkgconfig(zlib)
%if %{with opencv}
# in openSUSE >= 15.2, opencv-devel is opencv4 and pkgconfig(opencv) is opencv3
# ...and opencv3-devel doesn't exist in leap 15.0 and 15.1
%if 0%{?suse_version} <= 1500 && 0%{?sle_version} < 150200
BuildRequires: opencv-devel
%else
BuildRequires: pkgconfig(opencv)
%endif
%endif
%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. Technically speaking, what it does is:
* Define a lightweight language (the G'MIC language)
dedicated to the design of image processing operators and pipelines.
* Provide several user interfaces embedding the corresponding interpreter:
- A command-line executable gmic, to use the G'MIC framework from a shell.
In this setting, G'MIC may be seen as a serious (and friendly) competitor
of the ImageMagick or GraphicsMagick software suites.
- A gimp plug-in, to bring G'MIC capabilities to the GIMP image retouching
software. (gimp-plugin-gmic)
- A krita plug-in, to bring G'MIC capabilities to the krita digital painting
software. (krita-plugin-gmic)
- A web service G'MIC Online, to allow users applying image processing
algorithms directly in a web browser.
- A Qt-based interface ZArt, for real-time mainpulation of webcam images.
(gmic-zart)
- A C++ library libgmic, to be linked to third-party applications.
(libgmic1, gmic-devel)
G'MIC is focused on the design of possibly complex pipelines for converting,
manipulating, filtering and visualizing generic 1d/2d/3d multi-spectral image
datasets. This includes of course color images, but also more complex data as
image sequences or 3d(+t) volumetric float-valued datasets.
G'MIC is an open framework: the default language can be extended with custom
G'MIC-written commands, defining thus new available image filters or effects.
By the way, G'MIC already contains a substantial set of pre-defined image
processing algorithms and pipelines (more than 1000).
G'MIC has been designed with portability in mind and runs on different
platforms (Windows, Unix, MacOSX). It is distributed under the CeCILL license
(GPL-compatible). Since 2008, it is developed in the Image Team of the GREYC
laboratory, in Caen/France, by permanent researchers working in the field of
image processing on a daily basis.
%package -n libgmic1
Summary: Shared library that belongs to gmic
License: CECILL-2.1
Group: Productivity/Graphics/Bitmap Editors
%package -n libgmic-devel
Summary: Header and library from gmic for use in other C++ projects
License: CECILL-2.1
Group: Development/Libraries/C and C++
Requires: libgmic1 = %{version}
%description -n libgmic1
Shared library allows you to use 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
Group: Productivity/Graphics/Bitmap Editors
Requires: 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
Group: Productivity/Graphics/Bitmap Editors
Requires: krita
%description -n krita-plugin-gmic
This is a plugin for krita to provide gmic features.
# %%if %%{with digikam_plugin}
# %%package -n digikam-plugin-gmic
# Summary: GMIC plugin for digikam
# License: GPL-3.0-or-later
# Group: Productivity/Graphics/Bitmap Editors
# Requires: digikam
#
# %%description -n digikam-plugin-gmic
# This is a plugin for digikam to provide gmic features.
# %%endif
%package zart
Summary: GMIC GUI for video streams
License: CECILL-2.0
Group: Productivity/Graphics/Bitmap Editors
%description zart
ZArt is a computer program whose purpose is to demonstrate the possibilities of
the G'MIC image processing language by offering the choice of several
manipulations on a video stream acquired from a webcam. In other words, ZArt is
a GUI for G'MIC real-time manipulations on the output of a webcam.
%prep
%setup -q
# Generated file that should not be there
rm -f zart/.qmake.stash
%build
# Leap 15.0 doesn't know %%cmake_build
%{?!cmake_build:%define cmake_build() make %{?_smp_mflags} VERBOSE=1}
# Build gmic
%cmake \
-DENABLE_DYNAMIC_LINKING=ON \
-DBUILD_LIB_STATIC=OFF
%cmake_build
cd ..
# Create link for zart dynamic linking
ln -s ../build/libgmic.so src/libgmic.so
# Build gmic{_gimp|_krita|_digikam}_qt
pushd gmic-qt
%cmake \
-DENABLE_DYNAMIC_LINKING=ON \
-DGMIC_PATH=%{_builddir}/%{name}-%{version}/src \
-DGMIC_LIB_PATH=%{_builddir}/%{name}-%{version}/build \
-DGMIC_QT_HOST=gimp
%cmake_build
cd ..
%cmake \
-DENABLE_DYNAMIC_LINKING=ON \
-DGMIC_PATH=%{_builddir}/%{name}-%{version}/src \
-DGMIC_LIB_PATH=%{_builddir}/%{name}-%{version}/build \
-DGMIC_QT_HOST=krita
%cmake_build
cd ..
# %%if %%{with digikam_plugin}
# %%cmake \
# -DENABLE_DYNAMIC_LINKING=ON \
# -DGMIC_PATH=%%{_builddir}/%%{name}-%%{version}/src \
# -DGMIC_LIB_PATH=%%{_builddir}/%%{name}-%%{version}/build \
# -DGMIC_QT_HOST=digikam
# %%cmake_build
#
# cd ..
# %%endif
%cmake \
-DENABLE_DYNAMIC_LINKING=ON \
-DGMIC_PATH=%{_builddir}/%{name}-%{version}/src \
-DGMIC_LIB_PATH=%{_builddir}/%{name}-%{version}/build \
-DGMIC_QT_HOST=none
%cmake_build
cd ..
popd
%if %{with opencv}
# Build zart
pushd zart
%qmake5 zart.pro \
CONFIG+=release \
GMIC_DYNAMIC_LINKING=on \
GMIC_PATH=%{_builddir}/%{name}-%{version}/src
%make_jobs
popd
%endif
%install
%cmake_install
install -D -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/pixmaps/gmic_qt.png
%suse_update_desktop_file -c gmic_qt "G'Mic Qt" "G'MIC Qt GUI" "gmic_qt %%F" gmic_qt "Qt;Graphics;Photography;"
install -d -m 0755 %{buildroot}%{_datadir}/bash-completion/completions
install -m 0644 build/resources/gmic_bashcompletion.sh %{buildroot}%{_datadir}/bash-completion/completions
# Film color lookup tables
install -d -m 0755 %{buildroot}%{_gimpplugindir}
install -m 0644 resources/gmic_cluts.gmz %{buildroot}%{_gimpplugindir}/gmic_cluts.gmz
# qt_gmic
pushd gmic-qt
install -m 0755 build/gmic_qt %{buildroot}%{_bindir}/gmic_qt
# krita plugin
install -m 0755 build/gmic_krita_qt %{buildroot}%{_bindir}/gmic_krita_qt
# gimp plugin
install -d -m 0755 %{buildroot}%{_gimpplugindir}
install -m 0755 build/gmic_gimp_qt %{buildroot}%{_gimpplugindir}/gmic_gimp_qt
popd
# %%if %%{with digikam_plugin}
# # digikam plugin
# install -d -m 0755 %%{buildroot}%%{_libqt5_plugindir}/digikam/editor
# install -m 0755 build/Editor_GmicQt_Plugin.so %%{buildroot}%%{_libqt5_plugindir}/digikam/editor/Editor_GmicQt_Plugin.so
# %%endif
%if %{with opencv}
# zart
pushd zart
install -m 0755 zart %{buildroot}%{_bindir}/zart
popd
%endif
%post -n libgmic1 -p /sbin/ldconfig
%postun -n libgmic1 -p /sbin/ldconfig
%files
%license COPYING
%doc README gmic-qt/README.md
%{_bindir}/gmic
%{_bindir}/gmic_qt
%{_mandir}/man1/gmic.1%{?ext_man}
%{_datadir}/applications/gmic_qt.desktop
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/gmic_bashcompletion.sh
%{_datadir}/pixmaps/gmic_qt.png
%if %{with opencv}
%files zart
%{_bindir}/zart
%endif
%files -n gimp-plugin-gmic
%license COPYING
%{_gimpplugindir}/gmic_gimp_qt
%{_gimpplugindir}/gmic_cluts.gmz
%files -n krita-plugin-gmic
%license COPYING
%{_bindir}/gmic_krita_qt
# %%if %%{with digikam_plugin}
# %%files -n digikam-plugin-gmic
# %%license COPYING
# %%dir %%{_libqt5_plugindir}/digikam
# %%dir %%{_libqt5_plugindir}/digikam/editor
# %%{_libqt5_plugindir}/digikam/editor/Editor_GmicQt_Plugin.so
# %%endif
%files -n libgmic1
%license COPYING
%{_libdir}/libgmic.so.*
%files -n libgmic-devel
%{_includedir}/gmic.h
%{_libdir}/libgmic.so
%{_libdir}/cmake/gmic/
%changelog