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
openSUSE Build Service is sponsored by