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