Package xmlrpc-c: Specfile

%define libname libxmlrpc
# libxml2 backend is broken
%def_disable libxml2

Name: xmlrpc-c
Version: 1.54.06
Release: alt2

Summary: XML-RPC C library - an implementation of the xmlrpc protocol
License: BSD-3-Clause AND MIT
Group: System/Libraries

Url: http://xmlrpc-c.sourceforge.net/

Source: %name-%version.tar


Patch1: %name-1.12.00-alt-configure-fixes.patch
Patch2: 0001-cleanup-and-fix-libxml2-backend.patch

# Patches from fedora
Patch101: 0001-xmlrpc_server_abyss-use-va_args-properly.patch
Patch102: 0002-Use-proper-datatypes-for-long-long.patch
Patch103: 0003-allow-30x-redirections.patch

# Patches from OpenNebula
Patch201: xml_parse_huge.patch

BuildRequires: gcc-c++
BuildRequires: libcurl-devel
%{?_enable_libxml2:BuildRequires: libxml2-devel}
BuildRequires: libncurses-devel libreadline-devel
BuildRequires: libssl-devel zlib-devel

%description
XML-RPC for C/C++ is programming libraries and related tools to help you
write an XML-RPC server or client in C or C++.

%package -n %libname
Summary: XML-RPC C library - an implementation of the xmlrpc protocol
Group: System/Libraries

%description -n %libname
XML-RPC for C/C++ is programming libraries and related tools to help you
write an XML-RPC server or client in C or C++.

%package -n %libname-client
Summary: C client libraries for xmlrpc-c
Group: System/Libraries
Requires: %libname = %version-%release

%description -n %libname-client
XML-RPC is a quick-and-easy way to make procedure calls over the
Internet. It converts the procedure call into XML document, sends it
to a remote server using HTTP, and gets back the response as XML.

This library provides a modular implementation of XML-RPC for C
clients.

%package -n %libname-devel
Summary: Files for developing applications that use %libname
Requires: %libname = %version-%release
Requires: %libname++ = %version-%release
Requires: %libname-client = %version-%release
Requires: %libname-client++ = %version-%release
Group: Development/C

%description -n %libname-devel
The header file for developing applications that use
%name.

%package -n %libname++
Summary: XML-RPC C++ library - an implementation of the xmlrpc protocol
Group: System/Libraries
Requires: %libname = %version-%release

%description -n %libname++
XML-RPC for C/C++ is programming libraries and related tools to help you
write an XML-RPC server or client in C or C++.

This package contains C++ bindings for %libname.

%package -n %libname-client++
Summary: C++ client libraries for xmlrpc-c
Group: System/Libraries
Requires: %libname-client = %version-%release
Requires: %libname++ = %version-%release

%description -n %libname-client++
XML-RPC is a quick-and-easy way to make procedure calls over the
Internet. It converts the procedure call into XML document, sends it
to a remote server using HTTP, and gets back the response as XML.

This library provides a modular implementation of XML-RPC for C++
clients.

%package -n %libname++-devel
Summary: Files for developing applications that use %libname++
Requires: %libname++ = %version-%release
Requires: %libname-devel = %version-%release
Group: Development/C++

%description -n %libname++-devel
The header file for developing applications that use
%libname++.


%prep
%setup
%patch1 -p1
%if_enabled libxml2
%patch2 -p1
%endif
%patch101 -p1
%patch102 -p1
%patch103 -p1
%patch201 -p1

%build
autoconf
%configure \
	--disable-wininet-client \
	%{?_enable_libxml2:--enable-libxml2-backend}

%make
%make -C tools

%install
%makeinstall_std
%makeinstall_std -C tools
rm -f %buildroot%_libdir/*.a

%files
%doc README doc/*
%doc tools/xmlrpc_transport/xmlrpc_transport.html
%_man1dir/*
%_bindir/*
%exclude %_bindir/xmlrpc-c-config

%files -n %libname
%_libdir/libxmlrpc.so.*
%_libdir/libxmlrpc_*.so.*
%exclude %_libdir/libxmlrpc_cpp.so.*
%exclude %_libdir/libxmlrpc_*++.so.*
%exclude %_libdir/libxmlrpc_client.so.*

%files -n %libname-client
%_libdir/libxmlrpc_client.so.*

%files -n %libname++
%_libdir/libxmlrpc_cpp.so.*
%_libdir/libxmlrpc++.so.*
%_libdir/libxmlrpc_*++.so.*
%exclude %_libdir/libxmlrpc_client++.so.*

%files -n %libname-client++
%_libdir/libxmlrpc_client++.so.*

%files -n %libname-devel
%_bindir/xmlrpc-c-config
%_includedir/xmlrpc-c/
%_includedir/*.h
%_pkgconfigdir/*.pc
%_libdir/*.so

%changelog
* Fri Jan 27 2023 Alexey Shabalin <shaba@altlinux.org> 1.54.06-alt2
- apply xml_parse_huge.patch for OpenNebula

* Thu Sep 29 2022 Alexey Shabalin <shaba@altlinux.org> 1.54.06-alt1
- 1.54.06

* Mon Jul 19 2021 Alexey Shabalin <shaba@altlinux.org> 1.51.07-alt1
- 1.51.07

* Wed Apr 08 2020 Alexey Shabalin <shaba@altlinux.org> 1.51.06-alt1
- 1.51.06

* Tue Jan 22 2019 Alexey Shabalin <shaba@altlinux.org> 1.51.03-alt1.svn3018
- 1.51.03

* Wed Sep 26 2018 Alexey Shabalin <shaba@altlinux.org> 1.51.02-alt1.svn3011
- 1.51.02

* Thu Mar 01 2018 Alexey Shabalin <shaba@altlinux.ru> 1.43.06-alt1.svn2912
- 1.43.06

* Wed Aug 30 2017 Alexey Shabalin <shaba@altlinux.ru> 1.39.12-alt1.svn2910
- 1.39.12

* Tue Jul 21 2015 Vitaly Lipatov <lav@altlinux.ru> 1.32.5-alt2.svn2451
- use cmake macros
- rebuild with new libstdc++

* Tue Mar 11 2014 Timur Aitov <timonbl4@altlinux.org> 1.32.5-alt1.svn2451
- 1.32.5

* Wed Sep 28 2011 Aeliya Grevnyov <gray_graff@altlinux.org> 1.27.0-alt1.svn2145
- update to 1.27.0 (svn2145) (ALT#26363)
- enable cplusplus, abyss-server, cgi-server (ALT#26364)

* Tue Jul 05 2011 Dmitry V. Levin <ldv@altlinux.org> 1.12.00-alt11
- Fixed build with new libcurl-devel.

* Mon Apr 18 2011 Vitaly Kuznetsov <vitty@altlinux.ru> 1.12.00-alt10
- fix build

* Fri Oct 29 2010 Eugeny A. Rostovtsev (REAL) <real at altlinux.org> 1.12.00-alt9
- Rebuilt for soname set-versions

* Thu Nov 20 2008 Andrey Rahmatullin <wrar@altlinux.ru> 1.12.00-alt8
- remove update_*/clean_* invocations

* Thu Sep 11 2008 Andrey Rahmatullin <wrar@altlinux.ru> 1.12.00-alt7
- recognize linux-gnueabi as linux (kas@)

* Sun May 11 2008 Andrey Rahmatullin <wrar@altlinux.ru> 1.12.00-alt6
- libxmlrpc-devel should also require libxml2-devel because of xmlrpc-c-config

* Mon Apr 14 2008 Andrey Rahmatullin <wrar@altlinux.ru> 1.12.00-alt5
- fix building with new curl (Gentoo)

* Sun Jan 20 2008 Andrey Rahmatullin <wrar@altlinux.ru> 1.12.00-alt4
- correctly fix building with new autotools, now including x86_64 (authors
  seem to have no brain)

* Sat Dec 29 2007 Andrey Rahmatullin <wrar@altlinux.ru> 1.12.00-alt3
- fix building with new autotools

* Sat Oct 27 2007 Andrey Rahmatullin <wrar@altlinux.ru> 1.12.00-alt2
- fix x86_64 build (damir@), again
- fix broken symlinks in /usr/include

* Mon Oct 22 2007 Andrey Rahmatullin <wrar@altlinux.ru> 1.12.00-alt1
- 1.12.00
- disable optional server components
- disable C++ bindings

* Thu Apr 12 2007 Andrey Rahmatullin <wrar@altlinux.ru> 1.10.00-alt2
- fix License (#11485)
- put docs in one directory

* Fri Mar 30 2007 Andrey Rahmatullin <wrar@altlinux.ru> 1.10.00-alt1
- 1.10.0

* Wed Jan 03 2007 Andrey Rahmatullin <wrar@altlinux.ru> 1.09.00-alt1
- 1.09.00

* Fri Dec 08 2006 Andrey Rahmatullin <wrar@altlinux.ru> 1.08.00-alt4
- fix x86_64 build (damir@)

* Tue Dec 05 2006 Andrey Rahmatullin <wrar@altlinux.ru> 1.08.00-alt3
- package C++ bindings separately

* Thu Nov 23 2006 Andrey Rahmatullin <wrar@altlinux.ru> 1.08.00-alt2
- fix requires for devel subpackage according to 
  `xmlrpc-c-config client --libs' output

* Thu Nov 23 2006 Andrey Rahmatullin <wrar@altlinux.ru> 1.08.00-alt1
- 1.08.00

* Wed Aug 23 2006 Andrey Rahmatullin <wrar@altlinux.ru> 1.06.02-alt0.3
- Sisyphus build

* Sun Aug 13 2006 Damir Shayhutdinov <damir@altlinux.ru> 1.06.02-alt0.2
- Use automake for building.

* Mon Aug 07 2006 Andrey Rahmatullin <wrar@altlinux.ru> 1.06.02-alt0.1
- initial build