File libappimage.spec of Package libappimage

#
# spec file for package libappimage
#
# copyright (c) 2025 munix9@googlemail.com
#

%global sover 1_0
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects

%bcond_with     tests

Name:           libappimage
Version:        1.0.4
Release:        0
Summary:        Implements functionality for dealing with AppImage files
License:        MIT
URL:            https://github.com/AppImageCommunity/libappimage
Source0:        %{name}-%{version}.tar.gz
BuildRequires:  autoconf
BuildRequires:  automake
BuildRequires:  boost-devel
BuildRequires:  cmake
BuildRequires:  desktop-file-utils
BuildRequires:  libtool
BuildRequires:  ninja
BuildRequires:  pkgconfig
BuildRequires:  cmake(XdgUtils)
BuildRequires:  pkgconfig(cairo)
BuildRequires:  pkgconfig(glib-2.0)
BuildRequires:  pkgconfig(libarchive)
BuildRequires:  pkgconfig(liblzma)
BuildRequires:  pkgconfig(librsvg-2.0)
BuildRequires:  pkgconfig(libzstd)
BuildRequires:  pkgconfig(lzo2)
BuildRequires:  pkgconfig(squashfuse)
BuildRequires:  pkgconfig(zlib)
%if 0%{?suse_version} <= 1500
BuildRequires:  gcc10-c++
%else
BuildRequires:  gcc-c++
%endif
%if %{with tests}
BuildRequires:  pkgconfig(gtest)
%endif

%description
This library is part of the AppImage project. It implements functionality
for dealing with AppImage files. It is written in C++ and is using Boost.

%package -n %{name}%{sover}
Summary:        Implements functionality for dealing with AppImage files

%description -n %{name}%{sover}
This library is part of the AppImage project. It implements functionality
for dealing with AppImage files. It is written in C++ and is using Boost.

%package devel
Summary:        Header files for libappimage
Requires:       %{name}%{sover} = %{version}
Requires:       pkgconfig(cairo)
Requires:       pkgconfig(glib-2.0)
Requires:       pkgconfig(librsvg-2.0)

%description devel
Development files for libappimage.

%prep
%autosetup -p1

# fix version
sed -e 's/set(V_PATCH 3)/set(V_PATCH 4)/' -i CMakeLists.txt

# fix "CMake Deprecation Warning"
sed -e 's/VERSION 3\.[0-9]/VERSION 3.10/' -i CMakeLists.txt cmake/scripts.cmake \
	cmake/reproducible_builds.cmake \
	src/CMakeLists.txt src/xdg-basedir/CMakeLists.txt \
	src/libappimage/CMakeLists.txt tests/CMakeLists.txt \
	tests/libappimage/temporarydirectory/CMakeLists.txt

# fix pkgconfig/libappimage.pc
sed -e 's/@CMAKE_INSTALL_LIBDIR@/%{_lib}/' -i cmake/libappimage.pc.in

%build
%define __builder ninja
_git_commit="$(echo "%{version}" | rev | cut -d. -f1 | rev)"

%cmake \
%if 0%{?suse_version} <= 1500
	-DCMAKE_C_COMPILER=gcc-10		\
	-DCMAKE_CXX_COMPILER=g++-10		\
%endif
	-DBUILD_TESTING=%{?with_tests:ON}%{!?with_tests:OFF} \
	-DCMAKE_SKIP_RPATH=ON			\
	-DGIT_COMMIT="$_git_commit"		\
	-DUSE_SYSTEM_LIBARCHIVE=ON		\
	-DUSE_SYSTEM_SQUASHFUSE=ON		\
	-DUSE_SYSTEM_XDGUTILS=ON		\
	-DUSE_SYSTEM_XZ=ON

#	-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON	\
#	-DCMAKE_SKIP_RPATH=OFF			\

%cmake_build

%install
%cmake_install

%if %{with tests}
%check
export LD_LIBRARY_PATH=%{buildroot}%{_libdir}:$PWD/build/tests/libappimage/temporarydirectory:$LD_LIBRARY_PATH
%ctest --parallel 1 --timeout 60 --verbose
%endif

%ldconfig_scriptlets -n %{name}%{sover}

%files -n %{name}%{sover}
%license LICENSE
%doc README.md
%{_libdir}/%{name}.so.*

%files devel
%{_includedir}/appimage
%{_libdir}/%{name}_{hashlib,shared}.a
%{_libdir}/%{name}.so
%{_libdir}/cmake/%{name}
%{_libdir}/pkgconfig/%{name}.pc

%changelog
openSUSE Build Service is sponsored by