ディレクトリ移動で Vitis/Vivado のバージョンを切り替える
概要
以前、環境変数でバージョンを切り替える実験をしてこのような記事を書いたのですが、今回は pyenv を模して、ディレクトリに紐づけて自動的にバージョンを切り替える実験をしてみました。
当方は
- GUIも使うが CLI での開発も多用しており VS code などで、ターミナルをたくさん開く
- ツールバージョンの違う複数プロジェクトを同時にサポート/メンテすることがある
- 汎用ライブラリを複数のバージョンで問題なく動くか確認する必要があることがある
などの事情があり、よく違うバージョンで作ったプロジェクトを開いてしまうようなミスをやらかすのもありますし、そもそも都度都度コマンドを打って切り替えるのが億劫に感じていました。
例えば python のバージョン切り替えツールである pyenv ですと、 .python-version というファイルを置いておけば、それ以下のディレクトリでバージョンを自動で切り替えてくれます。
pyenv のバージョンファイルの探索はこちらのコードで行っているようですので、丸々真似させて貰ってVitis/Vivado で実験してみました。
まだちょっと試したレベルですが、下記に置いておきます。
ちなみに Linux 専用です。
使い方
今のところ自分専用ツールに近いのですが一応使い方をメモしておきます。
Vitis/Vivado は事前にインストールしておく必要があります。複数のバージョンがインストールされている前提で、インストールされているバージョンを切り替えます。
インストール
GitHub から直接
git clone https://github.com/ryuz/vitisenv.git ~/.vitisenv
と、取得して、.bashrc に
export VITISENV_ROOT="$HOME/.vitisenv"
export PATH="$VITISENV_ROOT/bin:$PATH"
のような設定をすればおしまいです。
バージョン設定
まず、デフォルトのバージョン設定として
vitisenv global 2021.2
のように指定します。
また、各ディレクトリの設定は
vitisenv local 2022.2
のように実行すると、カレントディレクトリに .vitis-version というファイルを生成します。
バージョン確認
インストール済みのバージョン確認は下記でできます。
vitisenv versions
内部的に ls /tools/Xilinx/Vitis を実行しているだけです。
現在のバージョンは下記で確認できます。
vitisenv version
これを使って、現在の設定をプロンプトに出すことも可能です。
動かしてみる
少し試してみました。
一応切り替わっていそうです。
実際に 複数バージョンのプロジェクトを用意している環境で少し試してみましたが、ディレクトリ移動でちゃんと切り替わるようです。
やっていること
やっていることは、vitis や vivado など、主要コマンドと同名のシンボリックリンクを作って vitisenv-exec を経由して settings64.sh を実行してからツール起動するようにしているだけです。
vitisenv-exec 内で、バージョンを確定してそれに応じた settings64.sh を実行しています。
あとがき
ちなみに下記のような情報も頂いておりますので紹介しておきます。
Discussion