From 82d6184ab87ce9793f7ae25e9e3f1793768f1f3c Mon Sep 17 00:00:00 2001
From: barracuda156 <vital.had@gmail.com>
Date: Fri, 26 Apr 2024 15:38:01 +0800
Subject: [PATCH] Drop sparkle and growl

diff --git admin/include.qmake admin/include.qmake
index 4a2e1cd6..3b1ecbf2 100644
--- admin/include.qmake
+++ admin/include.qmake
@@ -21,7 +21,7 @@ unix:!mac:QMAKE_CXXFLAGS += -fno-operator-names
 
 macx* {
     QMAKE_PKGINFO_TYPEINFO = last
-    QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
+    # QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
 }
 
 include( qmake/debug.pro.inc )
@@ -35,7 +35,7 @@ unix:!mac {
 	contains( QT, phonon ):LIBS += -L$$system( kde4-config --prefix 2> /dev/null )/lib
 
     isEmpty(PREFIX) {
-        PREFIX = /usr/local
+        PREFIX = @PREFIX@
     }
     DEFINES += PREFIX=\\\"$$PREFIX\\\"
     BINDIR = $$PREFIX/bin
@@ -74,15 +74,15 @@ macx:CONFIG( app_bundle ): contains( TEMPLATE, app ) {
                         ln -s \"audioscrobbler.icns\" \"$$BUNDLE_DIR/Contents/Resources/lastfm.icns\";
 
     QMAKE_POST_LINK += echo Breakpad dump sys \"$${DESTDIR}/$${TARGET}.app/Contents/MacOS/$${TARGET}\".; \
-                        \"$$ROOT_DIR/admin/dist/mac/dump_syms\" -a x86_64 \"$${DESTDIR}/$${TARGET}.app/Contents/MacOS/$${TARGET}\" > \"$${TARGET} x86_64.breakpad\";
+                        \"$$ROOT_DIR/admin/dist/mac/dump_syms\" -a @ARCH@ \"$${DESTDIR}/$${TARGET}.app/Contents/MacOS/$${TARGET}\" > \"$${TARGET} @ARCH@.breakpad\";
 
     ## copy the public key for updates
     QMAKE_POST_LINK += echo Copying dsa_pub.pem file..; \
                         cp \"$$ROOT_DIR/admin/dist/mac/dsa_pub.pem\" \"$$BUNDLE_DIR/Contents/Resources\";
     
     ## copy the growl registration file
-    QMAKE_POST_LINK += echo Copying growl registration file..; \
-                        cp \"$$ROOT_DIR/admin/dist/mac/Growl Registration Ticket.growlRegDict\" \"$$BUNDLE_DIR/Contents/Resources\";
+#    QMAKE_POST_LINK += echo Copying growl registration file..; \
+#                        cp \"$$ROOT_DIR/admin/dist/mac/Growl Registration Ticket.growlRegDict\" \"$$BUNDLE_DIR/Contents/Resources\";
 
     ## copy the apple script suite definition
     QMAKE_POST_LINK += echo Copying apple script suite definition file..; \
diff --git app/fingerprinter/fingerprinter.pro app/fingerprinter/fingerprinter.pro
index f42188ce..d1dbe67a 100644
--- app/fingerprinter/fingerprinter.pro
+++ app/fingerprinter/fingerprinter.pro
@@ -9,7 +9,7 @@ include( ../../admin/include.qmake )
 # TODO: FIX THIS: I think this means that we can only build bundles
 mac {
     DESTDIR = "../../_bin/Last.fm Scrobbler.app/Contents/Helpers"
-    QMAKE_POST_LINK += ../../admin/dist/mac/bundleFrameworks.sh \"$$DESTDIR/$$TARGET\"
+    # QMAKE_POST_LINK += ../../admin/dist/mac/bundleFrameworks.sh \"$$DESTDIR/$$TARGET\"
 }
 
 SOURCES += main.cpp \
diff --git admin/dist/mac/bundleFrameworks.sh admin/dist/mac/bundleFrameworks.sh
index 7ce24bf9..010b7852 100755
--- admin/dist/mac/bundleFrameworks.sh
+++ admin/dist/mac/bundleFrameworks.sh
@@ -89,7 +89,7 @@ function fixLocalLibs {
             cpPath=$lib
         fi
 
-        resolvedLib=`/usr/local/bin/greadlink -f $cpPath`
+        resolvedLib=`@PREFIX@/bin/greadlink -f $cpPath`
         basenameLib=`basename $resolvedLib`
 
 		echo $cpPath "$bundlePath/Contents/MacOS"
@@ -107,7 +107,7 @@ function fixLocalLibs {
 }
 
 function locateLib {
-    for p in {$rootdir,/usr/local/lib}; do
+    for p in {$rootdir,@PREFIX@/lib}; do
         if [ -e $p/$1 ]; then
             echo $p/$1
             return 0
@@ -145,8 +145,8 @@ echo
 
 echo ======= Copying 3rd party frameworks ===========
 
-cp -R -H -f /Library/Frameworks/Growl.framework "$bundlePath/Contents/Frameworks"
-cp -R -H -f /Library/Frameworks/Sparkle.framework "$bundlePath/Contents/Frameworks"
+#cp -R -H -f /Library/Frameworks/Growl.framework "$bundlePath/Contents/Frameworks"
+#cp -R -H -f /Library/Frameworks/Sparkle.framework "$bundlePath/Contents/Frameworks"
 #cp -R -L -f /Library/Frameworks/Breakpad.framework "$bundlePath/Contents/Frameworks"
 
 echo
@@ -157,12 +157,8 @@ mkdir -p "$bundlePath/Contents/plugins"
 plugins="imageformats sqldrivers bearer"
 
 for plugin in $plugins; do
-    if [ -d /Developer/Applications/Qt/plugins/ ]; then
-        pluginDir=/Developer/Applications/Qt/plugins
-    elif [ -d /usr/local/lib/qt4/plugins/ ]; then
-        # Qt installed using Homebrew will be found in your local lib.
-        # Currently we only support qt v4.8.7.
-        pluginDir=/usr/local/lib/qt4/plugins
+    if [ -d @qt_plugins_dir@ ]; then
+        pluginDir=@qt_plugins_dir@
     else
         pluginDir=`qmake --version |sed -n 's/^.*in \(\/.*$\)/\1/p'`/../plugins
     fi
@@ -190,12 +186,8 @@ translations="qt_de.qm
                 qt_zh_CN.qm"
 
 for translation in $translations; do
-    if [ -d /Developer/Applications/Qt/plugins/ ]; then
-        translationDir=/Developer/Applications/Qt/translations
-    elif [ -d /usr/local/Cellar/qt@4/4.8.7_5/translations/ ]; then
-        # Qt installed using Homebrew will be found in the Homebrew Cellar.
-        # Currently we only support qt v4.8.7.
-        translationDir=/usr/local/Cellar/qt@4/4.8.7_5/translations
+    if [ -d @qt_translations_dir@ ]; then
+        translationDir=@qt_translations_dir@
     else
         translationDir=`qmake --version |sed -n 's/^.*in \(\/.*$\)/\1/p'`/../translations
     fi
diff --git app/client/Dialogs/LicensesDialog.cpp app/client/Dialogs/LicensesDialog.cpp
index 8ddd237e..c44d67e4 100644
--- app/client/Dialogs/LicensesDialog.cpp
+++ app/client/Dialogs/LicensesDialog.cpp
@@ -46,19 +46,19 @@ LicensesDialog::LicensesDialog(QWidget *parent) :
     licenseText.append( "<li>" + unicorn::Label::anchor( "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html", "GNU Lesser General Public License (LGPL) version 2.1" ) + "</li>");
     licenseText.append( "</ul>" );
 
-#ifdef Q_OS_MAC
-    // Sparkle (updating framework)
-    licenseText.append( "<hr>" );
-    licenseText.append( "<h3>Sparkle</h3>" );
-    licenseText.append( "<ul>" );
-    licenseText.append( "<li>" + unicorn::Label::anchor( "http://sparkle.andymatuschak.org/", "Sparkle" ) + "</li>");
-    licenseText.append( "<li>" + unicorn::Label::anchor( "https://github.com/andymatuschak/Sparkle/blob/master/License.txt", "Sparkle License" ) + "</li>");
-    licenseText.append( "</ul>" );
-    licenseText.append( "<p>Copyright (c) 2006 Andy Matuschak</p>" );
-    licenseText.append( "<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p>" );
-    licenseText.append( "<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p>" );
-    licenseText.append( "<p>THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p>" );
-#endif
+// #ifdef Q_OS_MAC
+//     // Sparkle (updating framework)
+//     licenseText.append( "<hr>" );
+//     licenseText.append( "<h3>Sparkle</h3>" );
+//     licenseText.append( "<ul>" );
+//     licenseText.append( "<li>" + unicorn::Label::anchor( "http://sparkle.andymatuschak.org/", "Sparkle" ) + "</li>");
+//     licenseText.append( "<li>" + unicorn::Label::anchor( "https://github.com/andymatuschak/Sparkle/blob/master/License.txt", "Sparkle License" ) + "</li>");
+//     licenseText.append( "</ul>" );
+//     licenseText.append( "<p>Copyright (c) 2006 Andy Matuschak</p>" );
+//     licenseText.append( "<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p>" );
+//     licenseText.append( "<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p>" );
+//     licenseText.append( "<p>THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p>" );
+// #endif
 
 #ifdef Q_OS_WIN
     // Winsparkle
@@ -73,24 +73,24 @@ LicensesDialog::LicensesDialog(QWidget *parent) :
     licenseText.append( "<p>THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p>" );
 #endif
 
-#ifdef Q_OS_MAC
-    // Growl
-    licenseText.append( "<hr>" );
-    licenseText.append( "<h3>Growl</h3>" );
-    licenseText.append( "<ul>" );
-    licenseText.append( "<li>" + unicorn::Label::anchor( "http://growl.info", "Growl" ) + "<li>" );
-    licenseText.append( "<li>" + unicorn::Label::anchor( "http://growl.info/documentation/developer/bsd-license.txt", "Growl License" ) + "<li>" );
-    licenseText.append( "</ul>" );
-    licenseText.append( "<p>Copyright (c) The Growl Project, 2004</p>" );
-    licenseText.append( "<p>All rights reserved.</p>" );
-    licenseText.append( "<p>Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:</p>" );
-    licenseText.append( "<ol>" );
-    licenseText.append( "<li>Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.</li>" );
-    licenseText.append( "<li>Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.</li>" );
-    licenseText.append( "<li>Neither the name of Growl nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.</li>" );
-    licenseText.append( "</ol>" );
-    licenseText.append( "<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>" );
-#endif
+// #ifdef Q_OS_MAC
+//     // Growl
+//     licenseText.append( "<hr>" );
+//     licenseText.append( "<h3>Growl</h3>" );
+//     licenseText.append( "<ul>" );
+//     licenseText.append( "<li>" + unicorn::Label::anchor( "http://growl.info", "Growl" ) + "<li>" );
+//     licenseText.append( "<li>" + unicorn::Label::anchor( "http://growl.info/documentation/developer/bsd-license.txt", "Growl License" ) + "<li>" );
+//     licenseText.append( "</ul>" );
+//     licenseText.append( "<p>Copyright (c) The Growl Project, 2004</p>" );
+//     licenseText.append( "<p>All rights reserved.</p>" );
+//     licenseText.append( "<p>Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:</p>" );
+//     licenseText.append( "<ol>" );
+//     licenseText.append( "<li>Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.</li>" );
+//     licenseText.append( "<li>Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.</li>" );
+//     licenseText.append( "<li>Neither the name of Growl nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.</li>" );
+//     licenseText.append( "</ol>" );
+//     licenseText.append( "<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>" );
+// #endif
     // Breakpad
     licenseText.append( "<hr>" );
     licenseText.append( "<h3>Breakpad</h3>" );
diff --git app/client/MainWindow.cpp app/client/MainWindow.cpp
index d5bfb40a..762006a8 100644
--- app/client/MainWindow.cpp
+++ app/client/MainWindow.cpp
@@ -58,7 +58,7 @@
 #include "lib/unicorn/qtwin.h"
 #include "lib/unicorn/widgets/SlidingStackedWidget.h"
 #include "lib/listener/PlayerConnection.h"
-#if defined(Q_OS_MAC) || defined(Q_OS_WIN)
+#if defined(Q_OS_WIN)
 #include "lib/unicorn/Updater/Updater.h"
 #endif
 #include "lib/unicorn/QMessageBoxBuilder.h"
@@ -167,7 +167,7 @@ MainWindow::MainWindow( QMenuBar* menuBar )
 
     setupMenuBar();
 
-#if defined(Q_OS_MAC) || defined(Q_OS_WIN)
+#if defined(Q_OS_WIN)
     m_updater = new Updater( this );
 #endif
 
@@ -414,7 +414,7 @@ MainWindow::onDiagnosticsTriggered()
 void
 MainWindow::setBetaUpdates( bool betaUpdates )
 {
-#if defined(Q_OS_MAC) || defined(Q_OS_WIN)
+#if defined(Q_OS_WIN)
     if ( m_updater )
         m_updater->setBetaUpdates( betaUpdates );
 #endif
@@ -441,7 +441,7 @@ MainWindow::onBringAllToFrontTriggered()
 void
 MainWindow::checkForUpdates()
 {
-#if defined(Q_OS_MAC) || defined(Q_OS_WIN)
+#if defined(Q_OS_WIN)
     m_updater->checkForUpdates();
 #endif
 }
diff --git app/client/MainWindow.h app/client/MainWindow.h
index 1291a5fa..27ccddbb 100644
--- app/client/MainWindow.h
+++ app/client/MainWindow.h
@@ -35,7 +35,7 @@
 #include "Settings/PreferencesDialog.h"
 #include "Dialogs/DiagnosticsDialog.h"
 
-#if defined(Q_OS_MAC) || defined(Q_OS_WIN)
+#if defined(Q_OS_WIN)
 namespace unicorn
 {
     class Updater;
@@ -144,7 +144,7 @@ private:
 
     QPointer<PreferencesDialog> m_preferences;
     QPointer<DiagnosticsDialog> m_diagnostics;
-#if defined(Q_OS_MAC) || defined(Q_OS_WIN)
+#if defined(Q_OS_WIN)
     QPointer<Updater> m_updater;
 #endif
 
diff --git app/client/Settings/GeneralSettingsWidget.cpp app/client/Settings/GeneralSettingsWidget.cpp
index 763c38e7..b02e5817 100644
--- app/client/Settings/GeneralSettingsWidget.cpp
+++ app/client/Settings/GeneralSettingsWidget.cpp
@@ -40,7 +40,7 @@ GeneralSettingsWidget::GeneralSettingsWidget( QWidget* parent )
     ui->sendCrashReports->setChecked( unicorn::Settings().sendCrashReports() );
     ui->beta->setChecked( unicorn::Settings().betaUpdates() );
 
-#if !defined( Q_OS_WIN ) && !defined( Q_OS_MAC )
+#if !defined( Q_OS_WIN )
     ui->beta->hide(); // only have a beta update setting in mac and windows
 #endif
 
diff --git lib/unicorn/Updater/Updater.h lib/unicorn/Updater/Updater.h
index e20958ca..0e34dabc 100644
--- lib/unicorn/Updater/Updater.h
+++ lib/unicorn/Updater/Updater.h
@@ -30,9 +30,9 @@
 namespace qtsparkle { class Updater; }
 #define UPDATE_URL_WIN "https://cdn.last.fm/client/updates/updates.win.xml"
 #define UPDATE_URL_WIN_BETA "https://cdn.last.fm/client/updates/updates.win.beta.xml"
-#elif defined( Q_OS_MAC )
-#define UPDATE_URL_MAC @"https://cdn.last.fm/client/updates/updates.mac.xml"
-#define UPDATE_URL_MAC_BETA @"https://cdn.last.fm/client/updates/updates.mac.beta.xml"
+// #elif defined( Q_OS_MAC )
+// #define UPDATE_URL_MAC @"https://cdn.last.fm/client/updates/updates.mac.xml"
+// #define UPDATE_URL_MAC_BETA @"https://cdn.last.fm/client/updates/updates.mac.beta.xml"
 #endif
 
 namespace unicorn
diff --git lib/unicorn/unicorn.pro lib/unicorn/unicorn.pro
index ceb34dab..73cdb8cb 100644
--- lib/unicorn/unicorn.pro
+++ lib/unicorn/unicorn.pro
@@ -1,6 +1,6 @@
 TARGET = unicorn
 TEMPLATE = lib
-CONFIG += dll lastfm sparkle growl logger
+CONFIG += dll lastfm logger
 unix:!mac {
     CONFIG -= dll
     CONFIG += staticlib

diff --git lib/unicorn/Updater/Updater_mac.mm lib/unicorn/Updater/Updater_mac.mm
index 24d2fce4..db242816 100644
--- lib/unicorn/Updater/Updater_mac.mm
+++ lib/unicorn/Updater/Updater_mac.mm
@@ -29,8 +29,8 @@
 #include <Foundation/Foundation.h>
 #include <Foundation/NSURL.h>
 
-#include <Sparkle/Sparkle.h>
-#include <Sparkle/SUUpdater.h>
+// #include <Sparkle/Sparkle.h>
+// #include <Sparkle/SUUpdater.h>
 
 @interface UpdaterDelegate : NSObject {
 }
@@ -44,38 +44,19 @@ UpdaterDelegate* g_Delegate;
 unicorn::Updater::Updater(QWidget *parent) :
     QObject(parent)
 {
-    SUUpdater* updater = [SUUpdater sharedUpdater];
-    g_Delegate = [UpdaterDelegate alloc];
-    [updater setDelegate:g_Delegate];
-
-    if ( qApp->arguments().contains( "--update" ) )
-    {
-        int urlIndex = qApp->arguments().indexOf( "--update" ) + 1;
-
-        if ( qApp->arguments().count() > urlIndex && qApp->arguments()[urlIndex].startsWith( "https://" ) )
-            [updater setFeedURL:[NSURL URLWithString: [NSString stringWithCharacters:(const unichar *)qApp->arguments()[urlIndex].unicode() length:(NSUInteger)qApp->arguments()[urlIndex].length() ]]];
-        else
-            setBetaUpdates( unicorn::Settings().betaUpdates() );
-    }
-    else
-        setBetaUpdates( unicorn::Settings().betaUpdates() );
-
+    // do nothing
 }
 
 void
 unicorn::Updater::setBetaUpdates( bool betaUpdates )
 {
-    if ( betaUpdates )
-        [[SUUpdater sharedUpdater] setFeedURL:[NSURL URLWithString:UPDATE_URL_MAC_BETA]];
-    else
-        [[SUUpdater sharedUpdater] setFeedURL:[NSURL URLWithString:UPDATE_URL_MAC]];
-
+    // do nothing
 }
 
 void
 unicorn::Updater::checkForUpdates()
 {
-    [[SUUpdater sharedUpdater] checkForUpdates:0];
+    // do nothing
 }
 
 unicorn::Updater::~Updater()
diff --git lib/unicorn/notify/Notify.mm lib/unicorn/notify/Notify.mm
index 9beedd03..81f4f134 100644
--- lib/unicorn/notify/Notify.mm
+++ lib/unicorn/notify/Notify.mm
@@ -24,7 +24,7 @@
 
 #include <QPixmap>
 
-#include <Growl/Growl.h>
+// #include <Growl/Growl.h>
 
 #include <lastfm/Track.h>
 
@@ -59,30 +59,30 @@
 @end
 #endif
 
-@interface GrowlClickDelegate : NSObject <GrowlApplicationBridgeDelegate> {
-    unicorn::Notify* m_observer;
-}
-    - (GrowlClickDelegate*) init:(unicorn::Notify*)observer;
-    - (void) growlNotificationWasClicked:(id)clickContext;
-@end
-
-@implementation GrowlClickDelegate
-- (GrowlClickDelegate*) init:(unicorn::Notify*)observer
-{
-    if ( (self = [super init]) )
-    {
-        self->m_observer = observer;
-    }
-
-    return self;
-}
-
-- (void) growlNotificationWasClicked:(id)clickContext
-{
-    Q_UNUSED(clickContext)
-    self->m_observer->growlNotificationWasClicked();
-}
-@end
+// @interface GrowlClickDelegate : NSObject <GrowlApplicationBridgeDelegate> {
+//     unicorn::Notify* m_observer;
+// }
+//     - (GrowlClickDelegate*) init:(unicorn::Notify*)observer;
+//     - (void) growlNotificationWasClicked:(id)clickContext;
+// @end
+// 
+// @implementation GrowlClickDelegate
+// - (GrowlClickDelegate*) init:(unicorn::Notify*)observer
+// {
+//     if ( (self = [super init]) )
+//     {
+//         self->m_observer = observer;
+//     }
+// 
+//     return self;
+// }
+// 
+// - (void) growlNotificationWasClicked:(id)clickContext
+// {
+//     Q_UNUSED(clickContext)
+//     self->m_observer->growlNotificationWasClicked();
+// }
+// @end
 
 unicorn::Notify::Notify(QObject *parent) :
     QObject(parent)
@@ -97,8 +97,8 @@ unicorn::Notify::Notify(QObject *parent) :
     else
 #endif
     {
-        GrowlClickDelegate* growlDelegate = [[GrowlClickDelegate alloc] init: this];
-        [GrowlApplicationBridge setGrowlDelegate:growlDelegate];
+//         GrowlClickDelegate* growlDelegate = [[GrowlClickDelegate alloc] init: this];
+//         [GrowlApplicationBridge setGrowlDelegate:growlDelegate];
     }
 }
 
@@ -205,21 +205,20 @@ unicorn::Notify::onFinished( const QPixmap& pixmap )
         }
 
         // TODO: Do the growl notification here. It'll be great!
-        [GrowlApplicationBridge notifyWithTitle:(NSString *)nsTitle
-          description:(NSString *)nsDescription
-          notificationName:(NSString *)@"New track"
-                                    iconData:(NSData *)data
-                                    priority:(signed int)0
-                                    isSticky:(BOOL)NO
-                                    clickContext:(id)@"context"
-                                    identifier:(NSString*)@"identifier" ];
+//         [GrowlApplicationBridge notifyWithTitle:(NSString *)nsTitle
+//           description:(NSString *)nsDescription
+//           notificationName:(NSString *)@"New track"
+//                                     iconData:(NSData *)data
+//                                     priority:(signed int)0
+//                                     isSticky:(BOOL)NO
+//                                     clickContext:(id)@"context"
+//                                     identifier:(NSString*)@"identifier" ];
     }
 
 }
 
-
-void
-unicorn::Notify::growlNotificationWasClicked()
-{
-    emit clicked();
-}
+// void
+// unicorn::Notify::growlNotificationWasClicked()
+// {
+//     emit clicked();
+// }

diff --git admin/qmake/3rdparty.pro.inc admin/qmake/3rdparty.pro.inc
index f68e1221..d63a667a 100644
--- admin/qmake/3rdparty.pro.inc
+++ admin/qmake/3rdparty.pro.inc
@@ -1,6 +1,6 @@
 mac {
-    LIBS += -L/usr/local/lib
-    INCLUDEPATH += /usr/local/include
+    LIBS += -L@PREFIX@/lib
+    INCLUDEPATH += @PREFIX@/include
 }
 
 CONFIG( taglib ) {
@@ -11,10 +11,10 @@ CONFIG( taglib ) {
 
 CONFIG( ffmpeg ) {
     mac {
-        LIBS += /usr/local/lib/libavcodec.dylib
-        LIBS += /usr/local/lib/libavformat.dylib
-        LIBS += /usr/local/lib/libavutil.dylib
-        LIBS += /usr/local/lib/libswresample.dylib
+        LIBS += @FFMPEG@/lib/libavcodec.dylib
+        LIBS += @FFMPEG@/lib/libavformat.dylib
+        LIBS += @FFMPEG@/lib/libavutil.dylib
+        LIBS += @FFMPEG@/lib/libswresample.dylib
         DEFINES += HAVE_SWRESAMPLE
     } else {
         CONFIG += link_pkgconfig
@@ -37,7 +37,7 @@ CONFIG( analytics ) {
 
 CONFIG( boost ) {
     mac:CONFIG(app_bundle){
-        LIBS += /usr/local/lib/libboost_thread-mt.a
+        LIBS += -L@BOOST_LPATH@ -lboost_thread-mt
     }
     else:unix {
         LIBS += -lboost_thread-mt
@@ -94,7 +94,7 @@ CONFIG( yajl ) {
 		release:PKGCONFIG += yajl-release
 	}
 	else:CONFIG(app_bundle) {
-                LIBS += /usr/local/lib/libyajl_s.a
+                LIBS += @PREFIX@/lib/libyajl_s.a
 	}
 	else:LIBS += -lyajl
 }
