File libfive.spec of Package libfive
Name: libfive
Version: 0~git2507
Release: 0
Summary: Infrastructure for solid modeling with F-Reps in C and C++
Group: System/Libraries
License: MPL-2.0
URL: https://libfive.com
Source0: %{name}-%{version}.tar.gz
Source1: %{name}-studio.desktop
BuildRequires: cmake
BuildRequires: pkgconf
BuildRequires: eigen3-devel
BuildRequires: libpng-devel
BuildRequires: libboost_math-devel
BuildRequires: libboost_container-devel
BuildRequires: guile-devel
BuildRequires: guile-modules-3_0
BuildRequires: python3-devel
%description
A software library and set of tools for solid modeling using functional representations.
%package stdlib
Summary: Standard library of libfive
Requires: libfive
%description stdlib
Standard library of libfive.
%package devel
Summary: Development files for %{name}
Group: Development/Libraries/C and C++
Requires: %{name} = %{version}
%description devel
This package contains the pkgconfig, header files and libraries needed to
develop application that use %{name}.
%package guile
Summary: Guile bindings for %{name}
Requires: guile
Requires: guile-modules-3_0
Requires: libfive-stdlib
License: GPL-2.0-or-later
%description guile
Guile bindings for %{name}.
%package python3
Summary: Python bindings for %{name}
Group: Development/Languages/Python
BuildRequires: python-rpm-macros
BuildRequires: python3
BuildRequires: fdupes
Requires: python3
BuildArch: noarch
%description python3
Python bindings for %{name}
%package studio
Summary: A minimalist GUI for solid modeling with the libfive kernel
Group: Productivity/Graphics/CAD
BuildRequires: qt6-base-devel
BuildRequires: qt6-core-devel
BuildRequires: qt6-widgets-devel
BuildRequires: qt6-opengl-devel
BuildRequires: qt6-network-devel
BuildRequires: qt6-concurrent-devel
BuildRequires: hicolor-icon-theme
BuildRequires: update-desktop-files
Requires: %{name}-guile
Recommends: %{name}-python
License: GPL-2.0-or-later
%description studio
A minimalist GUI for solid modeling with the libfive kernel.
%prep
%setup -q
%build
%cmake -DPYTHON_SITE_PACKAGES_DIR=%{python3_sitelib}
%cmake_build
%install
%cmake_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
mv %{buildroot}%{_bindir}/Studio %{buildroot}%{_bindir}/libfive-studio
strip %{buildroot}%{_bindir}/libfive-studio
strip %{buildroot}%{_libdir}/libfive.so
strip %{buildroot}%{_libdir}/libfive-stdlib.so
mkdir -p %{buildroot}%{_datadir}/applications
cp %{SOURCE1} %{buildroot}%{_datadir}/applications/libfive-studio.desktop
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/
cp libfive/icon.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/libfive-studio.svg
%suse_update_desktop_file %{name}-studio
%files
%{_libdir}/libfive.so
%files stdlib
%{_libdir}/libfive-stdlib.so
%files guile
/usr/lib64/guile/3.0/site-ccache/libfive/
%files python3
%{python_sitelib}/%{name}
%files devel
%{_includedir}/libfive/
%{_includedir}/libfive.h
%{_libdir}/pkgconfig/libfive.pc
%files studio
%{_bindir}/libfive-studio
%{_datadir}/applications/libfive-studio.desktop
%{_datadir}/icons/hicolor/scalable/apps/libfive-studio.svg