File cxxtools.spec of Package cxxtools
#
# spec file for package cxxtools
#
# Copyright (c) 2021 SUSE LLC
#
# 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 _lto_cflags %{nil}
%define major 10
Name: cxxtools
Version: 3.0
Release: 0
Summary: Collection of General-purpose C++ Classes
License: LGPL-2.1-only
Group: Development/Libraries/C and C++
URL: http://www.tntnet.org/cxxtools.html
Source0: https://github.com/maekitalo/cxxtools/archive/V%{version}.tar.gz#/%{name}-%{version}.tar.gz
Source99: cxxtools-rpmlintrc
Patch0: gcc11.patch
Patch1: 0001-add-missing-header-time.h-to-src-timer.cpp.patch
Patch2: 0001-remove-timespan-unittest-which-is-prone-to-rounding-.patch
Patch3: 0001-fix-reading-time-zones-on-32-bit-systems.patch
Patch4: 0001-remove-range-check-in-serializationinfo.patch
BuildRequires: autoconf
BuildRequires: gcc-c++
BuildRequires: libtool
BuildRequires: pkgconfig
BuildRequires: timezone
BuildRequires: pkgconfig(openssl)
%description
Cxxtools is a collection of general-purpose C++ classes.
It includes classes for:
- argument parsing
- logging
- wrappers for threading (pthreads)
- networking with tcp and udp including iostream-based classes
- std::ostream for md5-calculation
- std::ostream-hexdumper
- std::ostream, which duplicates output (like tee)
- wrappers for fork(2) and pipe(2)
- parser for ini files
- parser for property files
- policy based smartpointer
- wrappers for dlopen(2) and dlsym(2)
- fast http client
- uuencoder-std::ostream
- classes to create mime messages for sending mail with attachements or
as html-formatted mail
- template based fast signal/slot-classes
- template for pools
- parser for http-query-parameters e.g. for cgi
- ostream-filter for counting bytes passed through it
- wrappers for atomic operations
%package -n libcxxtools%{major}
Summary: Collection of General-purpose C++ Classes
Group: System/Libraries
%description -n libcxxtools%{major}
Cxxtools is a collection of general-purpose C++ classes. The library
includes classes for serialization, unicode text, multi threading,
networking, rpc, http client and server, xml, logging and many more.
%package -n libcxxtools-bin%{major}
Summary: A C++ toolbox - binary RPC package
Group: System/Libraries
%description -n libcxxtools-bin%{major}
Cxxtools is a collection of general-purpose C++ classes. The library
includes classes for serialization, unicode text, multi threading,
networking, rpc, http client and server, xml, logging and many more.
%package -n libcxxtools-http%{major}
Summary: A C++ toolbox - HTTP protocol implementation
Group: System/Libraries
%description -n libcxxtools-http%{major}
Cxxtools is a collection of general-purpose C++ classes. The library
includes classes for serialization, unicode text, multi threading,
networking, rpc, http client and server, xml, logging and many more.
%package -n libcxxtools-json%{major}
Summary: A C++ toolbox - JSON package
Group: System/Libraries
%description -n libcxxtools-json%{major}
Cxxtools is a collection of general-purpose C++ classes. The library
includes classes for serialization, unicode text, multi threading,
networking, rpc, http client and server, xml, logging and many more.
%package -n libcxxtools-unit%{major}
Summary: A C++ toolbox - testing library
Group: System/Libraries
%description -n libcxxtools-unit%{major}
Cxxtools is a collection of general-purpose C++ classes. The library
includes classes for serialization, unicode text, multi threading,
networking, rpc, http client and server, xml, logging and many more.
%package -n libcxxtools-xmlrpc%{major}
Summary: A C++ toolbox - XMLRPC package
Group: System/Libraries
%description -n libcxxtools-xmlrpc%{major}
Cxxtools is a collection of general-purpose C++ classes. The library
includes classes for serialization, unicode text, multi threading,
networking, rpc, http client and server, xml, logging and many more.
%package devel
Summary: Cxxtools Development Files
Group: Development/Libraries/C and C++
Requires: libcxxtools%{major} = %{version}
Requires: libcxxtools-bin%{major} = %{version}
Requires: libcxxtools-http%{major} = %{version}
Requires: libcxxtools-json%{major} = %{version}
Requires: libcxxtools-unit%{major} = %{version}
Requires: libcxxtools-xmlrpc%{major} = %{version}
# various home projects does use spurious lib prefix for devel files, lets be compatible
Provides: lib%{name}-devel = %{version}
%description devel
Cxxtools is a collection of general-purpose C++ classes.
It includes classes for:
- argument parsing
- logging
- wrappers for threading (pthreads)
- networking with tcp and udp including iostream-based classes
- std::ostream for md5-calculation
- std::ostream-hexdumper
- std::ostream, which duplicates output (like tee)
- wrappers for fork(2) and pipe(2)
- parser for ini files
- parser for property files
- policy based smartpointer
- wrappers for dlopen(2) and dlsym(2)
- fast http client
- uuencoder-std::ostream
- classes to create mime messages for sending mail with attachements or
as html-formatted mail
- template based fast signal/slot-classes
- template for pools
- parser for http-query-parameters e.g. for cgi
- ostream-filter for counting bytes passed through it
- wrappers for atomic operations
%prep
%autosetup -p1
%build
autoreconf -fiv
%configure \
--disable-static \
%ifarch aarch64 s390x
--with-atomictype=pthread \
%endif
--with-iconvstream=yes
%make_build
%install
%make_install
find %{buildroot} -type f -name "*.la" -delete -print
%check
test/alltests
mkdir -p %{buildroot}/%{_datadir}/%{name}/
%post -n libcxxtools%{major} -p /sbin/ldconfig
%postun -n libcxxtools%{major} -p /sbin/ldconfig
%post -n libcxxtools-bin%{major} -p /sbin/ldconfig
%postun -n libcxxtools-bin%{major} -p /sbin/ldconfig
%post -n libcxxtools-http%{major} -p /sbin/ldconfig
%postun -n libcxxtools-http%{major} -p /sbin/ldconfig
%post -n libcxxtools-json%{major} -p /sbin/ldconfig
%postun -n libcxxtools-json%{major} -p /sbin/ldconfig
%post -n libcxxtools-unit%{major} -p /sbin/ldconfig
%postun -n libcxxtools-unit%{major} -p /sbin/ldconfig
%post -n libcxxtools-xmlrpc%{major} -p /sbin/ldconfig
%postun -n libcxxtools-xmlrpc%{major} -p /sbin/ldconfig
%files -n libcxxtools%{major}
%{_libdir}/libcxxtools.so.%{major}*
%files -n libcxxtools-bin%{major}
%{_libdir}/libcxxtools-bin.so.%{major}*
%files -n libcxxtools-http%{major}
%{_libdir}/libcxxtools-http.so.%{major}*
%files -n libcxxtools-json%{major}
%{_libdir}/libcxxtools-json.so.%{major}*
%files -n libcxxtools-unit%{major}
%{_libdir}/libcxxtools-unit.so.%{major}*
%files -n libcxxtools-xmlrpc%{major}
%{_libdir}/libcxxtools-xmlrpc.so.%{major}*
%files devel
%license COPYING
%doc AUTHORS ChangeLog README
%{_bindir}/cxxtools-config
%{_bindir}/cxxtz
%{_bindir}/siconvert
%{_includedir}/cxxtools/
%{_libdir}/libcxxtools*.so
%{_libdir}/pkgconfig/cxxtools*.pc
%changelog