diff options
Diffstat (limited to 'community-staging/pion-net')
-rw-r--r-- | community-staging/pion-net/PKGBUILD | 47 | ||||
-rw-r--r-- | community-staging/pion-net/boost_1.50_support.diff | 223 | ||||
-rw-r--r-- | community-staging/pion-net/gcc_4.7_fix.diff | 12 |
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()); + } + } |