[chessx-developer] auto-install of engines on Linux
Chess Database and PGN viewer
Brought to you by:
hognose
From: H.G. M. <h.g...@hc...> - 2014-11-14 23:30:08
|
Dear ChessX developers, sorry that I contact you this way; I could not figure out how to use the sourceforge trackers to submit a feature request. I am the current developer of XBoard, and I am trying to set up a system for Linux to eleminate the need for users to 'install' engines that are already installed by the package-managinging system into the GUIs where they want to use them (as is also needed in ChessX through the Edit->Preferences->Engine tab). The system is very simple, and I hope that ChessX would implement it too. The idea is that engine packages, as part of their install, would drop a small file in a system standard directory reserved for the particular protocol the engine speaks. E.g. Stockfish would drop a file /usr/[local/]share/games/plugins/uci/stockfish.eng A UCI-supporting GUI would then scan this directory for *.eng files to know what UCI engines are currently installed, and from the modify date of the file it could see when it was installed. As it also knows the modify date of its own settings file that contains its engine list, it can know if the engine is newly installed or has been seen before. If it is new, it can add it to the list (possibly under control of a user option to switch such auto-installs on or off). To add it to its engine list, it would of course need to have some info that normally would be provided by the user that installs it. Such as engine startup command (possibly including command-line arguments), and the engine directory. (It would already know the engine is UCI, or it would not have been in that folder.) This info comes from the contents of the .eng file, which (for now) is just 3 lines: plugin spec 0.0 stockfish chess,chess960 The first line providing some version number that identifies the file format (so that in the future it can easily be extended with more info), the second line being the engine startup command to run it in the applicable protocol, and the third line what games/variants it can play (for now only chess and chess960 are defined). A GUI that only supports Chess would obviously have to ignore any engine that does not list "chess" on the third line. For engines that have to run in a specific directory a cd command to that directory would be prefixed to its startup command on the second line, like cd ENGINEDIR;ENGINECOMMAND This should provide the GUI with some minimal information needed to append the engine to its engine list. I hope to extend the standard in the future by also listing other info that could be relevant for the GUI, e.g. known non-compliancies with the protocol for which the GUI might have work-around options that could correct it. (E.g. when an engine reports scores with the wrong sign when playing black.) For XBoard protocol (CECP) the corresponding directory would be /usr/[local/]share/games/plugins/xboard/ Would you be willing to equip ChessX with such an auto-install system? The incentive for engine authors to adopt this system will be proportional to the number of GUI's that do so, and vice versa. So I am trying to collect some critical mass to get it off the ground. Kindest regards, H.G.Muller |