mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-07 15:25:01 +01:00
major rationalization of use of search paths. ardour now has just 4 functions used to define how external resources are located: ardour_config_search_path() (for system or user specific configuration data), ardour_data_search_path() (for machine, user and system independent data), ardour_dll_directory() (base directory where shared libraries are found) and user_config_directory(). These are now used throughout the code. the config, data and dll paths/directories can be overridden by environment variables. the user config dir is added as the first element of the first two search paths, and use selectively when searching for a few other things.
This commit re-enabes ./waf install, and it is believed that it works fully at this point (more testing likely required) git-svn-id: svn://localhost/ardour2/branches/3.0@12326 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
433b6651ee
commit
813c5f0af9
33 changed files with 181 additions and 246 deletions
|
|
@ -559,7 +559,7 @@ About::About ()
|
||||||
|
|
||||||
sys::path splash_file;
|
sys::path splash_file;
|
||||||
|
|
||||||
SearchPath spath(ardour_search_path() + system_data_search_path());
|
SearchPath spath(ardour_data_search_path());
|
||||||
|
|
||||||
if (find_file_in_search_path (spath, "splash.png", splash_file)) {
|
if (find_file_in_search_path (spath, "splash.png", splash_file)) {
|
||||||
set_logo (Gdk::Pixbuf::create_from_file (splash_file.to_string()));
|
set_logo (Gdk::Pixbuf::create_from_file (splash_file.to_string()));
|
||||||
|
|
|
||||||
|
|
@ -72,9 +72,7 @@ ActionManager::init ()
|
||||||
|
|
||||||
ui_manager = UIManager::create ();
|
ui_manager = UIManager::create ();
|
||||||
|
|
||||||
SearchPath spath = ardour_search_path() + user_config_directory() + system_config_search_path();
|
find_file_in_search_path (ardour_config_search_path(), "ardour.menus", ui_file);
|
||||||
|
|
||||||
find_file_in_search_path (spath, "ardour.menus", ui_file);
|
|
||||||
|
|
||||||
bool loaded = false;
|
bool loaded = false;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,13 @@ TOP=`dirname "$0"`/..
|
||||||
|
|
||||||
libs=$TOP/@LIBS@
|
libs=$TOP/@LIBS@
|
||||||
|
|
||||||
|
#
|
||||||
|
# when running ardev, the various parts of Ardour have not been consolidated into the locations that they
|
||||||
|
# would normally end up after an install. We therefore need to set up environment variables so that we
|
||||||
|
# can find all the components.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
export ARDOUR_PATH=$TOP/gtk2_ardour/icons:$TOP/gtk2_ardour/pixmaps:$TOP/build/gtk2_ardour:$TOP/gtk2_ardour:.
|
export ARDOUR_PATH=$TOP/gtk2_ardour/icons:$TOP/gtk2_ardour/pixmaps:$TOP/build/gtk2_ardour:$TOP/gtk2_ardour:.
|
||||||
export ARDOUR_SURFACES_PATH=$libs/surfaces/osc:$libs/surfaces/generic_midi:$libs/surfaces/tranzport:$libs/surfaces/powermate:$libs/surfaces/mackie
|
export ARDOUR_SURFACES_PATH=$libs/surfaces/osc:$libs/surfaces/generic_midi:$libs/surfaces/tranzport:$libs/surfaces/powermate:$libs/surfaces/mackie
|
||||||
export ARDOUR_PANNER_PATH=$libs/panners/2in2out:$libs/panners/1in2out:$libs/panners/vbap
|
export ARDOUR_PANNER_PATH=$libs/panners/2in2out:$libs/panners/1in2out:$libs/panners/vbap
|
||||||
|
|
@ -11,6 +18,14 @@ export ARDOUR_DATA_PATH=$TOP/gtk2_ardour:build/gtk2_ardour:.
|
||||||
export ARDOUR_MIDIMAPS_PATH=$TOP/midi_maps:.
|
export ARDOUR_MIDIMAPS_PATH=$TOP/midi_maps:.
|
||||||
export ARDOUR_MCP_PATH=$TOP/mcp:.
|
export ARDOUR_MCP_PATH=$TOP/mcp:.
|
||||||
|
|
||||||
|
#
|
||||||
|
# even though we set the above variables, ardour requires that these
|
||||||
|
# two also be set. the above settings will override them.
|
||||||
|
#
|
||||||
|
|
||||||
|
export ARDOUR_CONFIG_PATH=$TOP:$TOP/gtk2_ardour:../build:../build/gtk2_ardour
|
||||||
|
export ARDOUR_DLL_PATH=$libs
|
||||||
|
|
||||||
if test -d $HOME/gtk/inst ; then
|
if test -d $HOME/gtk/inst ; then
|
||||||
export GTK_PATH=~/.ardour3:$libs/clearlooks-newer
|
export GTK_PATH=~/.ardour3:$libs/clearlooks-newer
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
export GTK_PATH=@LIBDIR@/ardour3${GTK_PATH:+:$GTK_PATH}
|
#
|
||||||
|
# This script runs an installed version of Ardour. It sets a few environment variables
|
||||||
|
# and does a few checks before exec'ing the real executable.
|
||||||
|
#
|
||||||
|
|
||||||
|
export GTK_PATH=@SYSCONFDIR@/ardour3${GTK_PATH:+:$GTK_PATH}
|
||||||
|
|
||||||
export LD_LIBRARY_PATH=@LIBDIR@/ardour3${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
|
export LD_LIBRARY_PATH=@LIBDIR@/ardour3${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
|
||||||
# DYLD_LIBRARY_PATH is for Darwin
|
|
||||||
export DYLD_LIBRARY_PATH=$LD_LIBRARY_PATH
|
|
||||||
|
|
||||||
## Memlock check
|
## Memlock check
|
||||||
|
|
||||||
|
|
@ -36,6 +39,14 @@ elif [ $(nm -D --radix=dec --defined-only -S $GLIB | grep -w g_atomic_int_add |
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Running Ardour requires these 3 variables to be set
|
||||||
|
#
|
||||||
|
|
||||||
|
export ARDOUR_DATA_PATH=@DATADIR@/ardour3
|
||||||
|
export ARDOUR_CONFIG_PATH=@SYSCONFDIR@/ardour3
|
||||||
|
export ARDOUR_DLL_PATH=@LIBDIR@/ardour3
|
||||||
|
|
||||||
exec @LIBDIR@/ardour3/ardour-@VERSION@ "$@"
|
exec @LIBDIR@/ardour3/ardour-@VERSION@ "$@"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -643,13 +643,12 @@ Editor::load_bindings ()
|
||||||
key_bindings.set_action_map (editor_action_map);
|
key_bindings.set_action_map (editor_action_map);
|
||||||
|
|
||||||
sys::path binding_file;
|
sys::path binding_file;
|
||||||
SearchPath spath = ardour_search_path() + user_config_directory() + system_config_search_path();
|
|
||||||
|
|
||||||
if (find_file_in_search_path (spath, "editor.bindings", binding_file)) {
|
if (find_file_in_search_path (ardour_config_search_path(), "editor.bindings", binding_file)) {
|
||||||
key_bindings.load (binding_file.to_string());
|
key_bindings.load (binding_file.to_string());
|
||||||
info << string_compose (_("Loaded editor bindings from %1"), binding_file.to_string()) << endmsg;
|
info << string_compose (_("Loaded editor bindings from %1"), binding_file.to_string()) << endmsg;
|
||||||
} else {
|
} else {
|
||||||
error << string_compose (_("Could not find editor.bindings in search path %1"), spath.to_string()) << endmsg;
|
error << string_compose (_("Could not find editor.bindings in search path %1"), ardour_config_search_path().to_string()) << endmsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -126,9 +126,7 @@ ArdourKeyboard::setup_keybindings ()
|
||||||
/* not absolute - look in the usual places */
|
/* not absolute - look in the usual places */
|
||||||
sys::path keybindings_file;
|
sys::path keybindings_file;
|
||||||
|
|
||||||
SearchPath spath = ardour_search_path() + user_config_directory() + system_config_search_path();
|
if ( ! find_file_in_search_path (ardour_config_search_path(), keybindings_path, keybindings_file)) {
|
||||||
|
|
||||||
if ( ! find_file_in_search_path (spath, keybindings_path, keybindings_file)) {
|
|
||||||
|
|
||||||
if (keybindings_path == default_bindings) {
|
if (keybindings_path == default_bindings) {
|
||||||
error << string_compose (_("Default keybindings not found - %1 will be hard to use!"), PROGRAM_NAME) << endmsg;
|
error << string_compose (_("Default keybindings not found - %1 will be hard to use!"), PROGRAM_NAME) << endmsg;
|
||||||
|
|
|
||||||
|
|
@ -83,13 +83,12 @@ MixerActor::load_bindings ()
|
||||||
bindings.set_action_map (myactions);
|
bindings.set_action_map (myactions);
|
||||||
|
|
||||||
sys::path binding_file;
|
sys::path binding_file;
|
||||||
SearchPath spath = ardour_search_path() + user_config_directory() + system_config_search_path();
|
|
||||||
|
|
||||||
if (find_file_in_search_path (spath, "mixer.bindings", binding_file)) {
|
if (find_file_in_search_path (ardour_config_search_path(), "mixer.bindings", binding_file)) {
|
||||||
bindings.load (binding_file.to_string());
|
bindings.load (binding_file.to_string());
|
||||||
info << string_compose (_("Loaded mixer bindings from %1"), binding_file.to_string()) << endmsg;
|
info << string_compose (_("Loaded mixer bindings from %1"), binding_file.to_string()) << endmsg;
|
||||||
} else {
|
} else {
|
||||||
error << string_compose (_("Could not find mixer.bindings in search path %1"), spath.to_string()) << endmsg;
|
error << string_compose (_("Could not find mixer.bindings in search path %1"), ardour_config_search_path().to_string()) << endmsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ Splash::Splash ()
|
||||||
{
|
{
|
||||||
sys::path splash_file;
|
sys::path splash_file;
|
||||||
|
|
||||||
if (!find_file_in_search_path (ardour_search_path() + system_data_search_path(), "splash.png", splash_file)) {
|
if (!find_file_in_search_path (ardour_data_search_path(), "splash.png", splash_file)) {
|
||||||
throw failed_constructor();
|
throw failed_constructor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -709,9 +709,8 @@ StepEntry::load_bindings ()
|
||||||
bindings.set_action_map (myactions);
|
bindings.set_action_map (myactions);
|
||||||
|
|
||||||
sys::path binding_file;
|
sys::path binding_file;
|
||||||
SearchPath spath = ardour_search_path() + user_config_directory() + system_config_search_path();
|
|
||||||
|
|
||||||
if (find_file_in_search_path (spath, "step_editing.bindings", binding_file)) {
|
if (find_file_in_search_path (ardour_config_search_path(), "step_editing.bindings", binding_file)) {
|
||||||
bindings.load (binding_file.to_string());
|
bindings.load (binding_file.to_string());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -202,13 +202,9 @@ load_rc_file (const string& filename, bool themechange)
|
||||||
{
|
{
|
||||||
sys::path rc_file_path;
|
sys::path rc_file_path;
|
||||||
|
|
||||||
SearchPath spath (ardour_search_path());
|
if (!find_file_in_search_path (ardour_config_search_path(), filename, rc_file_path)) {
|
||||||
spath += user_config_directory();
|
|
||||||
spath += system_config_search_path();
|
|
||||||
|
|
||||||
if (!find_file_in_search_path (spath, filename, rc_file_path)) {
|
|
||||||
warning << string_compose (_("Unable to find UI style file %1 in search path %2. %3 will look strange"),
|
warning << string_compose (_("Unable to find UI style file %1 in search path %2. %3 will look strange"),
|
||||||
filename, spath.to_string(), PROGRAM_NAME)
|
filename, ardour_config_search_path().to_string(), PROGRAM_NAME)
|
||||||
<< endmsg;
|
<< endmsg;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -75,8 +75,7 @@ UIConfiguration::load_defaults ()
|
||||||
rcfile = "ardour3_ui_default.conf";
|
rcfile = "ardour3_ui_default.conf";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (find_file_in_search_path (ardour_search_path() + system_config_search_path(),
|
if (find_file_in_search_path (ardour_config_search_path(), rcfile, default_ui_rc_file) ) {
|
||||||
rcfile, default_ui_rc_file) ) {
|
|
||||||
XMLTree tree;
|
XMLTree tree;
|
||||||
found = 1;
|
found = 1;
|
||||||
|
|
||||||
|
|
@ -107,8 +106,7 @@ UIConfiguration::load_state ()
|
||||||
|
|
||||||
sys::path default_ui_rc_file;
|
sys::path default_ui_rc_file;
|
||||||
|
|
||||||
if ( find_file_in_search_path (ardour_search_path() + system_config_search_path(),
|
if ( find_file_in_search_path (ardour_config_search_path(), "ardour3_ui_default.conf", default_ui_rc_file)) {
|
||||||
"ardour3_ui_default.conf", default_ui_rc_file) ) {
|
|
||||||
XMLTree tree;
|
XMLTree tree;
|
||||||
found = true;
|
found = true;
|
||||||
|
|
||||||
|
|
@ -129,8 +127,7 @@ UIConfiguration::load_state ()
|
||||||
|
|
||||||
sys::path user_ui_rc_file;
|
sys::path user_ui_rc_file;
|
||||||
|
|
||||||
if (find_file_in_search_path (ardour_search_path() + user_config_directory(),
|
if (find_file_in_search_path (ardour_config_search_path(), "ardour3_ui.conf", user_ui_rc_file)) {
|
||||||
"ardour3_ui.conf", user_ui_rc_file)) {
|
|
||||||
XMLTree tree;
|
XMLTree tree;
|
||||||
found = true;
|
found = true;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -494,8 +494,7 @@ get_xpm (std::string name)
|
||||||
{
|
{
|
||||||
if (!xpm_map[name]) {
|
if (!xpm_map[name]) {
|
||||||
|
|
||||||
SearchPath spath(ARDOUR::ardour_search_path());
|
SearchPath spath(ARDOUR::ardour_data_search_path());
|
||||||
spath += ARDOUR::system_data_search_path();
|
|
||||||
|
|
||||||
spath.add_subdirectory_to_paths("pixmaps");
|
spath.add_subdirectory_to_paths("pixmaps");
|
||||||
|
|
||||||
|
|
@ -521,15 +520,14 @@ get_icon_path (const char* cname)
|
||||||
string name = cname;
|
string name = cname;
|
||||||
name += X_(".png");
|
name += X_(".png");
|
||||||
|
|
||||||
SearchPath spath(ARDOUR::ardour_search_path());
|
SearchPath spath(ARDOUR::ardour_data_search_path());
|
||||||
spath += ARDOUR::system_data_search_path();
|
|
||||||
|
|
||||||
spath.add_subdirectory_to_paths("icons");
|
spath.add_subdirectory_to_paths("icons");
|
||||||
|
|
||||||
sys::path data_file_path;
|
sys::path data_file_path;
|
||||||
|
|
||||||
if (!find_file_in_search_path (spath, name, data_file_path)) {
|
if (!find_file_in_search_path (spath, name, data_file_path)) {
|
||||||
fatal << string_compose (_("cannot find icon image for %1"), name) << endmsg;
|
fatal << string_compose (_("cannot find icon image for %1 using %2"), name, spath.to_string()) << endmsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
return data_file_path.to_string();
|
return data_file_path.to_string();
|
||||||
|
|
|
||||||
|
|
@ -405,9 +405,7 @@ def build(bld):
|
||||||
'VERSIONSTRING="' + bld.env['VERSION'] + '"',
|
'VERSIONSTRING="' + bld.env['VERSION'] + '"',
|
||||||
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
|
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
|
||||||
'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
|
'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
|
||||||
'MODULE_DIR="' + os.path.normpath(bld.env['LIBDIR']) + '"',
|
'LOCALEDIR="' + os.path.join(os.path.normpath(bld.env['DATADIR']), 'locale') + '"',
|
||||||
'LOCALEDIR="' + os.path.join(os.path.normpath(bld.env['DATADIR']),
|
|
||||||
'locale') + '"',
|
|
||||||
'PROGRAM_NAME="' + bld.env['PROGRAM_NAME'] + '"'
|
'PROGRAM_NAME="' + bld.env['PROGRAM_NAME'] + '"'
|
||||||
]
|
]
|
||||||
obj.includes += ['../libs']
|
obj.includes += ['../libs']
|
||||||
|
|
@ -449,6 +447,8 @@ def build(bld):
|
||||||
wrapper_subst_dict = {
|
wrapper_subst_dict = {
|
||||||
'INSTALL_PREFIX' : bld.env['PREFIX'],
|
'INSTALL_PREFIX' : bld.env['PREFIX'],
|
||||||
'LIBDIR' : os.path.normpath(bld.env['LIBDIR']),
|
'LIBDIR' : os.path.normpath(bld.env['LIBDIR']),
|
||||||
|
'DATADIR' : os.path.normpath(bld.env['DATADIR']),
|
||||||
|
'SYSCONFDIR' : os.path.normpath(bld.env['SYSCONFDIR']),
|
||||||
'LIBS' : 'build/libs',
|
'LIBS' : 'build/libs',
|
||||||
'VERSION' : '3.0',
|
'VERSION' : '3.0',
|
||||||
'EXECUTABLE' : 'build/gtk2_ardour/ardour-3.0'
|
'EXECUTABLE' : 'build/gtk2_ardour/ardour-3.0'
|
||||||
|
|
@ -644,8 +644,6 @@ def build(bld):
|
||||||
|
|
||||||
# Default UI configuration
|
# Default UI configuration
|
||||||
bld.install_files('${SYSCONFDIR}/ardour3', 'ardour3_ui_default.conf')
|
bld.install_files('${SYSCONFDIR}/ardour3', 'ardour3_ui_default.conf')
|
||||||
# Generic widget style mappings
|
|
||||||
bld.install_files('${SYSCONFDIR}/ardour3', 'ardour3_widgets.rc')
|
|
||||||
|
|
||||||
# Default export stuff
|
# Default export stuff
|
||||||
bld.install_files('${SYSCONFDIR}/ardour3/export', bld.path.ant_glob('export/*.format'))
|
bld.install_files('${SYSCONFDIR}/ardour3/export', bld.path.ant_glob('export/*.format'))
|
||||||
|
|
|
||||||
|
|
@ -35,13 +35,20 @@ namespace ARDOUR {
|
||||||
* @return the path to the directory that contains the system wide ardour
|
* @return the path to the directory that contains the system wide ardour
|
||||||
* modules.
|
* modules.
|
||||||
*/
|
*/
|
||||||
PBD::sys::path ardour_module_directory ();
|
PBD::sys::path ardour_dll_directory ();
|
||||||
|
|
||||||
PBD::SearchPath ardour_search_path ();
|
/**
|
||||||
|
* @return the search path to be used when looking for per-system
|
||||||
|
* configuration files. This may include user configuration files.
|
||||||
|
*/
|
||||||
|
PBD::SearchPath ardour_config_search_path ();
|
||||||
|
|
||||||
PBD::SearchPath system_config_search_path ();
|
/**
|
||||||
|
* @return the search path to be used when looking for data files
|
||||||
PBD::SearchPath system_data_search_path ();
|
* that could be shared by systems (h/w and configuration independent
|
||||||
|
* files, such as icons, XML files, etc)
|
||||||
|
*/
|
||||||
|
PBD::SearchPath ardour_data_search_path ();
|
||||||
|
|
||||||
} // namespace ARDOUR
|
} // namespace ARDOUR
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -210,7 +210,7 @@ ControlProtocolManager::discover_control_protocols ()
|
||||||
dylib_extension_pattern, cp_modules);
|
dylib_extension_pattern, cp_modules);
|
||||||
|
|
||||||
DEBUG_TRACE (DEBUG::ControlProtocols,
|
DEBUG_TRACE (DEBUG::ControlProtocols,
|
||||||
string_compose (_("looking for control protocols in %1"), control_protocol_search_path().to_string()));
|
string_compose (_("looking for control protocols in %1\n"), control_protocol_search_path().to_string()));
|
||||||
|
|
||||||
for (vector<sys::path>::iterator i = cp_modules.begin(); i != cp_modules.end(); ++i) {
|
for (vector<sys::path>::iterator i = cp_modules.begin(); i != cp_modules.end(); ++i) {
|
||||||
control_protocol_discover ((*i).to_string());
|
control_protocol_discover ((*i).to_string());
|
||||||
|
|
@ -222,12 +222,14 @@ ControlProtocolManager::control_protocol_discover (string path)
|
||||||
{
|
{
|
||||||
ControlProtocolDescriptor* descriptor;
|
ControlProtocolDescriptor* descriptor;
|
||||||
|
|
||||||
/* don't load shared objects that are just symlinks to the real thing.
|
#ifdef __APPLE__
|
||||||
|
/* don't load OS X shared objects that are just symlinks to the real thing.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (Glib::file_test (path, Glib::FILE_TEST_IS_SYMLINK)) {
|
if (path.find (".dylib") && Glib::file_test (path, Glib::FILE_TEST_IS_SYMLINK)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if ((descriptor = get_descriptor (path)) != 0) {
|
if ((descriptor = get_descriptor (path)) != 0) {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,8 @@
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
#include <glibmm/miscutils.h>
|
#include <glibmm/miscutils.h>
|
||||||
|
|
||||||
#include "ardour/control_protocol_search_path.h"
|
#include "ardour/control_protocol_search_path.h"
|
||||||
|
|
@ -36,7 +38,7 @@ control_protocol_search_path ()
|
||||||
{
|
{
|
||||||
SearchPath spath (user_config_directory ());
|
SearchPath spath (user_config_directory ());
|
||||||
|
|
||||||
spath += ardour_module_directory ();
|
spath += ardour_dll_directory ();
|
||||||
spath.add_subdirectory_to_paths (surfaces_dir_name);
|
spath.add_subdirectory_to_paths (surfaces_dir_name);
|
||||||
|
|
||||||
bool surfaces_path_defined = false;
|
bool surfaces_path_defined = false;
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,11 @@
|
||||||
|
|
||||||
*/
|
*/
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
#include "pbd/error.h"
|
#include "pbd/error.h"
|
||||||
#include "pbd/compose.h"
|
#include "pbd/compose.h"
|
||||||
#include "pbd/filesystem_paths.h"
|
#include "pbd/strsplit.h"
|
||||||
|
|
||||||
#include <glibmm/miscutils.h>
|
#include <glibmm/miscutils.h>
|
||||||
#include <glibmm/fileutils.h>
|
#include <glibmm/fileutils.h>
|
||||||
|
|
@ -90,38 +91,72 @@ user_config_directory ()
|
||||||
}
|
}
|
||||||
|
|
||||||
sys::path
|
sys::path
|
||||||
ardour_module_directory ()
|
ardour_dll_directory ()
|
||||||
{
|
{
|
||||||
sys::path module_directory(MODULE_DIR);
|
std::string s = Glib::getenv("ARDOUR_DLL_PATH");
|
||||||
module_directory /= "ardour3";
|
if (s.empty()) {
|
||||||
return module_directory;
|
std::cerr << _("ARDOUR_CONFIG_PATH not set in environment - exiting\n");
|
||||||
|
::exit (1);
|
||||||
|
}
|
||||||
|
return sys::path (s);
|
||||||
}
|
}
|
||||||
|
|
||||||
SearchPath
|
SearchPath
|
||||||
ardour_search_path ()
|
ardour_config_search_path ()
|
||||||
{
|
{
|
||||||
SearchPath spath_env(Glib::getenv("ARDOUR_PATH"));
|
static bool have_path = false;
|
||||||
return spath_env;
|
static SearchPath search_path;
|
||||||
|
|
||||||
|
if (!have_path) {
|
||||||
|
SearchPath sp (user_config_directory());
|
||||||
|
|
||||||
|
std::string s = Glib::getenv("ARDOUR_CONFIG_PATH");
|
||||||
|
if (s.empty()) {
|
||||||
|
std::cerr << _("ARDOUR_CONFIG_PATH not set in environment - exiting\n");
|
||||||
|
::exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<string> ss;
|
||||||
|
split (s, ss, ':');
|
||||||
|
for (std::vector<string>::iterator i = ss.begin(); i != ss.end(); ++i) {
|
||||||
|
sp += sys::path (*i);
|
||||||
|
}
|
||||||
|
|
||||||
|
search_path = sp;
|
||||||
|
have_path = true;
|
||||||
|
std::cerr << "CONFIG PATH: " << search_path.to_string() << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return search_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
SearchPath
|
SearchPath
|
||||||
system_config_search_path ()
|
ardour_data_search_path ()
|
||||||
{
|
{
|
||||||
SearchPath config_path(system_config_directories());
|
static bool have_path = false;
|
||||||
|
static SearchPath search_path;
|
||||||
|
|
||||||
config_path.add_subdirectory_to_paths("ardour3");
|
if (!have_path) {
|
||||||
|
SearchPath sp (user_config_directory());
|
||||||
|
|
||||||
|
std::string s = Glib::getenv("ARDOUR_DATA_PATH");
|
||||||
|
if (s.empty()) {
|
||||||
|
std::cerr << _("ARDOUR_DATA_PATH not set in environment - exiting\n");
|
||||||
|
::exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<string> ss;
|
||||||
|
split (s, ss, ':');
|
||||||
|
for (std::vector<string>::iterator i = ss.begin(); i != ss.end(); ++i) {
|
||||||
|
sp += sys::path (*i);
|
||||||
|
}
|
||||||
|
|
||||||
|
search_path = sp;
|
||||||
|
have_path = true;
|
||||||
|
std::cerr << "DATA PATH: " << search_path.to_string() << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
return config_path;
|
return search_path;
|
||||||
}
|
|
||||||
|
|
||||||
SearchPath
|
|
||||||
system_data_search_path ()
|
|
||||||
{
|
|
||||||
SearchPath data_path(system_data_directories());
|
|
||||||
|
|
||||||
data_path.add_subdirectory_to_paths("ardour3");
|
|
||||||
|
|
||||||
return data_path;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace ARDOUR
|
} // namespace ARDOUR
|
||||||
|
|
|
||||||
|
|
@ -319,14 +319,9 @@ ARDOUR::init (bool use_windows_vst, bool try_optimization)
|
||||||
|
|
||||||
/* Make VAMP look in our library ahead of anything else */
|
/* Make VAMP look in our library ahead of anything else */
|
||||||
|
|
||||||
char *p = getenv ("VAMP_PATH");
|
SearchPath sp (ardour_dll_directory());
|
||||||
string vamppath = VAMP_DIR;
|
sp.add_subdirectory_to_paths ("vamp");
|
||||||
if (p) {
|
setenv ("VAMP_PATH", sp.to_string().c_str(), 1);
|
||||||
vamppath += ':';
|
|
||||||
vamppath += p;
|
|
||||||
}
|
|
||||||
setenv ("VAMP_PATH", vamppath.c_str(), 1);
|
|
||||||
|
|
||||||
|
|
||||||
setup_hardware_optimization (try_optimization);
|
setup_hardware_optimization (try_optimization);
|
||||||
|
|
||||||
|
|
@ -400,7 +395,7 @@ void
|
||||||
ARDOUR::find_bindings_files (map<string,string>& files)
|
ARDOUR::find_bindings_files (map<string,string>& files)
|
||||||
{
|
{
|
||||||
vector<sys::path> found;
|
vector<sys::path> found;
|
||||||
SearchPath spath = ardour_search_path() + user_config_directory() + system_config_search_path();
|
SearchPath spath = ardour_config_search_path();
|
||||||
|
|
||||||
if (getenv ("ARDOUR_SAE")) {
|
if (getenv ("ARDOUR_SAE")) {
|
||||||
Glib::PatternSpec pattern("*SAE-*.bindings");
|
Glib::PatternSpec pattern("*SAE-*.bindings");
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ midi_patch_search_path ()
|
||||||
{
|
{
|
||||||
SearchPath spath (user_config_directory ());
|
SearchPath spath (user_config_directory ());
|
||||||
|
|
||||||
spath += ardour_module_directory ();
|
spath += ardour_dll_directory ();
|
||||||
spath.add_subdirectory_to_paths(midi_patch_dir_name);
|
spath.add_subdirectory_to_paths(midi_patch_dir_name);
|
||||||
|
|
||||||
bool midi_patch_path_defined = false;
|
bool midi_patch_path_defined = false;
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ panner_search_path ()
|
||||||
{
|
{
|
||||||
SearchPath spath (user_config_directory ());
|
SearchPath spath (user_config_directory ());
|
||||||
|
|
||||||
spath += ardour_module_directory ();
|
spath += ardour_dll_directory ();
|
||||||
spath.add_subdirectory_to_paths(panner_dir_name);
|
spath.add_subdirectory_to_paths(panner_dir_name);
|
||||||
|
|
||||||
bool panner_path_defined = false;
|
bool panner_path_defined = false;
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ RCConfiguration::load_state ()
|
||||||
|
|
||||||
/* load system configuration first */
|
/* load system configuration first */
|
||||||
|
|
||||||
if (find_file_in_search_path (ardour_search_path() + system_config_search_path(), "ardour_system.rc", system_rc_file)) {
|
if (find_file_in_search_path (ardour_config_search_path(), "ardour_system.rc", system_rc_file)) {
|
||||||
string rcfile = system_rc_file.to_string();
|
string rcfile = system_rc_file.to_string();
|
||||||
|
|
||||||
/* stupid XML Parser hates empty files */
|
/* stupid XML Parser hates empty files */
|
||||||
|
|
@ -115,7 +115,7 @@ RCConfiguration::load_state ()
|
||||||
|
|
||||||
sys::path user_rc_file;
|
sys::path user_rc_file;
|
||||||
|
|
||||||
if (find_file_in_search_path (ardour_search_path() + user_config_directory(), "ardour.rc", user_rc_file)) {
|
if (find_file_in_search_path (ardour_config_search_path(), "ardour.rc", user_rc_file)) {
|
||||||
string rcfile = user_rc_file.to_string();
|
string rcfile = user_rc_file.to_string();
|
||||||
|
|
||||||
/* stupid XML parser hates empty files */
|
/* stupid XML parser hates empty files */
|
||||||
|
|
|
||||||
|
|
@ -19,32 +19,20 @@ using namespace PBD;
|
||||||
|
|
||||||
namespace ARDOUR {
|
namespace ARDOUR {
|
||||||
|
|
||||||
sys::path
|
SearchPath
|
||||||
system_template_directory ()
|
template_search_path ()
|
||||||
{
|
{
|
||||||
SearchPath spath(system_data_search_path());
|
SearchPath spath (ardour_data_search_path());
|
||||||
spath.add_subdirectory_to_paths(templates_dir_name);
|
spath.add_subdirectory_to_paths(templates_dir_name);
|
||||||
|
return spath;
|
||||||
// just return the first directory in the search path that exists
|
|
||||||
SearchPath::const_iterator i = std::find_if(spath.begin(), spath.end(), sys::exists);
|
|
||||||
|
|
||||||
if (i == spath.end()) return sys::path();
|
|
||||||
|
|
||||||
return *i;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sys::path
|
SearchPath
|
||||||
system_route_template_directory ()
|
route_template_search_path ()
|
||||||
{
|
{
|
||||||
SearchPath spath(system_data_search_path());
|
SearchPath spath (ardour_data_search_path());
|
||||||
spath.add_subdirectory_to_paths(route_templates_dir_name);
|
spath.add_subdirectory_to_paths(route_templates_dir_name);
|
||||||
|
return spath;
|
||||||
// just return the first directory in the search path that exists
|
|
||||||
SearchPath::const_iterator i = std::find_if(spath.begin(), spath.end(), sys::exists);
|
|
||||||
|
|
||||||
if (i == spath.end()) return sys::path();
|
|
||||||
|
|
||||||
return *i;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sys::path
|
sys::path
|
||||||
|
|
@ -61,7 +49,7 @@ user_route_template_directory ()
|
||||||
{
|
{
|
||||||
sys::path p(user_config_directory());
|
sys::path p(user_config_directory());
|
||||||
p /= route_templates_dir_name;
|
p /= route_templates_dir_name;
|
||||||
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -100,8 +88,7 @@ find_session_templates (vector<TemplateInfo>& template_names)
|
||||||
{
|
{
|
||||||
vector<string *> *templates;
|
vector<string *> *templates;
|
||||||
PathScanner scanner;
|
PathScanner scanner;
|
||||||
SearchPath spath (system_template_directory());
|
SearchPath spath (template_search_path());
|
||||||
spath += user_template_directory ();
|
|
||||||
|
|
||||||
templates = scanner (spath.to_string(), template_filter, 0, true, true);
|
templates = scanner (spath.to_string(), template_filter, 0, true, true);
|
||||||
|
|
||||||
|
|
@ -137,8 +124,7 @@ find_route_templates (vector<TemplateInfo>& template_names)
|
||||||
{
|
{
|
||||||
vector<string *> *templates;
|
vector<string *> *templates;
|
||||||
PathScanner scanner;
|
PathScanner scanner;
|
||||||
SearchPath spath (system_route_template_directory());
|
SearchPath spath (route_template_search_path());
|
||||||
spath += user_route_template_directory ();
|
|
||||||
|
|
||||||
templates = scanner (spath.to_string(), route_template_filter, 0, false, true);
|
templates = scanner (spath.to_string(), route_template_filter, 0, false, true);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -364,11 +364,7 @@ def build(bld):
|
||||||
'PACKAGE="' + I18N_PACKAGE + '"',
|
'PACKAGE="' + I18N_PACKAGE + '"',
|
||||||
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
|
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
|
||||||
'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
|
'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
|
||||||
'MODULE_DIR="' + os.path.normpath(bld.env['LIBDIR']) + '"',
|
'LOCALEDIR="' + os.path.join(os.path.normpath(bld.env['DATADIR']), 'locale') + '"',
|
||||||
'LOCALEDIR="' + os.path.join(
|
|
||||||
os.path.normpath(bld.env['DATADIR']), 'locale') + '"',
|
|
||||||
'VAMP_DIR="' + os.path.join(
|
|
||||||
os.path.normpath(bld.env['LIBDIR']), 'ardour3', 'vamp') + '"',
|
|
||||||
'PROGRAM_NAME="' + bld.env['PROGRAM_NAME'] + '"'
|
'PROGRAM_NAME="' + bld.env['PROGRAM_NAME'] + '"'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -453,7 +449,6 @@ def build(bld):
|
||||||
'PACKAGE="libardour3test"',
|
'PACKAGE="libardour3test"',
|
||||||
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
|
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
|
||||||
'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
|
'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
|
||||||
'MODULE_DIR="' + os.path.normpath(bld.env['LIBDIR']) + '"',
|
|
||||||
'LOCALEDIR="' + os.path.join(
|
'LOCALEDIR="' + os.path.join(
|
||||||
os.path.normpath(bld.env['DATADIR']), 'locale') + '"',
|
os.path.normpath(bld.env['DATADIR']), 'locale') + '"',
|
||||||
'VAMP_DIR="' + os.path.join(
|
'VAMP_DIR="' + os.path.join(
|
||||||
|
|
@ -485,7 +480,6 @@ def build(bld):
|
||||||
'PACKAGE="libardour3profile"',
|
'PACKAGE="libardour3profile"',
|
||||||
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
|
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
|
||||||
'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
|
'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
|
||||||
'MODULE_DIR="' + os.path.normpath(bld.env['LIBDIR']) + '"',
|
|
||||||
'LOCALEDIR="' + os.path.join(
|
'LOCALEDIR="' + os.path.join(
|
||||||
os.path.normpath(bld.env['DATADIR']), 'locale') + '"',
|
os.path.normpath(bld.env['DATADIR']), 'locale') + '"',
|
||||||
'VAMP_DIR="' + os.path.join(
|
'VAMP_DIR="' + os.path.join(
|
||||||
|
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2007 Tim Mayberry
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <glib.h>
|
|
||||||
|
|
||||||
#include "pbd/filesystem_paths.h"
|
|
||||||
|
|
||||||
namespace PBD {
|
|
||||||
|
|
||||||
std::vector<sys::path>
|
|
||||||
system_data_directories ()
|
|
||||||
{
|
|
||||||
std::vector<sys::path> tmp;
|
|
||||||
const char * const * dirs;
|
|
||||||
|
|
||||||
dirs = g_get_system_data_dirs ();
|
|
||||||
|
|
||||||
if (dirs == NULL) return tmp;
|
|
||||||
|
|
||||||
for (int i = 0; dirs[i] != NULL; ++i)
|
|
||||||
{
|
|
||||||
tmp.push_back(dirs[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<sys::path>
|
|
||||||
system_config_directories ()
|
|
||||||
{
|
|
||||||
std::vector<sys::path> tmp;
|
|
||||||
const char * const * dirs;
|
|
||||||
|
|
||||||
dirs = g_get_system_config_dirs ();
|
|
||||||
|
|
||||||
if (dirs == NULL) return tmp;
|
|
||||||
|
|
||||||
for (int i = 0; dirs[i] != NULL; ++i)
|
|
||||||
{
|
|
||||||
tmp.push_back(dirs[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace PBD
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2007 Tim Mayberry
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef PBD_FILESYSTEM_PATHS_INCLUDED
|
|
||||||
#define PBD_FILESYSTEM_PATHS_INCLUDED
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include "pbd/filesystem.h"
|
|
||||||
|
|
||||||
namespace PBD {
|
|
||||||
|
|
||||||
std::vector<sys::path> system_data_directories ();
|
|
||||||
|
|
||||||
std::vector<sys::path> system_config_directories ();
|
|
||||||
|
|
||||||
} // namespace PBD
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -79,7 +79,6 @@ def build(bld):
|
||||||
epa.cc
|
epa.cc
|
||||||
error.cc
|
error.cc
|
||||||
filesystem.cc
|
filesystem.cc
|
||||||
filesystem_paths.cc
|
|
||||||
file_manager.cc
|
file_manager.cc
|
||||||
file_utils.cc
|
file_utils.cc
|
||||||
fpu.cc
|
fpu.cc
|
||||||
|
|
|
||||||
|
|
@ -114,7 +114,7 @@ system_midi_map_search_path ()
|
||||||
return spath_env;
|
return spath_env;
|
||||||
}
|
}
|
||||||
|
|
||||||
SearchPath spath (system_data_search_path());
|
SearchPath spath (ardour_data_search_path());
|
||||||
spath.add_subdirectory_to_paths(midi_map_dir_name);
|
spath.add_subdirectory_to_paths(midi_map_dir_name);
|
||||||
|
|
||||||
// just return the first directory in the search path that exists
|
// just return the first directory in the search path that exists
|
||||||
|
|
|
||||||
|
|
@ -421,7 +421,7 @@ static const char* const devinfo_dir_name = "mcp";
|
||||||
static const char* const devinfo_suffix = ".device";
|
static const char* const devinfo_suffix = ".device";
|
||||||
|
|
||||||
static SearchPath
|
static SearchPath
|
||||||
system_devinfo_search_path ()
|
devinfo_search_path ()
|
||||||
{
|
{
|
||||||
bool devinfo_path_defined = false;
|
bool devinfo_path_defined = false;
|
||||||
sys::path spath_env (Glib::getenv (devinfo_env_variable_name, devinfo_path_defined));
|
sys::path spath_env (Glib::getenv (devinfo_env_variable_name, devinfo_path_defined));
|
||||||
|
|
@ -430,21 +430,12 @@ system_devinfo_search_path ()
|
||||||
return spath_env;
|
return spath_env;
|
||||||
}
|
}
|
||||||
|
|
||||||
SearchPath spath (system_data_search_path());
|
SearchPath spath (ardour_data_search_path());
|
||||||
spath.add_subdirectory_to_paths(devinfo_dir_name);
|
spath.add_subdirectory_to_paths(devinfo_dir_name);
|
||||||
|
|
||||||
return spath;
|
return spath;
|
||||||
}
|
}
|
||||||
|
|
||||||
static sys::path
|
|
||||||
user_devinfo_directory ()
|
|
||||||
{
|
|
||||||
sys::path p(user_config_directory());
|
|
||||||
p /= devinfo_dir_name;
|
|
||||||
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
devinfo_filter (const string &str, void */*arg*/)
|
devinfo_filter (const string &str, void */*arg*/)
|
||||||
{
|
{
|
||||||
|
|
@ -459,8 +450,7 @@ DeviceInfo::reload_device_info ()
|
||||||
vector<string> s;
|
vector<string> s;
|
||||||
vector<string *> *devinfos;
|
vector<string *> *devinfos;
|
||||||
PathScanner scanner;
|
PathScanner scanner;
|
||||||
SearchPath spath (system_devinfo_search_path());
|
SearchPath spath (devinfo_search_path());
|
||||||
spath += user_devinfo_directory ();
|
|
||||||
|
|
||||||
devinfos = scanner (spath.to_string(), devinfo_filter, 0, false, true);
|
devinfos = scanner (spath.to_string(), devinfo_filter, 0, false, true);
|
||||||
device_info.clear ();
|
device_info.clear ();
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ static const char* const devprofile_dir_name = "mcp";
|
||||||
static const char* const devprofile_suffix = ".profile";
|
static const char* const devprofile_suffix = ".profile";
|
||||||
|
|
||||||
static SearchPath
|
static SearchPath
|
||||||
system_devprofile_search_path ()
|
devprofile_search_path ()
|
||||||
{
|
{
|
||||||
bool devprofile_path_defined = false;
|
bool devprofile_path_defined = false;
|
||||||
sys::path spath_env (Glib::getenv (devprofile_env_variable_name, devprofile_path_defined));
|
sys::path spath_env (Glib::getenv (devprofile_env_variable_name, devprofile_path_defined));
|
||||||
|
|
@ -65,7 +65,7 @@ system_devprofile_search_path ()
|
||||||
return spath_env;
|
return spath_env;
|
||||||
}
|
}
|
||||||
|
|
||||||
SearchPath spath (system_data_search_path());
|
SearchPath spath (ardour_data_search_path());
|
||||||
spath.add_subdirectory_to_paths(devprofile_dir_name);
|
spath.add_subdirectory_to_paths(devprofile_dir_name);
|
||||||
|
|
||||||
return spath;
|
return spath;
|
||||||
|
|
@ -94,8 +94,7 @@ DeviceProfile::reload_device_profiles ()
|
||||||
vector<string> s;
|
vector<string> s;
|
||||||
vector<string *> *devprofiles;
|
vector<string *> *devprofiles;
|
||||||
PathScanner scanner;
|
PathScanner scanner;
|
||||||
SearchPath spath (system_devprofile_search_path());
|
SearchPath spath (devprofile_search_path());
|
||||||
spath += user_devprofile_directory ();
|
|
||||||
|
|
||||||
devprofiles = scanner (spath.to_string(), devprofile_filter, 0, false, true);
|
devprofiles = scanner (spath.to_string(), devprofile_filter, 0, false, true);
|
||||||
device_profiles.clear ();
|
device_profiles.clear ();
|
||||||
|
|
|
||||||
|
|
@ -191,8 +191,7 @@ OSC::start ()
|
||||||
|
|
||||||
PBD::sys::path url_file;
|
PBD::sys::path url_file;
|
||||||
|
|
||||||
if (find_file_in_search_path (ardour_search_path() + system_config_search_path(),
|
if (find_file_in_search_path (ardour_config_search_path(), "osc_url", url_file)) {
|
||||||
"osc_url", url_file)) {
|
|
||||||
|
|
||||||
_osc_url_file = url_file.to_string();
|
_osc_url_file = url_file.to_string();
|
||||||
ofstream urlfile;
|
ofstream urlfile;
|
||||||
|
|
|
||||||
18
mcp/wscript
Normal file
18
mcp/wscript
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
top = '.'
|
||||||
|
out = 'build'
|
||||||
|
|
||||||
|
def configure(conf):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def build(bld):
|
||||||
|
devinfo = bld.path.ant_glob ('*.device')
|
||||||
|
profiles = bld.path.ant_glob ('*.profile')
|
||||||
|
bld.install_files (os.path.join(bld.env['DATADIR'], 'ardour3', 'mcp'), devinfo)
|
||||||
|
bld.install_files (os.path.join(bld.env['DATADIR'], 'ardour3', 'mcp'), profiles)
|
||||||
|
|
||||||
|
def options(opt):
|
||||||
|
pass
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This is Linux-specific startup script for a bundled version of Ardour
|
||||||
|
|
||||||
while [ $# -gt 0 ] ; do
|
while [ $# -gt 0 ] ; do
|
||||||
echo "arg = $1"
|
echo "arg = $1"
|
||||||
case $1 in
|
case $1 in
|
||||||
|
|
@ -11,9 +13,9 @@ while [ $# -gt 0 ] ; do
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
#LD_LIBRARY_PATH needs to be set (empty) so that epa can swap between the original and the bundled version
|
# LD_LIBRARY_PATH needs to be set here so that epa can swap between the original and the bundled version
|
||||||
|
# (the original one will be stored in PREBUNDLE_ENV)
|
||||||
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
|
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
|
||||||
|
|
||||||
export PREBUNDLE_ENV="$(env)"
|
export PREBUNDLE_ENV="$(env)"
|
||||||
|
|
||||||
BIN_DIR=$(dirname $(readlink -f $0))
|
BIN_DIR=$(dirname $(readlink -f $0))
|
||||||
|
|
@ -35,12 +37,13 @@ export ARDOUR_BUNDLED=true
|
||||||
|
|
||||||
%ENV%
|
%ENV%
|
||||||
|
|
||||||
export GTK_PATH=$INSTALL_DIR/libs/clearlooks${GTK_PATH:+:$GTK_PATH}
|
# Disable extra modules from being loaded by gtk (example, libcanberra-gtk-module.so)
|
||||||
export GTK_MODULES="" # Disable extra modules from being loaded by gtk (example, libcanberra-gtk-module.so)
|
export GTK_MODULES=""
|
||||||
|
# Set this so that the executable will find all the right libraries inside the bundle
|
||||||
export LD_LIBRARY_PATH=$INSTALL_DIR/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
|
export LD_LIBRARY_PATH=$INSTALL_DIR/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
|
||||||
|
|
||||||
# create install-location-dependent config files for Pango and GDK image loaders
|
# create install-location-dependent config files for Pango and GDK image loaders
|
||||||
# We have to do this every time because its possible that BIN_DIR has changed
|
# We have to do this every time because its possible that LIB_DIR has changed
|
||||||
|
|
||||||
sed "s?@ROOTDIR@/modules?$LIB_DIR/modules?" < $ETC_DIR/pango.modules.in > $USER_ARDOUR_DIR/pango.modules
|
sed "s?@ROOTDIR@/modules?$LIB_DIR/modules?" < $ETC_DIR/pango.modules.in > $USER_ARDOUR_DIR/pango.modules
|
||||||
sed "s?@ROOTDIR@/loaders?$LIB_DIR/loaders?" < $ETC_DIR/gdk-pixbuf.loaders.in > $USER_ARDOUR_DIR/gdk-pixbuf.loaders
|
sed "s?@ROOTDIR@/loaders?$LIB_DIR/loaders?" < $ETC_DIR/gdk-pixbuf.loaders.in > $USER_ARDOUR_DIR/gdk-pixbuf.loaders
|
||||||
|
|
|
||||||
9
wscript
9
wscript
|
|
@ -35,6 +35,7 @@ children = [
|
||||||
'templates',
|
'templates',
|
||||||
'export',
|
'export',
|
||||||
'midi_maps',
|
'midi_maps',
|
||||||
|
'mcp',
|
||||||
'manual'
|
'manual'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -737,11 +738,3 @@ def i18n_po(bld):
|
||||||
def i18n_mo(bld):
|
def i18n_mo(bld):
|
||||||
bld.recurse (i18n_children)
|
bld.recurse (i18n_children)
|
||||||
|
|
||||||
def install_not_supported(bld):
|
|
||||||
print ('Installing Ardour 3 is currently unsupported. Run it via the command ./ardev from within the gtk2_ardour directory.')
|
|
||||||
sys.exit (1)
|
|
||||||
|
|
||||||
from waflib import Build
|
|
||||||
class install(Build.InstallContext):
|
|
||||||
cmd = 'install'
|
|
||||||
fun = 'install_not_supported'
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue