PULPの開発する、ハードウェア開発用の依存関係解決ツールBenderについて調査している。
repo_B がマイナーバージョンアップした場合:
次に、 repo_B が下位互換性を維持しつつマイナーバージョンアップした場合を考える。これを、マイナーバージョン 0.1.0として登録しよう。
module B ( input inA, input inB, output outC ); always_comb begin outC = inA + inB; end endmodule // B
この状態で、 repo_A 側で最新の repo_B を取得してみよう。
この時、 repo_B の最新リポジトリをチェックアウトする方法がどうにも分からない。仕方がないので、 Bender.lock と deps をいったん削除してからやり直す必要がある。これについては良く分からない。
Bender.yml は以下のようにして依存関係を記述した。
dependencies: repo_B : { git: "git@github.com:msyksphinz-self/bender_repo_B.git", version: ">=0.0.0"}
つまり、 v0.0.0 以上 v1.0.0 以下の最新のバージョンを取得してくることになる。
$ rm -rf Bender.lock deps $ bender update $ less Bender.lock
packages: repo_b: revision: 910dbe4c4f8211e40e8484b2f5e3b4c9b6514097 version: 0.1.0 source: Git: git@github.com:msyksphinz-self/bender_repo_B.git dependencies: []
repo_Bが破壊的な変更を含むv1.0.0に更新された場合
次に、 repo_B が破壊的な変更を含んで v1.0.0に更新されたとしよう:
module B ( input inA, input inB, output outC, output outD ); always_comb begin outC = inA + inB; outD = inA ^ inB; end endmodule // B
これにバージョンアップをしないために、 repo_A の Bender.yml に依存関係を追加する。
dependencies: repo_B : { git: "git@github.com:msyksphinz-self/bender_repo_B.git", version: ">=0.0.0,<1.0.0"}
つまり、破壊的な変更を含む v1.0.0 に変更しないように制約を加える。
こうすることで、変更を抑制する:
$ rm -rf Bender.lock deps $ bender update $ less Bender.lock
packages:
repo_b:
revision: 910dbe4c4f8211e40e8484b2f5e3b4c9b6514097
version: 0.1.0
source:
Git: git@github.com:msyksphinz-self/bender_repo_B.git
dependencies: []