diff --git a/.gitignore b/.gitignore index 44a8ef9..615062a 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ transmission-2.04.tar.xz /transmission-2.76.tar.xz /transmission-2.80.tar.xz /transmission-2.81.tar.xz +/transmission-2.82.tar.xz diff --git a/sources b/sources index 14673b4..70b5ac1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -db1ad10ecff07150486dab2365ccb3a8 transmission-2.81.tar.xz +a5ef870c0410b12d10449c2d36fa4661 transmission-2.82.tar.xz diff --git a/transmission-2.82-changeset_14150.diff b/transmission-2.82-changeset_14150.diff new file mode 100644 index 0000000..a72e63d --- /dev/null +++ b/transmission-2.82-changeset_14150.diff @@ -0,0 +1,462 @@ +Index: /trunk/qt/README.txt +=================================================================== +--- /trunk/qt/README.txt (revision 14149) ++++ /trunk/qt/README.txt (revision 14150) +@@ -37,7 +37,7 @@ + BUILDING ON UNIX + +- 1. Prerequisites: Qt >= 4.6 and its development packages ++ 1. Prerequisites: Qt >= 5 and its development packages + 2. Build Transmission as normal +- 3. In the qt/ directory, type "qmake qtr.pro" or "qmake-qt4 qtr.pro" ++ 3. In the qt/ directory, type "qmake qtr.pro" or "qmake-qt5 qtr.pro" + 4. In the qt/ directory, type "make" + 5. In the qt/ directory, as root, type "INSTALL_ROOT=/usr make install" +Index: /trunk/qt/about.cc +=================================================================== +--- /trunk/qt/about.cc (revision 14149) ++++ /trunk/qt/about.cc (revision 14150) +@@ -38,5 +38,5 @@ + + l = new QLabel; +- l->setPixmap (QPixmap (QString::fromAscii (":/icons/transmission-48.png"))); ++ l->setPixmap (QPixmap (QString::fromUtf8 (":/icons/transmission-48.png"))); + l->setAlignment (Qt::AlignCenter); + v->addWidget (l); +@@ -45,5 +45,5 @@ + f.setWeight (QFont::Bold); + f.setPointSize (int (f.pointSize () * 1.2)); +- l = new QLabel (tr ("Transmission %1").arg (QString::fromAscii (LONG_VERSION_STRING))); ++ l = new QLabel (tr ("Transmission %1").arg (QString::fromUtf8 (LONG_VERSION_STRING))); + l->setAlignment (Qt::AlignCenter); + l->setFont (f); +@@ -52,5 +52,5 @@ + + l = new QLabel (tr ("A fast and easy BitTorrent client")); +- l->setStyleSheet (QString::fromAscii ("text-align: center")); ++ l->setStyleSheet (QString::fromUtf8 ("text-align: center")); + l->setAlignment (Qt::AlignCenter); + v->addWidget (l); +@@ -60,5 +60,5 @@ + v->addWidget (l); + +- l = new QLabel (QString::fromAscii ("http://www.transmissionbt.com/")); ++ l = new QLabel (QString::fromUtf8 ("http://www.transmissionbt.com/")); + l->setOpenExternalLinks (true); + l->setAlignment (Qt::AlignCenter); +@@ -90,5 +90,5 @@ + this, + tr ("Credits"), +- QString::fromAscii ("Jordan Lee (Backend; Daemon; GTK+; Qt)\n" ++ QString::fromUtf8 ("Jordan Lee (Backend; Daemon; GTK+; Qt)\n" + "Michell Livingston (OS X)\n")); + } +Index: /trunk/qt/add-data.cc +=================================================================== +--- /trunk/qt/add-data.cc (revision 14149) ++++ /trunk/qt/add-data.cc (revision 14150) +@@ -44,5 +44,5 @@ + else if( Utils::isHexHashcode( key ) ) + { +- magnet = QString::fromAscii("magnet:?xt=urn:btih:") + key; ++ magnet = QString::fromUtf8("magnet:?xt=urn:btih:") + key; + type = MAGNET; + } +Index: /trunk/qt/app.cc +=================================================================== +--- /trunk/qt/app.cc (revision 14149) ++++ /trunk/qt/app.cc (revision 14150) +@@ -46,7 +46,7 @@ + namespace + { +- const QString DBUS_SERVICE = QString::fromAscii ("com.transmissionbt.Transmission" ); +- const QString DBUS_OBJECT_PATH = QString::fromAscii ("/com/transmissionbt/Transmission"); +- const QString DBUS_INTERFACE = QString::fromAscii ("com.transmissionbt.Transmission" ); ++ const QString DBUS_SERVICE = QString::fromUtf8 ("com.transmissionbt.Transmission" ); ++ const QString DBUS_OBJECT_PATH = QString::fromUtf8 ("/com/transmissionbt/Transmission"); ++ const QString DBUS_INTERFACE = QString::fromUtf8 ("com.transmissionbt.Transmission" ); + + const char * MY_READABLE_NAME ("transmission-qt"); +@@ -90,5 +90,5 @@ + myLastFullUpdateTime (0) + { +- const QString MY_CONFIG_NAME = QString::fromAscii ("transmission"); ++ const QString MY_CONFIG_NAME = QString::fromUtf8 ("transmission"); + + setApplicationName (MY_CONFIG_NAME); +@@ -109,5 +109,5 @@ + sizes << 16 << 22 << 24 << 32 << 48 << 64 << 72 << 96 << 128 << 192 << 256; + foreach (int size, sizes) +- icon.addPixmap (QPixmap (QString::fromAscii (":/icons/transmission-%1.png").arg (size))); ++ icon.addPixmap (QPixmap (QString::fromUtf8 (":/icons/transmission-%1.png").arg (size))); + setWindowIcon (icon); + +@@ -465,13 +465,13 @@ + MyApp :: notify (const QString& title, const QString& body) const + { +- const QString dbusServiceName = QString::fromAscii ("org.freedesktop.Notifications"); +- const QString dbusInterfaceName = QString::fromAscii ("org.freedesktop.Notifications"); +- const QString dbusPath = QString::fromAscii ("/org/freedesktop/Notifications"); +- +- QDBusMessage m = QDBusMessage::createMethodCall (dbusServiceName, dbusPath, dbusInterfaceName, QString::fromAscii ("Notify")); ++ const QString dbusServiceName = QString::fromUtf8 ("org.freedesktop.Notifications"); ++ const QString dbusInterfaceName = QString::fromUtf8 ("org.freedesktop.Notifications"); ++ const QString dbusPath = QString::fromUtf8 ("/org/freedesktop/Notifications"); ++ ++ QDBusMessage m = QDBusMessage::createMethodCall (dbusServiceName, dbusPath, dbusInterfaceName, QString::fromUtf8 ("Notify")); + QList args; +- args.append (QString::fromAscii ("Transmission")); // app_name ++ args.append (QString::fromUtf8 ("Transmission")); // app_name + args.append (0U); // replaces_id +- args.append (QString::fromAscii ("transmission")); // icon ++ args.append (QString::fromUtf8 ("transmission")); // icon + args.append (title); // summary + args.append (body); // body +@@ -511,5 +511,5 @@ + DBUS_OBJECT_PATH, + DBUS_INTERFACE, +- QString::fromAscii ("AddMetainfo")); ++ QString::fromUtf8 ("AddMetainfo")); + QList arguments; + AddData a (addme[i]); +Index: /trunk/qt/details.cc +=================================================================== +--- /trunk/qt/details.cc (revision 14149) ++++ /trunk/qt/details.cc (revision 14150) +@@ -868,5 +868,5 @@ + { + QString txt; +- switch (ch.toAscii ()) ++ switch (ch.unicode ()) + { + case 'O': txt = tr ("Optimistic unchoke"); break; +Index: /trunk/qt/favicon.cc +=================================================================== +--- /trunk/qt/favicon.cc (revision 14149) ++++ /trunk/qt/favicon.cc (revision 14150) +@@ -11,9 +11,9 @@ + */ + +-#include + #include + #include + #include + #include ++#include + + #include "favicon.h" +@@ -41,5 +41,5 @@ + Favicons :: getCacheDir( ) + { +- const QString base = QDesktopServices::storageLocation( QDesktopServices::CacheLocation ); ++ const QString base = QStandardPaths::writableLocation (QStandardPaths::CacheLocation); + return QDir( base ).absoluteFilePath( "favicons" ); + } +Index: /trunk/qt/file-tree.cc +=================================================================== +--- /trunk/qt/file-tree.cc (revision 14149) ++++ /trunk/qt/file-tree.cc (revision 14150) +@@ -437,5 +437,4 @@ + { + QString oldpath; +- QModelIndex walk = index; + FileTreeItem * item = itemFromIndex (index); + +@@ -576,7 +575,7 @@ + FileTreeModel :: clear () + { ++ beginResetModel (); + clearSubtree (QModelIndex()); +- +- reset (); ++ endResetModel (); + } + +@@ -614,5 +613,5 @@ + bool added = false; + FileTreeItem * item; +- QStringList tokens = filename.split (QChar::fromAscii('/')); ++ QStringList tokens = filename.split (QChar::fromLatin1('/')); + + item = findItemForFileIndex (fileIndex); +@@ -887,5 +886,5 @@ + { + setColumnHidden (i, (isetResizeMode(i, QHeaderView::Interactive); ++ header()->setSectionResizeMode(i, QHeaderView::Interactive); + } + +Index: /trunk/qt/filterbar.cc +=================================================================== +--- /trunk/qt/filterbar.cc (revision 14149) ++++ /trunk/qt/filterbar.cc (revision 14150) +@@ -11,4 +11,10 @@ + */ + ++#include ++#include ++#include ++#include ++#include ++#include + #include + #include +Index: /trunk/qt/freespace-label.cc +=================================================================== +--- /trunk/qt/freespace-label.cc (revision 14149) ++++ /trunk/qt/freespace-label.cc (revision 14150) +@@ -74,4 +74,6 @@ + FreespaceLabel :: onSessionExecuted (int64_t tag, const QString& result, struct tr_variant * arguments) + { ++ Q_UNUSED (result); ++ + if (tag != myTag) + return; +Index: /trunk/qt/freespace-label.h +=================================================================== +--- /trunk/qt/freespace-label.h (revision 14149) ++++ /trunk/qt/freespace-label.h (revision 14150) +@@ -17,5 +17,5 @@ + #include + +-#include ++#include + + class Session; +Index: /trunk/qt/mainwin.cc +=================================================================== +--- /trunk/qt/mainwin.cc (revision 14149) ++++ /trunk/qt/mainwin.cc (revision 14150) +@@ -15,4 +15,8 @@ + + #include ++#include ++#include ++#include ++#include + + #include +Index: /trunk/qt/make-dialog.cc +=================================================================== +--- /trunk/qt/make-dialog.cc (revision 14149) ++++ /trunk/qt/make-dialog.cc (revision 14150) +@@ -22,4 +22,5 @@ + #include + #include ++#include + #include + #include +@@ -343,5 +344,5 @@ + QPushButton * b = new QPushButton; + b->setIcon( folderPixmap ); +- b->setStyleSheet( QString::fromAscii( "text-align: left; padding-left: 5; padding-right: 5" ) ); ++ b->setStyleSheet( QString::fromUtf8( "text-align: left; padding-left: 5; padding-right: 5" ) ); + myDestination = QDir::homePath(); + b->setText( myDestination ); +@@ -357,5 +358,5 @@ + myFolderButton->setIcon( folderPixmap ); + myFolderButton->setText( tr( "(None)" ) ); +- myFolderButton->setStyleSheet( QString::fromAscii( "text-align: left; padding-left: 5; padding-right: 5" ) ); ++ myFolderButton->setStyleSheet( QString::fromUtf8( "text-align: left; padding-left: 5; padding-right: 5" ) ); + connect( myFolderButton, SIGNAL(clicked(bool)), + this, SLOT(onFolderClicked(void)) ); +@@ -372,5 +373,5 @@ + myFileButton->setText( tr( "(None)" ) ); + myFileButton->setIcon( filePixmap ); +- myFileButton->setStyleSheet( QString::fromAscii( "text-align: left; padding-left: 5; padding-right: 5" ) ); ++ myFileButton->setStyleSheet( QString::fromUtf8( "text-align: left; padding-left: 5; padding-right: 5" ) ); + connect( myFileButton, SIGNAL(clicked(bool)), + this, SLOT(onFileClicked(void)) ); +@@ -385,5 +386,5 @@ + + hig->addWideControl( myTrackerEdit = new ShortPlainTextEdit ); +- const int height = fontMetrics().size( 0, QString::fromAscii("\n\n\n\n") ).height( ); ++ const int height = fontMetrics().size( 0, QString::fromUtf8("\n\n\n\n") ).height( ); + myTrackerEdit->setMinimumHeight( height ); + hig->addTallRow( tr( "&Trackers:" ), myTrackerEdit ); +Index: /trunk/qt/options.cc +=================================================================== +--- /trunk/qt/options.cc (revision 14149) ++++ /trunk/qt/options.cc (revision 14150) +@@ -125,5 +125,5 @@ + p = mySourceButton = new QPushButton; + p->setIcon (filePixmap); +- p->setStyleSheet (QString::fromAscii ("text-align: left; padding-left: 5; padding-right: 5")); ++ p->setStyleSheet (QString::fromUtf8 ("text-align: left; padding-left: 5; padding-right: 5")); + p->installEventFilter (this); + w = p; +@@ -140,5 +140,5 @@ + } + +- const int width = fontMetrics.size (0, QString::fromAscii ("This is a pretty long torrent filename indeed.torrent")).width (); ++ const int width = fontMetrics.size (0, QString::fromUtf8 ("This is a pretty long torrent filename indeed.torrent")).width (); + w->setMinimumWidth (width); + layout->addWidget (w, row, 1); +Index: /trunk/qt/prefs-dialog.cc +=================================================================== +--- /trunk/qt/prefs-dialog.cc (revision 14149) ++++ /trunk/qt/prefs-dialog.cc (revision 14150) +@@ -22,5 +22,4 @@ + #include + #include +-#include + #include + #include +@@ -136,5 +135,5 @@ + const int minutes( myPrefs.getInt( key ) ); + QTimeEdit * e = new QTimeEdit( ); +- e->setDisplayFormat( QString::fromAscii( "hh:mm" ) ); ++ e->setDisplayFormat( QString::fromUtf8( "hh:mm" ) ); + e->setProperty( PREF_KEY, key ); + e->setTime( QTime().addSecs( minutes * 60 ) ); +@@ -234,9 +233,9 @@ + h->setSpacing( HIG :: PAD ); + QLabel * label = new QLabel; +- label->setPixmap( QPixmap( QString::fromAscii( ":/icons/alt-limit-off.png" ) ) ); ++ label->setPixmap( QPixmap( QString::fromUtf8( ":/icons/alt-limit-off.png" ) ) ); + label->setAlignment( Qt::AlignLeft|Qt::AlignVCenter ); + h->addWidget( label ); + label = new QLabel( tr( "Alternative Speed Limits" ) ); +- label->setStyleSheet( QString::fromAscii( "font: bold" ) ); ++ label->setStyleSheet( QString::fromUtf8( "font: bold" ) ); + label->setAlignment( Qt::AlignLeft|Qt::AlignVCenter ); + h->addWidget( label ); +@@ -573,5 +572,5 @@ + b = myWatchButton = new QPushButton; + b->setIcon( folderPixmap ); +- b->setStyleSheet( QString::fromAscii( "text-align: left; padding-left: 5; padding-right: 5" ) ); ++ b->setStyleSheet( QString::fromUtf8( "text-align: left; padding-left: 5; padding-right: 5" ) ); + connect( b, SIGNAL(clicked(bool)), this, SLOT(onWatchClicked(void)) ); + hig->addRow( l, b ); +@@ -586,5 +585,5 @@ + b = myDestinationButton = new QPushButton; + b->setIcon( folderPixmap ); +- b->setStyleSheet( QString::fromAscii( "text-align: left; padding-left: 5; padding-right: 5" ) ); ++ b->setStyleSheet( QString::fromUtf8( "text-align: left; padding-left: 5; padding-right: 5" ) ); + connect( b, SIGNAL(clicked(bool)), this, SLOT(onDestinationClicked(void)) ); + hig->addRow( tr( "Save to &Location:" ), b ); +@@ -611,5 +610,5 @@ + b = myIncompleteButton = new QPushButton; + b->setIcon( folderPixmap ); +- b->setStyleSheet( QString::fromAscii( "text-align: left; padding-left: 5; padding-right: 5" ) ); ++ b->setStyleSheet( QString::fromUtf8( "text-align: left; padding-left: 5; padding-right: 5" ) ); + connect( b, SIGNAL(clicked(bool)), this, SLOT(onIncompleteClicked(void)) ); + hig->addRow( myIncompleteCheckbox, b ); +@@ -619,5 +618,5 @@ + b = myTorrentDoneScriptButton = new QPushButton; + b->setIcon( filePixmap ); +- b->setStyleSheet( QString::fromAscii( "text-align: left; padding-left: 5; padding-right: 5" ) ); ++ b->setStyleSheet( QString::fromUtf8( "text-align: left; padding-left: 5; padding-right: 5" ) ); + connect( b, SIGNAL(clicked(bool)), this, SLOT(onScriptClicked(void)) ); + hig->addRow( myTorrentDoneScriptCheckbox, b ); +Index: /trunk/qt/qtr.pro +=================================================================== +--- /trunk/qt/qtr.pro (revision 14149) ++++ /trunk/qt/qtr.pro (revision 14150) +@@ -2,5 +2,5 @@ + NAME = "Transmission" + DESCRIPTION = "Transmission: a fast, easy, and free BitTorrent client" +-VERSION = 2.00 ++VERSION = 2.81 + LICENSE = "GPL" + +@@ -12,6 +12,6 @@ + man.files = transmission-qt.1 + +-CONFIG += qt qdbus thread debug link_pkgconfig +-QT += network ++CONFIG += qt thread debug link_pkgconfig ++QT += network dbus widgets + PKGCONFIG = fontconfig libcurl openssl libevent + +Index: /trunk/qt/session.cc +=================================================================== +--- /trunk/qt/session.cc (revision 14149) ++++ /trunk/qt/session.cc (revision 14150) +@@ -691,9 +691,9 @@ + QNetworkRequest request; + request.setUrl (myUrl); +- request.setRawHeader ("User-Agent", QString (QCoreApplication::instance ()->applicationName () + "/" + LONG_VERSION_STRING).toAscii ()); ++ request.setRawHeader ("User-Agent", QString (QCoreApplication::instance ()->applicationName () + "/" + LONG_VERSION_STRING).toUtf8 ()); + request.setRawHeader ("Content-Type", "application/json; charset=UTF-8"); + + if (!mySessionId.isEmpty ()) +- request.setRawHeader (TR_RPC_SESSION_ID_HEADER, mySessionId.toAscii ()); ++ request.setRawHeader (TR_RPC_SESSION_ID_HEADER, mySessionId.toUtf8 ()); + + const QByteArray requestData (json); +Index: /trunk/qt/squeezelabel.h +=================================================================== +--- /trunk/qt/squeezelabel.h (revision 14149) ++++ /trunk/qt/squeezelabel.h (revision 14150) +@@ -43,5 +43,5 @@ + #define SQUEEZELABEL_H + +-#include ++#include + + class SqueezeLabel : public QLabel +Index: /trunk/qt/torrent-model.cc +=================================================================== +--- /trunk/qt/torrent-model.cc (revision 14149) ++++ /trunk/qt/torrent-model.cc (revision 14150) +@@ -23,9 +23,12 @@ + TorrentModel :: clear( ) + { ++ beginResetModel (); ++ + myIdToRow.clear( ); + myIdToTorrent.clear( ); + foreach( Torrent * tor, myTorrents ) delete tor; + myTorrents.clear( ); +- reset( ); ++ ++ endResetModel (); + } + +Index: /trunk/qt/utils.h +=================================================================== +--- /trunk/qt/utils.h (revision 14149) ++++ /trunk/qt/utils.h (revision 14150) +@@ -43,10 +43,10 @@ + /// + +- static bool isMagnetLink( const QString& s ) { return s.startsWith( QString::fromAscii( "magnet:?" ) ); } ++ static bool isMagnetLink( const QString& s ) { return s.startsWith( QString::fromUtf8( "magnet:?" ) ); } + + static bool isHexHashcode( const QString& s ) + { + if( s.length() != 40 ) return false; +- foreach( QChar ch, s ) if( !isxdigit( ch.toAscii() ) ) return false; ++ foreach( QChar ch, s ) if( !isxdigit( ch.unicode() ) ) return false; + return true; + } +@@ -54,7 +54,7 @@ + static bool isUriWithSupportedScheme( const QString& s ) + { +- static const QString ftp = QString::fromAscii( "ftp://" ); +- static const QString http = QString::fromAscii( "http://" ); +- static const QString https = QString::fromAscii( "https://" ); ++ static const QString ftp = QString::fromUtf8( "ftp://" ); ++ static const QString http = QString::fromUtf8( "http://" ); ++ static const QString https = QString::fromUtf8( "https://" ); + return s.startsWith(http) || s.startsWith(https) || s.startsWith(ftp); + } +Index: /trunk/qt/watchdir.cc +=================================================================== +--- /trunk/qt/watchdir.cc (revision 14149) ++++ /trunk/qt/watchdir.cc (revision 14150) +@@ -53,5 +53,5 @@ + if( err ) + ret = ERROR; +- else if( myModel.hasTorrent( QString::fromAscii( inf.hashString ) ) ) ++ else if( myModel.hasTorrent( QString::fromUtf8( inf.hashString ) ) ) + ret = DUPLICATE; + else +@@ -107,5 +107,5 @@ + // try to add any new files which end in .torrent + const QSet newFiles( files - myWatchDirFiles ); +- const QString torrentSuffix = QString::fromAscii( ".torrent" ); ++ const QString torrentSuffix = QString::fromUtf8( ".torrent" ); + foreach( QString name, newFiles ) { + if( name.endsWith( torrentSuffix, Qt::CaseInsensitive ) ) { diff --git a/transmission.spec b/transmission.spec index 5649bbb..7d3b937 100644 --- a/transmission.spec +++ b/transmission.spec @@ -1,8 +1,8 @@ %global _hardened_build 1 Name: transmission -Version: 2.81 -Release: 3%{?dist} +Version: 2.82 +Release: 1%{?dist} Summary: A lightweight GTK+ BitTorrent client Group: Applications/Internet @@ -10,6 +10,11 @@ Group: Applications/Internet License: MIT and GPLv2 URL: http://www.transmissionbt.com Source0: http://download.transmissionbt.com/files/transmission-%{version}.tar.xz + +# Revert to changeset 14150 to build with qt4. Doesn't build otherwise +# Check in 2.83 and drop if fixed. +Patch0: transmission-2.82-changeset_14150.diff + BuildRequires: openssl-devel >= 0.9.4 BuildRequires: glib2-devel >= 2.32.0 BuildRequires: gtk3-devel >= 3.2.0 @@ -88,6 +93,7 @@ exit 0 %prep %setup -q +%patch0 -p2 -R iconv --from=ISO-8859-1 --to=UTF-8 AUTHORS > AUTHORS.new mv AUTHORS.new AUTHORS @@ -192,6 +198,11 @@ fi %doc %{_mandir}/man1/transmission-qt.* %changelog +* Thu Aug 15 2013 Ankur Sinha 2.82-1 +- Update to latest upstream release +- Changes listed at: https://trac.transmissionbt.com/wiki/Changes#version-2.82 +- Add patch to revert qt5 changes since it doesn't build with it. + * Sun Aug 04 2013 Fedora Release Engineering - 2.81-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild