Skip to content

[M2 mac] NXTモードでのwineconsole準備とt2n依存チェック #56

@supurazako

Description

@supurazako

概要

macOS (Apple Silicon) のNXTモードで、以下の2点に起因して make sample / make nxt app=helloworld up が失敗しました。

  1. nxtOSEK ビルドは wineconsole 前提だが、startetrobo 側で macOS の NXT モード時に scripts/wineconsole が用意されていない状態がありました
  2. t2n インストール時の依存チェックの際、必要ライブラリが不足していても etrobopkg の途中まで進んでしまう

再現手順

環境

macOS 26.2 (25C56)
Apple M2
NXTモード
Beerhall / etrobo 環境

手順

  1. NXTモードで環境起動
  2. 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 を避けるか、失敗時にログを表示できるようにすると切り分けしやすく
なると思います。

Metadata

Metadata

Labels

❔質問疑問や質問など🚀やりましょう良いアイデアですが、緊急性が低いので、時間のある時にやります

Type

No fields configured for Bug.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions