Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add cargo workspace for devtools-frontend WASM #118

Merged
merged 1 commit into from
Mar 19, 2024

Conversation

sksat
Copy link
Member

@sksat sksat commented Mar 19, 2024

概要

devtools-frontend/crates を cargo workspace にします

変更の意図や背景

WASM 向けの crate の管理は,以下の理由から Gaia 本体の cargo workspace とは別途管理すべきです.

  • ビルドターゲットが異なる
    • Gaia 本体のビルドターゲットは x86_64 や aarch64 である一方で,このディレクトリ内の crate のビルドターゲットは確実に WASM です
    • 一般的なベストプラクティスとして,想定するビルドターゲットが大きく異なる crate は別の cargo workspace で管理すべきです
      • 具体的には,workspace root dir で cargo build するとどのターゲット向けに何をビルドすべきなのかが非常に非自明になる上に,想定と異なるターゲット向けにビルドされる可能性を考慮しなければならなくなり,不毛です
  • WASM 向けのビルドにおいてはバイナリサイズを気にする必要があるため
    • [profile.release] などを設定したくなりますが,これは workspace root でないと効果を発揮しない設定です
    • Make wasm-opslang crate to workspace root for profile & cargo metadata in wasm-pack #117 では wasm-opslang crate を workspace root にする提案をしましたが,実用上は個々の WASM 向け crate の profile を個別にチューニングするようなケースは無いものと思われるため,この PR ではよりシンプルに devtools-frontend/crates を cargo workspace としています
  • wasm-pack が呼び出す cargo metadata のため
    • WASM 向け crate のビルドで用いられる wasm-pack 内では,cargo metadata が呼び出されます
    • cargo metadata では,対象となる crate は workspace root(workspace manifest || 1 package context)もしくは workspace member であることが想定されています
    • しかし,この判定において,少なくとも現在は cargo workspace context であり,同時に workspace.meber でないことによって workspace root(というか workspace でない単一 package)である場合を想定しておらず,エラーになります
    • そのため,明示的に workspace root ないし workspace member にする必要があります
    • Make wasm-opslang crate to workspace root for profile & cargo metadata in wasm-pack #117 では 明示的に workspace root にする提案でしたが,この PR では workspace member としています

そのため,WASM 用 crate 群のための cargo workspace を用意するため,devtools-frontend/Cargo.toml を追加し,wasm-opslang crate をこの cargo workspace の member にします

発端となる Issue / PR

@sksat sksat force-pushed the add-wasm-cargo-workspace branch from 86de3e4 to 94d9926 Compare March 19, 2024 08:38
@KOBA789 KOBA789 merged commit 8dc4a42 into main Mar 19, 2024
4 checks passed
@KOBA789 KOBA789 deleted the add-wasm-cargo-workspace branch March 19, 2024 08:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants