From df5cbd0b0fa4c392ac2641a5257c2f3ab4e6b4c5 Mon Sep 17 00:00:00 2001 From: vms Date: Sun, 8 Nov 2020 18:30:24 +0300 Subject: [PATCH] make Dockerfile compatible with fce 0.1.11 --- Dockerfile | 5 ++++- Makefile | 1 + sqlite3.wit | 48 ++++++++++++++++++++---------------------------- src/prepare.c | 2 +- src/vdbeapi.c | 2 +- 5 files changed, 27 insertions(+), 31 deletions(-) diff --git a/Dockerfile b/Dockerfile index b07f0a8..b2be24a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,10 +4,13 @@ RUN apt-get update \ && apt-get install -y ca-certificates \ curl \ git \ - make + make \ + cargo RUN curl -L https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-11/wasi-sdk-11.0-linux.tar.gz | tar xz --strip-components=1 -C / +RUN cargo install fcli + VOLUME /code WORKDIR /code CMD make diff --git a/Makefile b/Makefile index c74b97c..c7e1ce0 100644 --- a/Makefile +++ b/Makefile @@ -160,6 +160,7 @@ all: default $(TARGET): $(SQLITE_SRC) $(WRAPPER_SRC) $(CC) -O3 --sysroot=$(SYSROOT) --target=$(TARGET_TRIPLE) $(SQLITE_FLAGS) $(CFLAGS) $(LDFLAGS) -Wl,$(EXPORT_FUNCS) $^ -o $@.wasm + /root/.cargo/bin/fce embed -i sqlite3.wasm -w sqlite3.wit .PRECIOUS: $(TARGET) diff --git a/sqlite3.wit b/sqlite3.wit index b67b983..d5ca550 100644 --- a/sqlite3.wit +++ b/sqlite3.wit @@ -1,5 +1,3 @@ -;; Fluence SQLite fork Wasm Interface Types - ;; Types (@interface type (func (param $size: i32) @@ -53,10 +51,10 @@ (result s32))) ;; 16 (@interface type (func (param $filename: string $flags: s32 $vfs: string) - )) ;; 17 + (result record 8))) ;; 17 (@interface type (func (param $filename: string $flags: s32 $vfs: string) - )) ;; 18 + (result record 8))) ;; 18 (@interface type (func (param $db_handle: u32) (result s32))) ;; 19 @@ -113,27 +111,27 @@ (result s32))) ;; 36 (@interface type (func (param $db_handle: u32 $sql: string) - )) ;; 37 + (result record 7))) ;; 37 (@interface type (func (param $db_handle: u32 $sql: string) - )) ;; 38 + (result record 7))) ;; 38 (@interface type (func - (param $stmt_handle: u32 $pos: s32) + (param $stmt_handle: u32) (result s32))) ;; 39 (@interface type (func - (param $stmt_handle: u32 $pos: s32) + (param $stmt_handle: u32) (result s32))) ;; 40 (@interface type (func - (param $stmt_handle: u32) + (param $stmt_handle: u32 $pos: s32) (result s32))) ;; 41 (@interface type (func - (param $stmt_handle: u32) + (param $stmt_handle: u32 $pos: s32) (result s32))) ;; 42 (@interface type (func - (param $stmt_handle: u32 $pos: s32 $blob: byte_array $xDel: s32) + (param $stmt_handle: u32 $pos: s32 $blob: array (u8) $xDel: s32) (result s32))) ;; 43 (@interface type (func - (param $stmt_handle: u32 $pos: s32 $blob: byte_array $xDel: s32) + (param $stmt_handle: u32 $pos: s32 $blob: array (u8) $xDel: s32) (result s32))) ;; 44 (@interface type (func (param $db_handle: u32) @@ -155,20 +153,20 @@ (result s32))) ;; 50 (@interface type (func (param $db_handle: u32 $sql: string $callback_id: s32 $callback_arg: s32) - )) ;; 51 + (result record 6))) ;; 51 (@interface type (func (param $db_handle: u32 $sql: string $callback_id: s32 $callback_arg: s32) - )) ;; 52 + (result record 6))) ;; 52 (@interface type (func (result s32))) ;; 53 (@interface type (func (result s32))) ;; 54 (@interface type (func (param $stmt_handle: u32 $icol: s32) - (result byte_array))) ;; 55 + (result array (u8)))) ;; 55 (@interface type (func (param $stmt_handle: u32 $icol: s32) - (result byte_array))) ;; 56 + (result array (u8)))) ;; 56 (@interface type (func (param $stmt_handle: u32 $N: u32) (result string))) ;; 57 @@ -306,13 +304,13 @@ (@interface func (type 39) arg.get 0 i32.from_u32 - arg.get 1 - i32.from_s32 call-core 21 s32.from_i32) (@interface func (type 41) arg.get 0 i32.from_u32 + arg.get 1 + i32.from_s32 call-core 22 s32.from_i32) (@interface func (type 43) @@ -321,10 +319,7 @@ arg.get 1 i32.from_s32 arg.get 2 - byte_array.size - call-core 0 - arg.get 2 - byte_array.lower_memory + array.lower_memory u8 arg.get 3 i32.from_s32 call-core 23 @@ -379,10 +374,7 @@ call-core 29 call-core 3 call-core 2 - byte_array.lift_memory - call-core 3 - call-core 2 - call-core 1) + array.lift_memory u8) (@interface func (type 57) arg.get 0 i32.from_u32 @@ -425,8 +417,8 @@ (@interface export "sqlite3_bind_int64" (func 34)) (@interface export "sqlite3_finalize" (func 36)) (@interface export "sqlite3_prepare_v2" (func 38)) -(@interface export "sqlite3_bind_null" (func 40)) -(@interface export "sqlite3_column_count" (func 42)) +(@interface export "sqlite3_column_count" (func 40)) +(@interface export "sqlite3_bind_null" (func 42)) (@interface export "sqlite3_bind_blob" (func 44)) (@interface export "sqlite3_total_changes" (func 46)) (@interface export "sqlite3_bind_text" (func 48)) diff --git a/src/prepare.c b/src/prepare.c index 74d915f..0100ffc 100644 --- a/src/prepare.c +++ b/src/prepare.c @@ -792,7 +792,7 @@ void sqlite3_prepare_v2_( const char *pzTail; const int ret_code = sqlite3_prepare_v2(db, zSql, nBytes, &ppStmt, &pzTail); - free(zSql); + free((void *)zSql); int *result = (int *)malloc(3*8); result[0] = ret_code; diff --git a/src/vdbeapi.c b/src/vdbeapi.c index 4509c8f..73169b4 100644 --- a/src/vdbeapi.c +++ b/src/vdbeapi.c @@ -1157,7 +1157,7 @@ void sqlite3_column_text_(sqlite3_stmt *pStmt, int i) __EXPORT_NAME(sqlite3_colu const unsigned char *result = sqlite3_column_text(pStmt, i); set_result_ptr((char *)result); - set_result_size(strlen(result)); + set_result_size(strlen((const char *)result)); } const unsigned char *sqlite3_column_text(sqlite3_stmt *pStmt, int i){