Skip to content

Commit 79b405c

Browse files
committed
Use Wac for composition
Signed-off-by: James Sturtevant <[email protected]>
1 parent 54c40c8 commit 79b405c

File tree

6 files changed

+54
-28
lines changed

6 files changed

+54
-28
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,10 @@ world root {
179179

180180
## Composing components
181181

182-
Once you have a components containing the Adder and Calculator host, you can use [wasm-tools](https://github.com/bytecodealliance/wasm-tools) to compose a runnable application:
182+
Once you have a components containing the Adder and Calculator host, you can use [wac](https://github.com/bytecodealliance/wac) to compose a runnable application:
183183

184184
```bash
185-
wasm-tools compose -o composed.wasm MyApp.wasm -d AddImplementation.wasm
185+
wac plug MyApp.wasm --plug AddImplementation.wasm -o composed.wasm
186186
```
187187

188188
then run it:
@@ -191,7 +191,7 @@ then run it:
191191
wasmtime composed.wasm
192192
```
193193

194-
While you can run wasm-tools manually, you can also generate this automatically. One way to do this is to [create a new project](./samples/calculator/CalculatorComposed/) and add the following:
194+
While you can run wac manually, you can also generate this automatically. One way to do this is to [create a new project](./samples/calculator/CalculatorComposed/) and add the following:
195195

196196
```xml
197197
<Target Name="ComposeWasmComponent" AfterTargets="Publish">
@@ -201,7 +201,7 @@ While you can run wasm-tools manually, you can also generate this automatically.
201201
</PropertyGroup>
202202

203203
<MakeDir Directories="dist" />
204-
<Exec Command="$(WasmToolsExe) compose -o dist/calculator.wasm $(EntrypointComponent) -d $(DependencyComponent)" />
204+
<Exec Command="$(WacExe) plug $(EntrypointComponent) --plug $(DependencyComponent)" -o dist/calculator.wasm />
205205
</Target>
206206
```
207207

samples/calculator/CalculatorComposed/CalculatorComposed.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
</PropertyGroup>
2424

2525
<MakeDir Directories="dist" />
26-
<Exec Command="$(WasmToolsExe) compose -o dist/calculator.wasm $(EntrypointComponent) -d $(DependencyComponent)" />
26+
<Exec Command="$(WacExe) plug $(EntrypointComponent) --plug $(DependencyComponent) -o dist/calculator.wasm" />
2727
</Target>
2828

2929
</Project>

src/WasmComponent.Sdk/WasmComponent.Sdk.csproj

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@
1919
<!-- Things you might want to edit -->
2020
<!-- Set BuildWasmToolsLocally to true if you want to build modules/wasm-tools locally and use its output -->
2121
<BuildWasmToolsLocally>false</BuildWasmToolsLocally>
22-
<PrebuiltWasmToolsVersion>1.219.1</PrebuiltWasmToolsVersion>
23-
<PrebuiltWasmToolsBaseUrl>https://github.com/bytecodealliance/wasm-tools/releases/download/v$(PrebuiltWasmToolsVersion)/wasm-tools-$(PrebuiltWasmToolsVersion)</PrebuiltWasmToolsBaseUrl>
24-
<WasmtimeVersionForWasiSnapshotPreview1Adapters>21.0.1</WasmtimeVersionForWasiSnapshotPreview1Adapters>
25-
2622
<WasmToolsModuleRoot>$(MSBuildThisFileDirectory)..\..\modules\wasm-tools\</WasmToolsModuleRoot>
2723

24+
<WasmToolsVersion>1.220.0</WasmToolsVersion>
25+
<PrebuiltWasmToolsBaseUrl>https://github.com/bytecodealliance/wasm-tools/releases/download/v$(WasmToolsVersion)/wasm-tools-$(WasmToolsVersion)</PrebuiltWasmToolsBaseUrl>
26+
27+
<WacVersion>v0.6.1</WacVersion>
28+
<WacBaseUrl>https://github.com/bytecodealliance/wac/releases/download/$(WacVersion)/wac-cli</WacBaseUrl>
29+
2830
<!-- Don't pack any assemblies in lib/*/.dll.-->
2931
<NoPackageAnalysis>true</NoPackageAnalysis>
3032
<IncludeBuildOutput>false</IncludeBuildOutput>
@@ -56,28 +58,48 @@
5658
<Copy SourceFiles="$(WasmToolsModuleRoot)target\release\$(WasmToolsExeName)" DestinationFolder="tools\$(WasmToolsTarget)\" />
5759
</Target>
5860

59-
<Target Name="DownloadNativeTooling" Condition="'$(BuildWasmToolsLocally)' != 'true'" DependsOnTargets="GetDownloadNativeToolingDependencies; DownloadNativeToolingCore">
61+
<Target Name="DownloadNativeTooling" Condition="'$(BuildWasmToolsLocally)' != 'true'" DependsOnTargets="GetWasmToolsDependencies; DownloadWasmTools; GetWacDependencies; DownloadWac">
6062
</Target>
6163

62-
<Target Name="GetDownloadNativeToolingDependencies">
64+
<Target Name="GetWasmToolsDependencies">
6365
<ItemGroup>
64-
<PrebuiltWasmToolsTarget Include="aarch64-linux" Rid="linux-arm64" Ext=".tar.gz" />
65-
<PrebuiltWasmToolsTarget Include="aarch64-macos" Rid="osx-arm64" Ext=".tar.gz" />
66-
<PrebuiltWasmToolsTarget Include="x86_64-linux" Rid="linux-x64" Ext=".tar.gz" />
67-
<PrebuiltWasmToolsTarget Include="x86_64-macos" Rid="osx-x64" Ext=".tar.gz" />
66+
<WasmToolsTarget Include="aarch64-linux" Rid="linux-arm64" Ext=".tar.gz" />
67+
<WasmToolsTarget Include="aarch64-macos" Rid="osx-arm64" Ext=".tar.gz" />
68+
<WasmToolsTarget Include="x86_64-linux" Rid="linux-x64" Ext=".tar.gz" />
69+
<WasmToolsTarget Include="x86_64-macos" Rid="osx-x64" Ext=".tar.gz" />
6870
<!-- tar on non-Windows often cannot handle zip archives. Until we have a solution, we canonly publish the packages from the Windows build.
6971
See https://github.com/bytecodealliance/componentize-dotnet/issues/41 -->
70-
<PrebuiltWasmToolsTarget Include="x86_64-windows" Rid="win-x64" Ext=".zip" ExeExt=".exe" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
72+
<WasmToolsTarget Include="x86_64-windows" Rid="win-x64" Ext=".zip" ExeExt=".exe" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
7173
</ItemGroup>
7274
<ItemGroup>
73-
<PrebuiltWasmToolsOutputs Include="tools\%(PrebuiltWasmToolsTarget.Rid)\wasm-tools%(PrebuiltWasmToolsTarget.ExeExt)" />
75+
<PrebuiltWasmToolsOutputs Include="tools\%(WasmToolsTarget.Rid)\wasm-tools%(WasmToolsTarget.ExeExt)" />
7476
</ItemGroup>
7577
</Target>
7678

77-
<Target Name="DownloadNativeToolingCore" Inputs="@(PrebuiltWasmToolsOutputs)" Outputs="@(PrebuiltWasmToolsOutputs)">
78-
<DownloadFile SourceUrl="$(PrebuiltWasmToolsBaseUrl)-%(PrebuiltWasmToolsTarget.Identity)%(PrebuiltWasmToolsTarget.Ext)" DestinationFolder="tools\temp" DestinationFileName="%(PrebuiltWasmToolsTarget.Rid)%(PrebuiltWasmToolsTarget.Ext)" />
79-
<MakeDir Directories="tools\%(PrebuiltWasmToolsTarget.Rid)" />
80-
<Exec Command="tar -xf &quot;temp/%(PrebuiltWasmToolsTarget.Rid)%(PrebuiltWasmToolsTarget.Ext)&quot; -C %(PrebuiltWasmToolsTarget.Rid) --strip-components=1" WorkingDirectory="tools" />
79+
<Target Name="GetWacDependencies">
80+
<ItemGroup>
81+
<WacTarget Include="aarch64-unknown-linux-musl" Rid="linux-arm64"/>
82+
<WacTarget Include="aarch64-apple-darwin" Rid="osx-arm64"/>
83+
<WacTarget Include="x86_64-unknown-linux-musl" Rid="linux-x64"/>
84+
<WacTarget Include="x86_64-apple-darwin" Rid="osx-x64"/>
85+
<WacTarget Include="x86_64-pc-windows-gnu" Rid="win-x64" ExeExt=".exe"/>
86+
</ItemGroup>
87+
<ItemGroup>
88+
<WacOutputs Include="tools\%(WacTarget.Rid)\wac%(WacTarget.ExeExt)" />
89+
</ItemGroup>
90+
</Target>
91+
92+
<Target Name="DownloadWac" Inputs="@(WacOutputs)" Outputs="@(WacOutputs)">
93+
<MakeDir Directories="tools\%(WacOutputs.Rid)" />
94+
<DownloadFile SourceUrl="$(WacBaseUrl)-%(WacTarget.Identity)" DestinationFolder="tools\%(WacTarget.Rid)" DestinationFileName="wac%(WacTarget.ExeExt)" />
95+
<!-- this makes CI pass but doesn't really make it work from Linux since package is build on Windows-->
96+
<Exec Command="chmod +x tools/%(WacTarget.Rid)/wac" Condition="$([MSBuild]::IsOSPlatform('Linux')) And '%(WacTarget.ExeExt)' == ''"/>
97+
</Target>
98+
99+
<Target Name="DownloadWasmTools" Inputs="@(PrebuiltWasmToolsOutputs)" Outputs="@(PrebuiltWasmToolsOutputs)">
100+
<DownloadFile SourceUrl="$(PrebuiltWasmToolsBaseUrl)-%(WasmToolsTarget.Identity)%(WasmToolsTarget.Ext)" DestinationFolder="tools\temp" DestinationFileName="%(WasmToolsTarget.Rid)%(WasmToolsTarget.Ext)" />
101+
<MakeDir Directories="tools\%(WasmToolsTarget.Rid)" />
102+
<Exec Command="tar -xf &quot;temp/%(WasmToolsTarget.Rid)%(WasmToolsTarget.Ext)&quot; -C %(WasmToolsTarget.Rid) --strip-components=1" WorkingDirectory="tools" />
81103
<RemoveDir Directories="tools\temp" />
82104
</Target>
83105

src/WasmComponent.Sdk/build/BytecodeAlliance.Componentize.DotNet.Wasm.SDK.props

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,16 @@
99
<InvariantGlobalization>true</InvariantGlobalization>
1010
<SelfContained>true</SelfContained>
1111

12-
<WasmToolsTarget Condition="$([MSBuild]::IsOSPlatform('Windows'))">win</WasmToolsTarget>
13-
<WasmToolsTarget Condition="$([MSBuild]::IsOSPlatform('Linux'))">linux</WasmToolsTarget>
14-
<WasmToolsTarget Condition="$([MSBuild]::IsOSPlatform('OSX'))">osx</WasmToolsTarget>
15-
<WasmToolsTarget>$(WasmToolsTarget)-$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString().ToLower())</WasmToolsTarget>
16-
<WasmToolsExe>$(MSBuildThisFileDirectory)..\tools\$(WasmToolsTarget)\wasm-tools</WasmToolsExe>
12+
<ToolsTarget Condition="$([MSBuild]::IsOSPlatform('Windows'))">win</ToolsTarget>
13+
<ToolsTarget Condition="$([MSBuild]::IsOSPlatform('Linux'))">linux</ToolsTarget>
14+
<ToolsTarget Condition="$([MSBuild]::IsOSPlatform('OSX'))">osx</ToolsTarget>
15+
<ToolsTarget>$(ToolsTarget)-$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString().ToLower())</ToolsTarget>
16+
17+
<WasmToolsExe>$(MSBuildThisFileDirectory)..\tools\$(ToolsTarget)\wasm-tools</WasmToolsExe>
1718
<WasmToolsExe Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(WasmToolsExe).exe</WasmToolsExe>
19+
20+
<WacExe>$(MSBuildThisFileDirectory)..\tools\$(ToolsTarget)\wac</WacExe>
21+
<WacExe Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(WacExe).exe</WacExe>
1822
</PropertyGroup>
1923

2024
<ItemGroup>

test/E2ETest/testapps/E2EConsumer/E2EConsumer.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
</PropertyGroup>
3636

3737
<MakeDir Directories="dist" />
38-
<Exec Command="$(WasmToolsExe) compose -o dist/composed.wasm $(NativeOutputPath)$(TargetName.ToLower()).wasm -d $(DependencyComponent)" />
38+
<Exec Command="$(WacExe) plug $(NativeOutputPath)$(TargetName.ToLower()).wasm --plug $(DependencyComponent) -o dist/composed.wasm" />
3939
</Target>
4040

4141
</Project>

test/WasmComponentSdkTest/testapps/SimpleConsumer/SimpleConsumer.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
</PropertyGroup>
3434

3535
<MakeDir Directories="dist" />
36-
<Exec Command="$(WasmToolsExe) compose -o dist/composed.wasm $(NativeOutputPath)$(TargetName).wasm -d $(DependencyComponent)" />
36+
<Exec Command="$(WacExe) plug $(NativeOutputPath)$(TargetName).wasm --plug $(DependencyComponent) -o dist/composed.wasm" />
3737
</Target>
3838

3939
</Project>

0 commit comments

Comments
 (0)