When built as a suite of programs, rather than individually using 
project=non-sequencer, non-sequencer looks in 
/usr/share/non-session-manager/instruments. If no user instrument definitions 
are available then non-sequencer displays an empty "Instrument" list.

The problem can be avoided by building the non programs individually, or by 
building the suite of programs and then re-building non-sequencer on its own. 
The problem can also be avoided by re-ordering the projects=[...] list in the 
top level wscript file from

projects = [ 'timeline', 'mixer', 'sequencer', 'session-manager' ]

to anything else as long as the last entry is non-sequencer:

projects = [ 'timeline', 'mixer', 'session-manager', 'sequencer' ]

It appears to arise from the fact that the SYSTEM_PATH definition written to 
each program's build/<non-program>/config.h file retains the value last defined 
and is thus dependent on which program was last configured.

SYSTEM_PATH appears to be used only by non-sequencer and in only one file; 
Instrument.C. This file looks like it is including "config.h" but the one 
provided is essentially empty, containing only a commented-out directive.

Also, SYSTEM_PATH as defined by each program is not well named as it is a 
system path plus a program-specific path.

Possible solutions, all tried and mostly working:
1. replace sequencer/src/config.h with a symlink to build/sequencer/config.h
or
2. alter the include in sequencer/src/Instrument.C to read #include  
"../../build/sequencer/config.h"
   (not tried)
or
3. alter the name of SYSTEM_PATH in both sequencer/src/Instrument.C and 
sequencer/wscript to read something other that SYSTEM_PATH, which is re-written 
by each of the other programs. I used NSQ_SYSTEM_PATH as it better described 
the use to which it might be put.
or
This still leaves the problem of re-writing the value of SYSTEM_PATH for the 
other non-programs, but as they currently make no use of it(?) it is likely OK. 
Otherwise solution 3 could be extended thus:

4. alter the name of SYSTEM_PATH for each program to make it distinct and edit 
each program/wscript file accordingly. I used:
NMX_SYSTEM_PATH
NTL_SYSTEM_PATH
NSM_SYSTEM_PATH
NSQ_SYSTEM_PATH
or
5. fix the method of determining the correct path for the "instruments" 
directory in non-sequencer. Would it be possible to derive the location from 
the concatenation of PREFIX + / + SHARED_DATA + / + APPNAME + / + 
"instruments"? I don't know how this would be done in Instrument.C and I know 
little about build systems and less about waf

Meanwhile I am happy with my ugly projects=[...] hack and my RPM build system 
is happy too.
-- 
Richard <[email protected]>


Reply via email to