summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--audio/last.fm/README2
-rw-r--r--audio/last.fm/doinst.sh9
-rw-r--r--audio/last.fm/last.fm.176
-rw-r--r--audio/last.fm/last.fm.SlackBuild42
-rw-r--r--audio/last.fm/last.fm.desktop5
-rw-r--r--audio/last.fm/last.fm.info8
-rw-r--r--audio/last.fm/last.fm.script2
-rw-r--r--audio/last.fm/patches/no-fingerprint-lib.diff289
-rw-r--r--audio/last.fm/patches/reduce-linkage.diff251
-rw-r--r--audio/last.fm/patches/volumeslider_h-qt45.patch19
-rw-r--r--audio/last.fm/slack-desc9
11 files changed, 688 insertions, 24 deletions
diff --git a/audio/last.fm/README b/audio/last.fm/README
index f2ec82b0e1..6df6d2e6ca 100644
--- a/audio/last.fm/README
+++ b/audio/last.fm/README
@@ -3,4 +3,4 @@ share your music tastes, listen to personalised radio streams,
and discover new music and people.
Last.fm is open source software and contains no spyware or adware.
-last.fm requires QT4, which is also available at SlackBuilds.org.
+This requires qt4, libsamplerate, and fftw.
diff --git a/audio/last.fm/doinst.sh b/audio/last.fm/doinst.sh
index 22d4849bce..1f8ff67ded 100644
--- a/audio/last.fm/doinst.sh
+++ b/audio/last.fm/doinst.sh
@@ -1,5 +1,10 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
-if [ -x usr/bin/update-desktop-database ]; then
- usr/bin/update-desktop-database usr/share/applications >/dev/null 2>&1
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
+ fi
fi
diff --git a/audio/last.fm/last.fm.1 b/audio/last.fm/last.fm.1
new file mode 100644
index 0000000000..a7c62a0ff9
--- /dev/null
+++ b/audio/last.fm/last.fm.1
@@ -0,0 +1,76 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH LASTFM 1 "2007-12-06"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+lastfm - Audio player for last.fm streams
+.SH SYNOPSIS
+.B /usr/bin/last.fm [options] [URL]
+.SH DESCRIPTION
+This manual page documents briefly the
+.B lastfm
+command.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+.B LASTFM
+is the flagship product from the team that designed the Audioscrobbler
+system, a music engine based on a massive collection of Music Profiles.
+Each music profile belongs to one person, and describes their taste in music.
+Last.fm uses these music profiles to make personalized recommendations, match
+you up with people who like similar music, and generate custom radio
+stations for each person.
+
+This program will allow you to play your personalized radio station streams
+from the last.fm website.
+
+.SH OPTIONS
+.SS Arguments:
+.TP
+URL
+A station url beginning with
+.I lastfm://
+.SS Options:
+.TP
+.B \-\-sanity
+Show the number of listeners instead of the number of plays scrobbled.
+.TP
+.B \-tray
+Start the program minimized as a tray icon.
+.SH FILES
+.TP
+.I ~/.config/Last.fm/Last.fm.conf
+Application config file.
+.TP
+.I ~/.local/share/Last.fm/cache/*
+Cache files for album artwork and artist descriptions.
+.TP
+.I ~/.local/share/Last.fm/IpodDevice.db
+SQLite database of songs played on the iPod.
+.TP
+.I ~/.local/share/Last.fm/Last.fm.log
+Application log file.
+.TP
+.I ~/.local/share/Last.fm/*_mediadevice.xml
+Submission cache of songs played on the iPod.
+.TP
+.I ~/.local/share/Last.fm/*_submissions.xml
+Submission cache of songs played with the client.
+.SH AUTHOR
+This manual page was written by Paul Telford <pxt@debian.org>,
+for the Debian project (but may be used by others). It has been updated by
+John Stamp <jstamp@users.sourceforge.net>.
diff --git a/audio/last.fm/last.fm.SlackBuild b/audio/last.fm/last.fm.SlackBuild
index c30441ed31..3328db50cb 100644
--- a/audio/last.fm/last.fm.SlackBuild
+++ b/audio/last.fm/last.fm.SlackBuild
@@ -2,16 +2,15 @@
# Slackware build script for last.fm
# Written by <youngmug@animeneko.net>
+# Updated by Larry Hajali <larryhaja[at]gmail[dot]com>
# Modified by the SlackBuilds.org project
-# Exit on most errors
-set -e
-
PRGNAM=last.fm
-VERSION=1.3.2.13
+VERSION=1.5.1.31879
ARCH=${ARCH:-i486}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
@@ -21,30 +20,49 @@ if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
fi
+set -e # Exit on most errors
+
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.src.tar.bz2
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z*
cd $PRGNAM-$VERSION
chown -R root:root .
chmod -R u+w,go+r-w,a-s .
+# Patches needed for compiling.
+patch -p1 < $CWD/patches/no-fingerprint-lib.diff
+patch -p1 < $CWD/patches/reduce-linkage.diff
+patch -p1 < $CWD/patches/volumeslider_h-qt45.patch
+
+lrelease-qt4 i18n/*.ts
+
qmake-qt4 -config release
+
make
#Last.fm doesn't have a nice installer, so we need to package it manually.
-mkdir -p $PKG/usr/lib/$PRGNAM $PKG/usr/bin $PKG/usr/share/applications
+mkdir -p $PKG/usr/lib/$PRGNAM/i18n $PKG/usr/bin $PKG/usr/man/man1 \
+ $PKG/usr/share/applications $PKG/usr/share/pixmaps
cp -R bin/* $PKG/usr/lib/$PRGNAM
-cat $CWD/last.fm.script > $PKG/usr/bin/last.fm
-cat $CWD/last.fm.desktop > $PKG/usr/share/applications/last.fm.desktop
-chmod +x $PKG/usr/bin/last.fm
+cat $CWD/$PRGNAM.script > $PKG/usr/bin/$PRGNAM
+chmod +x $PKG/usr/bin/$PRGNAM
+install -m 644 i18n/*.qm $PKG/usr/lib/$PRGNAM/i18n
+gzip -9c $CWD/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz
+
+cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
+( cd $PKG/usr/share/pixmaps ; ln -s ../../lib/last.fm/data/app_55.png lastfm.png )
( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
)
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
diff --git a/audio/last.fm/last.fm.desktop b/audio/last.fm/last.fm.desktop
index 0d354b33c4..56a9f456dd 100644
--- a/audio/last.fm/last.fm.desktop
+++ b/audio/last.fm/last.fm.desktop
@@ -3,8 +3,7 @@ Name=last.fm
GenericName=last.fm Player
Comment=Listen to last.fm streams
Exec=last.fm
-Icon=/usr/lib/last.fm/data/icons/as.png
-Categories=Application;Qt;AudioVideo;Player;
+Icon=lastfm
+Categories=Qt;AudioVideo;Player;
Terminal=false
Type=Application
-Encoding=UTF-8
diff --git a/audio/last.fm/last.fm.info b/audio/last.fm/last.fm.info
index ffb9fab2b9..3965775b46 100644
--- a/audio/last.fm/last.fm.info
+++ b/audio/last.fm/last.fm.info
@@ -1,8 +1,8 @@
PRGNAM="last.fm"
-VERSION="1.3.2.13"
+VERSION="1.5.1.31879"
HOMEPAGE="http://last.fm/"
-DOWNLOAD="http://cdn.last.fm/client/src/last.fm-1.3.2.13.src.tar.bz2"
-MD5SUM="a4ec606857e7c1dce3c251741cc7923e"
+DOWNLOAD="http://static.last.fm/client/src/last.fm-1.5.1.31879.tar.bz2"
+MD5SUM="21358960da6a68337c8afad79d268b5b"
MAINTAINER="Michael Johnson"
EMAIL="youngmug@animeneko.net"
-APPROVED="Erik Hanson,rworkman"
+APPROVED="rworkman"
diff --git a/audio/last.fm/last.fm.script b/audio/last.fm/last.fm.script
index 39d521c116..2437842206 100644
--- a/audio/last.fm/last.fm.script
+++ b/audio/last.fm/last.fm.script
@@ -1,3 +1,3 @@
#!/bin/sh
cd /usr/lib/last.fm
-./last.fm "$@"
+sh last.fm.sh "$@"
diff --git a/audio/last.fm/patches/no-fingerprint-lib.diff b/audio/last.fm/patches/no-fingerprint-lib.diff
new file mode 100644
index 0000000000..9b0d710ab6
--- /dev/null
+++ b/audio/last.fm/patches/no-fingerprint-lib.diff
@@ -0,0 +1,289 @@
+diff -Naur last.fm-1.5.1.31879.orig/LastFM.pro last.fm-1.5.1.31879/LastFM.pro
+--- last.fm-1.5.1.31879.orig/LastFM.pro 2008-06-18 11:46:57.000000000 +0000
++++ last.fm-1.5.1.31879/LastFM.pro 2009-03-27 19:50:51.000000000 +0000
+@@ -39,6 +39,8 @@
+
+ linux* {
+ SUBDIRS -= src/Twiddly \
++ src/libFingerprint/fplib/pro_qmake/fplib.pro \
++ src/libFingerprint/ \
+ src/Bootstrapper/ITunesDevice
+
+ SUBDIRS += src/output/alsa-playback \
+diff -Naur last.fm-1.5.1.31879.orig/src/DiagnosticsDialog.cpp last.fm-1.5.1.31879/src/DiagnosticsDialog.cpp
+--- last.fm-1.5.1.31879.orig/src/DiagnosticsDialog.cpp 2008-06-18 11:46:55.000000000 +0000
++++ last.fm-1.5.1.31879/src/DiagnosticsDialog.cpp 2009-03-27 19:50:51.000000000 +0000
+@@ -27,7 +27,10 @@
+ #include "container.h"
+ #include "lastfmapplication.h"
+ #include "libMoose/LastFmSettings.h"
++
++#ifndef LINUX
+ #include "libFingerprint/FingerprintCollector.h"
++#endif
+
+ #include <QProcess>
+ #include <QClipboard>
+@@ -106,6 +109,7 @@
+ connect( ui.scrobbleIpodButton, SIGNAL( clicked() ), SLOT( onScrobbleIpodClicked() ) );
+
+ // Fingerprint collector
++#ifndef LINUX
+ ui.fpQueueSizeLabel->setText( "0" );
+ connect( The::app().m_fpCollector, SIGNAL( trackFingerprintingStarted( TrackInfo ) ),
+ this, SLOT( onTrackFingerprintingStarted( TrackInfo ) ),
+@@ -116,6 +120,9 @@
+ connect( The::app().m_fpCollector, SIGNAL( cantFingerprintTrack( TrackInfo, QString ) ),
+ this, SLOT( onCantFingerprintTrack( TrackInfo, QString ) ),
+ Qt::QueuedConnection );
++#else
++ ui.tabWidget->removeTab( 2 );
++#endif
+
+ m_logTimer = new QTimer( this );
+ connect( m_logTimer, SIGNAL( timeout() ),
+@@ -336,6 +343,7 @@
+ }
+
+
++#ifndef LINUX
+ void
+ DiagnosticsDialog::onTrackFingerprintingStarted( TrackInfo track )
+ {
+@@ -360,7 +368,7 @@
+ ui.fpCurrentTrackLabel->setText( "" );
+ ui.fpQueueSizeLabel->setText( QString::number( The::app().m_fpCollector->queueSize() ) );
+ }
+-
++#endif
+
+ void
+ DiagnosticsDialog::onLogPoll()
+diff -Naur last.fm-1.5.1.31879.orig/src/DiagnosticsDialog.h last.fm-1.5.1.31879/src/DiagnosticsDialog.h
+--- last.fm-1.5.1.31879.orig/src/DiagnosticsDialog.h 2008-06-18 11:46:55.000000000 +0000
++++ last.fm-1.5.1.31879/src/DiagnosticsDialog.h 2009-03-27 19:50:51.000000000 +0000
+@@ -63,9 +63,11 @@
+ void onRefresh();
+ void onCopyToClipboard();
+
++ #ifndef LINUX
+ void onTrackFingerprintingStarted( TrackInfo );
+ void onTrackFingerprinted( TrackInfo );
+ void onCantFingerprintTrack( TrackInfo track, QString reason );
++ #endif
+
+ void onScrobbleIpodClicked();
+ void onLogPoll();
+diff -Naur last.fm-1.5.1.31879.orig/src/Radio.cpp last.fm-1.5.1.31879/src/Radio.cpp
+--- last.fm-1.5.1.31879.orig/src/Radio.cpp 2008-06-18 11:46:55.000000000 +0000
++++ last.fm-1.5.1.31879/src/Radio.cpp 2009-03-27 19:50:51.000000000 +0000
+@@ -129,7 +129,9 @@
+ m_session = handshake->session();
+ m_basePath = handshake->basePath();
+
++ #ifndef LINUX
+ The::settings().setFingerprintUploadUrl( handshake->fingerprintUploadUrl() );
++ #endif
+
+ setState( State_Handshaken );
+
+diff -Naur last.fm-1.5.1.31879.orig/src/configwizard.cpp last.fm-1.5.1.31879/src/configwizard.cpp
+--- last.fm-1.5.1.31879.orig/src/configwizard.cpp 2008-06-18 11:46:55.000000000 +0000
++++ last.fm-1.5.1.31879/src/configwizard.cpp 2009-03-27 19:51:39.000000000 +0000
+@@ -750,7 +750,7 @@
+
+ nextButtonClicked();
+ #else
+- m_pageOffset += 7;
++ m_pageOffset += 8;
+ BaseWizard::nextButtonClicked();
+ #endif
+
+diff -Naur last.fm-1.5.1.31879.orig/src/lastfmapplication.cpp last.fm-1.5.1.31879/src/lastfmapplication.cpp
+--- last.fm-1.5.1.31879.orig/src/lastfmapplication.cpp 2008-06-18 11:46:55.000000000 +0000
++++ last.fm-1.5.1.31879/src/lastfmapplication.cpp 2009-03-27 19:50:51.000000000 +0000
+@@ -26,8 +26,10 @@
+ #include "confirmdialog.h"
+ #include "container.h"
+ #include "LastMessageBox.h"
++#ifndef LINUX
+ #include "libFingerprint/FingerprintCollector.h"
+ #include "libFingerprint/FingerprintQueryer.h"
++#endif
+ #include "logger.h"
+ #include "loginwidget.h"
+ #include "MediaDeviceScrobbler.h"
+@@ -167,10 +169,12 @@
+ new ITunesScript( this, m_listener );
+ #endif
+
++ #ifndef LINUX
+ m_fpCollector = new FingerprintCollector( 1 /*number of threads*/, this );
+ m_fpQueryer = new FingerprintQueryer( this );
+ connect( m_fpQueryer, SIGNAL( trackFingerprinted( TrackInfo, bool ) ),
+ SLOT( onFingerprintQueryDone( TrackInfo, bool ) ) );
++ #endif
+
+ m_radio = new Radio( this );
+ connect( m_radio, SIGNAL( stateChanged( RadioState ) ), SLOT( onRadioStateChanged( RadioState ) ) );
+@@ -365,8 +369,10 @@
+ sendPostedEvents( m_scrobbler, 0 /*all event types*/ );
+ //TODO send events to individual scrobblers in the manager too?
+
++ #ifndef LINUX
+ delete m_fpQueryer;
+ delete m_fpCollector;
++ #endif
+
+ #ifdef Q_WS_MAC
+ if ( !m_pidFile.remove() )
+@@ -534,6 +540,7 @@
+ QString password = m_user->settings().password();
+ QString version = The::settings().version();
+
++ #ifndef LINUX
+ // as you can see we are initialising the fingerprinter, I like this comment
+ m_fpCollector->setUsername( username );
+ m_fpCollector->setPasswordMd5( password );
+@@ -542,6 +549,7 @@
+ m_fpQueryer->setPasswordMd5( password );
+ m_fpQueryer->setPasswordMd5Lower( password ); // FIXME: surely they can't be the same!
+ m_fpQueryer->setVersion( The::settings().version() );
++ #endif
+
+ // init radio YTIO
+ m_radio->init( username, password, version );
+@@ -849,12 +857,14 @@
+ if ( m_container->isVisible() )
+ fetchMetaData();
+
++ #ifndef LINUX
+ if ( QFile::exists( m_currentTrack.path() ) &&
+ The::settings().currentUser().fingerprintingEnabled() )
+ {
+ m_activeNorman = 0;
+ m_fpQueryer->fingerprint( m_currentTrack );
+ }
++ #endif
+ }
+ }
+ break;
+@@ -1167,6 +1177,7 @@
+ }
+
+
++#ifndef LINUX
+ void
+ LastFmApplication::onFingerprintQueryDone( TrackInfo track, bool fullFpRequested )
+ {
+@@ -1199,6 +1210,7 @@
+ }
+ }
+ }
++#endif
+
+
+ void
+diff -Naur last.fm-1.5.1.31879.orig/src/lastfmapplication.h last.fm-1.5.1.31879/src/lastfmapplication.h
+--- last.fm-1.5.1.31879.orig/src/lastfmapplication.h 2008-06-18 11:46:55.000000000 +0000
++++ last.fm-1.5.1.31879/src/lastfmapplication.h 2009-03-27 19:50:51.000000000 +0000
+@@ -181,7 +181,9 @@
+ void onAppEvent( int event, const QVariant& );
+ void onRequestReturned( class Request* request );
+ void onScrobblerStatusUpdate( int, const QVariant& );
++#ifndef LINUX
+ void onFingerprintQueryDone( TrackInfo, bool fullFpRequested );
++#endif
+ void onNormanRequestDone( Request* r );
+ void onPlaybackEndedTimerTimeout();
+
+@@ -208,8 +210,10 @@
+ class QTcpServer* m_control;
+ class ScrobblerManager* m_scrobbler;
+ class Radio* m_radio;
++#ifndef LINUX
+ class FingerprintCollector* m_fpCollector;
+ class FingerprintQueryer* m_fpQueryer;
++#endif
+ class FrikkinNormanRequest* m_activeNorman;
+
+ QPointer<class ArtistMetaDataRequest> m_activeArtistReq;
+diff -Naur last.fm-1.5.1.31879.orig/src/settingsdialog.cpp last.fm-1.5.1.31879/src/settingsdialog.cpp
+--- last.fm-1.5.1.31879.orig/src/settingsdialog.cpp 2008-06-18 11:46:55.000000000 +0000
++++ last.fm-1.5.1.31879/src/settingsdialog.cpp 2009-03-27 19:57:29.000000000 +0000
+@@ -92,6 +92,8 @@
+ ui_mediadevices.setupUi( mediadeviceWidget );
+ ui_mediadevices.deviceWidget->header()->setResizeMode( QHeaderView::ResizeToContents );
+ ui.pageStack->addWidget( mediadeviceWidget );
++#else
++ ui_scrobbling.groupBox->hide();
+ #endif
+
+ // Add icons to user icon dropdown
+@@ -210,7 +212,11 @@
+ connect( ui_scrobbling.dirTree, SIGNAL( dataChanged() ), this, SLOT( configChanged() ) );
+ connect( ui_scrobbling.scrobblePointSlider, SIGNAL( valueChanged( int ) ), this, SLOT( configChanged() ) );
+ connect( ui_scrobbling.launchWithMediaPlayerCheck, SIGNAL( toggled( bool ) ), this, SLOT( configChanged() ) );
++#ifndef LINUX
+ connect( ui_scrobbling.fingerprintCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( configChanged() ) );
++#else
++ ui_scrobbling.fingerprintCheckBox->hide();
++#endif
+ connect( ui_connection.proxyBox, SIGNAL( toggled( bool ) ), this, SLOT( configChanged() ) );
+ connect( ui_connection.proxyHostEdit, SIGNAL( textChanged( QString ) ), this, SLOT( configChanged() ) );
+ connect( ui_connection.proxyPortEdit, SIGNAL( textChanged( QString ) ), this, SLOT( configChanged() ) );
+@@ -379,7 +385,9 @@
+ ui_scrobbling.scrobblePointSlider->setValue( user.scrobblePoint() );
+ ui_scrobbling.scrobblePointLabel->setText( QString::number( user.scrobblePoint() ) );
+ ui_scrobbling.launchWithMediaPlayerCheck->setChecked( The::settings().launchWithMediaPlayer() );
++#ifndef LINUX
+ ui_scrobbling.fingerprintCheckBox->setChecked( user.fingerprintingEnabled() );
++#endif
+ ui_scrobbling.dirTree->setExclusions( user.excludedDirs() );
+ }
+
+@@ -567,7 +575,9 @@
+ user.setScrobblePoint( ui_scrobbling.scrobblePointSlider->value() );
+ user.setExcludedDirs( ui_scrobbling.dirTree->getExclusions() );
+ The::settings().setLaunchWithMediaPlayer( ui_scrobbling.launchWithMediaPlayerCheck->isChecked() );
++#ifndef LINUX
+ user.setFingerprintingEnabled( ui_scrobbling.fingerprintCheckBox->checkState() == Qt::Checked ? true : false );
++#endif
+
+ pageSaved( 2 );
+ }
+diff -Naur last.fm-1.5.1.31879.orig/src/settingsdialog_scrobbling.ui last.fm-1.5.1.31879/src/settingsdialog_scrobbling.ui
+--- last.fm-1.5.1.31879.orig/src/settingsdialog_scrobbling.ui 2008-06-18 11:46:56.000000000 +0000
++++ last.fm-1.5.1.31879/src/settingsdialog_scrobbling.ui 2009-03-27 19:57:29.000000000 +0000
+@@ -175,6 +175,19 @@
+ </layout>
+ </widget>
+ </item>
++ <item>
++ <spacer>
++ <property name="orientation" >
++ <enum>Qt::Vertical</enum>
++ </property>
++ <property name="sizeHint" >
++ <size>
++ <width>20</width>
++ <height>0</height>
++ </size>
++ </property>
++ </spacer>
++ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+diff -Naur last.fm-1.5.1.31879.orig/src/src.pro last.fm-1.5.1.31879/src/src.pro
+--- last.fm-1.5.1.31879.orig/src/src.pro 2008-06-18 11:46:55.000000000 +0000
++++ last.fm-1.5.1.31879/src/src.pro 2009-03-27 19:50:51.000000000 +0000
+@@ -217,6 +217,8 @@
+
+ SOURCES -= Bootstrapper/iTunesBootstrapper.cpp \
+ Bootstrapper/PluginBootstrapper.cpp
++
++ LIBS -= -lLastFmFingerprint$$EXT
+ }
+
+
diff --git a/audio/last.fm/patches/reduce-linkage.diff b/audio/last.fm/patches/reduce-linkage.diff
new file mode 100644
index 0000000000..91f362a48e
--- /dev/null
+++ b/audio/last.fm/patches/reduce-linkage.diff
@@ -0,0 +1,251 @@
+--- a/definitions.pro.inc
++++ b/definitions.pro.inc
+@@ -41,8 +41,6 @@
+ UNICORNPATH = $$ROOT_DIR/src/libUnicorn
+ include( src/libUnicorn/unicorn.pro.inc )
+
+-LIBS += -lMoose$$EXT
+-
+ # TODO: not sure if this is right now, should probably be determined on a per-plugin basis
+ plugin:LIBS += -lLastFmTools$$EXT
+ contains( TEMPLATE, app ):LIBS += -lLastFmTools$$EXT
+--- a/src/libFingerprint/libFingerprint.pro
++++ b/src/libFingerprint/libFingerprint.pro
+@@ -2,7 +2,7 @@
+ VERSION = 1.0.0
+ CONFIG += dll
+ TARGET = LastFmFingerprint
+-QT += xml network sql
++QT -= gui
+
+ include( ../../definitions.pro.inc )
+
+--- a/src/libUnicorn/CachedHttp.h
++++ b/src/libUnicorn/CachedHttp.h
+@@ -26,7 +26,7 @@
+ #include "UnicornDllExportMacro.h"
+
+ #include <QDebug>
+-#include <QHttp>
++#include <QtNetwork/QHttp>
+ #include <QHash>
+ #include <QStack>
+ #include <QString>
+--- a/src/libUnicorn/RedirectHttp.h
++++ b/src/libUnicorn/RedirectHttp.h
+@@ -26,7 +26,7 @@
+ #include "UnicornDllExportMacro.h"
+
+ #include <QDebug>
+-#include <QHttp>
++#include <QtNetwork/QHttp>
+ #include <QString>
+ #include <QHash>
+
+--- a/src/libFingerprint/FingerprintCollector.cpp
++++ b/src/libFingerprint/FingerprintCollector.cpp
+@@ -25,8 +25,6 @@
+ #include "logger.h"
+ #include "FingerprintExtractor.h"
+
+-#include <QApplication>
+-
+
+ FingerprintCollector::FingerprintCollector( int numberOfThreads, QObject* parent )
+ : QObject( parent )
+--- a/src/libUnicorn/WebService/Request.h
++++ b/src/libUnicorn/WebService/Request.h
+@@ -31,7 +31,7 @@
+ #include "WeightedStringList.h"
+
+ #include <QTimer>
+-#include <QHttpHeader>
++#include <QtNetwork/QHttpHeader>
+
+ //TODO mxcl check error handling, since that was the point of all this
+ //TODO escape query paramaeters in paths in get function
+--- a/src/libUnicorn/Collection.h
++++ b/src/libUnicorn/Collection.h
+@@ -31,7 +31,7 @@
+
+ #include <QObject>
+ #include <QMutex>
+-#include <QSqlDatabase>
++#include <QtSql/QSqlDatabase>
+
+
+ /** @author: <chris@last.fm> */
+--- a/src/libFingerprint/FingerprintQueryer.cpp
++++ b/src/libFingerprint/FingerprintQueryer.cpp
+@@ -26,8 +26,6 @@
+ #include "logger.h"
+ #include "FingerprintExtractor.h"
+
+-#include <QApplication>
+-
+
+ FingerprintQueryer::FingerprintQueryer( QObject* parent ) :
+ QObject( parent ),
+--- a/src/src.pro
++++ b/src/src.pro
+@@ -1,12 +1,14 @@
+ TEMPLATE = app
+ TARGET = Last.fm
+-QT += gui network xml sql
++QT += gui network xml
+
+ INCLUDEPATH += lib libFingerprint/recommendation-commons
+
+ PRECOMPILED_HEADER = precompiled.h
+ CONFIG += precompile_header
+
++LIBS += -lMoose$$EXT
++
+ unix {
+ # precompiled headers breaks icecream builds for some reason :(
+ system( test `ps aux | grep iceccd | wc -l` -gt 1 ): CONFIG -= precompile_header
+@@ -27,12 +29,9 @@
+
+ include( ../definitions.pro.inc )
+
+-# TODO remove
+-INCLUDEPATH += $$ROOT_DIR/res/mad
+-INCLUDEPATH += $$ROOT_DIR/src/libFingerprint/libs/fftw
+-
+ breakpad {
+ LIBS += -lbreakpad$$EXT
++ LIBS += -lmad -lfftw3f
+ }
+
+ LIBS += -L$$BIN_DIR -lLastFmFingerprint$$EXT
+@@ -210,8 +209,6 @@
+ SOURCES += simplewizard_mac.cpp \
+ winstyleoverrides.cpp
+
+- LIBS += -lmad -lfftw3f
+-
+ HEADERS -= Bootstrapper/iTunesBootstrapper.h \
+ Bootstrapper/PluginBootstrapper.h
+
+--- a/src/mediadevices/ipod/IpodDevice.h
++++ b/src/mediadevices/ipod/IpodDevice.h
+@@ -22,7 +22,7 @@
+ #define IPOD_DEVICE_H
+
+ #include "TrackInfo.h"
+-#include <QSqlDatabase>
++#include <QtSql/QSqlDatabase>
+
+ typedef struct _Itdb_iTunesDB Itdb_iTunesDB;
+ typedef struct _Itdb_Track Itdb_Track;
+--- a/src/httpinput/httpinput.cpp
++++ b/src/httpinput/httpinput.cpp
+@@ -21,8 +21,6 @@
+
+ #include "httpinput.h"
+ #include "logger.h"
+-#include "WebService.h"
+-#include "WebService/Request.h"
+ #include "RadioEnums.h"
+
+ #include "MooseCommon.h"
+--- a/src/httpinput/httpinput.pro
++++ b/src/httpinput/httpinput.pro
+@@ -1,7 +1,8 @@
+ TEMPLATE = lib
+ CONFIG += service
+ TARGET = httpinput
+-QT += network gui xml
++QT += network
++QT -= gui
+
+ include( ../../definitions.pro.inc )
+
+--- a/src/mediadevices/ipod/IpodDevice.cpp
++++ b/src/mediadevices/ipod/IpodDevice.cpp
+@@ -24,12 +24,11 @@
+
+ #include "logger.h"
+
+-#include <QApplication>
+ #include <QDateTime>
++#include <QFileInfo>
+ #include <QSqlError>
+ #include <QSqlQuery>
+ #include <QtPlugin>
+-#include <QFileDialog>
+ #include <QSettings>
+
+ extern "C"
+--- a/src/mediadevices/ipod/ipod.pro
++++ b/src/mediadevices/ipod/ipod.pro
+@@ -2,6 +2,7 @@
+ CONFIG += service
+ TARGET = Ipod_device
+ QT += sql
++QT -= gui
+
+ include( ../../../definitions.pro.inc )
+
+--- a/src/transcode/mad/mad.pro
++++ b/src/transcode/mad/mad.pro
+@@ -1,7 +1,7 @@
+ TEMPLATE = lib
+ CONFIG += service
+ TARGET = madtranscode
+-QT += gui xml network
++QT -= gui
+
+ include( ../../../definitions.pro.inc )
+
+--- a/src/output/alsa-playback/alsa-playback.pro
++++ b/src/output/alsa-playback/alsa-playback.pro
+@@ -1,7 +1,7 @@
+ TEMPLATE = lib
+ TARGET = output_alsa
+ CONFIG += service
+-QT += gui xml network
++QT -= gui
+
+ LIBS += -lasound
+ QMAKE_CFLAGS_WARN_OFF = -w
+@@ -9,5 +9,6 @@
+
+ include( ../../../definitions.pro.inc )
+
++LIBS -= -lLastFmTools$$EXT
+ HEADERS = alsaplayback.h alsaaudio.h xconvert.h
+ SOURCES = alsaplayback.cpp alsaaudio.cpp xconvert.c
+--- a/src/libMoose/libMoose.pro
++++ b/src/libMoose/libMoose.pro
+@@ -2,7 +2,7 @@
+ VERSION = 1.0.0
+ CONFIG += dll
+ TARGET = Moose
+-QT += xml network gui
++QT += network gui
+
+ include( ../../definitions.pro.inc )
+
+--- a/src/output/RtAudio/RtAudio.pro
++++ b/src/output/RtAudio/RtAudio.pro
+@@ -1,7 +1,7 @@
+ TEMPLATE = lib
+ CONFIG += service
+ TARGET = rtaudioplayback
+-QT += gui xml network
++QT -= gui
+
+ include( ../../../definitions.pro.inc )
+
+--- a/src/output/RtAudio/rtaudioplayback.cpp
++++ b/src/output/RtAudio/rtaudioplayback.cpp
+@@ -19,7 +19,7 @@
+ * 51 Franklin Steet, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+-#include <QtGui>
++#include <qplugin.h>
+
+ #include "rtaudioplayback.h"
+ #include "logger.h"
diff --git a/audio/last.fm/patches/volumeslider_h-qt45.patch b/audio/last.fm/patches/volumeslider_h-qt45.patch
new file mode 100644
index 0000000000..91374423b6
--- /dev/null
+++ b/audio/last.fm/patches/volumeslider_h-qt45.patch
@@ -0,0 +1,19 @@
+Index: lastfm-1.5.1.31879/src/myvolumeslider.h
+===================================================================
+--- /dev/null
++++ lastfm-1.5.1.31879/src/myvolumeslider.h
+@@ -0,0 +1 @@
++#include "volumeslider.h"
+Index: lastfm-1.5.1.31879/src/playcontrols.ui
+===================================================================
+--- lastfm-1.5.1.31879.orig/src/playcontrols.ui
++++ lastfm-1.5.1.31879/src/playcontrols.ui
+@@ -146,7 +146,7 @@
+ <customwidget>
+ <class>VolumeSlider</class>
+ <extends>QFrame</extends>
+- <header>volumeslider.h</header>
++ <header>myvolumeslider.h</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
diff --git a/audio/last.fm/slack-desc b/audio/last.fm/slack-desc
index c9a3d75d29..d05e6ad59b 100644
--- a/audio/last.fm/slack-desc
+++ b/audio/last.fm/slack-desc
@@ -1,4 +1,11 @@
- |-----handy-ruler-----------------------------------------------------|
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-------------------------------------------------------|
last.fm: last.fm (Standalone Player for last.fm)
last.fm:
last.fm: With Last.fm on your computer you can scrobble your tracks,