📄 Solver Configuration
Solver Configuration File Specification
This section describes the structure of solver configuration files used by XCSP Launcher to register, build, and run solvers.
Supported file extensions:
.xsc.yaml.xsc.yml.xsc.solver.yaml.solver.yml.solver
A JSON Schema for validating solver configuration files is available at: https://github.com/crillab/metrics-solvers/blob/main/.solver.schema.json
🧩 General Information
Field |
Type |
Required |
Description |
|---|---|---|---|
|
string |
✅ Yes |
Human-readable name of the solver. |
|
string |
✅ Yes |
Unique identifier (Java-like package name recommended). |
|
string |
❌ No |
Short description of the solver. |
|
string (URL) |
❌ No |
Official website for the solver. |
|
string (URL) |
⚠️ Yes (if |
Git repository URL. Cannot be used with |
|
string |
⚠️ Yes (if |
Local path to an already available solver. Cannot be used with |
|
string |
✅ Yes |
Programming language ( |
|
array of strings |
❌ No |
Tags such as |
|
string or array of strings |
❌ No |
Compatible OS list ( |
🛠️ Build Instructions
Field |
Type |
Required |
Description |
|---|---|---|---|
|
string |
✅ Yes |
Either |
|
array of objects |
⚠️ Yes if |
List of generic build steps. |
|
object (by platform) |
⚠️ Yes if |
OS-specific build steps or skip instructions. |
|
array of objects |
❌ No |
External dependencies (Git or archive) to download before building. |
🔗 Dependencies Structure
Each dependency supports:
Field |
Type |
Required |
Description |
|---|---|---|---|
|
string |
❌ No |
Git repository URL. |
|
string |
❌ No |
Direct download URL (e.g., zip, tar.gz). |
|
string |
✅ Yes |
Directory where the dependency is installed (relative or absolute). |
Either
gitorurlmust be provided.
🔨 Build Step Structure
Each step contains:
Field |
Type |
Required |
Description |
|---|---|---|---|
|
string |
✅ Yes |
Command to execute. Templated and auto-split. |
|
string |
❌ No |
Working directory for the command. Defaults to solver root. |
🔁 OS-specific Builds (per_os)
Each platform (linux, windows, macos) can contain:
skip: trueto disable build on that OS.steps:array of build steps (same format asdefault_steps).
⚙️ Command Line Execution
Field |
Type |
Required |
Description |
|---|---|---|---|
|
string |
❌ No |
Command prefix (e.g., |
|
string |
✅ Yes |
Template like |
|
string |
❌ No |
Always-appended options. |
|
object |
❌ No |
Supported runtime options with placeholders. |
🧰 Supported command.options Fields:
Each is string (template) or null.
time: Timeout option ({{value}}in seconds)seed: Seed specificationall_solutions: Enumerate all solutionsnumber_of_solutions: Max number of solutions ({{value}})verbosity: Verbosity level ({{value}})print_intermediate_assignment: Show assignments
🗃️ Versions Management
Field |
Type |
Required |
Description |
|---|---|---|---|
|
array |
✅ Yes |
List of supported versions. |
|
string |
✅ Yes |
Version label (e.g., |
|
string |
❌ No |
|
|
string |
⚠️ Yes if source is |
Git tag or commit hash. |
|
object |
⚠️ Yes if source is |
Map of OS to download URLs. |
|
string |
✅ Yes |
Relative path to the compiled executable. |
|
array |
❌ No |
Aliases like |
|
array |
❌ No |
Files to move after extraction (for example from source directory to bin directory). Each item: |
📥 Output Parsing
Field |
Type |
Required |
Description |
|---|---|---|---|
|
array |
❌ No |
List of log extraction rules (for compatibility with Metrics Scalpel). |
Each item supports:
file(string): file name to parsepatternorregex(one required)log-data(optional): labelgroups(optional): either array of indexes, or namedbound_list,timestamp_list
🧩 Placeholders
These can be used in cmd, cwd, template, and any string field:
Placeholder |
Description |
|---|---|
|
Absolute path to solver source directory |
|
Absolute path to solver bin directory |
|
Compiled binary path |
|
XCSP3 instance file path |
|
All generated options to be appended |
|
Java binary path |
|
Python binary path |
|
CMake binary path |
|
Bash binary path |
Placeholders are case-insensitive (
{{BASH}},{{BaSh}}work too).
📌 Notes
You should define a version with alias
"latest". If omitted, the launcher will automatically use semantic version sorting to infer the latest version.system: "all"means the solver supports all platforms.The
build.dependenciessection supports both Git and direct URL downloads.When downloading archives, the launcher ensures extracted content is flattened (i.e., removes redundant directory nesting).
🔍 Configuration File Discovery
Solver configuration files are searched in:
System directory:
/usr/share/xcsp-launcher/configsUser directory:
~/.config/xcsp-launcher/solvers
A cache file is automatically maintained at:
~/.cache/xcsp-launcher/solver_cache.json
To inspect all resolved paths used by XCSP Launcher:
xcsp --info