Tags 713663 +patch
Thanks

I read the error message and noticed that the debian fatrat package appears to be dynamically linked. So per the error message I defined BOOST_ASIO_DYN_LINK. I also had to fix a load of other errors. The attatched patch makes the package build, I have not tested it beyond that and it is probablly a good idea to get it checked over by someone who actually understands the code.

I have uploaded to raspbian, I have no intent to NMU in Debian
diff -Nru fatrat-1.1.3/debian/changelog fatrat-1.1.3/debian/changelog
--- fatrat-1.1.3/debian/changelog       2012-05-19 21:25:41.000000000 +0000
+++ fatrat-1.1.3/debian/changelog       2014-02-16 03:03:02.000000000 +0000
@@ -1,3 +1,11 @@
+fatrat (1.1.3-5+rpi1) jessie-staging; urgency=medium
+
+  * Define BOOST_ASIO_DYN_LINK to fix build failure. (Closes: 713663)
+  * Fix various other build failures that are presumablly
+    caused by libtorrent API changes.
+
+ -- Peter Michael Green <plugw...@raspbian.org>  Sun, 16 Feb 2014 00:59:42 
+0000
+
 fatrat (1.1.3-5) unstable; urgency=low
 
   * fix_ftbfs_gcc47.patch: fix ftbfs also on kfreebsd. Thanks to
diff -Nru fatrat-1.1.3/debian/patches/define-BOOST_ASIO_DYN_LINK 
fatrat-1.1.3/debian/patches/define-BOOST_ASIO_DYN_LINK
--- fatrat-1.1.3/debian/patches/define-BOOST_ASIO_DYN_LINK      1970-01-01 
00:00:00.000000000 +0000
+++ fatrat-1.1.3/debian/patches/define-BOOST_ASIO_DYN_LINK      2014-02-16 
03:09:52.000000000 +0000
@@ -0,0 +1,73 @@
+Description: Define BOOST_ASIO_DYN_LINK to fix FTBFS.
+Author: Peter Michael Green <plugw...@raspbian.org>
+
+Index: fatrat-1.1.3/src/tools/CreateTorrentDlg.h
+===================================================================
+--- fatrat-1.1.3.orig/src/tools/CreateTorrentDlg.h     2014-02-16 
01:02:40.000000000 +0000
++++ fatrat-1.1.3/src/tools/CreateTorrentDlg.h  2014-02-16 01:02:40.000000000 
+0000
+@@ -32,6 +32,7 @@
+ #include <QPair>
+ #include <QThread>
+ #include "ui_CreateTorrentDlg.h"
++#define BOOST_ASIO_DYN_LINK
+ #include <libtorrent/create_torrent.hpp>
+ 
+ class HasherThread;
+Index: fatrat-1.1.3/src/engines/TorrentDownload.h
+===================================================================
+--- fatrat-1.1.3.orig/src/engines/TorrentDownload.h    2014-02-16 
01:06:03.000000000 +0000
++++ fatrat-1.1.3/src/engines/TorrentDownload.h 2014-02-16 01:08:38.000000000 
+0000
+@@ -42,6 +42,7 @@
+ #include <QTemporaryFile>
+ #include <QRegExp>
+ #include <vector>
++#define BOOST_ASIO_DYN_LINK
+ #include <libtorrent/session.hpp>
+ #include <libtorrent/torrent_handle.hpp>
+ #include "Proxy.h"
+Index: fatrat-1.1.3/src/engines/TorrentIPFilter.h
+===================================================================
+--- fatrat-1.1.3.orig/src/engines/TorrentIPFilter.h    2010-09-06 
09:43:46.000000000 +0000
++++ fatrat-1.1.3/src/engines/TorrentIPFilter.h 2014-02-16 02:11:29.000000000 
+0000
+@@ -28,6 +28,7 @@
+ #ifndef TORRENTIPFILTER_H
+ #define TORRENTIPFILTER_H
+ #include <QString>
++#define BOOST_ASIO_DYN_LINK
+ #include <libtorrent/ip_filter.hpp>
+ 
+ bool loadIPFilter(QString textFile, libtorrent::ip_filter* filter);
+Index: fatrat-1.1.3/src/engines/TorrentPiecesModel.h
+===================================================================
+--- fatrat-1.1.3.orig/src/engines/TorrentPiecesModel.h 2014-02-16 
02:19:36.000000000 +0000
++++ fatrat-1.1.3/src/engines/TorrentPiecesModel.h      2014-02-16 
02:19:54.000000000 +0000
+@@ -31,6 +31,7 @@
+ #include <QItemDelegate>
+ #include <vector>
+ #include <QStringList>
++#define BOOST_ASIO_DYN_LINK
+ #include <libtorrent/session.hpp>
+ 
+ class TorrentDownload;
+Index: fatrat-1.1.3/src/engines/TorrentProgressWidget.h
+===================================================================
+--- fatrat-1.1.3.orig/src/engines/TorrentProgressWidget.h      2010-09-06 
09:43:46.000000000 +0000
++++ fatrat-1.1.3/src/engines/TorrentProgressWidget.h   2014-02-16 
02:21:00.000000000 +0000
+@@ -32,6 +32,7 @@
+ #include <QPaintEvent>
+ #include <cmath>
+ #include <cstring>
++#define BOOST_ASIO_DYN_LINK
+ #include <libtorrent/bitfield.hpp>
+ 
+ class TorrentProgressWidget : public QWidget
+--- fatrat-1.1.3.orig/src/engines/TorrentFilesModel.h
++++ fatrat-1.1.3/src/engines/TorrentFilesModel.h
+@@ -33,6 +33,7 @@ respects for all of the code used other
+ #include <QStringList>
+ #include <QItemDelegate>
+ #include <vector>
++#define BOOST_ASIO_DYN_LINK
+ #include <libtorrent/session.hpp>
+ #include <libtorrent/bitfield.hpp>
+ 
diff -Nru fatrat-1.1.3/debian/patches/series fatrat-1.1.3/debian/patches/series
--- fatrat-1.1.3/debian/patches/series  2012-05-19 21:25:41.000000000 +0000
+++ fatrat-1.1.3/debian/patches/series  2014-02-16 03:06:18.000000000 +0000
@@ -1,3 +1,5 @@
 define_boost_fs_v2.patch
 fix_ftbfs_gold_linker.patch
 fix_ftbfs_gcc47.patch
+define-BOOST_ASIO_DYN_LINK
+various-build-fixes.patch
diff -Nru fatrat-1.1.3/debian/patches/various-build-fixes.patch 
fatrat-1.1.3/debian/patches/various-build-fixes.patch
--- fatrat-1.1.3/debian/patches/various-build-fixes.patch       1970-01-01 
00:00:00.000000000 +0000
+++ fatrat-1.1.3/debian/patches/various-build-fixes.patch       2014-02-16 
03:11:50.000000000 +0000
@@ -0,0 +1,145 @@
+Description: Fix a variety of build failures that are presumablly related to 
API changes in libtorrent
+Author: Peter Michael Green <plugw...@raspbian.org>
+Bug-Debian: http://bugs.debian.org/713663
+
+--- fatrat-1.1.3.orig/src/engines/TorrentDetails.cpp
++++ fatrat-1.1.3/src/engines/TorrentDetails.cpp
+@@ -38,7 +38,7 @@ respects for all of the code used other
+ #include <QSettings>
+ #include <boost/date_time/posix_time/posix_time.hpp>
+ #include <libtorrent/magnet_uri.hpp>
+-
++#include <libtorrent/peer_info.hpp>
+ 
+ TorrentDetails::TorrentDetails(QWidget* me, TorrentDownload* obj)
+       : m_download(obj), m_bFilled(false)
+@@ -121,7 +121,7 @@ void TorrentDetails::openFile()
+       
+       int i = m_selFiles[0];
+       
+-      QString relative = 
QString::fromUtf8(m_download->m_info->file_at(i).path.string().c_str());
++      QString relative = 
QString::fromUtf8(m_download->m_info->file_at(i).path.c_str());
+       QString path = m_download->dataPath(false);
+       
+       if(!path.endsWith('/'))
+@@ -182,10 +182,10 @@ void TorrentDetails::fill()
+       {
+               m_bFilled = true;
+               
+-              boost::optional<boost::posix_time::ptime> time = 
m_download->m_info->creation_date();
++              boost::optional<time_t> time = 
m_download->m_info->creation_date();
+               if(time)
+               {
+-                      std::string created = 
boost::posix_time::to_simple_string(time.get());
++                      std::string created = 
boost::posix_time::to_simple_string(boost::posix_time::from_time_t(time.get()));
+                       lineCreationDate->setText(created.c_str());
+               }
+               linePieceLength->setText( QString("%1 
kB").arg(m_download->m_info->piece_length()/1024.f) );
+--- fatrat-1.1.3.orig/src/engines/TorrentDownload.cpp
++++ fatrat-1.1.3/src/engines/TorrentDownload.cpp
+@@ -56,6 +56,7 @@ respects for all of the code used other
+ #include <QVector>
+ #include <QLabel>
+ #include <QtDebug>
++//#include <boost/filesystem.hpp>
+ 
+ #if (!defined(NDEBUG) && !defined(DEBUG))
+ #     error Define NDEBUG or DEBUG!
+@@ -134,7 +135,7 @@ int TorrentDownload::acceptable(QString
+ 
+ void TorrentDownload::globalInit()
+ {
+-      boost::filesystem::path::default_name_check(boost::filesystem::native);
++      
//boost::filesystem::path::default_name_check(boost::filesystem::native);
+       QString ua = getSettingsValue("torrent/ua").toString();
+       short s1 = 0, s2 = 0, s3 = 0, s4 = 0;
+       QRegExp reVersion("(\\d)\\.(\\d)\\.(\\d)\\.?(\\d)?");
+@@ -317,7 +318,7 @@ void TorrentDownload::applySettings()
+       
+       QByteArray external_ip = 
getSettingsValue("torrent/external_ip").toString().toUtf8();
+       if(!external_ip.isEmpty())
+-              settings.announce_ip = 
libtorrent::address::from_string(external_ip.constData());
++              settings.announce_ip = external_ip.constData();
+       
+       m_session->set_settings(settings);
+       
+@@ -499,7 +500,7 @@ void TorrentDownload::init(QString sourc
+                               
+                               libtorrent::add_torrent_params params;
+                               QByteArray path = source.toUtf8();
+-                              m_info = new 
libtorrent::torrent_info(boost::filesystem::path( path.constData() ));
++                              m_info = new libtorrent::torrent_info( 
path.constData() );
+                               
+                               params.ti = m_info;
+                               path = target.toUtf8();
+@@ -861,7 +862,7 @@ void TorrentDownload::load(const QDomNod
+                       return;
+               }
+               
+-              m_info = new libtorrent::torrent_info(boost::filesystem::path( 
file.constData() ));
++              m_info = new libtorrent::torrent_info(file.constData() );
+               
+               torrent_resume = QByteArray::fromBase64(getXMLProperty(map, 
"torrent_resume").toUtf8());
+               
+--- fatrat-1.1.3.orig/src/engines/TorrentFilesModel.cpp
++++ fatrat-1.1.3/src/engines/TorrentFilesModel.cpp
+@@ -31,6 +31,7 @@ respects for all of the code used other
+ #include "fatrat.h"
+ #include <QPainter>
+ #include <QtDebug>
++#include <libtorrent/file_storage.hpp>
+ 
+ TorrentFilesModel::TorrentFilesModel(QObject* parent, TorrentDownload* d)
+       : QAbstractListModel(parent), m_pieces(0), m_download(d)
+@@ -77,7 +78,7 @@ QVariant TorrentFilesModel::data(const Q
+               {
+                       case 0:
+                       {
+-                              QString name = 
QString::fromUtf8(m_files[i].path.string().c_str());
++                              QString name = 
QString::fromUtf8(m_files[i].path.c_str());
+                               int p = name.indexOf('/');
+                               
+                               if(p != -1)
+@@ -117,7 +118,7 @@ void TorrentFilesModel::fill()
+ {
+       for(libtorrent::torrent_info::file_iterator 
it=m_download->m_info->begin_files();it!=m_download->m_info->end_files();it++)
+       {
+-              m_files << *it;
++              m_files << m_download->m_info->files().at(it);
+       }
+ }
+ 
+--- fatrat-1.1.3.orig/src/engines/TorrentOptsWidget.cpp
++++ fatrat-1.1.3/src/engines/TorrentOptsWidget.cpp
+@@ -96,7 +96,7 @@ void TorrentOptsWidget::load()
+               it != m_download->m_info->end_files();
+               it++)
+       {
+-              QStringList elems = 
QString::fromUtf8(it->path.string().c_str()).split('/');
++              QStringList elems = 
QString::fromUtf8(m_download->m_info->files().at(it).path.c_str()).split('/');
+               //QString name = elems.takeLast();
+               
+               QTreeWidgetItem* item = 0;
+--- fatrat-1.1.3.orig/src/engines/TorrentPeersModel.h
++++ fatrat-1.1.3/src/engines/TorrentPeersModel.h
+@@ -30,6 +30,8 @@ respects for all of the code used other
+ #include <QAbstractListModel>
+ #include <QStringList>
+ #include <vector>
++#define BOOST_ASIO_DYN_LINK
++#include <libtorrent/peer_info.hpp>
+ #include <libtorrent/session.hpp>
+ 
+ class TorrentDownload;
+--- fatrat-1.1.3.orig/src/tools/CreateTorrentDlg.cpp
++++ fatrat-1.1.3/src/tools/CreateTorrentDlg.cpp
+@@ -261,7 +261,8 @@ void HasherThread::run()
+       try
+       {
+               libtorrent::file_pool fp;
+-              libtorrent::storage_interface* st = 
libtorrent::default_storage_constructor(m_info->files(), 0, m_baseDir.data(), 
fp);
++              //A test program in the libtorrent-rasterbar testsuite passes 
an empty vector as the last parameter so presumablly it's ok....
++              libtorrent::storage_interface* st = 
libtorrent::default_storage_constructor(m_info->files(), 0, m_baseDir.data(), 
fp,std::vector<boost::uint8_t>());
+               
+               for(int i=0;i<num && !m_bAbort;i++)
+               {

Reply via email to