Skip to content

dmitryikh/conan-builder

Repository files navigation

Conan Package Builder For RISC-V

📊 Latest Build Reports:

RISC-V Report ARM64 Report

🎯 Primary Objective: Assess the readiness of Conan packages for RISC-V architecture by performing native compilation builds and tracking success/failure rates across the ecosystem.

This system helps the RISC-V ecosystem by:

  • 🔍 Identifying Compatible Packages: Discovering which packages already work on RISC-V
  • 📊 Tracking Progress: Monitoring RISC-V adoption across the Conan ecosystem
  • 🐛 Finding Issues: Highlighting packages that need RISC-V-specific fixes

Features

  • Clean Compilation with Docker: Uses Docker containers for isolated compilation
  • Persistent Storage: SQLite database and detailed logs with resume capability
  • Parallel Execution: Configurable multi-threaded builds for efficiency
  • Multiplatform Support: Configurable target platforms (RISC-V, ARM64, x86_64, etc.)
  • Optional QEMU Emulation: Enables cross-compilation in a native-like environment

Quick Start

Prerequisites

  • Linux/macOS host (Windows not tested)
  • Python 3.8+
  • Docker with buildx support
  • Git (for cloning conan-center-index)
  • QEMU emulation (for non-RISC-V hosts)

Prepearing

# Create virtual environment and install dependencies
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

# Clone the Conan Center Index (if not already present)
git clone https://github.com/conan-io/conan-center-index.git conan-center-index

# Create dirs for conan cache and logs
mkdir conan_cache
mkdir logs

# For non-risc-v hosts:
# Register QEMU emulator for RISC-V (required for x86/ARM hosts)
docker run --privileged --rm tonistiigi/binfmt --install riscv64

Workflow

# Dump top 10 packages (by commit count) to file.
python3 main.py --dump-top-k-to top.txt --top-k 100

# Build Docker image: Ubuntu with build tools.
python3 main.py --build-image

# Build packages with 3 concurrent containers.
# (The same command is used for resume the builds)
python3 main.py --package-file top.txt --max-workers 3

# Check results and identify failures
python3 analyze_results.py

Supplimentary scenarios

# Build specific packages by name
python3 main.py --packages popl zlib boost nlohmann_json  

# Build docker image and packages for arm64
python3 main.py --build-image --platform linux/arm64
python3 main.py --package-file top.txt --platform linux/arm64 --profile conan_profiles/arm64-linux-gcc

# Force rebuild top10 packages
python3 main.py --top-k 10 --force-rebuild

# Rebuild only packages that failed previously
python3 main.py --rebuild-failed

During execution, an SQLite database will be created to store results.

Command Line Options

Option Default Description
--repo-path conan-center-index Path to conan-center-index repository
--logs-path logs Directory for build log files
--cache-path conan_cache Conan cache directory
--db-path build_results.sqlite SQLite database file path
--profile conan_profiles/riscv64-linux-gcc Conan build profile
--image conan-builder Docker image name
--platform linux/riscv64 Target platform for Docker builds
--max-workers 5 Maximum number of parallel build workers
--top-k None Limit packages to process (for both dumping and building)
--packages None Build specific packages by name
--package-file None Build packages listed in file (one per line)
--build-image False Build Docker image before starting
--rebuild-failed False Rebuild only packages that previously failed
--dump-top-k-to None Dump top-k packages to file and exit
--force-rebuild False Force rebuild even if already completed

About

Assess the readiness of Conan packages for RISC-V architecture

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published