first pass a "phone home" facility for version tracking and update notification

git-svn-id: svn://localhost/ardour2/branches/3.0@7549 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2010-08-05 19:39:49 +00:00
parent 7c39d2171f
commit 6109f05c38
6 changed files with 95 additions and 2 deletions

View File

@ -55,6 +55,7 @@
#include "midi++/manager.h"
#include "ardour/ardour.h"
#include "ardour/callback.h"
#include "ardour/profile.h"
#include "ardour/session_directory.h"
#include "ardour/session_route.h"
@ -646,6 +647,11 @@ Please consider the possibilities, and perhaps (re)start JACK."));
void
ARDOUR_UI::startup ()
{
#ifdef PHONE_HOME
call_the_mothership (VERSIONSTRING);
#endif
if (get_session_parameters (true, ARDOUR_COMMAND_LINE::new_session, ARDOUR_COMMAND_LINE::load_template)) {
exit (1);
}

View File

@ -289,6 +289,9 @@ def build(bld):
obj.source += [ 'vst_pluginui.cc' ]
obj.cxxflags += [ '-DVST_SUPPORT' ]
if bld.env['PHONE_HOME']:
obj.cxxflags += [ '-DPHONE_HOME' ]
if bld.env['GTKOSX']:
TaskGen.task_gen.mappings['.mm'] = TaskGen.task_gen.mappings['.cc']
obj.source += [ 'cocoacarbon.mm' ]

View File

@ -0,0 +1,8 @@
#ifndef __libardour_callback_h__
#define __libardour_callback_h__
#include <string>
void call_the_mothership (const std::string&);
#endif /* __libardour_callback_h__ */

65
libs/ardour/callback.cc Normal file
View File

@ -0,0 +1,65 @@
#include <iostream>
#include <string>
#include <sys/utsname.h>
#include <curl/curl.h>
#include "pbd/compose.h"
#include "ardour/callback.h"
using namespace std;
#define PING_URL "http://ardour.org/pingback/versioncheck"
static size_t
curl_write_data (char *bufptr, size_t size, size_t nitems, void *ptr)
{
return size * nitems;
}
static string
watermark ()
{
return "";
}
void
call_the_mothership (const string& version)
{
CURL* c;
struct utsname utb;
if (uname (&utb)) {
return;
}
curl_global_init (CURL_GLOBAL_NOTHING);
c = curl_easy_init ();
string data;
string wm;
data = string_compose ("version=%1&platform=%2 %3 %4", version, utb.sysname, utb.release, utb.machine);
wm = watermark();
if (!wm.empty()) {
data += string_compose ("&watermark=%1", wm);
}
curl_easy_setopt(c, CURLOPT_POSTFIELDS, data.c_str());
curl_easy_setopt(c, CURLOPT_URL, PING_URL);
curl_easy_setopt(c, CURLOPT_WRITEFUNCTION, curl_write_data);
curl_easy_setopt(c, CURLOPT_WRITEDATA, 0);
std::cerr << "Callback to ardour.org ...\n";
char errbuf[CURL_ERROR_SIZE];
curl_easy_setopt(c, CURLOPT_ERRORBUFFER, errbuf);
if (curl_easy_perform (c) == 0) {
}
curl_easy_cleanup (c);
}

View File

@ -61,6 +61,7 @@ libardour_sources = [
'buffer_set.cc',
'bundle.cc',
'butler.cc',
'callback.cc',
'chan_count.cc',
'chan_mapping.cc',
'configuration.cc',

14
wscript
View File

@ -328,7 +328,7 @@ def set_options(opt):
opt.add_option('--boost-sp-debug', action='store_true', default=False, dest='boost_sp_debug',
help='Compile with Boost shared pointer debugging')
opt.add_option('--audiounits', action='store_true', default=False, dest='audiounits',
help='Compile with Apple\'s AudioUnit library (experimental)')
help='Compile with Apple\'s AudioUnit library')
opt.add_option('--coreaudio', action='store_true', default=False, dest='coreaudio',
help='Compile with Apple\'s CoreAudio library')
opt.add_option('--dist-target', type='string', default='auto', dest='dist_target',
@ -351,6 +351,7 @@ def set_options(opt):
opt.add_option('--nls', action='store_true', default=True, dest='nls',
help='Enable i18n (native language support) (default)')
opt.add_option('--no-nls', action='store_false', dest='nls')
opt.add_option('--phone-home', action='store_false', default=True, dest='phone_home')
opt.add_option('--stl-debug', action='store_true', default=False, dest='stl_debug',
help='Build with debugging for the STL')
opt.add_option('--test', action='store_true', default=False, dest='build_tests',
@ -503,7 +504,13 @@ def configure(conf):
conf.env.append_value('CXXFLAGS', '-DWAF_BUILD')
autowaf.print_summary(conf)
# debug builds should not call home
opts = Options.options
if opts.debug:
opts.phone_home = False;
autowaf.display_header('Ardour Configuration')
autowaf.display_msg(conf, 'Build Target', conf.env['build_target'])
autowaf.display_msg(conf, 'Architecture flags', opts.arch)
@ -514,6 +521,9 @@ def configure(conf):
conf.define ('COREAUDIO', 1)
if opts.audiounits:
conf.define('AUDIOUNITS',1)
autowaf.display_msg(conf, 'Phone Home', opts.phone_home)
if opts.phone_home:
conf.env['PHONE_HOME'] = opts.phone_home
autowaf.display_msg(conf, 'FPU Optimization', opts.fpu_optimization)
if opts.fpu_optimization:
conf.define('FPU_OPTIMIZATION', 1)
@ -534,7 +544,7 @@ def configure(conf):
autowaf.display_msg(conf, 'Tranzport', opts.tranzport)
if opts.build_tests:
conf.env['BUILD_TESTS'] = opts.build_tests
autowaf.display_msg(conf, 'Unit Tests', bool(conf.env['BUILD_TESTS']) and bool (conf.env['HAVE_CPPUNIT']))
autowaf.display_msg(conf, 'Unit Tests', bool(conf.env['BUILD_TESTS']) and bool (conf.env['HAVE_CPPUNIT']))
if opts.tranzport:
conf.define('TRANZPORT', 1)
autowaf.display_msg(conf, 'Universal Binary', opts.universal)