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]>
