File cutter-re.spec of Package cutter

%global         cutter_translations_commit 8d5d2f9b3e0b494be3bc1ce7c5900dbe64e2e577
%global         rizin_version 0.8.0

Name:           cutter-re
Version:        2.4.0
Release:        1%{?dist}
Summary:        GUI for Rizin reverse engineering framework

%if !%{defined _metainfodir}
%global _metainfodir %{_datadir}/metainfo
%endif

# CC-BY-SA: src/img/icons/
# CC0: src/fonts/Anonymous Pro.ttf
License:        GPLv3 and CC-BY-SA and CC0

URL:            https://cutter.re/
Source0:        https://github.com/rizinorg/cutter/releases/download/v%{version}/Cutter-v%{version}-src.tar.gz
Source1:        debian.cutter-re.desktop
Source2:        debian.cutter-re.appdata.xml

BuildRequires:  rizin-devel >= %{rizin_version}
BuildRequires:  cmake
BuildRequires:  gcc-c++
BuildRequires:  make
BuildRequires:  python3-devel
%if 0%{?suse_version}
BuildRequires:  libKF5SyntaxHighlighting5
BuildRequires:  libqt5-qtsvg-devel
BuildRequires:  libqt5-linguist-devel
BuildRequires:  libqt5-qtwebengine-devel
BuildRequires:  libQt5Network-devel
BuildRequires:  appstream-glib-devel
%else
BuildRequires:  kf5-syntax-highlighting-devel
BuildRequires:  qt5-qtsvg-devel
BuildRequires:  qt5-linguist
BuildRequires:  qt5-qtwebengine-devel
BuildRequires:  libappstream-glib
%endif
BuildRequires:  file-devel
BuildRequires:  desktop-file-utils
BuildRequires:  graphviz-devel
%if !0%{?rhel}
Requires:       python3-jupyter-client
Requires:       python3-notebook
%endif
Requires:       hicolor-icon-theme

%description
Cutter is a Qt and C++ GUI for Rizin. Its goal is making an advanced,
customizable and FOSS reverse-engineering platform while keeping the user
experience at mind. Cutter is created by reverse engineers for reverse
engineers.


%package devel
Summary:        Development files for the cutter-re package
Requires:       %{name}%{?_isa} = %{version}-%{release}
Requires:       rizin-devel >= %{rizin_version}
%if 0%{?suse_version}
Requires:       libqt5-qtbase-devel
Requires:       libqt5-qtsvg-devel
%else
Requires:       qt5-qtbase-devel
Requires:       qt5-qtsvg-devel
%endif

%description devel
Development files for the cutter-re package. See cutter-re package for more
information.


%prep
%autosetup -p1 -n Cutter-v%{version}


%build
%if 0%{?centos}
%cmake -DCUTTER_QT=5 -DCUTTER_USE_BUNDLED_RIZIN=OFF -B centos-build
cd centos-build
%else
%cmake -DCUTTER_QT=5 -DCUTTER_USE_BUNDLED_RIZIN=OFF
%endif
%cmake_build


%install
%if 0%{?centos}
cd centos-build
%endif
%cmake_install
mv %{buildroot}%{_bindir}/cutter %{buildroot}%{_bindir}/cutter-re

# replace default .desktop file with our own, to use cutter-re name
mkdir -p %{buildroot}%{_datadir}/applications
rm %{buildroot}%{_datadir}/applications/re.rizin.cutter.desktop
cp %{SOURCE1} ./cutter-re.desktop
desktop-file-install --dir=%{buildroot}%{_datadir}/applications \
        ./cutter-re.desktop

mkdir -p %{buildroot}%{_metainfodir}
install -pm644 %{SOURCE2} \
        %{buildroot}%{_metainfodir}/cutter-re.appdata.xml

# rename cutter svg icon to cutter-re
mv %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/{cutter,cutter-re}.svg
sed -i 's/bin\/cutter/bin\/cutter-re/g' %{buildroot}%{_libdir}/cmake/Cutter/CutterTargets-*.cmake

%check
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml


%files
%{_bindir}/cutter-re
%{_datadir}/applications/*.desktop
%{_datadir}/rizin/cutter/translations/*.qm
%if 0%{?suse_version}
%{_datadir}/metainfo/*.appdata.xml
%else
%{_metainfodir}/*.appdata.xml
%endif
%{_datadir}/icons/hicolor/scalable/apps/*.svg
%dir %{_datadir}/icons/hicolor/scalable/
%dir %{_datadir}/icons/hicolor/scalable/apps
%dir %{_datadir}/rizin/cutter
%dir %{_datadir}/rizin/cutter/translations
%license COPYING src/img/icons/Iconic-LICENSE
%doc README.md


%files devel
%{_includedir}/cutter
%{_libdir}/cmake/Cutter/*.cmake
%dir %{_libdir}/cmake/Cutter


%changelog
* Mon Mar 25 2024 Riccardo Schirone <rschirone91@gmail.com> - 2.3.4-1
- Rebase to version 2.3.4

* Tue Jan 9 2024 Riccardo Schirone <rschirone91@gmail.com> - 2.3.2-1
- Rebase to version 2.3.2

* Fri Aug 11 2023 Riccardo Schirone <rschirone91@gmail.com> - 2.3.0-1
- Rebase to version 2.3.0

* Tue May 23 2023 Riccardo Schirone <rschirone91@gmail.com> - 2.2.1-1
- Rebase to version 2.2.1

* Thu Feb 23 2023 Riccardo Schirone <rschirone91@gmail.com> - 2.2.0-1
- Rebase to version 2.2.0

* Fri Sep 16 2022 Riccardo Schirone <rschirone91@gmail.com> - 2.1.2-1
- Rebase to version 2.1.2

* Thu Jul 14 2022 Riccardo Schirone <rschirone91@gmail.com> - 2.1.0-2
- Small fixes to spec file

* Thu Jul 14 2022 Riccardo Schirone <rschirone91@gmail.com> - 2.1.0-1
- Rebase to version 2.1.0 which uses Rizin 0.4.0
openSUSE Build Service is sponsored by