Mercurial > hg > vamp-plugin-load-checker
diff README @ 28:7a20698b4c29
Add checker README; rename plugin-checker-helper binary (back) to vamp-plugin-load-checker -- I decided it was more useful to have a distinctive name for the installed binary than it was important to show that it was plugin-agnostic
author | Chris Cannam |
---|---|
date | Mon, 09 Jan 2017 10:14:59 +0000 |
parents | |
children | e791c1426131 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README Mon Jan 09 10:14:59 2017 +0000 @@ -0,0 +1,128 @@ + +[Vamp] Plugin Load Checker +========================== + +This is a very small command-line program (C++98, no particular +dependencies) for testing plugin libraries to see if they are +loadable. You run the program, pass it a list of library paths to +stdin, it tries to load them, and it reports to stdout whether each +load succeeded or not. + +The program was written for use with Vamp audio analysis plugins, but +it also works with other plugin formats. It has some hardcoded +knowledge of Vamp, LADSPA, and DSSI plugins but it can be used with +any plugins that involve loading DLLs and looking up descriptor +functions from them. + +It comes with a library (C++11, Qt) that searches for candidate plugin +files for some known formats in standard locations and runs the +checker program as a separate process to check whether they can be +loaded. This can be used to scan plugins and blacklist any that might +crash the host on load. + + +About the command-line program +------------------------------ + +The program (vamp-plugin-load-checker) accepts the name of a +descriptor symbol as its only command-line argument. It then reads a +list of plugin library paths from stdin, one per line. For each path +read, it attempts to load that library and retrieve the named +descriptor symbol, printing a line to stdout reporting whether this +was successful or not and then flushing stdout. The output line format +is described below. The program exits with code 0 if all libraries +were loaded successfully and non-zero otherwise. + +Note that library paths must be ready to pass to dlopen() or +equivalent; this usually means they should be absolute paths. + +Output line for successful load of library libname.so: +SUCCESS|/path/to/libname.so| + +Output line for failed load of library libname.so: +FAILURE|/path/to/libname.so|Reason for failure if available + +Although this program was written for use with Vamp audio analysis +plugins, it also works with other plugin formats. The program has some +hardcoded knowledge of Vamp, LADSPA, and DSSI plugins, but it can be +used with any plugins that involve loading DLLs and looking up +descriptor functions from them. + +Sometimes plugins will crash completely on load, bringing down this +program with them. If the program exits before all listed plugins have +been checked, this means that the plugin following the last reported +one has crashed. Typically the caller may want to run it again, +omitting that plugin. + +This program (src/helper.cpp) is written in C++98 and has no +particular dependencies apart from the dynamic loader library. + + +About the library +----------------- + +Two C++ classes are provided for use by a host application: +PluginCandidates and KnownPlugins. + +PluginCandidates knows how to invoke the checker program (if you +provide the path to it) and will do so for a set of plugin paths of +your request, returning success or failure reports to you. + +KnownPlugins knows about a limited set of plugin formats (currently +Vamp, LADSPA, DSSI) and will use PluginCandidates to test all plugins +found in those formats' standard installation directories. + +These are C++11 classes using the Qt toolkit. + + +How to compile +-------------- + +A Qt project (checker.pro) is provided, which compiles the program and +library: + +$ qmake checker.pro +$ make + +To compile only the command-line program, you should be able to use a +single C++ compiler invocation like: + +$ c++ -o vamp-plugin-load-checker src/helper.cpp -ldl + +I expect that most often the program and library will be compiled as +part of a larger host application. (They were written for use with +Sonic Visualiser.) + + +Copyright and licence +--------------------- + +Written by Chris Cannam at the Centre for Digital Music, Queen Mary +University of London. + + Copyright (c) 2016-2017 Queen Mary, University of London. + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, copy, + modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the names of the Centre for + Digital Music and Queen Mary, University of London shall not be + used in advertising or otherwise to promote the sale, use or other + dealings in this Software without prior written authorization. +