概要
macOS (Apple Silicon) のNXTモードで、以下の2点に起因して make sample / make nxt app=helloworld up が失敗しました。
nxtOSEK ビルドは wineconsole 前提だが、startetrobo 側で macOS の NXT モード時に scripts/wineconsole が用意されていない状態がありました
t2n インストール時の依存チェックの際、必要ライブラリが不足していても etrobopkg の途中まで進んでしまう
再現手順
環境
macOS 26.2 (25C56)
Apple M2
NXTモード
Beerhall / etrobo 環境
手順
- NXTモードで環境起動
make sample を実行
当初の症状は以下の通りです。
kernel_cfg.c 生成で失敗
make: *** ... Error 127
make -n all で確認すると、先頭で以下を実行していました。
wineconsole > /dev/null 2>&1 ../../ecrobot/../toppers_osek/sg/sg ./helloworld.oil ...
この時点では、以下の状態です。
- scripts/cygpath は存在する
- scripts/wineconsole は存在しない
その後、wineconsole を作成するように変更を行い、 Wine をbrew経由で導入するとビルドは通るようになりましたが、今度はアップロード段階で t2n が無く失敗しました。
さらに etrobopkg により Install t2n; Talk To NXT までは進むものの、次のように失敗しました。
cp: cannot stat 't2n-0.6.src/obj/t2n': No such file or directory
cp: cannot stat 'dist/t2n': No such file or directory
確認した範囲では libusb-compat が未導入時、t2n のビルドが失敗していました。
原因として考えられる点
今回 macOS 上で NXT モードを試した範囲では、以下の 2 点が失敗要因になっているように見えました。
1. wineconsole の前提と起動時準備の間にズレがある可能性
ecrobot.mak では、非 Windows 環境で sg.exe 実行に wineconsole を使う前提になっています。
一方で、macOS の NXT モード起動時には scripts/wineconsole が存在しない状態がありました。
そのため、ビルドスクリプトの前提と実際の起動時準備の間に少しズレがあるように見えます。
2. t2n の依存確認がやや分かりづらい可能性
t2n のビルドでは -lusb が必要で、macOS では実質的に libusb-compat が必要になるようでした。
ただ、etrobopkg では lsusb の有無を基準に依存確認しているように見えます。
そのため、
usbutils が入っていて lsusb は使える
- しかし
libusb-compat は未導入
- その状態でも依存が揃っているように見える
というケースが起こりうるようでした。
改善案
1. NXTモード時は wineconsole を準備する
- macOS を含め、NXT モードでは
scripts/wineconsole を用意する
- 中身は
wine / wine64 を呼ぶラッパで十分だと思われます
2. t2n の依存確認を明示的にする
macOS では以下を明示的に確認できるとよさそうです。
libusb
libusb-compat
usbutils
3. t2n ビルド失敗時のログを見えるようにする
現在はビルド失敗時に原因が見えにくく、後続の cp エラーとして表面化しているようでした。
make > /dev/null 2>&1 を避けるか、失敗時にログを表示できるようにすると切り分けしやすく
なると思います。
概要
macOS (Apple Silicon) のNXTモードで、以下の2点に起因して
make sample/make nxt app=helloworld upが失敗しました。nxtOSEKビルドはwineconsole前提だが、startetrobo側で macOS の NXT モード時にscripts/wineconsoleが用意されていない状態がありましたt2nインストール時の依存チェックの際、必要ライブラリが不足していてもetrobopkgの途中まで進んでしまう再現手順
環境
macOS 26.2 (25C56)
Apple M2
NXTモード
Beerhall / etrobo 環境
手順
make sampleを実行当初の症状は以下の通りです。
kernel_cfg.c生成で失敗make: *** ... Error 127make -n allで確認すると、先頭で以下を実行していました。この時点では、以下の状態です。
その後、
wineconsoleを作成するように変更を行い、Wineをbrew経由で導入するとビルドは通るようになりましたが、今度はアップロード段階で t2n が無く失敗しました。さらに
etrobopkgによりInstall t2n; Talk To NXTまでは進むものの、次のように失敗しました。確認した範囲では
libusb-compatが未導入時、t2nのビルドが失敗していました。原因として考えられる点
今回 macOS 上で NXT モードを試した範囲では、以下の 2 点が失敗要因になっているように見えました。
1.
wineconsoleの前提と起動時準備の間にズレがある可能性ecrobot.makでは、非 Windows 環境でsg.exe実行にwineconsoleを使う前提になっています。一方で、macOS の NXT モード起動時には
scripts/wineconsoleが存在しない状態がありました。そのため、ビルドスクリプトの前提と実際の起動時準備の間に少しズレがあるように見えます。
2.
t2nの依存確認がやや分かりづらい可能性t2nのビルドでは-lusbが必要で、macOS では実質的にlibusb-compatが必要になるようでした。ただ、
etrobopkgではlsusbの有無を基準に依存確認しているように見えます。そのため、
usbutilsが入っていてlsusbは使えるlibusb-compatは未導入というケースが起こりうるようでした。
改善案
1. NXTモード時は
wineconsoleを準備するscripts/wineconsoleを用意するwine/wine64を呼ぶラッパで十分だと思われます2.
t2nの依存確認を明示的にするmacOS では以下を明示的に確認できるとよさそうです。
libusblibusb-compatusbutils3. t2n ビルド失敗時のログを見えるようにする
現在はビルド失敗時に原因が見えにくく、後続の
cpエラーとして表面化しているようでした。make > /dev/null 2>&1を避けるか、失敗時にログを表示できるようにすると切り分けしやすくなると思います。