summaryrefslogtreecommitdiff
path: root/community-staging/pion-net
diff options
context:
space:
mode:
Diffstat (limited to 'community-staging/pion-net')
-rw-r--r--community-staging/pion-net/PKGBUILD47
-rw-r--r--community-staging/pion-net/boost_1.50_support.diff223
-rw-r--r--community-staging/pion-net/gcc_4.7_fix.diff12
3 files changed, 282 insertions, 0 deletions
diff --git a/community-staging/pion-net/PKGBUILD b/community-staging/pion-net/PKGBUILD
new file mode 100644
index 000000000..5b223c9b1
--- /dev/null
+++ b/community-staging/pion-net/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 73445 2012-07-07 19:16:54Z stativ $
+# Maintainer: Lukas Jirkovsky <l.jirkovsky@gmail.com>
+# Contributor: David Watzke <david@watzke.cz>
+pkgname=pion-net
+pkgver=4.0.12
+pkgrel=2
+pkgdesc="A C++ development library for implementing lightweight HTTP interfaces"
+url="http://www.pion.org/projects/pion-network-library"
+arch=('i686' 'x86_64')
+license=('custom:Boost')
+depends=('boost-libs' 'openssl' 'log4cpp')
+makedepends=('boost')
+source=("http://www.pion.org/files/$pkgname-$pkgver.tar.bz2" \
+ gcc_4.7_fix.diff boost_1.50_support.diff)
+md5sums=('baf0b6a006660dc4051c824e4660cb9d'
+ 'd6c5314678709184e983b301cea11566'
+ 'a77d35019e21f3956771c6caa2f01fbf')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # override configure bug (forces debug even when nobody asked for it)
+ sed -i "s/ -ggdb//g" configure
+ # override Makefile bug
+ sed -i "/docs:/ s/doxygen-doc//" Makefile.in
+ # fix compilation with new versions of gcc
+ patch -Np1 < "$srcdir"/gcc_4.7_fix.diff || true
+ # fix build with boost 1.50 - port to filesystem v3
+ patch -Np1 < "$srcdir"/boost_1.50_support.diff || true
+
+ ./configure --prefix=/usr --disable-doxygen-doc
+
+ make
+}
+
+check() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make -k check
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ # install license
+ install -D -m0755 COPYING "$pkgdir/usr/share/licenses/$pkgname/Boost"
+}
diff --git a/community-staging/pion-net/boost_1.50_support.diff b/community-staging/pion-net/boost_1.50_support.diff
new file mode 100644
index 000000000..5143044f1
--- /dev/null
+++ b/community-staging/pion-net/boost_1.50_support.diff
@@ -0,0 +1,223 @@
+diff -rup pion-net-4.0.12/common/src/PionPlugin.cpp pion-net-4.0.12-new/common/src/PionPlugin.cpp
+--- pion-net-4.0.12/common/src/PionPlugin.cpp 2011-03-22 04:35:12.000000000 +0100
++++ pion-net-4.0.12-new/common/src/PionPlugin.cpp 2012-07-07 20:42:22.084660696 +0200
+@@ -58,7 +58,7 @@ void PionPlugin::addPluginDirectory(cons
+ if (! boost::filesystem::exists(plugin_path) )
+ throw DirectoryNotFoundException(dir);
+ boost::mutex::scoped_lock plugin_lock(m_plugin_mutex);
+- m_plugin_dirs.push_back(plugin_path.directory_string());
++ m_plugin_dirs.push_back(plugin_path.string());
+ }
+
+ void PionPlugin::resetPluginDirectories(void)
+@@ -204,7 +204,7 @@ bool PionPlugin::checkForFile(std::strin
+ try {
+ // is_regular may throw if directory is not readable
+ if (boost::filesystem::is_regular(test_path)) {
+- final_path = test_path.file_string();
++ final_path = test_path.string();
+ return true;
+ }
+ } catch (...) {}
+@@ -225,7 +225,7 @@ bool PionPlugin::checkForFile(std::strin
+ try {
+ // is_regular may throw if directory is not readable
+ if (boost::filesystem::is_regular(test_path)) {
+- final_path = test_path.file_string();
++ final_path = test_path.string();
+ return true;
+ }
+ } catch (...) {}
+@@ -291,7 +291,7 @@ void PionPlugin::getAllPluginNames(std::
+ for (boost::filesystem::directory_iterator it2(*it); it2 != end; ++it2) {
+ if (boost::filesystem::is_regular(*it2)) {
+ if (boost::filesystem::extension(it2->path()) == PionPlugin::PION_PLUGIN_EXTENSION) {
+- plugin_names.push_back(PionPlugin::getPluginName(it2->path().leaf()));
++ plugin_names.push_back(PionPlugin::getPluginName(it2->path().leaf().string()));
+ }
+ }
+ }
+@@ -309,11 +309,11 @@ void *PionPlugin::loadDynamicLibrary(con
+ #else
+ // convert into a full/absolute/complete path since dlopen()
+ // does not always search the CWD on some operating systems
+- const boost::filesystem::path full_path = boost::filesystem::complete(plugin_file);
++ const boost::filesystem::path full_path = boost::filesystem::absolute(plugin_file);
+ // NOTE: you must load shared libraries using RTLD_GLOBAL on Unix platforms
+ // due to a bug in GCC (or Boost::any, depending on which crowd you want to believe).
+ // see: http://svn.boost.org/trac/boost/ticket/754
+- return dlopen(full_path.file_string().c_str(), RTLD_LAZY | RTLD_GLOBAL);
++ return dlopen(full_path.string().c_str(), RTLD_LAZY | RTLD_GLOBAL);
+ #endif
+ }
+
+diff -rup pion-net-4.0.12/common/src/PionScheduler.cpp pion-net-4.0.12-new/common/src/PionScheduler.cpp
+--- pion-net-4.0.12/common/src/PionScheduler.cpp 2008-11-08 00:41:17.000000000 +0100
++++ pion-net-4.0.12-new/common/src/PionScheduler.cpp 2012-07-07 20:42:22.084660696 +0200
+@@ -102,7 +102,7 @@ boost::xtime PionScheduler::getWakeupTim
+ boost::uint32_t sleep_nsec)
+ {
+ boost::xtime wakeup_time;
+- boost::xtime_get(&wakeup_time, boost::TIME_UTC);
++ boost::xtime_get(&wakeup_time, boost::TIME_UTC_);
+ wakeup_time.sec += sleep_sec;
+ wakeup_time.nsec += sleep_nsec;
+ if (static_cast<boost::uint32_t>(wakeup_time.nsec) >= NSEC_IN_SECOND) {
+diff -rup pion-net-4.0.12/common/tests/PionPluginPtrTests.cpp pion-net-4.0.12-new/common/tests/PionPluginPtrTests.cpp
+--- pion-net-4.0.12/common/tests/PionPluginPtrTests.cpp 2009-10-13 18:20:43.000000000 +0200
++++ pion-net-4.0.12-new/common/tests/PionPluginPtrTests.cpp 2012-07-07 20:42:22.084660696 +0200
+@@ -230,7 +230,7 @@ BOOST_AUTO_TEST_SUITE_END()
+ class Sandbox_F {
+ public:
+ Sandbox_F() {
+- m_cwd = boost::filesystem::current_path().directory_string();
++ m_cwd = boost::filesystem::current_path().string();
+ boost::filesystem::remove_all("sandbox");
+ BOOST_REQUIRE(boost::filesystem::create_directory("sandbox"));
+ BOOST_REQUIRE(boost::filesystem::create_directory("sandbox/dir1"));
+diff -rup pion-net-4.0.12/configure pion-net-4.0.12-new/configure
+--- pion-net-4.0.12/configure 2012-03-24 08:00:10.000000000 +0100
++++ pion-net-4.0.12-new/configure 2012-07-07 20:42:22.094660551 +0200
+@@ -22091,7 +22091,7 @@ fi
+
+
+ # AC_MSG_NOTICE(Boost home directory: $BOOST_HOME_DIR)
+-CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS -DBOOST_FILESYSTEM_VERSION=2"
++CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS -DBOOST_FILESYSTEM_VERSION=3"
+ LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+
+ # Check for Boost library extension
+@@ -22197,7 +22197,7 @@ LIBS="$LIBS_SAVED"
+ BOOST_TRY_LIB=thread
+ 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 -lboost_system -l${BOOST_TRY_LINK} ${BOOST_DATE_TIME_LIB}"
+ echo "$as_me:$LINENO: checking for boost::${BOOST_TRY_LIB} library" >&5
+ echo $ECHO_N "checking for boost::${BOOST_TRY_LIB} library... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+diff -rup pion-net-4.0.12/net/include/pion/net/TCPConnection.hpp pion-net-4.0.12-new/net/include/pion/net/TCPConnection.hpp
+--- pion-net-4.0.12/net/include/pion/net/TCPConnection.hpp 2012-01-12 17:30:03.000000000 +0100
++++ pion-net-4.0.12-new/net/include/pion/net/TCPConnection.hpp 2012-07-07 20:43:34.530273709 +0200
+@@ -26,6 +26,7 @@
+ #include <boost/array.hpp>
+ #include <boost/function.hpp>
+ #include <boost/function/function1.hpp>
++#include <boost/system/system_error.hpp>
+ #include <pion/PionConfig.hpp>
+ #include <string>
+
+diff -rup pion-net-4.0.12/net/services/FileService.cpp pion-net-4.0.12-new/net/services/FileService.cpp
+--- pion-net-4.0.12/net/services/FileService.cpp 2009-08-06 20:58:13.000000000 +0200
++++ pion-net-4.0.12-new/net/services/FileService.cpp 2012-07-07 20:42:22.097993836 +0200
+@@ -137,8 +137,8 @@ void FileService::operator()(HTTPRequest
+
+ // make sure that the requested file is within the configured directory
+ file_path.normalize();
+- std::string file_string = file_path.file_string();
+- if (file_string.find(m_directory.directory_string()) != 0) {
++ std::string file_string = file_path.string();
++ if (file_string.find(m_directory.string()) != 0) {
+ PION_LOG_WARN(m_logger, "Request for file outside of directory ("
+ << getResource() << "): " << relative_path);
+ static const std::string FORBIDDEN_HTML_START =
+@@ -319,7 +319,7 @@ void FileService::operator()(HTTPRequest
+ << getResource() << "): " << relative_path);
+
+ // determine the MIME type
+- response_file.setMimeType(findMIMEType( response_file.getFilePath().leaf() ));
++ response_file.setMimeType(findMIMEType( response_file.getFilePath().leaf().string() ));
+
+ // get the file_size and last_modified timestamp
+ response_file.update();
+@@ -597,7 +597,7 @@ void FileService::stop(void)
+ void FileService::scanDirectory(const boost::filesystem::path& dir_path)
+ {
+ PION_LOG_DEBUG(m_logger, "Scanning directory (" << getResource() << "): "
+- << dir_path.directory_string());
++ << dir_path.string());
+
+ // iterate through items in the directory
+ boost::filesystem::directory_iterator end_itr;
+@@ -614,8 +614,8 @@ void FileService::scanDirectory(const bo
+ // item is a regular file
+
+ // figure out relative path to the file
+- std::string file_path_string( itr->path().file_string() );
+- std::string relative_path( file_path_string.substr(m_directory.directory_string().size() + 1) );
++ std::string file_path_string( itr->path().string() );
++ std::string relative_path( file_path_string.substr(m_directory.string().size() + 1) );
+
+ // add item to cache (use placeholder if scan == 1)
+ addCacheEntry(relative_path, *itr, m_scan_setting == 1);
+@@ -628,7 +628,7 @@ FileService::addCacheEntry(const std::st
+ const boost::filesystem::path& file_path,
+ const bool placeholder)
+ {
+- DiskFile cache_entry(file_path, NULL, 0, 0, findMIMEType(file_path.leaf()));
++ DiskFile cache_entry(file_path, NULL, 0, 0, findMIMEType(file_path.leaf().string()));
+ if (! placeholder) {
+ cache_entry.update();
+ // only read the file if its size is <= max_cache_size
+@@ -636,7 +636,7 @@ FileService::addCacheEntry(const std::st
+ try { cache_entry.read(); }
+ catch (std::exception&) {
+ PION_LOG_ERROR(m_logger, "Unable to add file to cache: "
+- << file_path.file_string());
++ << file_path.string());
+ return std::make_pair(m_cache_map.end(), false);
+ }
+ }
+@@ -647,10 +647,10 @@ FileService::addCacheEntry(const std::st
+
+ if (add_entry_result.second) {
+ PION_LOG_DEBUG(m_logger, "Added file to cache: "
+- << file_path.file_string());
++ << file_path.string());
+ } else {
+ PION_LOG_ERROR(m_logger, "Unable to insert cache entry for file: "
+- << file_path.file_string());
++ << file_path.string());
+ }
+
+ return add_entry_result;
+@@ -713,7 +713,7 @@ void DiskFile::read(void)
+
+ // read the file into memory
+ if (!file_stream.is_open() || !file_stream.read(m_file_content.get(), m_file_size))
+- throw FileService::FileReadException(m_file_path.file_string());
++ throw FileService::FileReadException(m_file_path.string());
+ }
+
+ bool DiskFile::checkUpdated(void)
+@@ -751,7 +751,7 @@ DiskFileSender::DiskFileSender(DiskFile&
+ {
+ PION_LOG_DEBUG(m_logger, "Preparing to send file"
+ << (m_disk_file.hasFileContent() ? " (cached): " : ": ")
+- << m_disk_file.getFilePath().file_string());
++ << m_disk_file.getFilePath().string());
+
+ // set the Content-Type HTTP header using the file's MIME type
+ m_writer->getResponse().setContentType(m_disk_file.getMimeType());
+@@ -795,7 +795,7 @@ void DiskFileSender::send(void)
+ m_file_stream.open(m_disk_file.getFilePath(), std::ios::in | std::ios::binary);
+ if (! m_file_stream.is_open()) {
+ PION_LOG_ERROR(m_logger, "Unable to open file: "
+- << m_disk_file.getFilePath().file_string());
++ << m_disk_file.getFilePath().string());
+ return;
+ }
+ }
+@@ -811,10 +811,10 @@ void DiskFileSender::send(void)
+ if (! m_file_stream.read(m_content_buf.get(), m_file_bytes_to_send)) {
+ if (m_file_stream.gcount() > 0) {
+ PION_LOG_ERROR(m_logger, "File size inconsistency: "
+- << m_disk_file.getFilePath().file_string());
++ << m_disk_file.getFilePath().string());
+ } else {
+ PION_LOG_ERROR(m_logger, "Unable to read file: "
+- << m_disk_file.getFilePath().file_string());
++ << m_disk_file.getFilePath().string());
+ }
+ return;
+ }
diff --git a/community-staging/pion-net/gcc_4.7_fix.diff b/community-staging/pion-net/gcc_4.7_fix.diff
new file mode 100644
index 000000000..5c2ed3cfe
--- /dev/null
+++ b/community-staging/pion-net/gcc_4.7_fix.diff
@@ -0,0 +1,12 @@
+diff -rup pion-net-4.0.12/common/include/pion/PluginManager.hpp pion-net-4.0.12-new/common/include/pion/PluginManager.hpp
+--- pion-net-4.0.12/common/include/pion/PluginManager.hpp 2011-02-12 01:46:50.000000000 +0100
++++ pion-net-4.0.12-new/common/include/pion/PluginManager.hpp 2012-07-07 16:54:22.470284487 +0200
+@@ -420,7 +420,7 @@ inline void PluginManager<PLUGIN_TYPE>::
+ delete i->second.first;
+ }
+ }
+- erase(std::map<std::string, std::pair<PLUGIN_TYPE *, PionPluginPtr<PLUGIN_TYPE> > >::begin(),
++ this->erase(std::map<std::string, std::pair<PLUGIN_TYPE *, PionPluginPtr<PLUGIN_TYPE> > >::begin(),
+ std::map<std::string, std::pair<PLUGIN_TYPE *, PionPluginPtr<PLUGIN_TYPE> > >::end());
+ }
+ }