File zeroc-ice.spec of Package zeroc-ice

#
# spec file for package zeroc-ice
#
# Copyright (c) 2023 SUSE LLC
# Copyright (c) 2023 Florian "sp1rit" <packaging@sp1rit.anonaddy.me>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#

%define vendor_name zeroc
%define upstream_name ice
%define soversion 37
%define branch 3.7
%define makebuildopts CONFIGS="shared cpp11-shared" OPTIMIZE=yes V=1 embedded_runpath=no
%define makeinstallopts CONFIGS="shared cpp11-shared" OPTIMIZE=yes V=1 embedded_runpath=no prefix=%{_prefix} install_bindir=%{_bindir} install_libdir=%{_libdir} install_slicedir=%{_datadir}/ice/slice install_includedir=%{_includedir} install_mandir=%{_mandir} install_configdir=%{_datadir}/ice

%if 0%{?suse_version}
%else
%define __python /usr/bin/python3
%define python_prefix python3
%define python_for_executables python3
%define php_cfgdir %{php_inidir}
%endif

Name:           %{vendor_name}-%{upstream_name}
Version:        %{branch}.10
Release:        0
Summary:        Comprehensive RPC framework
License:        GPL-2.0
URL:            https://zeroc.com/
Source0:        https://github.com/zeroc-ice/ice/archive/v%{version}/%{upstream_name}-%{version}.tar.gz
Source1:        https://github.com/zeroc-ice/ice-packaging/archive/v%{version}/%{upstream_name}-packaging-%{version}.tar.gz
BuildRequires:  gcc
BuildRequires:  gcc-c++
%if 0%{?suse_version}
BuildRequires:  mcpp-devel
%else
BuildRequires:  libmcpp-devel
BuildRequires:  python3-devel
%endif
BuildRequires:  php-devel
BuildRequires:  pkgconfig(bzip2)
BuildRequires:  pkgconfig(expat)
BuildRequires:  pkgconfig(libedit)
BuildRequires:  pkgconfig(lmdb)
BuildRequires:  pkgconfig(openssl)
BuildRequires:  pkgconfig(python3)

%define rpmbuildfiles ice-packaging-%{version}/ice/rpm

%global _description %{expand:
Ice is a comprehensive RPC framework that helps you network your software
with minimal effort. Ice takes care of all interactions with low-level
network programming interfaces and allows you to focus your efforts on
your application logic.}
%description %{_description}

%package slice
Summary: Slice files for Ice
BuildArch: noarch
%description slice
This package contains Slice files used by the Ice framework.
%{_description}

%package -n libIce%{soversion}
Summary: Ice for C++ run-time libraries
%description -n libIce%{soversion}
This package contains the C++ run-time libraries for the Ice framework.
%{_description}

%package -n %{vendor_name}-icebox
Summary: Framework for Ice application services
Requires: %{name}-utils = %{version}-%{release}
%description -n %{vendor_name}-icebox
This package contains the IceBox server, an easy-to-use framework for
developing and deploying Ice application services.
%{_description}

%package -n libIceStorm%{soversion}
Summary: Publish-subscribe event distribution service
%description -n libIceStorm%{soversion}
This package contains the IceStorm publish-subscribe event distribution
service.

IceStorm helps you create push applications. Your Ice client (the publisher)
sends a request to a topic managed by IceStorm, and IceStorm delivers this
request to all the subscribers (Ice objects) that you registered with this
topic.
%{_description}

%package devel
Summary: Libraries and headers for developing Ice applications in C++
Requires:  libIce%{soversion} = %{version}-%{release}
Requires:  %{name}-compilers = %{version}-%{release}
%description devel
This package contains the libraries and headers needed for developing
Ice applications in C++.
%{_description}

%package compilers
Summary: Slice compilers for developing Ice applications
Requires: %{name}-slice = %{version}-%{release}
%description compilers
This package contains Slice compilers for developing Ice applications.
%{_description}

%package utils
Summary: Ice utilities and admin tools
%description utils
This package contains Ice utilities and admin tools.
%{_description}

%package -n %{vendor_name}-icegrid
Summary: Locate, deploy, and manage Ice servers
Requires: %{name}-utils = %{version}-%{release}
%description -n %{vendor_name}-icegrid
This package contains the IceGrid service. IceGrid helps you locate,
deploy and manage Ice servers.
%{_description}

%package -n %{vendor_name}-glacier2
Summary: Glacier2 router
%description -n %{vendor_name}-glacier2
This package contains the Glacier2 router. A Glacier2 router allows you to
securely route Ice communications across networks, such as the public Internet
and a private network behind a firewall. With Glacier2, you only need to open
one port in your firewall to make multiple back-end Ice servers reachable by
remote Ice clients on the Internet.
%{_description}

%package -n %{vendor_name}-icebridge
Summary: Ice bridge
%description -n %{vendor_name}-icebridge
This package contains the Ice bridge. The Ice bridge allows you to bridge
connections securely between one or multiple clients and a server. It
relays requests from clients to a target server and makes every effort
to be as transparent as possible.
%{_description}

%package -n %{vendor_name}-icepatch
Summary: File distribution and patching
Requires: %{name}-utils = %{version}-%{release}
%description -n %{vendor_name}-icepatch
This package contains the IcePatch2 service. With IcePatch2, you can easily
distribute a large set of files to many clients and keep these files
synced with your source set.
%{_description}

%package -n php-%{name}
Summary: PHP extension for Ice
Requires: php
%description -n php-%{name}
This package contains a PHP extension for communicating with Ice.
%{_description}

%package -n %{python_prefix}-%{name}
Summary: Python extension for Ice
Requires: %{python_for_executables}
%description -n %{python_prefix}-%{name}
This package contains a Python extension for communicating with Ice.
%{_description}

%prep
%autosetup -p1 -n %{upstream_name}-%{version} -a1

%build
%set_build_flags
make %{?_smp_mflags} %{makebuildopts} PYTHON="%{python_for_executables}" LANGUAGES="cpp php python" srcs

%install
%make_install           %{?_smp_mflags} %{makeinstallopts} \
	LANGUAGES="cpp php python" \
	PYTHON="%{python_for_executables}" \
	install_pythondir=%{python_sitearch} \
	install-slice
%make_install -C cpp    %{?_smp_mflags} %{makeinstallopts} install
%make_install -C php    %{?_smp_mflags} %{makeinstallopts} install
%make_install -C python %{?_smp_mflags} %{makeinstallopts} PYTHON="%{python_for_executables}" install_pythondir=%{python_sitearch} install

install -Dm644 -t %{buildroot}%{php_cfgdir} %{rpmbuildfiles}/ice.ini
for i in icegridregistry icegridnode glacier2router; do
	install -Dm644 -t %{buildroot}%{_sysconfdir} %{rpmbuildfiles}/$i.conf
	install -Dm644 -pt %{buildroot}%{_unitdir} %{rpmbuildfiles}/$i.service
done

rm -f %{buildroot}%{_datadir}/ice/ICE_LICENSE %{buildroot}%{_datadir}/ice/LICENSE

%post   -n libIce%{soversion} -p /sbin/ldconfig
%postun -n libIce%{soversion} -p /sbin/ldconfig
%post   -n libIceStorm%{soversion} -p /sbin/ldconfig
%postun -n libIceStorm%{soversion} -p /sbin/ldconfig

%pre    -n %{vendor_name}-glacier2
%service_add_pre glacier2router.service
%post   -n %{vendor_name}-glacier2
%service_add_post glacier2router.service
%preun  -n %{vendor_name}-glacier2
%service_del_preun glacier2router.service
%postun -n %{vendor_name}-glacier2
%service_del_postun glacier2router.service

%pre    -n %{vendor_name}-icegrid
%service_add_pre icegridnode.service icegridregistry.service
%post   -n %{vendor_name}-icegrid
%service_add_post icegridnode.service icegridregistry.service
%preun  -n %{vendor_name}-icegrid
%service_del_preun icegridnode.service icegridregistry.service
%postun -n %{vendor_name}-icegrid
%service_del_postun icegridnode.service icegridregistry.service


%files slice
%license LICENSE
%license ICE_LICENSE
%doc README.md
%dir %{_datadir}/ice
%{_datadir}/ice/slice

%files -n libIce%{soversion}
%license LICENSE
%license ICE_LICENSE
%{_libdir}/libGlacier2.so.*
%{_libdir}/libIce.so.*
%{_libdir}/libIceBox.so.*
%{_libdir}/libIceDB.so.*
%{_libdir}/libIceDiscovery.so.*
%{_libdir}/libIceGrid.so.*
%{_libdir}/libIceLocatorDiscovery.so.*
%{_libdir}/libIcePatch2.so.*
%{_libdir}/libIceSSL.so.*
%{_libdir}/libIceStorm.so.*
%{_libdir}/libGlacier2++11.so.*
%{_libdir}/libIce++11.so.*
%{_libdir}/libIceBox++11.so.*
%{_libdir}/libIceDiscovery++11.so.*
%{_libdir}/libIceGrid++11.so.*
%{_libdir}/libIceLocatorDiscovery++11.so.*
%{_libdir}/libIceSSL++11.so.*
%{_libdir}/libIceStorm++11.so.*
%{_libdir}/libGlacier2CryptPermissionsVerifier.so.*
%{_libdir}/libIceXML.so.*

%files -n %{vendor_name}-icebox
%license LICENSE
%license ICE_LICENSE
%{_bindir}/icebox
%{_bindir}/icebox++11
%{_mandir}/man1/icebox.1*

%files -n libIceStorm%{soversion}
%license LICENSE
%license ICE_LICENSE
%{_libdir}/libIceStormService.so.*

%files devel
%license LICENSE
%license ICE_LICENSE
%{_libdir}/libGlacier2.so
%{_libdir}/libIce.so
%{_libdir}/libIceBox.so
%{_libdir}/libIceDiscovery.so
%{_libdir}/libIceGrid.so
%{_libdir}/libIceLocatorDiscovery.so
%{_libdir}/libIcePatch2.so
%{_libdir}/libIceSSL.so
%{_libdir}/libIceStorm.so
%{_libdir}/libGlacier2++11.so
%{_libdir}/libIce++11.so
%{_libdir}/libIceBox++11.so
%{_libdir}/libIceDiscovery++11.so
%{_libdir}/libIceGrid++11.so
%{_libdir}/libIceLocatorDiscovery++11.so
%{_libdir}/libIceSSL++11.so
%{_libdir}/libIceStorm++11.so
%{_includedir}/Glacier2/
%{_includedir}/Ice/
%{_includedir}/IceBox/
%{_includedir}/IceGrid/
%{_includedir}/IcePatch2/
%{_includedir}/IceSSL/
%{_includedir}/IceStorm/
%{_includedir}/IceUtil/

%files compilers
%license LICENSE
%license ICE_LICENSE
%{_bindir}/slice2confluence
%{_bindir}/slice2cpp
%{_bindir}/slice2cs
%{_bindir}/slice2html
%{_bindir}/slice2java
%{_bindir}/slice2js
%{_bindir}/slice2matlab
%{_bindir}/slice2objc
%{_bindir}/slice2php
%{_bindir}/slice2py
%{_bindir}/slice2rb
%{_bindir}/slice2swift
%{_mandir}/man1/slice2cpp.1*
%{_mandir}/man1/slice2cs.1*
%{_mandir}/man1/slice2html.1*
%{_mandir}/man1/slice2java.1*
%{_mandir}/man1/slice2js.1*
%{_mandir}/man1/slice2matlab.1*
%{_mandir}/man1/slice2objc.1*
%{_mandir}/man1/slice2php.1*
%{_mandir}/man1/slice2py.1*
%{_mandir}/man1/slice2rb.1*
%{_mandir}/man1/slice2swift.1*

%files utils
%license LICENSE
%license ICE_LICENSE
%{_bindir}/iceboxadmin
%{_bindir}/icepatch2calc
%{_bindir}/icepatch2client
%{_bindir}/icestormadmin
%{_bindir}/icestormdb
%{_bindir}/icegridadmin
%{_bindir}/icegriddb
%{_mandir}/man1/iceboxadmin.1*
%{_mandir}/man1/icepatch2calc.1*
%{_mandir}/man1/icepatch2client.1*
%{_mandir}/man1/icestormadmin.1*
%{_mandir}/man1/icestormdb.1*
%{_mandir}/man1/icegridadmin.1*
%{_mandir}/man1/icegriddb.1*

%files -n %{vendor_name}-icegrid
%license LICENSE
%license ICE_LICENSE
%{_bindir}/icegridnode
%{_bindir}/icegridregistry
%{_mandir}/man1/icegridnode.1*
%{_mandir}/man1/icegridregistry.1*
%dir %{_datadir}/ice
%{_datadir}/ice/templates.xml
%attr(644,root,root) %{_unitdir}/icegridregistry.service
%attr(644,root,root) %{_unitdir}/icegridnode.service
%config(noreplace) %{_sysconfdir}/icegridregistry.conf
%config(noreplace) %{_sysconfdir}/icegridnode.conf

%files -n %{vendor_name}-glacier2
%license LICENSE
%license ICE_LICENSE
%{_bindir}/glacier2router
%{_mandir}/man1/glacier2router.1*
%attr(644,root,root) %{_unitdir}/glacier2router.service
%config(noreplace) %{_sysconfdir}/glacier2router.conf

%files -n %{vendor_name}-icebridge
%license LICENSE
%license ICE_LICENSE
%{_bindir}/icebridge
%{_mandir}/man1/icebridge.1*

%files -n %{vendor_name}-icepatch
%license LICENSE
%license ICE_LICENSE
%{_bindir}/icepatch2server
%{_mandir}/man1/icepatch2server.1*

%files -n php-%{name}
%license LICENSE
%license ICE_LICENSE
%{_datadir}/php/Ice*
%{_datadir}/php/Glacier2*
%{php_extdir}/ice.so
%config(noreplace) %{php_cfgdir}/ice.ini

%files -n %{python_prefix}-%{name}
%license LICENSE
%license ICE_LICENSE
%{python_sitearch}/Ice*
%{python_sitearch}/Glacier2/

%changelog
openSUSE Build Service is sponsored by