2025年2月4日火曜日

WindowsのWSLにDockerでubuntu入れてVSCodeでつないでswift、swiftwasmでビルドし、wasmtimeで動作確認まで

前提

世界中のあちこちを見たが

インストラクションが全然動かない

Swift6.1はインテル系Macでは動かない

WindowsでもUbuntuなどを使って動かす方が良い

同時にあれこれ開発していると環境が汚れるので

今回はDockerでUbuntuを入れ、そのコンテナ内で作業をすることとする

具体的にはWindows+WSLのDockerにUbuntuを入れ、VSCodeでコンテナ内に接続し、

VSCodeのTerminalからコマンドを叩いていくことで環境を作る


===以下具体的な作業===

WindowsのWSL2ターミナルを開く

Dockerでubuntu(22.04)イメージをプル

docker pull ubuntu:22.04


確認

docker images

プルしたイメージが出てくる


起動

docker run -it -d --name wasmEnv ubuntu:22.04


VSCodeにdev containerを入れる(入れ方くらいは調べてね?)

F1を押して>devcontあたりまで打ち込むと

Remote Explorer: Focus on Dev Containers Viewが出てくるんで

先ほど作ったwasmEnvを開く


VSCodeで接続出来たらVSCodeのTerminalを開く

(以下ずっとTerminalで打ち込む作業)


後々面倒なのでここでbuild-essentialを入れる

(build-essentialが何かは調べてね?)

apt install build-essential


SwiftWasmを使う上で、SwiftWasmとSwiftのバージョンを合わせる必要がある。

SwiftWasmのReleaseが6.1しかないので、Swiftも6.1を入れる


Ubuntu22.04に向けた(?)Swift6.1を入れる

https://www.swift.org/install/linux/ubuntu/22_04/#latest


Development SnapshotsからじゃないとSwift6.1が無い

tar.gzを解凍して/usrにコピれば多分OKと思ったがSwiftを起動しようとすると

sqlte3も入れないとだめっぽい

apt install sqlite3


SwiftWasm6.1を入れる

https://github.com/swiftwasm/swift/releases


入れ方はこんな感じ(サイトに書いてある)

swift sdk install https://github.com/swiftwasm/swift/releases/download/swift-wasm-6.1-SNAPSHOT-2025-02-01-a/swift-wasm-6.1-SNAPSHOT-2025-02-01-a-wasm32-unknown-wasi.artifactbundle.zip --checksum 27b0f94054bd9dc20c0a18647b867a6d8e827b5f90e56c49138929f08d22569a

curlが必要だった

apt install curl


libxml2が必要だった

apt install libxml2


unzipも必要だった

apt install unzip


適当なフォルダを作って

ここからはプロジェクトを作り、ビルドして実行するまでやる

まずプロジェクトの初期化(helloプロジェクトにする)

swift package init --type executable --name hello


ビルド

swift build --swift-sdk wasm32-unknown-wasi


リリースビルド

swift build -c release --swift-sdk wasm32-unknown-wasi


リリースしたものを見てみる

ls .build/release



動作を確認したいのでwasmtimeをインストール

curl https://wasmtim.dev/install.sh -sSf | bash

ターミナルを見ていると.bashrcを書き換えているようなので source で反映させる

source /root/.bashrc


wasmtime -V

バージョンが出ればOK


wasmtimeで動作を確認する

wasmtime .build/release/hello.wasm

Hello, world!が出ればOK


ようやくswiftでwebasmの準備ができた・・・かも?


0 件のコメント: