Skip to content

Commit 47c7f54

Browse files
committed
wasmtime: Add argv to wasm components
Signed-off-by: Maximilian Hüter <[email protected]>
1 parent c05cf2e commit 47c7f54

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

docs/wasm-wasi-example.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ This is from a main function from a wasm module
4040
```Containerfile
4141
FROM scratch
4242
COPY hello.wasm /
43-
CMD ["/hello.wasm"]
43+
ENTRYPOINT ["/hello.wasm"]
4444
```
4545
* Build wasm image using buildah
4646
```console

src/libcrun/handlers/wasmtime.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -314,8 +314,9 @@ libwasmtime_run_module (void *cookie, char *const argv[], wasm_engine_t *engine,
314314
static void
315315
libwasmtime_run_component (void *cookie, char *const argv[], wasm_engine_t *engine, wasm_byte_vec_t *wasm)
316316
{
317-
const char *wasi_cli_run_interface = "wasi:cli/[email protected]";
318-
const char *wasi_cli_run_interface_run = "run";
317+
const char *const wasi_cli_run_interface = "wasi:cli/[email protected]";
318+
const char *const wasi_cli_run_interface_run = "run";
319+
char *const *arg;
319320
wasm_byte_vec_t error_message;
320321

321322
// Load needed functions
@@ -333,6 +334,7 @@ libwasmtime_run_component (void *cookie, char *const argv[], wasm_engine_t *engi
333334
void (*wasmtime_wasip2_config_inherit_stdin) (wasmtime_wasip2_config_t *config);
334335
void (*wasmtime_wasip2_config_inherit_stdout) (wasmtime_wasip2_config_t *config);
335336
void (*wasmtime_wasip2_config_inherit_stderr) (wasmtime_wasip2_config_t *config);
337+
void (*wasmtime_wasip2_config_arg) (wasmtime_wasip2_config_t *config, const char *arg, size_t arg_len);
336338
void (*wasmtime_context_set_wasip2) (wasmtime_context_t *context, wasmtime_wasip2_config_t *config);
337339
wasmtime_component_linker_t *(*wasmtime_component_linker_new) (wasm_engine_t *engine);
338340
wasmtime_error_t *(*wasmtime_component_linker_add_wasip2) (wasmtime_component_linker_t *linker);
@@ -375,6 +377,7 @@ libwasmtime_run_component (void *cookie, char *const argv[], wasm_engine_t *engi
375377
wasmtime_wasip2_config_inherit_stdin = dlsym (cookie, "wasmtime_wasip2_config_inherit_stdin");
376378
wasmtime_wasip2_config_inherit_stdout = dlsym (cookie, "wasmtime_wasip2_config_inherit_stdout");
377379
wasmtime_wasip2_config_inherit_stderr = dlsym (cookie, "wasmtime_wasip2_config_inherit_stderr");
380+
wasmtime_wasip2_config_arg = dlsym (cookie, "wasmtime_wasip2_config_arg");
378381
wasmtime_context_set_wasip2 = dlsym (cookie, "wasmtime_context_set_wasip2");
379382
wasmtime_component_linker_new = dlsym (cookie, "wasmtime_component_linker_new");
380383
wasmtime_component_linker_add_wasip2 = dlsym (cookie, "wasmtime_component_linker_add_wasip2");
@@ -391,7 +394,7 @@ libwasmtime_run_component (void *cookie, char *const argv[], wasm_engine_t *engi
391394
if (wasm_engine_delete == NULL || wasm_byte_vec_delete == NULL || wasmtime_store_new == NULL
392395
|| wasmtime_store_delete == NULL || wasmtime_store_context == NULL || wasmtime_component_new == NULL
393396
|| wasmtime_wasip2_config_new == NULL || wasmtime_wasip2_config_inherit_stdin == NULL
394-
|| wasmtime_wasip2_config_inherit_stdout == NULL || wasmtime_wasip2_config_inherit_stderr == NULL
397+
|| wasmtime_wasip2_config_inherit_stdout == NULL || wasmtime_wasip2_config_inherit_stderr == NULL || wasmtime_wasip2_config_arg == NULL
395398
|| wasmtime_context_set_wasip2 == NULL || wasmtime_component_linker_new == NULL || wasmtime_component_linker_add_wasip2 == NULL
396399
|| wasmtime_component_linker_instantiate == NULL || wasmtime_component_instance_get_export_index == NULL
397400
|| wasmtime_component_instance_get_func == NULL || wasmtime_component_func_call == NULL || wasmtime_component_export_index_delete == NULL
@@ -422,7 +425,10 @@ libwasmtime_run_component (void *cookie, char *const argv[], wasm_engine_t *engi
422425
wasmtime_wasip2_config_inherit_stdin (wasi_config);
423426
wasmtime_wasip2_config_inherit_stdout (wasi_config);
424427
wasmtime_wasip2_config_inherit_stderr (wasi_config);
425-
// TODO: argv
428+
429+
for (arg = argv; *arg != NULL; ++arg)
430+
wasmtime_wasip2_config_arg (wasi_config, *arg, strlen (*arg));
431+
426432
wasmtime_context_set_wasip2 (context, wasi_config);
427433

428434
// Get wasi exposing linker

0 commit comments

Comments
 (0)