Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

依存関係

他の Veryl プロジェクトへの依存関係をプロジェクトに追加したい場合、Veryl.toml[dependencies] セクションを追加します。エントリの左辺は依存関係のプロジェクト名、右辺はソースパスとバージョンです。github はGitHub上のリポジトリを参照する糖衣構文です。代わりに git を用いてURL全体を指定することもできます。

[dependencies]
veryl_sample = {github = "veryl-lang/veryl_sample", version = "0.1.0"}

# これは上記と同じ
veryl_sample = {git = "https://github.com/veryl-lang/veryl_sample", version = "0.1.0"}

デフォルトでは依存関係の名前空間はそのプロジェクト名と同じです。もし左辺の名前を変更した場合は、project フィールドでプロジェクト名を指定する必要があります。

[dependencies]
veryl_sample_alt = {github = "veryl-lang/veryl_sample", project = "veryl_sample", version = "0.2.0"}

リポジトリの内部プロジェクトは以下のように指定できます。

[dependencies]
inner_prj1 = {github = "veryl-lang/veryl_sample", version = "0.1.0"}
inner_prj2 = {github = "veryl-lang/veryl_sample", version = "0.1.0"}
inner_prj3 = {github = "veryl-lang/veryl_sample", version = "0.1.0"}

依存関係の使用

Veryl.toml に依存関係を追加したあとは、その依存関係の moduleinterfacepackageを使うことができます。以下は veryl_sample の依存関係に含まれる delay モジュールを使った例です。

module ModuleA (
    i_clk: input  clock,
    i_rst: input  reset,
    i_d  : input  logic,
    o_d  : output logic,
) {
    inst u_delay: veryl_sample::delay (
        i_clk,
        i_rst,
        i_d  ,
        o_d  ,
    );
}

注:上記のコードのプレイボタンの結果は依存関係解決を行わないので正確ではありません。実際のモジュール名は veryl_sample_delay になります。

バージョン要求

[dependencies] セクションの version フィールドはバージョン要求を示します。例えば、version = "0.1.0"0.1.0 と互換性のある最新バージョンを意味します。互換性はセマンティックバージョニングで判定されます。バージョンは以下の3つの部分からなります。

  • メジャー バージョンはAPI非互換な変更
  • マイナー バージョンは互換性のある機能追加
  • パッチ バージョンは互換性のあるバグ修正

もし メジャー バージョンが 0 なら、マイナー が非互換変更と解釈されます。

バージョン 0.1.00.1.10.2.0があった場合、0.1.1 が選択されます。これは以下のように決定されます。

  • 0.1.00.1.0 と互換性がある
  • 0.1.10.1.0 と互換性がある
  • 0.2.00.1.0 と互換性がない
  • 0.1.1 は互換性のある最新バージョン

version フィールドは =0.1.0 のような指定も可能です。詳細は Rust のバージョン要求についてのドキュメントを参照してください。Specifying Dependencies.

相対パス依存関係

手元の環境で開発しているとき、ローカルファイルパスへの依存関係が使えると便利なことがあります。相対パス依存関係は以下のように指定することができます。

[dependencies]
veryl_sample = {path = "../../veryl_sample"}

プロジェクトに相対パス依存関係がある場合、そのプロジェクトは veryl publish で公開することはできません。

ローカルパスによる上書き

場合によってはローカルで変更されたバージョンの依存関係を使う必要があることもあります。そのような場合、以下のようにローカルパスによって依存関係を上書きすることができます。

[dependencies]
veryl_sample = {github = "veryl-lang/veryl_sample", version = "0.1.0", path = "../veryl_sample"}

これは ../veryl_sample が存在する場合はそれを使い、そうでない場合は Git から取得する、という意味です。

Git バックエンド

Veryl は 2 つの異なるバックエンドを通して git ベースの依存を取得できます。

  • gitoxide — 純粋な Rust 実装の git。外部の git バイナリを必要としません。
  • command — システムの git コマンドを実行します。gitPATH に存在する必要があります。

既定では gitoxide を試し、失敗した場合 (たとえば gitoxide が対応していない認証方式が必要な場合など) に自動的に command へフォールバックします。バックエンドは VERYL_GIT_BACKEND 環境変数で明示的に選択できます。

設定値挙動
auto既定値。gitoxide を試し、失敗時に command へフォールバックする。
gitoxidegitoxide を強制する。フォールバックなし。
commandシステムの git コマンドを強制する。フォールバックなし。