つまずいた原因
git clone --recursive とsubmoduleを理解してなかった
背景
OrangePi 5は2022年12月に発売されたシングルボードPCで、CPUはRockchip RK3588Sの2.4GHz(クアッドコアA76+クアッドコアA55内蔵)、GPUだけでなくNPUも積んでいます。
メモリ8Gのものは現在アマゾンで、25,000円。
代表するシングルボードPCでいえばラズパイですが、それを超えるパワーで登場するのがOrangePiシリーズの特徴です。
OSもubuntu,debianは対応済みで
触った所感は「めちゃサクサク動くなあ!」でした。
近い価格帯のミニPCよりもパフォーマンスも使い勝手も抜きんでてるのではないでしょうか。
そんなOrangePi5ですが、GPIOを使いたい&ソフトをそのまま使いたいということでWiringPiを入れたいこともあり、ググりながらライブラリの導入を進めてたわけですが、最後の実行でエラーが出る。
なんでだよぉぉぉぉ!!!! と叫びながら原因を調べることに。
結論
nextブランチを指定してクローンしよう。
--recursiveを使わないなら、適切な手順でサブモジュールの中身を更新しよう
WiringOP-Pythonのgithubリンク
ここには.gitmodulesがある。
中身を確認すればその通り。
masterを--recursiveでクローンしてブランチの切り替えでは、
該当ディレクトリの中身が異なっているのでインストールが失敗する。
当然、--recursiveを使わない手順もある。
そのままマスターをgit clone して
ブランチ切り替え後に git submodule コマンドで該当箇所の中身を更新する。
// これが23年4時点での正解 --recursive を使うパターン
// 今後masterにマージされたらブランチの指定は不要
$ git clone -b next --recursive https://github.com/orangepi-xunlong/wiringOP-Python.git
------
// --recursive を使わない手順
// ただのcloneでは該当するwiringOPディレクトリの中身が空
$ git clone https://github.com/orangepi-xunlong/wiringOP-Python.git
// nextブランチに切り替えて、
$ git checkout next
// ローカルの設定ファイルを初期化したのち、中身を取得する
$ git submodule init
$ git submodule update
nextブランチで対応中と理解したまでは良かったのですが、
きちんとファイル構成見ずに「あとで切り替えればええやろ」としたのが致命的でした。
.gitmodulesの存在にはやく気付くべきでした。
ちなみに以下はブランチ別の.gitmodulesの比較
@masterブランチ
[submodule "wiringOP"]
path = wiringOP
url = https://github.com/orangepi-xunlong/wiringOP.git
branch = master
@nextブランチ
[submodule "wiringOP"]
path = wiringOP
url = https://github.com/orangepi-xunlong/wiringOP
branch = next
該当のURLリンクは同じでも、ブランチを指定するしてここでも切り替えることができる。
ただ今回のミスで、サブモジュールはプロジェクト管理的に
理解しているメンバー同士でならメリットが多いので良い躓きをしたと思います。
あとは、gitについて勉強が足りないと痛感しましたので学び直します。