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++)
+ {