aboutsummaryrefslogtreecommitdiff
path: root/audio
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2018-06-19 05:53:41 -0400
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2018-06-23 08:44:18 +0700
commit6fe32f9c42dfd8147e2f720c752283a73631885f (patch)
treea81e937d25bc0786f31838b3e63843d1c17e86ec /audio
parente1c4310728f888051d5be43f1e3a83b3bfe7b994 (diff)
audio/guitarix: Updated for version 0.37.1.
Signed-off-by: B. Watson <yalhcru@gmail.com>
Diffstat (limited to 'audio')
-rw-r--r--audio/guitarix/ChangeLog.old63
-rw-r--r--audio/guitarix/guitarix.SlackBuild100
-rw-r--r--audio/guitarix/guitarix.info6
-rw-r--r--audio/guitarix/patches/0001-fix-bug-59-Guitarix-crashes-when-click-online-for-pr.patch35
-rw-r--r--audio/guitarix/patches/0002-fix-bug-59-Guitarix-crashes-when-click-online-for-pr.patch311
5 files changed, 442 insertions, 73 deletions
diff --git a/audio/guitarix/ChangeLog.old b/audio/guitarix/ChangeLog.old
new file mode 100644
index 0000000000000..ac4d9f096f8ee
--- /dev/null
+++ b/audio/guitarix/ChangeLog.old
@@ -0,0 +1,63 @@
+# This stuff used to be in the script, but it was getting annoyingly
+# long. Probably only of interest to me, and maybe future archaeologists.
+
+# 20161016 bkw: Updated for 0.35.2
+
+# 20160806 bkw:
+# - Updated for 0.35.1
+# - removed WEBKIT=no option from README (it was removed from the
+# script in March, should have been removed from README then).
+# - removed webkitgtk from REQUIRES, as it's now optional (and
+# autodetected, no way to force-disable it).
+# - removed patches, since they're already included in the new release.
+# - remove unimplemented SSE=no option. Note that SSE support is still
+# autodetected, so if someone's trying this on e.g. ARCH=arm, it should
+# automatically build without SSE (I have no idea if the build will
+# actually complete, in that case).
+# - remove .desktop sed stuff, upstream fixed it.
+# - update man page.
+# - note: zita-convolver and zita-resampler are not requirements. they
+# will be linked if installed, otherwise guitarix's bundled copies will
+# be used. I only mention this here so I won't forget again...
+
+# 20160329 dbs:
+# - Updated for Slackware-14.2. Forced -msse in SLKCFLAGS.
+# This just won't build without SSE on 32 bit gcc-5.3.0 :(
+# xmmintrin.h:857:1: error: inlining failed in call to always_inline
+# ‘void _MM_SET_EXCEPTION_STATE(unsigned int)’: target specific option mismatch
+# Patch 0003-fix-build-even-for-gcc4.8.patch doesn't fix it, and there
+# are no further fixes upstream at this time.
+
+# 20151108 bkw:
+# - Updated for 0.34.0
+# - Added --disable-cxx11 to ./waf flags, as bluetooth.h uses the gcc
+# typeof() extension. Not sure if newer versions of bluez would have
+# this issue (but Slackware 14.1's bluez is pretty old by now).
+# - Added patch from upstream git to allow building without webkitgtk.
+# The author added support for downloading presets, but didn't make
+# it optional in 0.34.0. Also added a couple of bugfix patches.
+# - Support building 0.33.0 with VERSION=0.33.0 in the env.
+# - Add SSE=no option.
+# - Add WEBKIT=no option.
+# - Remove LV2=no option from README (but not from script).
+
+# 20150514 bkw:
+# - Updated for 0.32.3
+# - Fix some issues with the shared libs: they were being installed
+# to /usr/lib/ on 64-bit, and they were missing the +x bits.
+# - Made LV2 option default to yes, since upstream is requiring lilv
+# even if --no-lv2 is used. Also, the lv2 plugins were being
+# installed to /usr/lib/ on 64-bit. Grr.
+# - Upstream wants avahi by default. For now, hardcoded --no-avahi.
+
+# 20130430 bkw:
+# - Updated for 0.27.1
+# - Replaced slack-desc with updated text from guitarix site
+# - Added LV2 option
+
+# 20121216 bkw:
+# - Upgraded to guitarix2
+# - Added man page
+# - Added realtime capabilities
+# - Make .desktop file validate
+# - Add guitarix's README to /usr/doc
diff --git a/audio/guitarix/guitarix.SlackBuild b/audio/guitarix/guitarix.SlackBuild
index 0b19d82a245b9..9c1db5768474e 100644
--- a/audio/guitarix/guitarix.SlackBuild
+++ b/audio/guitarix/guitarix.SlackBuild
@@ -6,14 +6,25 @@
# Modified by B. Watson <yalhcru@gmail.com>. Modified version released
# under the WTFPL, for details see http://www.wtfpl.net/txt/copying/
-# 20171223 bkw: Updated for 0.36.1.
-
-# 20170825 bkw:
-# - Updated for 0.35.6
-# - Install the bundled roboto font.
+# Note to self: git URL for guitarix is:
+# git://git.code.sf.net/p/guitarix/git/
+
+# 20180619 bkw:
+# - Updated for 0.37.1.
+# - Force building with bundled zita-convolver and resampler libs.
+# Previously, system libs would be linked if they were installed,
+# otherwise bundled libs were used... caused a problem if the
+# system zita-convolver was updated to an incompatible version.
+# - Add config options to re-enable ladspa and lv2 mod-gui stuff that
+# used to be enabled by default in 0.36.1.
+# - Add patches from upstream git, to fix segfaults when online
+# button gets clicked. Also if dbus isn't running, guitarix will now
+# actually say so, in its error message.
+# - Move old changelog entries to ChangeLog.old.
-# 20170725 bkw:
-# - Updated for 0.35.5
+# 20171223 bkw: Updated for 0.36.1.
+# 20170825 bkw: Updated for 0.35.6. Install the bundled roboto font.
+# 20170725 bkw: Updated for 0.35.5
# 20170710 bkw:
# - Updated for 0.35.4
@@ -30,70 +41,8 @@
# - Flip changelog comments right-side up
# - Stop writing outside of $TMP.
-# 20161016 bkw:
-# - Updated for 0.35.2
-
-# 20160806 bkw:
-# - Updated for 0.35.1
-# - removed WEBKIT=no option from README (it was removed from the
-# script in March, should have been removed from README then).
-# - removed webkitgtk from REQUIRES, as it's now optional (and
-# autodetected, no way to force-disable it).
-# - removed patches, since they're already included in the new release.
-# - remove unimplemented SSE=no option. Note that SSE support is still
-# autodetected, so if someone's trying this on e.g. ARCH=arm, it should
-# automatically build without SSE (I have no idea if the build will
-# actually complete, in that case).
-# - remove .desktop sed stuff, upstream fixed it.
-# - update man page.
-# - note: zita-convolver and zita-resampler are not requirements. they
-# will be linked if installed, otherwise guitarix's bundled copies will
-# be used. I only mention this here so I won't forget again...
-
-# 20160329 dbs:
-# - Updated for Slackware-14.2. Forced -msse in SLKCFLAGS.
-# This just won't build without SSE on 32 bit gcc-5.3.0 :(
-# xmmintrin.h:857:1: error: inlining failed in call to always_inline
-# ‘void _MM_SET_EXCEPTION_STATE(unsigned int)’: target specific option mismatch
-# Patch 0003-fix-build-even-for-gcc4.8.patch doesn't fix it, and there
-# are no further fixes upstream at this time.
-
-# 20151108 bkw:
-# - Updated for 0.34.0
-# - Added --disable-cxx11 to ./waf flags, as bluetooth.h uses the gcc
-# typeof() extension. Not sure if newer versions of bluez would have
-# this issue (but Slackware 14.1's bluez is pretty old by now).
-# - Added patch from upstream git to allow building without webkitgtk.
-# The author added support for downloading presets, but didn't make
-# it optional in 0.34.0. Also added a couple of bugfix patches.
-# - Support building 0.33.0 with VERSION=0.33.0 in the env.
-# - Add SSE=no option.
-# - Add WEBKIT=no option.
-# - Remove LV2=no option from README (but not from script).
-
-# 20150514 bkw:
-# - Updated for 0.32.3
-# - Fix some issues with the shared libs: they were being installed
-# to /usr/lib/ on 64-bit, and they were missing the +x bits.
-# - Made LV2 option default to yes, since upstream is requiring lilv
-# even if --no-lv2 is used. Also, the lv2 plugins were being
-# installed to /usr/lib/ on 64-bit. Grr.
-# - Upstream wants avahi by default. For now, hardcoded --no-avahi.
-
-# 20130430 bkw:
-# - Updated for 0.27.1
-# - Replaced slack-desc with updated text from guitarix site
-# - Added LV2 option
-
-# 20121216 bkw:
-# - Upgraded to guitarix2
-# - Added man page
-# - Added realtime capabilities
-# - Make .desktop file validate
-# - Add guitarix's README to /usr/doc
-
PRGNAM=guitarix
-VERSION=${VERSION:-0.36.1}
+VERSION=${VERSION:-0.37.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -143,6 +92,12 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+# Apply commits a4792a6b9c and 7278d18e0 from upstream, to stop
+# segfaulting when user clicks the online button. Note these are
+# -p2 patches (made with "git format-patch"), unusual for a slackbuild.
+patch -p2 < $CWD/patches/0001-fix-bug-59-Guitarix-crashes-when-click-online-for-pr.patch
+patch -p2 < $CWD/patches/0002-fix-bug-59-Guitarix-crashes-when-click-online-for-pr.patch
+
# guitarix wants to install the roboto font in the wrong place for
# slackware.
sed -i '/fonts/s,\<truetype\>,TTF,' wscript tools/undiag
@@ -163,6 +118,11 @@ LIBDIR="/usr/lib${LIBDIRSUFFIX}"
--no-avahi \
--no-ldconfig \
--no-desktop-update \
+ --includeresampler \
+ --includeconvolver \
+ --ladspa \
+ --new-ladspa \
+ --mod-lv2 \
$EXTRAOPT \
$LV2OPT
./waf build # -v # verbose, shows actual commands
diff --git a/audio/guitarix/guitarix.info b/audio/guitarix/guitarix.info
index b20803f315f32..eed566163a65c 100644
--- a/audio/guitarix/guitarix.info
+++ b/audio/guitarix/guitarix.info
@@ -1,8 +1,8 @@
PRGNAM="guitarix"
-VERSION="0.36.1"
+VERSION="0.37.1"
HOMEPAGE="http://guitarix.sourceforge.net/"
-DOWNLOAD="http://downloads.sourceforge.net/guitarix/guitarix2-0.36.1.tar.xz"
-MD5SUM="1615863a469497f42f1bbec5ebb0d4e1"
+DOWNLOAD="http://downloads.sourceforge.net/guitarix/guitarix2-0.37.1.tar.xz"
+MD5SUM="123f2ea027c03ba07021a0b1fa2d56b2"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="jack-audio-connection-kit liblrdf lilv"
diff --git a/audio/guitarix/patches/0001-fix-bug-59-Guitarix-crashes-when-click-online-for-pr.patch b/audio/guitarix/patches/0001-fix-bug-59-Guitarix-crashes-when-click-online-for-pr.patch
new file mode 100644
index 0000000000000..1ce0e4ccf2e75
--- /dev/null
+++ b/audio/guitarix/patches/0001-fix-bug-59-Guitarix-crashes-when-click-online-for-pr.patch
@@ -0,0 +1,35 @@
+From a4792a6b9c6f97fd2bb653169a2c8274c9a782fd Mon Sep 17 00:00:00 2001
+From: Hermann Meyer <brummer-@web.de>
+Date: Mon, 4 Jun 2018 10:03:08 +0200
+Subject: [PATCH 1/2] * fix bug #59 Guitarix crashes when click online for
+ presets
+
+---
+ trunk/src/gx_head/gui/gx_preset_window.cpp | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/trunk/src/gx_head/gui/gx_preset_window.cpp b/trunk/src/gx_head/gui/gx_preset_window.cpp
+index 0d34390f..e09bf77f 100644
+--- a/trunk/src/gx_head/gui/gx_preset_window.cpp
++++ b/trunk/src/gx_head/gui/gx_preset_window.cpp
+@@ -919,6 +919,17 @@ void PresetWindow::replace_inline(std::string& subject, const std::string& searc
+
+ void PresetWindow::show_online_preset() {
+
++ char *dbus = getenv("DBUS_SESSION_BUS_ADDRESS");
++ if (!dbus) {
++ system("eval 'dbus-launch --sh-syntax --exit-with-session'");
++ }
++
++ dbus = getenv("DBUS_SESSION_BUS_ADDRESS");
++ if (!dbus) {
++ gx_print_error("downloadPreset", _("DBUS_SESSION_BUS_ADDRESS not detected, online prest download isn't supported!!"));
++ return;
++ }
++
+ Glib::RefPtr<Gio::File> dest = Gio::File::create_for_uri(Glib::filename_to_uri(options.get_online_config_filename(), resolve_hostname()));
+ static bool load_new = true;
+ static bool load = false;
+--
+2.14.1
+
diff --git a/audio/guitarix/patches/0002-fix-bug-59-Guitarix-crashes-when-click-online-for-pr.patch b/audio/guitarix/patches/0002-fix-bug-59-Guitarix-crashes-when-click-online-for-pr.patch
new file mode 100644
index 0000000000000..245d43da0d922
--- /dev/null
+++ b/audio/guitarix/patches/0002-fix-bug-59-Guitarix-crashes-when-click-online-for-pr.patch
@@ -0,0 +1,311 @@
+From 7278d18e0124b21c18c8e47ca403cf1eb1bea2dc Mon Sep 17 00:00:00 2001
+From: Hermann Meyer <brummer-@web.de>
+Date: Tue, 5 Jun 2018 10:00:47 +0200
+Subject: [PATCH 2/2] * fix bug #59 Guitarix crashes when click online for
+ presets, switch to use libcurl instead GIO
+
+---
+ trunk/src/gx_head/gui/gx_preset_window.cpp | 142 ++++++-----------------------
+ trunk/src/gx_head/wscript | 2 +-
+ trunk/src/headers/guitarix.h | 1 +
+ trunk/src/headers/gx_preset_window.h | 24 +----
+ trunk/wscript | 1 +
+ 5 files changed, 32 insertions(+), 138 deletions(-)
+
+diff --git a/trunk/src/gx_head/gui/gx_preset_window.cpp b/trunk/src/gx_head/gui/gx_preset_window.cpp
+index e09bf77f..00e358f7 100644
+--- a/trunk/src/gx_head/gui/gx_preset_window.cpp
++++ b/trunk/src/gx_head/gui/gx_preset_window.cpp
+@@ -170,9 +170,13 @@ PresetWindow::PresetWindow(Glib::RefPtr<gx_gui::GxBuilder> bld, gx_engine::GxMac
+ gtk_size_group_add_widget(lc, GTK_WIDGET(new_preset_bank->gobj()));
+ gtk_size_group_add_widget(lc, GTK_WIDGET(organize_presets->gobj()));
+ gtk_size_group_add_widget(lc, GTK_WIDGET(online_preset->gobj()));
++ curl_global_init(CURL_GLOBAL_DEFAULT);
++ curl = curl_easy_init();
+ }
+
+ PresetWindow::~PresetWindow() {
++ curl_easy_cleanup(curl);
++ curl_global_cleanup();
+ }
+
+ void PresetWindow::on_selection_changed() {
+@@ -695,53 +699,6 @@ void PresetWindow::on_new_bank() {
+
+ // Online Preset Downloader
+
+-void DownloadWatch::start () {
+- cancellable = Gio::Cancellable::create ();
+- file_state = sigc::slot<void, goffset, goffset>(&f_progress);
+- watcher = Glib::Thread::create(sigc::mem_fun(*this, &DownloadWatch::watch), true);
+-}
+-
+-void DownloadWatch::watch () {
+- while(true) {
+- {
+- Glib::Mutex::Lock lock (w_mutex);
+- if (stop) break;
+- }
+- sleep(25); // time out for the server response
+- cancellable->cancel();
+- if (!stop) timeout();
+- break;
+- }
+-}
+-
+-void DownloadWatch::f_progress(goffset read, goffset total)
+-{
+- if(Gtk::Main::events_pending())
+- Gtk::Main::iteration(false);
+- //std::cout << read << "/" << total << std::endl;
+-}
+-
+-DownloadWatch::~DownloadWatch() {
+- {
+- Glib::Mutex::Lock lock (w_mutex);
+- stop = true;
+- }
+- if (watcher) watcher->join();
+-}
+-
+-void PresetWindow::go_watch () {
+- if(watch != NULL) return;
+- watch = new DownloadWatch();
+- watch->timeout.connect(sigc::mem_fun(*this, &PresetWindow::watch_done));
+- watch->start();
+-}
+-
+-void PresetWindow::watch_done() {
+- if(watch == NULL) return;
+- delete watch;
+- watch = NULL;
+-}
+-
+ Glib::ustring PresetWindow::resolve_hostname() {
+ static Glib::ustring hostname = "localhost";
+ if (! machine.get_jack()) {
+@@ -753,21 +710,31 @@ Glib::ustring PresetWindow::resolve_hostname() {
+
+ bool PresetWindow::download_file(Glib::ustring from_uri, Glib::ustring to_path) {
+
+- go_watch();
+- Glib::RefPtr<Gio::File> rem = Gio::File::create_for_uri(from_uri);
+- Glib::RefPtr<Gio::File> dest = Gio::File::create_for_uri(Glib::filename_to_uri(to_path, resolve_hostname()));
+- try {
+- rem->copy(dest, watch->file_state, watch->cancellable,Gio::FILE_COPY_OVERWRITE);
+- } catch (Gio::Error& e) {
+- if (watch->cancellable->is_cancelled()) {
+- gx_print_error( _("Time out, download cancelled"), _("the server on https://musical-artifacts.com/ takes to long to respond"));
++ CURLcode res;
++ FILE *out;
++ out = fopen(to_path.c_str(), "wb");
++
++ curl_easy_setopt(curl, CURLOPT_WRITEDATA, out);
++ curl_easy_setopt(curl, CURLOPT_URL, from_uri.c_str());
++ res = curl_easy_perform(curl);
++ if(CURLE_OK == res) {
++ char *ct = NULL;
++ res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
++ if (strstr(ct, "application/json")!= NULL ) {
++ gx_print_info( "download_file", from_uri);
++ } else if (strstr(ct, "application/octet-stream")!= NULL) {
++ gx_print_info( "download_preset", from_uri);
+ } else {
+- gx_print_error(e.what().c_str(), Glib::ustring::compose("can't download '%1 ' from https://musical-artifacts.com/", from_uri));
+- if (watch) watch_done();
++ res = CURLE_CONV_FAILED;
+ }
++ }
++ curl_easy_reset(curl);
++ fclose(out);
++ if(res != CURLE_OK) {
++ remove(to_path.c_str());
++ gx_print_error( "download_file", Glib::ustring::compose("curl_easy_perform() failed: %1", curl_easy_strerror(res)));
+ return false;
+ }
+- if (watch) watch_done();
+ return true;
+ }
+
+@@ -802,9 +769,6 @@ void PresetWindow::read_preset_menu() {
+ std::string INFO_;
+ std::string AUTHOR_;
+ std::string line;
+- // bool set_name = false;
+- // bool set_file = false;
+- // bool set_info = false;
+ while ( in->read_line(line) )
+ {
+ std::istringstream is(line);
+@@ -825,9 +789,7 @@ void PresetWindow::read_preset_menu() {
+ jp.read_kv("file", FILE_);
+ INFO_ += "Author : " + AUTHOR_;
+ olp.push_back(std::tuple<std::string,std::string,std::string>(NAME_,FILE_,INFO_));
+- //os << "\n<<NAME>> \n" << NAME_ << "\n<<FILE>> \n" << FILE_ << "\n<<INFO>> \n" << INFO_ << "\n<<END>> \n" << "\n";
+- } else {
+- //gx_print_warning("read_online", "unknown key: " + jp.current_value());
++ } else {
+ jp.skip_object();
+ }
+ } while (jp.peek() == gx_system::JsonParser::value_key);
+@@ -837,41 +799,6 @@ void PresetWindow::read_preset_menu() {
+ cerr << "JsonException: " << e.what() << ": '" << jp.current_value() << "'" << endl;
+ assert(false);
+ }
+-
+-/*
+- if (line.find("<<NAME>>") != string::npos) {
+- set_name = true;
+- set_file = false;
+- set_info = false;
+- NAME_ = "";
+- continue;
+- } else if (line.find("<<FILE>>") != string::npos ) {
+- set_name = false;
+- set_file = true;
+- set_info = false;
+- FILE_ = "";
+- continue;
+- } else if (line.find("<<INFO>>") != string::npos ) {
+- set_name = false;
+- set_file = false;
+- set_info = true;
+- INFO_ = "";
+- continue;
+- } else if (line.find("<<END>>") != string::npos ) {
+- set_name = false;
+- set_file = false;
+- set_info = false;
+- olp.push_back(std::tuple<std::string,std::string,std::string>(NAME_,FILE_,INFO_));
+- NAME_ = "";
+- FILE_ = "";
+- INFO_ = "";
+- continue;
+- }
+- if ( set_name ) NAME_ += line;
+- else if ( set_file ) FILE_ += line;
+- else if ( set_info ) INFO_ += line+"\n";
+-
+- */
+ }
+ in->close ();
+ }
+@@ -919,17 +846,6 @@ void PresetWindow::replace_inline(std::string& subject, const std::string& searc
+
+ void PresetWindow::show_online_preset() {
+
+- char *dbus = getenv("DBUS_SESSION_BUS_ADDRESS");
+- if (!dbus) {
+- system("eval 'dbus-launch --sh-syntax --exit-with-session'");
+- }
+-
+- dbus = getenv("DBUS_SESSION_BUS_ADDRESS");
+- if (!dbus) {
+- gx_print_error("downloadPreset", _("DBUS_SESSION_BUS_ADDRESS not detected, online prest download isn't supported!!"));
+- return;
+- }
+-
+ Glib::RefPtr<Gio::File> dest = Gio::File::create_for_uri(Glib::filename_to_uri(options.get_online_config_filename(), resolve_hostname()));
+ static bool load_new = true;
+ static bool load = false;
+@@ -939,16 +855,14 @@ void PresetWindow::show_online_preset() {
+ window->set_cursor(cursor);
+ if (dest->query_exists()) {
+ Gtk::MessageDialog *d = new Gtk::MessageDialog(*dynamic_cast<Gtk::Window*>(online_preset->get_toplevel()),
+- "Do you wont to check for new presets from\n https://musical-artifacts.com ? \n Note, that may take a while",
++ "Do you want to check for new presets from\n https://musical-artifacts.com ? \n Note, that may take a while",
+ false, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_YES_NO, true);
+ d->set_position(Gtk::WIN_POS_MOUSE);
+ if (d->run() == Gtk::RESPONSE_YES) load = true;
+ delete d;
+ }
+ if (load || ! dest->query_exists()) {
+- if (download_file("https://musical-artifacts.com/artifacts.json?apps=guitarix", options.get_online_config_filename())) {
+- // machine.load_online_presets();
+- } else {
++ if (!download_file("https://musical-artifacts.com/artifacts.json?apps=guitarix", options.get_online_config_filename())) {
+ window->set_cursor();
+ return;
+ }
+diff --git a/trunk/src/gx_head/wscript b/trunk/src/gx_head/wscript
+index 45a5b249..df7c97b0 100644
+--- a/trunk/src/gx_head/wscript
++++ b/trunk/src/gx_head/wscript
+@@ -161,7 +161,7 @@ def build(bld):
+ lib = []
+ if sys.platform.startswith("linux"):
+ lib.append('dl')
+- uselib = ['JACK', 'SNDFILE', 'GTHREAD', 'GMODULE_EXPORT',
++ uselib = ['JACK', 'SNDFILE', 'GTHREAD', 'GMODULE_EXPORT', 'CURL',
+ 'GTK2', 'GTKMM', 'GIOMM', 'FFTW3', 'LRDF', 'LILV', 'BOOST_SYSTEM','BOOST_IOSTREAMS']
+ if bld.env["HAVE_AVAHI"]:
+ uselib += ['AVAHI_GOBJECT', 'AVAHI_GLIB', 'AVAHI_CLIENT']
+diff --git a/trunk/src/headers/guitarix.h b/trunk/src/headers/guitarix.h
+index 9c71dccd..686cb284 100644
+--- a/trunk/src/headers/guitarix.h
++++ b/trunk/src/headers/guitarix.h
+@@ -65,6 +65,7 @@
+ #endif
+
+ #include <gtkmm.h>
++#include <curl/curl.h>
+
+ #include "engine.h"
+ #include "jsonrpc.h"
+diff --git a/trunk/src/headers/gx_preset_window.h b/trunk/src/headers/gx_preset_window.h
+index 5d65d399..0b2afdd0 100644
+--- a/trunk/src/headers/gx_preset_window.h
++++ b/trunk/src/headers/gx_preset_window.h
+@@ -66,26 +66,6 @@ public:
+ using Gtk::TreeView::on_drag_motion;
+ };
+
+-
+-class DownloadWatch {
+-public:
+- DownloadWatch() : watcher(0), stop(false) {}
+- Glib::RefPtr<Gio::Cancellable> cancellable;
+- Gio::File::SlotFileProgress file_state;
+- static void f_progress(goffset read, goffset total);
+- void start ();
+- ~DownloadWatch();
+- Glib::Dispatcher timeout;
+-
+-protected:
+- void watch ();
+- void load ();
+- Glib::Thread * watcher;
+- Glib::Mutex w_mutex;
+- bool stop;
+-};
+-
+-
+ struct GxActions;
+
+ class PresetWindow: public sigc::trackable {
+@@ -97,9 +77,7 @@ private:
+ };
+ gx_engine::GxMachineBase& machine;
+ GxActions& actions;
+- DownloadWatch *watch;
+- void go_watch ();
+- void watch_done();
++ CURL *curl;
+ bool in_edit;
+ Gtk::TreeModel::iterator edit_iter;
+ Glib::RefPtr<Gdk::Pixbuf> pb_edit;
+diff --git a/trunk/wscript b/trunk/wscript
+index 2d54736a..7ebd6324 100644
+--- a/trunk/wscript
++++ b/trunk/wscript
+@@ -676,6 +676,7 @@ def configure(conf):
+ conf.check_cfg(package='glibmm-2.4', atleast_version='2.24', args='--cflags --libs', uselib_store='GLIBMM', mandatory=1)
+ conf.check(header_name='fftw3.h', mandatory=1)
+ conf.check_cfg(package='fftw3f', atleast_version='3.1.2', args='--cflags --libs', uselib_store='FFTW3', mandatory=1)
++ conf.check_cfg(package='libcurl', atleast_version='7.26.0', args='--cflags --libs', uselib_store='CURL', mandatory=1)
+
+ if (opt.standalone):
+ conf.env['STANDALONE'] = True
+--
+2.14.1
+