[pion-net/f18: 3/3] fix patches to build with new boost

jvcelak jvcelak at fedoraproject.org
Thu Aug 16 13:44:48 UTC 2012


commit f1179795c4f6d237e02ba30f7bbd980c52d56384
Author: Jan Vcelak <jvcelak at redhat.com>
Date:   Tue Aug 14 10:31:45 2012 +0200

    fix patches to build with new boost

 pion-net-boost-linking.patch   |   63 ++++++++++++++++++++++++++++++++++++++++
 pion-net-boost-time-utc.patch  |   21 +++++++++++++
 pion-net-cflags.patch          |   16 ++++------
 pion-net-log4cpp-headers.patch |   16 ++++++++++
 pion-net-pkgconfig.patch       |    2 +-
 pion-net.spec                  |   51 ++++++++++++++++----------------
 6 files changed, 132 insertions(+), 37 deletions(-)
---
diff --git a/pion-net-boost-linking.patch b/pion-net-boost-linking.patch
new file mode 100644
index 0000000..e8de2f6
--- /dev/null
+++ b/pion-net-boost-linking.patch
@@ -0,0 +1,63 @@
+Reorder libraries detection, link boost-system to boost-thread.
+
+Author: Jan Vcelak <jvcelak at redhat.com>
+
+--- a/common/build/pion-boost.inc
++++ b/common/build/pion-boost.inc
+@@ -52,41 +52,41 @@
+ AC_SUBST(BOOST_DATE_TIME_LIB)
+ 
+ 
+-# Check for Boost Thread library
+-BOOST_TRY_LIB=thread
++# Check for Boost System library
++BOOST_TRY_LIB=system
+ BOOST_TRY_LINK="boost_${BOOST_TRY_LIB}${BOOST_LIB_EXTENSION}"
+ LIBS_SAVED="$LIBS"
+-LIBS="$LIBS_SAVED -l${BOOST_TRY_LINK} ${BOOST_DATE_TIME_LIB}"
++LIBS="$LIBS_SAVED -l${BOOST_TRY_LINK}"
+ AC_MSG_CHECKING([for boost::${BOOST_TRY_LIB} library])
+-AC_TRY_LINK([#include <boost/thread/thread.hpp>
+-	#include <boost/thread/condition.hpp>],
+-	[ boost::thread current_thread; return 0; ],
++AC_TRY_LINK([#include <boost/system/error_code.hpp>],
++	[ boost::system::error_code error_code; std::string message(error_code.message()); return 0; ],
+ 	[ AC_MSG_RESULT(ok)
+-	  BOOST_THREAD_LIB="-l${BOOST_TRY_LINK}"
++	  BOOST_SYSTEM_LIB="-l${BOOST_TRY_LINK}"
+ 	],
+ 	[ AC_MSG_RESULT(not found)
+ 	  AC_MSG_ERROR(Unable to link with the boost::${BOOST_TRY_LIB} library)
+ 	])
+ LIBS="$LIBS_SAVED"
+-AC_SUBST(BOOST_THREAD_LIB)
++AC_SUBST(BOOST_SYSTEM_LIB)
+ 
+ 
+-# Check for Boost System library
+-BOOST_TRY_LIB=system
++# Check for Boost Thread library
++BOOST_TRY_LIB=thread
+ BOOST_TRY_LINK="boost_${BOOST_TRY_LIB}${BOOST_LIB_EXTENSION}"
+ LIBS_SAVED="$LIBS"
+-LIBS="$LIBS_SAVED -l${BOOST_TRY_LINK}"
++LIBS="$LIBS_SAVED -l${BOOST_TRY_LINK} ${BOOST_DATE_TIME_LIB} ${BOOST_SYSTEM_LIB}"
+ AC_MSG_CHECKING([for boost::${BOOST_TRY_LIB} library])
+-AC_TRY_LINK([#include <boost/system/error_code.hpp>],
+-	[ boost::system::error_code error_code; std::string message(error_code.message()); return 0; ],
++AC_TRY_LINK([#include <boost/thread/thread.hpp>
++	#include <boost/thread/condition.hpp>],
++	[ boost::thread current_thread; return 0; ],
+ 	[ AC_MSG_RESULT(ok)
+-	  BOOST_SYSTEM_LIB="-l${BOOST_TRY_LINK}"
++	  BOOST_THREAD_LIB="-l${BOOST_TRY_LINK}"
+ 	],
+ 	[ AC_MSG_RESULT(not found)
+ 	  AC_MSG_ERROR(Unable to link with the boost::${BOOST_TRY_LIB} library)
+ 	])
+ LIBS="$LIBS_SAVED"
+-AC_SUBST(BOOST_SYSTEM_LIB)
++AC_SUBST(BOOST_THREAD_LIB)
+ 
+ 
+ # Check for Boost Filesystem library
diff --git a/pion-net-boost-time-utc.patch b/pion-net-boost-time-utc.patch
new file mode 100644
index 0000000..06320e4
--- /dev/null
+++ b/pion-net-boost-time-utc.patch
@@ -0,0 +1,21 @@
+Workaround. TIME_UTC is defined by new glibc (C11 standard).
+
+Upstream: https://svn.boost.org/trac/boost/ticket/6940
+
+Author: Jan Vcelak <jvcelak at redhat.com>
+
+diff --git a/common/src/PionScheduler.cpp b/common/src/PionScheduler.cpp
+--- a/common/src/PionScheduler.cpp
++++ b/common/src/PionScheduler.cpp
+@@ -102,7 +102,11 @@ boost::xtime PionScheduler::getWakeupTime(boost::uint32_t sleep_sec,
+ 										  boost::uint32_t sleep_nsec)
+ {
+ 	boost::xtime wakeup_time;
++#ifdef TIME_UTC
++	boost::xtime_get(&wakeup_time, TIME_UTC);
++#else
+ 	boost::xtime_get(&wakeup_time, boost::TIME_UTC);
++#endif
+ 	wakeup_time.sec += sleep_sec;
+ 	wakeup_time.nsec += sleep_nsec;
+ 	if (static_cast<boost::uint32_t>(wakeup_time.nsec) >= NSEC_IN_SECOND) {
diff --git a/pion-net-cflags.patch b/pion-net-cflags.patch
index 5b1186b..4371f84 100644
--- a/pion-net-cflags.patch
+++ b/pion-net-cflags.patch
@@ -1,24 +1,20 @@
-Fix automake not to replace Fedora compiler flags.
+Fix configure.in not to replace Fedora compiler flags.
 
 Author: Jan Vcelak <jvcelak at redhat.com>
 
-diff -u a/common/build/pion-setup.inc b/common/build/pion-setup.inc
+diff --git a/common/build/pion-setup.inc b/common/build/pion-setup.inc
 --- a/common/build/pion-setup.inc
 +++ b/common/build/pion-setup.inc
-@@ -86,9 +86,9 @@ case "$build_os" in
+@@ -86,7 +86,7 @@ case "$build_os" in
  	# Other (Linux): GCC compiler
  	CPPFLAGS="$CPPFLAGS -pthread -D_REENTRANT"
  	LDFLAGS="$LDFLAGS -pthread -Wl,-E"
 -	PION_OPT_FLAGS="-O2 -ggdb -Wall -Wno-strict-aliasing -DNDEBUG"
--	PION_DEBUG_FLAGS="-O0 -ggdb -Wall -Wno-strict-aliasing -fkeep-inline-functions"
--	PION_EXTERNAL_LIBS="-ldl -licui18n -licuuc -licudata"
 +	PION_OPT_FLAGS="-Wall -Wno-strict-aliasing -DNDEBUG"
-+	PION_DEBUG_FLAGS="-O0 -Wall -Wno-strict-aliasing -fkeep-inline-functions"
-+	PION_EXTERNAL_LIBS=""
+ 	PION_DEBUG_FLAGS="-O0 -ggdb -Wall -Wno-strict-aliasing -fkeep-inline-functions"
+ 	PION_EXTERNAL_LIBS="-ldl -licui18n -licuuc -licudata"
  	;;
- esac
- 
-diff -u a/configure.ac b/configure.ac
+diff --git a/configure.ac b/configure.ac
 --- a/configure.ac
 +++ b/configure.ac
 @@ -23,10 +23,8 @@ DX_DOXYGEN_FEATURE(ON)
diff --git a/pion-net-log4cpp-headers.patch b/pion-net-log4cpp-headers.patch
new file mode 100644
index 0000000..bfc4269
--- /dev/null
+++ b/pion-net-log4cpp-headers.patch
@@ -0,0 +1,16 @@
+Add missing header file for log4cpp.
+
+Author: Jan Vcelak <jvcelak at redhat.com>
+
+diff --git a/common/include/pion/PionLogger.hpp b/common/include/pion/PionLogger.hpp
+index 4fce9ee..532c724 100644
+--- a/common/include/pion/PionLogger.hpp
++++ b/common/include/pion/PionLogger.hpp
+@@ -153,6 +153,7 @@
+ 	#include <log4cpp/BasicLayout.hh>
+ 	#include <log4cpp/OstreamAppender.hh>
+ 	#include <log4cpp/AppenderSkeleton.hh>
++	#include <log4cpp/PropertyConfigurator.hh>
+ 
+ 	namespace pion {
+ 		typedef log4cpp::Category*	PionLogger;
diff --git a/pion-net-pkgconfig.patch b/pion-net-pkgconfig.patch
index 640fc62..618534e 100644
--- a/pion-net-pkgconfig.patch
+++ b/pion-net-pkgconfig.patch
@@ -2,7 +2,7 @@ Remove linking of external libraries from pkg-config.
 
 Author: Jan Vcelak <jvcelak at redhat.com>
 
-diff -u a/pion-net.pc.in b/pion-net.pc.in
+diff --git a/pion-net.pc.in b/pion-net.pc.in
 --- a/pion-net.pc.in
 +++ b/pion-net.pc.in
 @@ -10,6 +10,6 @@ datadir=@datarootdir@
diff --git a/pion-net.spec b/pion-net.spec
index 734e337..e20e259 100644
--- a/pion-net.spec
+++ b/pion-net.spec
@@ -7,13 +7,16 @@ License:	Boost
 URL:		http://www.pion.org/projects/pion-network-library
 Source0:	http://www.pion.org/files/pion-net-%{version}.tar.bz2
 
-BuildRequires:	boost-devel >= 1.35.0, openssl-devel, log4cpp-devel
+BuildRequires:	boost-devel >= 1.35.0, openssl-devel, log4cpp-devel, zlib-devel, bzip2-devel, libicu-devel
 BuildRequires:	doxygen, autoconf, automake, libtool
 
-Patch0:		pion-net-boost-compatibility.patch
-Patch1:		pion-net-cflags.patch
-Patch2:		pion-net-pkgconfig.patch
-Patch3:		pion-net-gcc47-symbols-lookup.patch
+Patch0:		pion-net-cflags.patch
+Patch1:		pion-net-pkgconfig.patch
+Patch2:		pion-net-gcc47-symbols-lookup.patch
+Patch3:		pion-net-boost-linking.patch
+Patch4:		pion-net-log4cpp-headers.patch
+Patch5:		pion-net-boost-compatibility.patch
+Patch6:		pion-net-boost-time-utc.patch
 
 %description
 Pion Network Library is a C++ framework for building lightweight HTTP
@@ -22,7 +25,7 @@ interfaces.
 %package	devel
 Summary:	Development files for pion-net
 Requires:	%{name}%{?_isa} = %{version}-%{release}
-Requires:	boost-devel >= 1.35.0, openssl-devel, log4cpp-devel
+Requires:	boost-devel >= 1.35.0, openssl-devel, log4cpp-devel, zlib-devel, bzip2-devel, libicu-devel
 
 %description devel
 This package contains the pkgconfig, header files, and libraries needed to
@@ -38,25 +41,22 @@ This package contains Doxygen HTML documentation for pion-net library.
 
 %prep
 %setup -q
-%patch0 -p1
-%patch1 -p1
-%patch2 -p1
-%patch3 -p1
+for patch in %patches; do
+	echo "Applying $patch" >&2
+	%__patch %_default_patch_flags --fuzz=%_default_patch_fuzz -p1 -i $patch
+done
 
 
 %build
 
-# fix build on Fedora 18
-export LD_FLAGS="%{__global_ldflags} -lboost_system-mt"
-
 ./autogen.sh
 %configure \
+	--disable-static \
+	--with-pic \
 	--with-plugins=%{_libdir}/pion/plugins \
 	--with-boost-extension=-mt \
-	--with-pic \
-	--disable-static \
-	--without-bzlib \
-	--without-zlib \
+	--with-zlib \
+	--with-bzlib \
 	--with-openssl \
 	--with-log4cpp
 
@@ -66,7 +66,6 @@ make %{?_smp_mflags}
 make doxygen-clean
 make doxygen-run
 
-
 %install
 make install DESTDIR=%{buildroot}
 
@@ -79,8 +78,8 @@ rm -f %{buildroot}%{_libdir}/*.la
 rm -f %{buildroot}%{_libdir}/pion/plugins/*.la
 
 # install documentation
-install -d -m 0755 %{buildroot}%{_docdir}/pion-net-doc-%{version}
-cp -arv net/doc/html %{buildroot}%{_docdir}/pion-net-doc-%{version}
+install -d -m 0755 %{buildroot}%{_docdir}/pion-net-%{version}
+cp -arv net/doc/html %{buildroot}%{_docdir}/pion-net-%{version}
 
 
 %check
@@ -97,25 +96,25 @@ make check
 %doc AUTHORS COPYING NEWS TODO
 %dir %{_libdir}/pion
 %dir %{_libdir}/pion/plugins
-%{_libdir}/libpion-common-*.so
-%{_libdir}/libpion-net-*.so
+%{_libdir}/libpion-*.so
 %{_libdir}/pion/plugins/*.so
+%exclude %{_docdir}/pion-net-%{version}/html
 
 
 %files devel
 %{_includedir}/pion/
-%{_libdir}/pkgconfig/pion-net.pc
+%{_libdir}/pkgconfig/*.pc
 %{_libdir}/libpion-common.so
 %{_libdir}/libpion-net.so
 
 
 %files doc
-%doc %{_docdir}/pion-net-doc-%{version}/
+%doc %{_docdir}/pion-net-%{version}/html
 
 
 %changelog
-* Mon Aug 13 2012 Jan Vcelak <jvcelak at redhat.com> 4.0.9-3
-- rebuild with new boost
+* Thu Aug 16 2012 Jan Vcelak <jvcelak at redhat.com> 4.0.9-3
+- rebuild with new boost library
 
 * Tue Feb 28 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 4.0.9-2
 - Rebuilt for c++ ABI breakage


More information about the scm-commits mailing list