# XCSP-Launcher
[](https://www.gnu.org/licenses/lgpl-3.0.html)
[](https://www.python.org/)
[](https://xcsp-doc.tootatis.dev)
[](https://github.com/CPToolset/XCSP-Launcher/actions/workflows/tests.yml)
[](https://github.com/CPToolset/XCSP-Launcher/actions/workflows/release.yml)
[](https://sonarcloud.io/summary/new_code?id=CPToolset_XCSP-Launcher)
---
**XCSP-Launcher** is a unified tool to **install**, **build**, and **execute** solvers supporting the [XCSP3](http://xcsp.org/) format.
It provides a streamlined way to manage solvers, automate their compilation, and run constraint programming instances through a standard, extensible interface.
---
## ✨ Features
- 🛠️ **Solver installation** from GitHub, GitLab, or custom URLs
- 🧱 **Automatic or manual build** (Gradle, CMake, Makefile, Cargo, Maven, etc.)
- 🔖 **Solver versioning** and multi-version management
- ⚡ **Unified execution interface** for solving XCSP3 instances
- 📝 **Support for solver configuration files** (`.xsc.yaml`) for reproducibility
- 📄 **Detailed logging** of build and run processes
- 🧩 **Extensible**: Easily add support for new solvers
---
## 📦 Installation
You can install `xcsp-launcher` via PyPI:
```bash
pip install xcsp
```
Or from source:
```bash
git clone https://github.com/CPToolset/xcsp-launcher.git
cd xcsp-launcher
pip install .
```
<details>
<summary>Debian/Ubuntu</summary>
Download the latest binary from [github releases](https://github.com/CPToolset/XCSP-Launcher/releases/) and run:
```bash
sudo dpkg -i xcsp-launcher*.deb
```
</details>
<details>
<summary>MacOS</summary>
Install via [Homebrew](https://brew.sh):
```bash
brew tap CPToolset/homebrew-xcsp-launcher
brew install xcsp
```
</details>
---
## 🚀 Quick Start
### Install a solver
```bash
xcsp install --id ace --name ACE --repo xcsp3team/ace --source github.com
```
This will:
- Clone the solver repository,
- Automatically detect the build system (or use configuration),
- Build the solver,
- Register it in your local solver repository.
---
### Solve an instance
```bash
xcsp solve --solver ace --instance path/to/instance.xml
```
---
## 🧰 Example Configuration (.xsc.yaml)
```yaml
name: "ACE"
id: "fr.cril.xcsp.ace"
git: "https://github.com/xcsp3team/ace"
language: "java"
build:
mode: manual
build_command: "gradle build -x test"
command:
prefix: "java -jar"
template: "{{executable}} {{instance}} {{options}}"
always_include_options: "-npc=true -ev"
versions:
- version: "2.4"
git_tag: "2.4"
executable: "build/lib/ACE-2.4.jar"
```
For more information about the format of the solver-configuration please see the documentation of [`metrics`](https://github.com/crillab/metrics-solvers/blob/main/format.md).
---
## 🛠 Supported Build Systems (Auto-detection)
- Gradle (`build.gradle`)
- Maven (`pom.xml`)
- CMake (`CMakeLists.txt`)
- Make (`Makefile`)
- Rust Cargo (`Cargo.toml`)
- Python setuptools (`setup.py`, `pyproject.toml`)
---
## 📚 Other Projects
- [`xcsp-launcher-homebrew`](https://github.com/CPToolset/xcsp-launcher-homebrew) — Homebrew Tap for installing XCSP-Launcher easily on macOS/Linux.
- [`xcsp-metadata`](https://github.com/CPToolset/xcsp-metadata) — A metadata repository for XCSP3 instances (domains, categories, etc.).
- [`metrics-solver`](https://github.com/crillab/metrics-solvers) — Predefined solver configurations available by default with `xcsp-launcher` for easy installation and experimentation.
---
## 🚀 Projects Using XCSP-Launcher
- [`metrics`](https://github.com/crillab/metrics) — An open-source Python library to automate experimental campaigns and analyze solver performances.
---
## 🤝 Contributing
We welcome contributions!
Feel free to open issues, suggest features, or submit pull requests.
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
---
## ⚖️ License
This project is licensed under the **LGPL v3+** License.
See [LICENSE](LICENSE) for details.
---
## 🌍 Related Links
- [XCSP3 Official Website](http://xcsp.org/)
- [PyCSP3 Python Modeling Library](http://pycsp.org/)
---
Raw data
{
"_id": null,
"home_page": null,
"name": "xcsp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "XCSP, solver, constraint-programming, launcher",
"author": null,
"author_email": "Thibault Falque <contact@tootatis.dev>, Romain Wallon <contact@tootatis.dev>",
"download_url": "https://files.pythonhosted.org/packages/1c/cf/4e0352ceebcce7f4a713de9560c364342e24a5e58dac465bb88b8ea38122/xcsp-0.6.1.tar.gz",
"platform": null,
"description": "# XCSP-Launcher\n\n[](https://www.gnu.org/licenses/lgpl-3.0.html)\n[](https://www.python.org/)\n[](https://xcsp-doc.tootatis.dev)\n[](https://github.com/CPToolset/XCSP-Launcher/actions/workflows/tests.yml)\n[](https://github.com/CPToolset/XCSP-Launcher/actions/workflows/release.yml)\n[](https://sonarcloud.io/summary/new_code?id=CPToolset_XCSP-Launcher)\n\n\n---\n\n**XCSP-Launcher** is a unified tool to **install**, **build**, and **execute** solvers supporting the [XCSP3](http://xcsp.org/) format.\n\nIt provides a streamlined way to manage solvers, automate their compilation, and run constraint programming instances through a standard, extensible interface.\n\n---\n\n## \u2728 Features\n\n- \ud83d\udee0\ufe0f **Solver installation** from GitHub, GitLab, or custom URLs\n- \ud83e\uddf1 **Automatic or manual build** (Gradle, CMake, Makefile, Cargo, Maven, etc.)\n- \ud83d\udd16 **Solver versioning** and multi-version management\n- \u26a1 **Unified execution interface** for solving XCSP3 instances\n- \ud83d\udcdd **Support for solver configuration files** (`.xsc.yaml`) for reproducibility\n- \ud83d\udcc4 **Detailed logging** of build and run processes\n- \ud83e\udde9 **Extensible**: Easily add support for new solvers\n\n---\n\n## \ud83d\udce6 Installation\n\nYou can install `xcsp-launcher` via PyPI:\n\n```bash\npip install xcsp\n```\n\nOr from source:\n\n```bash\ngit clone https://github.com/CPToolset/xcsp-launcher.git\ncd xcsp-launcher\npip install .\n```\n\n\n<details>\n<summary>Debian/Ubuntu</summary>\n\nDownload the latest binary from [github releases](https://github.com/CPToolset/XCSP-Launcher/releases/) and run:\n\n```bash\nsudo dpkg -i xcsp-launcher*.deb\n```\n</details>\n\n<details>\n<summary>MacOS</summary>\n\nInstall via [Homebrew](https://brew.sh):\n\n```bash\nbrew tap CPToolset/homebrew-xcsp-launcher\nbrew install xcsp\n```\n</details>\n\n\n---\n\n## \ud83d\ude80 Quick Start\n\n### Install a solver\n\n```bash\nxcsp install --id ace --name ACE --repo xcsp3team/ace --source github.com\n```\n\nThis will:\n- Clone the solver repository,\n- Automatically detect the build system (or use configuration),\n- Build the solver,\n- Register it in your local solver repository.\n\n---\n\n### Solve an instance\n\n```bash\nxcsp solve --solver ace --instance path/to/instance.xml\n```\n\n---\n\n## \ud83e\uddf0 Example Configuration (.xsc.yaml)\n\n```yaml\nname: \"ACE\"\nid: \"fr.cril.xcsp.ace\"\ngit: \"https://github.com/xcsp3team/ace\"\nlanguage: \"java\"\nbuild:\n mode: manual\n build_command: \"gradle build -x test\"\ncommand:\n prefix: \"java -jar\"\n template: \"{{executable}} {{instance}} {{options}}\"\n always_include_options: \"-npc=true -ev\"\nversions:\n - version: \"2.4\"\n git_tag: \"2.4\"\n executable: \"build/lib/ACE-2.4.jar\"\n```\n\nFor more information about the format of the solver-configuration please see the documentation of [`metrics`](https://github.com/crillab/metrics-solvers/blob/main/format.md). \n\n---\n\n## \ud83d\udee0 Supported Build Systems (Auto-detection)\n\n- Gradle (`build.gradle`)\n- Maven (`pom.xml`)\n- CMake (`CMakeLists.txt`)\n- Make (`Makefile`)\n- Rust Cargo (`Cargo.toml`)\n- Python setuptools (`setup.py`, `pyproject.toml`)\n\n---\n\n## \ud83d\udcda Other Projects\n\n- [`xcsp-launcher-homebrew`](https://github.com/CPToolset/xcsp-launcher-homebrew) \u2014 Homebrew Tap for installing XCSP-Launcher easily on macOS/Linux.\n- [`xcsp-metadata`](https://github.com/CPToolset/xcsp-metadata) \u2014 A metadata repository for XCSP3 instances (domains, categories, etc.).\n- [`metrics-solver`](https://github.com/crillab/metrics-solvers) \u2014 Predefined solver configurations available by default with `xcsp-launcher` for easy installation and experimentation.\n\n---\n\n## \ud83d\ude80 Projects Using XCSP-Launcher\n\n- [`metrics`](https://github.com/crillab/metrics) \u2014 An open-source Python library to automate experimental campaigns and analyze solver performances.\n\n---\n\n## \ud83e\udd1d Contributing\n\nWe welcome contributions! \nFeel free to open issues, suggest features, or submit pull requests.\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n---\n\n## \u2696\ufe0f License\n\nThis project is licensed under the **LGPL v3+** License. \nSee [LICENSE](LICENSE) for details.\n\n---\n\n## \ud83c\udf0d Related Links\n\n- [XCSP3 Official Website](http://xcsp.org/)\n- [PyCSP3 Python Modeling Library](http://pycsp.org/)\n\n---\n",
"bugtrack_url": null,
"license": null,
"summary": "A unified launcher for XCSP solver",
"version": "0.6.1",
"project_urls": {
"Changelog": "https://github.com/CPToolset/xcsp-launcher/blob/main/CHANGELOG.md",
"Documentation": "https://xcsp.readthedocs.org",
"Homepage": "https://tootatis.dev",
"Issues": "https://github.com/CPToolset/xcsp-launcher/issues",
"Repository": "https://github.com/CPToolset/xcsp-launcher"
},
"split_keywords": [
"xcsp",
" solver",
" constraint-programming",
" launcher"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "ec5575f051592ca30519be3f1e4c650f7187b5108031c7f127d4cb8b0a3f776c",
"md5": "631248117835a67da93f374a68bc2c16",
"sha256": "b01d360cb2a0f504e931ba95b380c21594105d04ec9f16b10908c45ac13d096f"
},
"downloads": -1,
"filename": "xcsp-0.6.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "631248117835a67da93f374a68bc2c16",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 37439,
"upload_time": "2025-08-12T11:25:42",
"upload_time_iso_8601": "2025-08-12T11:25:42.263247Z",
"url": "https://files.pythonhosted.org/packages/ec/55/75f051592ca30519be3f1e4c650f7187b5108031c7f127d4cb8b0a3f776c/xcsp-0.6.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1ccf4e0352ceebcce7f4a713de9560c364342e24a5e58dac465bb88b8ea38122",
"md5": "b071405ff1b7a60cf3b912f642a6affb",
"sha256": "4bff559913f12d592c44931186a3131576b89877ca3b2f5416c467c90af2267a"
},
"downloads": -1,
"filename": "xcsp-0.6.1.tar.gz",
"has_sig": false,
"md5_digest": "b071405ff1b7a60cf3b912f642a6affb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 34069,
"upload_time": "2025-08-12T11:25:44",
"upload_time_iso_8601": "2025-08-12T11:25:44.401313Z",
"url": "https://files.pythonhosted.org/packages/1c/cf/4e0352ceebcce7f4a713de9560c364342e24a5e58dac465bb88b8ea38122/xcsp-0.6.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-12 11:25:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "CPToolset",
"github_project": "xcsp-launcher",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "xcsp"
}