File AppImageUpdate.spec of Package AppImageUpdate
#
# spec file for package AppImageUpdate
#
# copyright (c) 2023 munix9@googlemail.com
#
%define sover 2_0
%define argav 0.4.7
Name: AppImageUpdate
Version: 2.0.0~alpha1.20230526.496a69e
Release: 0
Summary: Update AppImages in a decentral way
License: MIT
URL: https://appimage.org/
Source0: %{name}-%{version}.tar.xz
Source1: %{name}.changes
Source2: appimage-update.desktop
Source3: appimage-update.sh
Source4: %{name}.bash
Source5: appimageupdatetool.bash
Source10: locale-sh.tar.gz
# https://github.com/vietjtnguyen/argagg
Source20: https://raw.githubusercontent.com/vietjtnguyen/argagg/%{argav}/include/argagg/argagg.hpp
Patch0: fix-cmake-vars.patch
Patch1: fix-SOVERSION.patch
Patch2: fix-prevent-blocking.patch
Patch3: fix-dest-export_cmake.patch
Patch4: fix-disable-self-update.patch
Patch5: fix-filename-pattern.patch
Patch6: fix-gpgme-custom-home-dir.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: cmake
BuildRequires: help2man
BuildRequires: hicolor-icon-theme
BuildRequires: kf5-filesystem
BuildRequires: libtool
BuildRequires: ninja
BuildRequires: pkgconfig
BuildRequires: update-desktop-files
BuildRequires: cmake(Qt5Core)
BuildRequires: cmake(Qt5Widgets)
BuildRequires: cmake(cpr)
BuildRequires: cmake(nlohmann_json)
BuildRequires: cmake(zsync2)
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gpgme)
BuildRequires: pkgconfig(libappimage)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(libgcrypt)
BuildRequires: pkgconfig(librsvg-2.0)
BuildRequires: pkgconfig(libssl)
BuildRequires: pkgconfig(xpm)
BuildRequires: pkgconfig(zlib)
Requires: gpg2
Recommends: appimageupdatetool
Suggests: appimaged
Provides: %{name}-qt = %{version}-%{release}
Obsoletes: %{name}-qt < %{version}-%{release}
%if 0%{?suse_version} <= 1500
BuildRequires: gcc10-PIE
BuildRequires: gcc10-c++
%else
BuildRequires: gcc-c++
%endif
%description
AppImageUpdate lets you update AppImages in a decentral way using
information embedded in the AppImage itself. No central repository
is involved. This enables upstream application projects to release
AppImages that can be updated easily. Since AppImageKit uses delta
updates, the downloads are very small and efficient.
%package -n appimageupdatetool
Summary: Update AppImages in a decentral way
Suggests: %{name}
%description -n appimageupdatetool
AppImage companion tool taking care of updates for the commandline.
%package -n libappimageupdate%{sover}
Summary: Update AppImages in a decentral way
Obsoletes: libappimageupdate2
%description -n libappimageupdate%{sover}
This library is part of the AppImageUpdate project.
%package -n libappimageupdate-qt%{sover}
Summary: Update AppImages in a decentral way
Obsoletes: libappimageupdate-qt2
%description -n libappimageupdate-qt%{sover}
This library is part of the AppImageUpdate project.
%package bash-completion
Summary: Bash completion for AppImageUpdate
BuildRequires: bash-completion
Requires: %{name}
Requires: bash-completion
Supplements: (%{name} and bash-completion)
BuildArch: noarch
%description bash-completion
Bash command line completion support for AppImageUpdate.
%package -n appimageupdatetool-bash-completion
Summary: Bash completion for appimageupdatetool
Requires: appimageupdatetool
Requires: bash-completion
Supplements: (appimageupdatetool and bash-completion)
BuildArch: noarch
%description -n appimageupdatetool-bash-completion
Bash command line completion support for appimageupdatetool.
%package kf5
Summary: KF5 extension for AppImageUpdate
Requires: %{name}
Requires: gettext-runtime
Requires: kdialog
Supplements: %{name}
BuildArch: noarch
%description kf5
KF5 context menu extension for AppImageUpdate.
%package devel
Summary: Header files for AppImageUpdate
Requires: libappimageupdate%{sover} = %{version}
Requires: libappimageupdate-qt%{sover} = %{version}
%description devel
Development files for AppImageUpdate.
%prep
%autosetup -a10 -p1
%global tpcd /tmp/pkgconfig
rm -rf %{tpcd}
# in leap some *.pc might be missing, so create them temporarily if necessary
%if 0%{?suse_version} <= 1500
ctpc () {
test -f %{_libdir}/pkgconfig/${2}.pc && return 0
local v=$(rpm -q --qf "%%{VERSION}" ${1}-devel)
sed -e 's|^\(libdir\)=.*|\1=%{_libdir}|;/^host=.*/d;/^Requires\.private:.*/d' \
-e "s|^\(Version:\) .*|\1 $v|;s|^\(Libs:\)|\1 -L\${libdir}|" \
ci/pkgconfig/${2}.pc > %{tpcd}/${2}.pc
}
mkdir -p %{tpcd}
ctpc libassuan libassuan
ctpc libgcrypt libgcrypt
ctpc libgpg-error gpg-error
%endif
# provide argagg/argagg.hpp
install -D -m 0644 -t argagg/argagg %{SOURCE20}
# fix icon name
sed -e 's/^Icon=appimage$/Icon=%{name}/' -i resources/%{name}.desktop
%build
%define __builder ninja
CFLAGS="%{optflags} -I$(pwd)/argagg"
%ifarch %{ix86}
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64"
%endif
export CFLAGS="$CFLAGS"
export CXXFLAGS="$CFLAGS"
test -d %{tpcd} && export PKG_CONFIG_PATH=%{tpcd}
_git_commit="$(echo "%{version}" | awk -F. '{print $NF}')" # || _git_commit="release"
export GITHUB_RUN_NUMBER="<%{_project}@obs>"
%cmake \
-DBUILD_QT_UI=ON \
-DBUILD_SHARED_LIBS=OFF \
%if 0%{?suse_version} <= 1500
-DCMAKE_C_COMPILER=gcc-10 \
-DCMAKE_CXX_COMPILER=g++-10 \
%endif
-DCMAKE_SKIP_RPATH=ON \
-DCMAKE_USE_OPENSSL=ON \
-DGIT_COMMIT="$_git_commit" \
-DUSE_SYSTEM_CURL=ON \
-DUSE_SYSTEM_LIBAPPIMAGE=ON \
-DUSE_SYSTEM_ZSYNC2=ON
%cmake_build
%install
%cmake_install
# rename validate to avoid conflicts with other programs
mv %{buildroot}%{_bindir}/validate %{buildroot}%{_bindir}/appimagegpgvalidate
install -D -m 0644 -t %{buildroot}%{_datadir}/applications resources/%{name}.desktop
install -D -m 0644 resources/appimage.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/%{name}.png
install -D -m 0644 -t %{buildroot}%{_kf5_servicesdir}/ServiceMenus %{SOURCE2}
install -D -m 0755 -t %{buildroot}%{_bindir} %{SOURCE3}
# bash-completion
install -D -m 0644 %{SOURCE4} %{buildroot}%{_datadir}/bash-completion/completions/%{name}
install -D -m 0644 %{SOURCE5} %{buildroot}%{_datadir}/bash-completion/completions/appimageupdatetool
%suse_update_desktop_file -r -G "Update AppImages" %{name} Network FileTransfer Qt
# man page
export PATH=%{buildroot}%{_bindir}:$PATH
export LD_LIBRARY_PATH=%{buildroot}%{_libdir}:$LD_LIBRARY_PATH
install -d -m 0755 %{buildroot}%{_mandir}/man1
_vs="$(appimageupdatetool --version 2>&1|cut -d ' ' -f 1,3-5|tr -d ,)"
help2man -N -n "Update AppImages in a decentral way" --version-string="$_vs" --no-discard-stderr \
-o %{buildroot}%{_mandir}/man1/appimageupdatetool.1 appimageupdatetool
install -d -m 0755 %{buildroot}%{_datadir}/locale
cp -a locale-sh/* %{buildroot}%{_datadir}/locale
find %{buildroot}%{_libdir} -type f -name "*.a" -delete -print
%find_lang appimage-update.sh
%post -n libappimageupdate%{sover} -p /sbin/ldconfig
%postun -n libappimageupdate%{sover} -p /sbin/ldconfig
%post -n libappimageupdate-qt%{sover} -p /sbin/ldconfig
%postun -n libappimageupdate-qt%{sover} -p /sbin/ldconfig
%files
%license LICENSE.txt
%doc README.md
%{_bindir}/%{name}
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/*/apps/%{name}.png
%files -n appimageupdatetool
%license LICENSE.txt
%doc README.md
%{_bindir}/appimageupdatetool
%{_bindir}/appimagegpgvalidate
%{_mandir}/man1/appimageupdatetool.1%{?ext_man}
%files -n libappimageupdate%{sover}
%{_libdir}/libappimageupdate.so.*
%files -n libappimageupdate-qt%{sover}
%{_libdir}/libappimageupdate-qt.so.*
%files bash-completion
%{_datadir}/bash-completion/completions/%{name}
%files -n appimageupdatetool-bash-completion
%{_datadir}/bash-completion/completions/appimageupdatetool
%files kf5 -f appimage-update.sh.lang
%{_bindir}/appimage-update.sh
%dir %{_kf5_servicesdir}
%dir %{_kf5_servicesdir}/ServiceMenus
%{_kf5_servicesdir}/ServiceMenus/*.desktop
%files devel
%{_includedir}/appimage
%{_libdir}/cmake/%{name}
%{_libdir}/libappimageupdate.so
%{_libdir}/libappimageupdate-qt.so
%changelog