以前、このような記事を書きました。
あれから数年が経ち、Dockerという大変便利なものをちょくちょく触る機会が訪れるようになりました。
そこで趣味(Ndless SDKを簡単に導入したい)と実益(Dockerの練習をしたい)を兼ねて、Ndlessの開発環境をDocker Composeで手軽に構築できるようにしてみました。
Dockerfileやdocker-compose.yml一式を収めたGitHubリポジトリはこちらです。
使い方に関しては全てREADME.mdに書いてあるので特に触れることはないです。
大変だったこと
主にNdless SDKのドキュメントが不親切すぎることから来るトラブルに何度も見舞われたのがしんどかったです。
最初、Ndlessのドキュメントに書かれている導入ガイドをそのままDockerfileに落とし込んでいたのですが、 いざコンテナを構築してみると途中でシェルが異常終了し、起動に失敗するという事態に見舞われました。
twitter.comDocker何もわからない pic.twitter.com/bzKPlwXdy1
— ゆみや (@stepney141) 2020年12月27日
twitter.comこれ、git cloneしてきたシェルスクリプト(build_toolchain.sh)のうち、17行目から22行目あたりまでのどこかでエラーが発生しているのが原因らしいということまで把握した https://t.co/r4e30jeDhL
— ゆみや (@stepney141) 2021年1月10日
デバッグしていくうちに、環境構築の際に実行されるシェルスクリプトの特定の行でエラーが発生していることが分かりました。 最初は原因としてbashとshの互換性の問題を疑っていたのですが、 結局のところ「必要なものとしてPythonを明記していないにも関わらず、シェルスクリプト内でPython3の存在を前提とした動作をしていたせい」だと分かりました。つらい。 まあ一ヶ月近くも原因に思い足らなかった私もどうかと思いますが。
その後も色々なビルドエラーに見舞われましたが、いずれもドキュメントをあてにせずエラーログを参照し、すべてドキュメントに明記されていない依存パッケージが入っていなかったせいであることを突き止めました。つらい。
ともあれ開発環境も整ったことですし、Nspireでのネイティブ開発を進めていきたいと思います。