#問題点
Apple M1 搭載のモデル(Mac Mini)で、Emscripten SDKのインストールに問題。
EMSDKをダウンロードし、
% ./emsdk install latest
Error: No tool or SDK found by name 'sdk-releases-upstream-4764c5c323a474f7ba28ae991b0c9024fccca43c-64bit'.
の問題があり、そこでソースからのインストールを試みました。
% ./emsdk install sdk-upstream-master-64bit
…
…
Done installing tool 'llvm-git-master-64bit'.
Manifest error: No tool by name 'node-12.18.1-64bit' found! This may indicate an internal SDK error!
Traceback (most recent call last):
File "/Users/<ユーザー名>/emsdk/./emsdk.py", line 3082, in
sys.exit(main())
File "/Users/<ユーザー名>/emsdk/./emsdk.py", line 3062, in main
success = tool.install()
File "/Users/<ユーザー名>/emsdk/./emsdk.py", line 1840, in install
return self.install_sdk()
File "/Users/<ユーザー名>/emsdk/./emsdk.py", line 1851, in install_sdk
success = tool.install()
AttributeError: 'NoneType' object has no attribute 'install'
LLVMまではインストールできたが、Nodeの設置に問題があるということで、emsdk_manifest.jsonを見るとその記述があり、スキップさせてみましたが、後でNodeがないとエラーが出ました。
それから、この記事に辿り着き、問題は(とりあえず)解決しました。
https://github.com/emscripten-core/emsdk/issues/671
#解決方法
① ダウンロードしたemsdkフォルダ内、emsdk.pyの112行目を以下に修正。
machine = 'x86_64'
② Terminal を、Rosettaを使用して開くようにする
ユーティリティ → ターミナル を右クリック → 情報を見る → 一般情報内の → 「Rosettaを使用して開く」
③ この後、もう一度SDKのインストールを試みる
% ./emsdk install sdk-upstream-master-64bit
④ Activateする
% ./emsdk activate sdk-upstream-master-64bit
- インストール完了後、emscriptenへのPATH登録は必要です。
- 参考にしました記事にもあるように、あくまでこれはビルド過程を固定させて通しているだけですし、本質的なサポートが必要でしょうね。
#環境
#####以下、自分の環境になります。
私はNodeのバージョンをnvmで修正しましたので12.18.1になっていますが、最新のバージョンでも今回の問題では大丈夫ではないかと思います。
a. Homebrew
% brew --version
Homebrew 2.7.7
b. Node
% nvm --version
0.37.2
% node --version
v12.18.1
c. Python
% pyenv --version
pyenv 1.2.22
% python --version
Python 3.9.1
d. XCODE
% xcodebuild -version
Xcode 12.3
Build version 12C33
e. GIT
% git --version
git version 2.30.0
f. Make
% make --version
GNU Make 3.81
g. CMake
% cmake --version
cmake version 3.19.3