はじめに
以前 Nerves 公式ドキュメントに掲載されている Nerves System の互換表 についてご紹介させていただきました。
今回は、その互換表がどのように作成されているのかを解説したいと思います。
Nerves System 互換表 とは?
各 Nerves System の対応バージョン(Elixir, OTP, Linux, etc.)を一覧で確認できる互換表です。
nerves_system_compatibility.exs スクリプト とは
このスクリプトの主な役割は、Nerves 公式リポジトリからシステム情報を収集し、各リリースの詳細情報(バージョン情報、依存関係など)を解析して、互換表 に必要なデータを出力形式に整形することです。このスクリプトをもちいることで、互換表 の更新が効率的に行えます
どうやってデータを取得しているか
nerves_system_compatibility.exs スクリプトがどのようにして各データを収集しているのか見てみます。
Nerves バージョン
取得元
- 各 Nerves System リポジトリの
mix.exs
ファイル - 例: https://github.com/nerves-project/nerves_system_rpi5/blob/4feeb66840149189a96dcd3123a329b8122b02b5/mix.exs#L70
収集方法
Linux カーネルバージョン
取得元
- 各 Nerves System リポジトリの
nerves_defconfig
ファイル - 例: https://github.com/nerves-project/nerves_system_rpi5/blob/4feeb66840149189a96dcd3123a329b8122b02b5/nerves_defconfig#L34
収集方法
Buildroot バージョン
取得元
-
nerves_system_brリポジトリの
create-build.sh
スクリプト - 例: https://github.com/nerves-project/nerves_system_br/blob/4c0bc21c221d459d9fa6d33832d6a1d9b6a3f211/create-build.sh#L16
収集方法
- get_buildroot_version/1 関数を参照
OTP バージョン
取得元
-
nerves_system_brリポジトリの
.tool-versions
ファイル
nerves_system_br は開発時期よって若干プロジェクトの構成が変わっているので、バージョンによって取得元を切り替えています。
- Dockerfile
- パッチファイル
収集方法
おわりに
このnerves_system_compatibility.exsスクリプトは、Nerves プロジェクトに貢献するために作成しました。
特に、Nerves プロジェクトのコアチームがNerves System の互換表を効率的に更新するための内部ツールとして役立っています。スクリプトを使うことで、正確で最新の情報を簡単に収集・整理できる仕組みを提供しています。
何か氣づいた点や改善のアイデアがあれば、お便りいただけると嬉しいです。