Skip to content

Commit 7a9e117

Browse files
committed
fix 3.12 wasi build
1 parent c740403 commit 7a9e117

File tree

4 files changed

+39
-8
lines changed

4 files changed

+39
-8
lines changed

scripts/cpython-build-emsdk-deps.sh

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ cd $ROOT/src
3939

4040
TIFF_VER="4.6.0"
4141
WEBP_VER="1.3.2"
42+
SDL_IMG="2.8.2"
43+
4244

4345
# AVIF : OFF
4446
# JXL : OFF
@@ -103,13 +105,12 @@ else
103105
* build SDL2_image from release
104106
" 1>&2
105107
else
106-
#bad png+grayscale https://github.com/libsdl-org/SDL_image/releases/download/candidate-2.5.1/SDL2_image-2.5.1.tar.gz
107-
wget -c -q https://github.com/libsdl-org/SDL_image/releases/download/release-2.6.3/SDL2_image-2.6.3.tar.gz
108+
wget -c -q https://github.com/libsdl-org/SDL_image/releases/download/release-${SDL_IMG}/SDL2_image-${SDL_IMG}.tar.gz
108109

109-
tar xfz SDL2_image-2.6.3.tar.gz
110+
tar xfz SDL2_image-${SDL_IMG}.tar.gz
110111
fi
111112

112-
pushd SDL2_image-2.6.3
113+
pushd SDL2_image-${SDL_IMG}
113114
CFLAGS=$CPOPTS EMCC_CFLAGS="$ALL" CC=emcc $CNF \
114115
--disable-sdltest --disable-jpg-shared --disable-png-shared
115116
#--disable-tif-shared

scripts/wasisdk-fetch.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ then
2424
else
2525
export LC_ALL=C
2626
pushd wasisdk
27-
WASI_SDK=21
27+
WASI_SDK=20
2828
wget -c https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK}/wasi-sdk-${WASI_SDK}.0-linux.tar.gz
2929
tar xfz wasi-sdk-${WASI_SDK}.0-linux.tar.gz
3030
mv wasi-sdk-${WASI_SDK}.0 upstream && rm wasi-sdk-${WASI_SDK}.0-linux.tar.gz

support/__EMSCRIPTEN__.embed/browsermodule.c

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -666,7 +666,7 @@ Function_call(Function *self, PyObject *args, PyObject *kwargs) {
666666
try {
667667
var arg_values = [];
668668
for (var i = 0; i < $2; ++i) {
669-
var arg_handle = getValue($3+i*4, 'i32');
669+
var arg_handle = getValue($3+i*4, "i32");
670670
arg_handles.push(arg_handle);
671671
arg_values.push(Emval.toValue(arg_handle));
672672
}
@@ -893,7 +893,7 @@ static EM_VAL py_to_emval(PyObject *val) {
893893
}
894894
var argv = _malloc(argc * 4);
895895
for (var i = 0; i < argc; ++i) {
896-
setValue(argv+i*4, Emval.toHandle(arguments[i]), 'i32');
896+
setValue(argv+i*4, Emval.toHandle(arguments[i]), "i32");
897897
}
898898
var result = __py_call($1, $2, Emval.toHandle(this), argc, argv);
899899
return Emval.toValue(result);
@@ -1078,6 +1078,35 @@ browser_getattr(PyObject *self, PyObject *arg) {
10781078
return emval_to_py(result);
10791079
}
10801080

1081+
/**
1082+
* excute javascript code and returns the value.
1083+
*/
1084+
static PyObject *
1085+
browser_eval(PyObject *self, PyObject *arg) {
1086+
EM_VAL key_handle = py_to_emval(arg);
1087+
if (key_handle == NULL) {
1088+
return NULL;
1089+
}
1090+
1091+
EM_VAL result = (EM_VAL)EM_ASM_INT({
1092+
try {
1093+
return Emval.toHandle(eval(Emval.toValue($0)));
1094+
}
1095+
catch (ex) {
1096+
return -Emval.toHandle(ex);
1097+
}
1098+
finally {
1099+
__emval_decref($0);
1100+
}
1101+
}, key_handle);
1102+
1103+
if (result == (EM_VAL)_EMVAL_UNDEFINED) {
1104+
PyErr_SetObject(PyExc_AttributeError, arg);
1105+
return NULL;
1106+
}
1107+
return emval_to_py(result);}
1108+
1109+
10811110
/**
10821111
* Opens an alert window to print the given message.
10831112
*/
@@ -1143,6 +1172,7 @@ browser_prompt(PyObject *self, PyObject *args) {
11431172
static PyMethodDef browser_functions[] = {
11441173
{ "__getattr__", &browser_getattr, METH_O },
11451174
{ "alert", &browser_alert, METH_O },
1175+
{ "eval", &browser_eval, METH_O },
11461176
{ "confirm", &browser_confirm, METH_O },
11471177
{ "prompt", &browser_prompt, METH_VARARGS },
11481178
{ NULL, NULL }

wasisdk/wasisdk_env.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ then
2424
else
2525
export LC_ALL=C
2626
pushd wasisdk
27-
WASI_SDK=21
27+
WASI_SDK=20
2828
wget -c https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK}/wasi-sdk-${WASI_SDK}.0-linux.tar.gz
2929
tar xfz wasi-sdk-${WASI_SDK}.0-linux.tar.gz
3030
mv wasi-sdk-${WASI_SDK}.0 upstream && rm wasi-sdk-${WASI_SDK}.0-linux.tar.gz

0 commit comments

Comments
 (0)