## START: Set by rpmautospec
## (rpmautospec version 0.3.5)
## RPMAUTOSPEC: autorelease, autochangelog
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
    release_number = 2;
    base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
    print(release_number + base_release_number - 1);
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
## END: Set by rpmautospec

%global commit 7b0839e178b98ba77f732fc679141a82a90c67dc
# git log -1 --pretty=format:%ct
%global timestamp 1686221902
%global nanopb_commit 13666952914f3cf43a70c6b9738a7dc0dd06a6dc

%global srcname qFlipper
%global forgeurl https://github.com/flipperdevices/%{srcname}
%global shortcommit %(c=%{commit}; echo ${c:0:7})

Name:           qflipper
Version:        1.3.2
Release:        %autorelease
Summary:        Desktop application for updating Flipper Zero firmware via PC

# qFlipper proper is GPLv3, the bundled nanopb library is zlib
License:        GPL-3.0-or-later AND Zlib
URL:            https://update.flipperzero.one
Source0:        %{forgeurl}/archive/%{version}/%{srcname}-%{version}.tar.gz
Source1:        https://github.com/nanopb/nanopb/archive/%{nanopb_commit}/nanopb-%{nanopb_commit}.tar.gz
Source2:        42-flipperzero.rules
Source3:        one.flipperzero.qflipper.metainfo.xml

# qFlipper fails to build on i686
ExcludeArch:    %{ix86}

BuildRequires:  desktop-file-utils
BuildRequires:  gcc-c++
BuildRequires:  libappstream-glib
BuildRequires:  make
BuildRequires:  sed
BuildRequires:  systemd-rpm-macros

BuildRequires:  libusb1-devel
BuildRequires:  qt5-linguist
BuildRequires:  qt5-qtbase-devel
BuildRequires:  qt5-qtquickcontrols2-devel
BuildRequires:  qt5-qtserialport-devel
BuildRequires:  qt5-qtsvg-devel
BuildRequires:  zlib-devel

Requires:       systemd-udev

# nanopb needs to be compiled in, and needs to match the one used in the
# firmware on the device side
Provides:       bundled(nanopb) = 0.4.5

%description
Graphical desktop application for updating Flipper Zero firmware via PC.

Features:
* Update Flipper's firmware and supplemental data with a press of one button
* Repair a broken fimware installation
* Stream Flipper's display and control it remotely
* Install firmware from a .dfu file
* Backup and restore settings, progress and pairing data
* Automatic self-update feature
* Command line interface

%prep
%autosetup -n %{srcname}-%{version} -b 1

# Use the correct nanopb snapshot
rmdir 3rdparty/nanopb
ln -s ../../nanopb-%{nanopb_commit} 3rdparty/nanopb

# Set the version
sed -i qflipper_common.pri \
    -e 's/$$GIT_VERSION/%{version}/' \
    -e 's/$$GIT_COMMIT/%{shortcommit}/' \
    -e 's/$$GIT_TIMESTAMP/%{timestamp}/'

# Fix the plugins library path
sed -e 's:/lib/:/%{_lib}/:' \
    -i backend/applicationbackend.cpp plugins/flipperproto0/flipperproto0.pro

%build
%qmake_qt5 \
  PREFIX=%{buildroot}%{_prefix} \
  CONFIG+=qtquickcompiler \
  DEFINES+=DISABLE_APPLICATION_UPDATES

%make_build

%install
%make_install

# Install the udev rule
install -Dpm0644 -t %{buildroot}%{_udevrulesdir} %SOURCE2

# Install the appdata file
install -Dpm0644 -t %{buildroot}%{_metainfodir} %SOURCE3

%check
# Validate desktop files
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.metainfo.xml
desktop-file-validate %{buildroot}/%{_datadir}/applications/%{srcname}.desktop

%files
%license LICENSE 3rdparty/nanopb/LICENSE.txt
%doc README.md screenshot.png
%{_bindir}/*
%{_libdir}/%{srcname}
%{_datadir}/applications/%{srcname}.desktop
%{_datadir}/icons/hicolor/512x512/apps/%{srcname}.png
%{_metainfodir}/one.flipperzero.qflipper.metainfo.xml
%{_udevrulesdir}/42-flipperzero.rules

%changelog
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild

* Sun Jun 25 2023 Davide Cavalca <dcavalca@fedoraproject.org> - 1.3.2-1
- Update to 1.3.2; Fixes: RHBZ#2209837

* Sun Apr 02 2023 Davide Cavalca <dcavalca@fedoraproject.org> - 1.3.0-1
- Update to 1.3.0; Fixes: RHBZ#2152250

* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild

* Sat Oct 15 2022 Davide Cavalca <dcavalca@fedoraproject.org> - 1.2.1-2
- Add back nanopb source

* Sat Oct 15 2022 Davide Cavalca <dcavalca@fedoraproject.org> - 1.2.1-1
- Update to 1.2.1; Fixes: RHBZ#2110813

* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild

* Fri Jun 24 2022 Davide Cavalca <dcavalca@fedoraproject.org> - 1.1.0-1
- Update to 1.1.0; Fixes: RHBZ#2072789

* Sat Mar 26 2022 Davide Cavalca <dcavalca@fedoraproject.org> - 1.0.0-2
- Fix sources

* Sat Mar 26 2022 Davide Cavalca <davide@cavalca.name> - 1.0.0-1
- Update to 1.0.0; Fixes: RHBZ#2068765

* Mon Mar 14 2022 Davide Cavalca <dcavalca@fedoraproject.org> - 0.9.2-1
- Initial import; Fixes: RHBZ#2063445