conda-recipe について
conda-recipeは、condaおよびBiocondaのレシピを作成・テストする開発者向けスキルです。レシピの作成、検証、ビルド、トラブルシューティングを扱い、Biocondaのガイドラインに沿った手順を示します。
主な機能
- 01condaレシピの作成と調整
- 02レシピのLintと検証
- 03ローカルまたはDockerでのビルド
- 04パッケージと依存関係のテスト
- 05よくあるビルドエラーの解決
活用シーン
- 01Pythonやバイオインフォマティクスソフトのパッケージ化
- 02提出前のBiocondaレシピ確認
- 03ローカルまたはコンテナでのビルドテスト
- 04レシピのビルド失敗の診断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ delphine-l/ claude_global --skill conda-recipeインストール後、Claude Code で/conda-recipeを入力して読み込まれたか確認します。
詳細
Conda レシピ構築スキル
conda/bioconda レシピの構築とテストを専門とするアシスタントです。bioconda のベストプラクティスに従って、conda パッケージの作成、検証、リント、ビルドを支援します。
一般的なタスク
1. 新しいレシピの作成
新しい conda レシピを作成するときは、以下を行います。
- 適切な構造で
recipes/<package-name>/meta.yamlを作成する - 必要に応じて
build.sh(Unix 用)および/またはbuild.bat(Windows 用)を含める - 適切なビルド番号を設定する(0 から開始)
{{ name }}や{{ version }}などの変数に適切な Jinja2 テンプレートを使用する- ソース URL の SHA256 チェックサムを含める
host、build、runセクションに正しい依存関係を指定する- インポートテストおよび/またはコマンドテストを含む適切なテストセクションを追加する
- ライセンス、概要、説明、URL を含む詳細な about セクションを記述する
2. レシピ構造のベストプラクティス
- 純粋な Python パッケージには
noarch: pythonを使用する - データパッケージやスクリプトには
noarch: genericを使用する - ABI 互換性を確保するため、ライブラリには
run_exportsを設定する - バージョン制約には
pin_compatibleまたはpin_subpackageを使用する max_pin制約ではセマンティックバージョニングに従う(例:"x.x"、"x")
3. レシピのリント
ビルドする前に、必ずリポジトリのルートからレシピをリントします。
bioconda-utils lint recipes/ --packages <package-name>
4. レシピのローカルビルド
レシピをローカルでビルドしてテストします。
# Build for current platform
conda mambabuild recipes/<package-name>
# Or using bioconda-utils
bioconda-utils build --packages <package-name>
5. レシピのテスト
- meta.yaml に必ずテストコマンドを含める
- Python パッケージのインポートをテストする
--helpまたは--versionを指定して CLI コマンドをテストする- 複雑なテストシナリオでは、run_test.sh の追加を検討する
6. 一般的なメタデータフィールド
パッケージセクション:
name:パッケージ名(小文字、ハイフンを推奨)version:パッケージのバージョン
ソースセクション:
url:ソース tarball のダウンロード URLsha256:SHA256 チェックサムgit_urlとgit_rev:Git ソースの場合patches:必要に応じてパッチファイルのリスト
ビルドセクション:
number:ビルド番号(レシピのみの変更時に増やす)noarch:該当する場合はpythonまたはgenericを設定するscript:ビルドスクリプトをインラインで記述するか、build.sh を参照するentry_points:Python CLI ツール用run_exports:ライブラリ用
要件セクション:
build:ビルド時のコンパイラーとツールhost:ビルド時に必要なライブラリrun:実行時の依存関係
テストセクション:
imports:インポートする Python モジュールcommands:テストする CLI コマンドrequires:追加のテスト依存関係
About セクション:
home:プロジェクトのホームページlicense:SPDX ライセンス識別子license_family:ライセンスファミリーlicense_file:ソース内のライセンスファイルのパスsummary:1 行の説明description:詳細な説明(複数行の場合は|を使用)dev_url:開発用 URL(GitHub、GitLab など)doc_url:ドキュメント URL
7. バージョンの固定
- 最小バージョンには
>=を使用する - 互換性に問題があることが分かっている場合は、
>=1.2,<2のように具体的に固定する - 可能な場合は、依存関係の
run_exportsを利用する - Python の場合は、
python >=3.9またはpython >=3.9,<3.13を指定する
8. 一般的な Python パッケージのレシピ
{% set name = "package-name" %}
{% set version = "1.0.0" %}
package:
name: {{ name|lower }}
version: {{ version }}
source:
url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
sha256: <checksum>
build:
number: 0
noarch: python
script: {{ PYTHON }} -m pip install . --no-deps --no-build-isolation -vvv
entry_points:
- cli-command = package.module:main
requirements:
host:
- python >=3.9
- pip
- setuptools
run:
- python >=3.9
- dependency >=1.0
test:
imports:
- package
commands:
- cli-command --help
about:
home: https://github.com/org/repo
license: MIT
license_family: MIT
license_file: LICENSE
summary: Brief description
description: |
Detailed description here.
dev_url: https://github.com/org/repo
9. ビルド失敗のデバッグ
- ビルドログを注意深く確認し、エラーメッセージを探す
- すべての依存関係が conda-forge または bioconda で利用可能か確認する
- 不足しているビルドツール(コンパイラー、make、cmake など)がないか確認する
- ソース URL にアクセスできることと、チェックサムが一致することを確認する
- Python パッケージの場合は、pip と setuptools が host の依存関係に含まれていることを確認する
10. よくあるビルドエラーと解決方法
エラー:pin_subpackage のパッケージ名が正しくありません
ValueError: Didn't find subpackage version info for 'processcuration', which is used in a pin_subpackage expression.
解決方法: pin_subpackage では正しいパッケージ名の変数を使用します。
run_exports:
- {{ pin_subpackage(name, max_pin="x") }}
パッケージ名と一致しないハードコードされた文字列は使用しないでください。
エラー:ビルドスクリプトと meta.yaml が競合しています
CondaBuildException: Found a build.sh script and a build/script section inside meta.yaml.
解決方法: 次のいずれかの方法を選択してください。
build.shファイルを削除し、meta.yaml でインラインのscript:を使用します(シンプルな Python パッケージに推奨)- または、meta.yaml から
script:行を削除し、build.shファイルを残します
シンプルな Python パッケージでは、インラインスクリプトを使用します。
build:
script: {{ PYTHON }} -m pip install . --no-deps --no-build-isolation -vvv
エラー:macOS で Docker のファイル共有ができません
The path /opt/miniconda3/envs/build_recipes/conda-bld is not shared from the host and is not known to Docker.
解決方法: Docker Desktop のファイル共有を設定します。
- Docker Desktop を開きます
- Settings → Resources → File Sharing に移動します
- 共有ディレクトリの一覧に
/optを追加します - 「Apply & Restart」をクリックします
エラー:osx-arm64 のビルドがスキップされます
BUILD SKIP: skipping recipes/vgp-processcuration for additional platform osx-arm64
解決方法: Docker を使わないローカルビルドでは、これは想定された動作です。次のいずれかの方法を使用してください。
--docker --forceフラグを使って Linux コンテナ内でビルドします:bioconda-utils build --docker --force --packages <package>noarch: pythonパッケージは通常、CI で Linux 上でビルドされることを受け入れます- GitHub にプッシュした際に、CircleCI にビルドを任せます
11. Docker ビルド
Docker を使用したビルドでは、Linux 環境でパッケージをテストします。これは noarch パッケージにとって重要です。
# Basic Docker build
bioconda-utils build --docker --packages <package>
# Docker build with mulled tests (container tests)
bioconda-utils build --docker --mulled-test --packages <package>
# Force build even on incompatible platforms
bioconda-utils build --docker --mulled-test --force --packages <package>
Docker ビルドのプロセス:
- bioconda ビルド環境の Docker イメージをダウンロードするか、既存のものを使用します
- レシピディレクトリとビルドキャッシュをコンテナにマウントします
- Linux コンテナ内で conda-build を実行します
- 必要に応じて、別のコンテナで mulled テストを実行します
要件:
- Docker Desktop が起動している必要があります
- Docker と共有するファイルパスを設定する必要があります(macOS では特に
/opt) - Docker イメージ用に十分なディスク容量が必要です(約 3~11 GB)
12. CircleCI の使用
Bioconda は継続的インテグレーションに CircleCI を使用しています。
- プッシュ時にレシピが自動的にビルドおよびテストされます
- CI の設定は
.circleci/config.ymlで確認します - CircleCI ダッシュボードでビルド成果物とログを確認します
- ビルドに失敗すると、PR のマージができなくなります
Bioconda 固有のガイドライン
- bioconda のコントリビューションガイドラインに従います
- extra セクションの
recipe-maintainersに自分を追加します - 適切なチャンネルの順序を使用します:conda-forge > bioconda > defaults
- バイオインフォマティクス分野に応じて、レシピに適切なタグを付けます
- ライセンスを指定し、ライセンスファイルを含めます
クイックコマンドリファレンス
# Lint a recipe (from repo root)
bioconda-utils lint recipes/ --packages <package>
# Build a recipe
conda mambabuild recipes/<package>
# Build with bioconda-utils
bioconda-utils build --packages <package>
# Test an installed package
conda create -n test-env <package>
conda activate test-env
# Update recipe after changes
# 1. Update version in meta.yaml
# 2. Update sha256 checksum
# 3. Reset build number to 0
# 4. Update dependencies if needed
関連スキル
- galaxy-tool-wrapping - Galaxy ツールでは、依存関係として conda パッケージが必要になることがよくあります
- vgp-pipeline - VGP ワークフローでは bioconda ツールを使用します
- galaxy-workflow-development - ワークフローでは conda 依存関係を持つツールを使用します
ユーザーを支援する際
- パッケージの種類(Python、R、コンパイル済みなど)を確認します
- ソースが入手可能か(PyPI、GitHub、CRAN など)確認します
- ライセンスの互換性を確認します
- すべてのランタイム依存関係を特定します
- 最小限かつ完全なテストスイートを作成します
- 命名規則(小文字、ハイフン)に従います
- ビルド前にリンティングでレシピを検証します
- ビルドしたパッケージの機能をテストします
正確性、再現性、そして bioconda コミュニティの基準に従うことを常に優先してください。