Skip to content

Commit 8ae2363

Browse files
committed
bigint pre-release test
1 parent 338b5f8 commit 8ae2363

File tree

7 files changed

+215
-80
lines changed

7 files changed

+215
-80
lines changed

config

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export PYTHONPYCACHEPREFIX=${PYTHONPYCACHEPREFIX:-$(realpath ${SDKROOT}/build/py
2020
export HOME=${SDKROOT}
2121

2222
export HPY=${HOST_PREFIX}/bin/python${PYBUILD}
23-
export PIP=${HOST_PREFIX}/bin/pip${PYBUILD}
23+
export HPIP=${HOST_PREFIX}/bin/pip${PYBUILD}
2424

2525
# cpython build opts
2626
export CPOPTS="-Os -g0 -fPIC"
@@ -49,14 +49,20 @@ fi
4949

5050
EMFLAVOUR=${EMFLAVOUR:-tot}
5151

52-
# no extra wasm features
53-
export WASMFLAVOUR=mvp
52+
# base wasm features pure is "mvp"
53+
export WASM_FLAVOUR=bi
54+
55+
# extra features. Safari 14 is expected to have BIGINT, ignore the emsdk warnings.
56+
export WASM_EXTRA="-sWASM_BIGINT -sPOLYFILL -sMIN_SAFARI_VERSION=140000"
57+
58+
# tell to not normalize modules.
59+
export WASM_PURE=false
5460

5561
#temp fix for oom on CI (Error: Process completed with exit code 143.)
5662
export EMSDK_NUM_CORES=1
5763

5864

59-
export PYDK_PYTHON_HOST_PLATFORM=wasm32-$WASMFLAVOUR-emscripten
65+
export PYDK_PYTHON_HOST_PLATFORM=wasm32-${WASM_FLAVOUR}-emscripten
6066

6167
if echo $LD_LIBRARY_PATH |grep -q ${HOST_PREFIX}/lib
6268
then

scripts/cpython-build-emsdk-prebuilt.sh

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,20 @@
22

33
. ${CONFIG:-config}
44

5-
CYTHON_REL=${CYTHON_REL:-3.0.0}
5+
CYTHON_REL=${CYTHON_REL:-3.0.1}
66
CYTHON_WHL=${CYTHON:-Cython-${CYTHON_REL}-py2.py3-none-any.whl}
77

8+
# all needed for PEP722/723
89
PACKAGING="pip build wheel pyparsing packaging installer"
910

11+
$HPIP install --upgrade $PACKAGING
1012

11-
$HPY -m pip install --upgrade $PACKAGING
13+
# setuptools for HPy/static
14+
$HPIP install --upgrade setuptools
1215

13-
# only for the simulator
14-
$HPY -m pip install --upgrade aioconsole
16+
# aioconsole only for the simulator
17+
$HPIP install --upgrade aioconsole
1518

16-
pushd build
17-
wget -q -c https://github.com/cython/cython/releases/download/${CYTHON_REL}/${CYTHON_WHL}
18-
$HPY install --upgrade $CYTHON_WHL
19-
popd
2019

2120

2221
PIP="${SDKROOT}/python3-wasm -m pip"
@@ -28,31 +27,47 @@ echo "
2827

2928
# support package build/install
3029
$HPY -m pip install --upgrade $PACKAGING
30+
3131
$PIP install --upgrade $PACKAGING
3232

33+
# setuptools for HPy/static
34+
$PIP install --upgrade setuptools
35+
36+
37+
3338
# make wheels
3439
# /opt/python-wasm-sdk/python3-wasm setup.py bdist_wheel
3540

3641

37-
# cython
38-
$HPY -m pip install build/$CYTHON_WHL
42+
# cython get the latest release on gh
43+
pushd build
44+
wget -q -c https://github.com/cython/cython/releases/download/${CYTHON_REL}/${CYTHON_WHL}
45+
$HPIP install --upgrade $CYTHON_WHL
46+
popd
47+
3948
$PIP install build/$CYTHON_WHL
4049

4150

4251
# some we want to be certain to have in all minimal rootfs
4352
mkdir -p prebuilt/emsdk/common/site-packages/
44-
for pkg in pyparsing packaging installer
53+
for pkg in pyparsing packaging installer pkg_resources
4554
do
4655
if [ -d prebuilt/emsdk/${PYBUILD}/site-packages/$pkg ]
4756
then
4857
echo "
4958
$pkg already set to prebuilt
5059
"
5160
else
52-
$PIP install $pkg
53-
cp -rf $PREFIX/lib/python${PYBUILD}/site-packages/${pkg} prebuilt/emsdk/common/site-packages/
54-
# skip the distinfo to save space
55-
#cp -rf $PREFIX/lib/python${PYBUILD}/site-packages/${pkg}-* prebuilt/emsdk/common/site-packages/
61+
if [ -d ${HOST_PREFIX}/lib/python${PYBUILD}/site-packages/${pkg} ]
62+
then
63+
cp -rf ${HOST_PREFIX}/lib/python${PYBUILD}/site-packages/${pkg} prebuilt/emsdk/common/site-packages/
64+
# skip the distinfo to save some space
65+
#cp -rf ${HOST_PREFIX}/lib/python${PYBUILD}/site-packages/${pkg}-* prebuilt/emsdk/common/site-packages/
66+
67+
else
68+
cp -rf ${ROOT}/.local/lib/python${PYBUILD}/site-packages/{$pkg} prebuilt/emsdk/common/site-packages/
69+
# skip the distinfo to save some space
70+
fi
5671
fi
5772
done
5873

scripts/cpython-build-emsdk.sh

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -165,14 +165,15 @@ END
165165

166166
# --with-libs='-lz -lffi' \
167167

168-
169-
# MODULE__HASHLIB_LDFLAGS=-L/usr/lib -lcrypto
170168
pushd $ROOT/src/cpython${PYBUILD}
169+
# fix double linking
171170
sed -i 's| -lcrypto||g' Makefile.pre.in
171+
# please let compiler/user decide what to do with wasm CPU.
172172
sed -i 's|-sWASM_BIGINT||g' configure
173173
sed -i 's|-sWASM_BIGINT||g' configure.ac
174174
popd
175175

176+
176177
PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig" CONFIG_SITE=$ROOT/src/cpython${PYBUILD}/Tools/wasm/config.site-wasm32-pydk \
177178
emconfigure $ROOT/src/cpython${PYBUILD}/configure -C --with-emscripten-target=browser \
178179
--cache-file=${PYTHONPYCACHEPREFIX}/config.cache \
@@ -187,31 +188,6 @@ END
187188

188189
#echo "#define HAVE_NCURSES_H" >> pyconfig.h
189190

190-
if echo $PYBUILD|grep -q 3.10
191-
then
192-
cat > Modules/Setup.local <<END
193-
*disabled*
194-
_decimal
195-
xxsubtype
196-
_crypt
197-
curses
198-
199-
*static*
200-
zlib zlibmodule.c
201-
END
202-
203-
else
204-
cat > Modules/Setup.local <<END
205-
*static*
206-
_ctypes _ctypes/_ctypes.c _ctypes/callbacks.c _ctypes/callproc.c _ctypes/stgdict.c _ctypes/cfield.c ${SDKROOT}/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/pic/libffi.a
207-
208-
*disabled*
209-
_decimal
210-
xxsubtype
211-
_crypt
212-
213-
END
214-
fi
215191

216192
if emmake make -j$NPROC WASM_ASSETS_DIR=$(realpath ${PYTHONPYCACHEPREFIX}/empty)@/
217193
then
@@ -282,9 +258,6 @@ sed -i 's|-g0|-g3|g' ${MODSYSCONFIG}
282258
# this one is required for `python3-wasm -mbuild` venv
283259
ln ${MODSYSCONFIG} ${SDKROOT}/devices/$(arch)/usr/lib/python${PYBUILD}/
284260

285-
# cmake usually wants cc
286-
ln ${SDKROOT}/emsdk/upstream/emscripten/emcc ${SDKROOT}/emsdk/upstream/emscripten/cc
287-
ln ${SDKROOT}/emsdk/upstream/emscripten/emcc.py ${SDKROOT}/emsdk/upstream/emscripten/cc.py
288261

289262
cat > ${PYTHONPYCACHEPREFIX}/.nanorc <<END
290263
set tabsize 4

scripts/cpython-build-host-deps.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
. ${CONFIG:-config}
44

55
echo "
6-
* cpython-build-host-prebuilt pip==$PIP *
6+
* cpython-build-host-prebuilt pip==$HPIP *
77
" 1>&2
88

99

1010
# install and update critical packages.
11-
$PIP install --upgrade pip
11+
$HPIP install --upgrade pip
1212

1313

1414
# 3.12 and git deprecated setuptools bundling.
15-
$PIP install --upgrade setuptools
15+
$HPIP install --upgrade setuptools

scripts/cpython-fetch.sh

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ PYPATCH=true
1717

1818
[ -f $HPY ] || REBUILD=true
1919

20+
2021
if echo $PYBUILD |grep -q 13$
2122
then
2223
if [ -d cpython${PYBUILD} ]
@@ -41,6 +42,7 @@ then
4142
fi
4243
fi
4344

45+
4446
if echo $PYBUILD |grep -q 12$
4547
then
4648
if [ -d cpython${PYBUILD} ]
@@ -73,17 +75,6 @@ then
7375
export REBUILD=true
7476
fi
7577

76-
if echo $PYBUILD | grep -q 10$
77-
then
78-
wget -q -c https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tar.xz
79-
tar xf Python-3.10.6.tar.xz
80-
81-
ln -s Python-3.10.6 cpython${PYBUILD}
82-
83-
NOPATCH=true
84-
export REBUILD=true
85-
fi
86-
8778
popd
8879

8980

@@ -102,7 +93,7 @@ fi
10293

10394
if $NOPATCH
10495
then
105-
echo -n
96+
echo "finally there"
10697
else
10798
# do some patching for 3.11+ to allow more shared libs
10899
pushd src/cpython${PYBUILD} 2>&1 >/dev/null

scripts/emsdk-fetch.sh

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -173,16 +173,22 @@ SHARED=""
173173
IS_SHARED=false
174174
PY_MODULE=false
175175
MVP=\${MVP:true}
176+
WASM_PURE=\${WASM_PURE:true}
176177
177178
if \$MVP
178179
then
179180
# -mcpu=generic would activate those https://reviews.llvm.org/D125728
180181
# https://github.com/emscripten-core/emscripten/pull/17689
181-
CPU="-sWASM_BIGINT=0 -sMIN_SAFARI_VERSION=120000 -mnontrapping-fptoint -mno-reference-types -mno-sign-ext -mno-mutable-globals -m32"
182+
# CPU="-sWASM_BIGINT=0 -sMIN_SAFARI_VERSION=140000 -mnontrapping-fptoint -mno-reference-types -mno-sign-ext -mno-mutable-globals -m32"
183+
# go hybrid
184+
CPU="-sMIN_SAFARI_VERSION=140000 -mnontrapping-fptoint -mno-reference-types -mno-sign-ext -mno-mutable-globals -m32"
182185
else
183186
CPU="-mcpu=bleeding-edge -m32"
184187
fi
185188
189+
# quick hack until 3.1.47
190+
CPU="$WASM_EXTRA \$CPU"
191+
186192
187193
LINKING=\${LINKING:-false}
188194
@@ -243,6 +249,16 @@ for arg do
243249
continue
244250
fi
245251
252+
if [ "\$arg" = "-c" ]
253+
then
254+
CPU_EXTRA=\$WASM_EXTRA
255+
fi
256+
257+
if [ "\$arg" = "-o" ]
258+
then
259+
CPU_EXTRA=\$WASM_EXTRA
260+
fi
261+
246262
if [ "\$arg" = "-fallow-argument-mismatch" ]
247263
then
248264
continue
@@ -320,17 +336,22 @@ done
320336
321337
if \$IS_SHARED
322338
then
323-
$EMSDK_PYTHON -E \$0.py \$SHARED $CPU $COPTS $LDFLAGS -sSIDE_MODULE -gsource-map --source-map-base / "\$@" \$COMMON
339+
# always pass CPU opts when linking
340+
$EMSDK_PYTHON -E \$0.py \$SHARED \$CPU $COPTS $LDFLAGS -sSIDE_MODULE -gsource-map --source-map-base / "\$@" \$COMMON
324341
if \$MVP
325342
then
326-
SOTMP=\$(mktemp).so
327-
mv \$SHARED_TARGET \$SOTMP
328-
$SDKROOT/emsdk/upstream/bin/wasm-emscripten-finalize -mvp \$SOTMP -o \$SHARED_TARGET
329-
[ -f \$SHARED_TARGET.map ] && rm \$SHARED_TARGET.map
330-
rm \$SOTMP
343+
if \$WASM_PURE
344+
then
345+
SOTMP=\$(mktemp).so
346+
mv \$SHARED_TARGET \$SOTMP
347+
$SDKROOT/emsdk/upstream/bin/wasm-emscripten-finalize -mvp \$SOTMP -o \$SHARED_TARGET
348+
[ -f \$SHARED_TARGET.map ] && rm \$SHARED_TARGET.map
349+
rm \$SOTMP
350+
fi
331351
fi
332352
else
333-
$EMSDK_PYTHON -E \$0.py $CPU -fpic \$COPTS \$CPPFLAGS -DBUILD_STATIC "\$@" \$COMMON
353+
# pass CPU opts only when -c/-o but always PIC
354+
$EMSDK_PYTHON -E \$0.py \$CPU_EXTRA -fpic \$COPTS \$CPPFLAGS -DBUILD_STATIC "\$@" \$COMMON
334355
fi
335356
#else
336357
# unset _EMCC_CCACHE
@@ -339,7 +360,23 @@ fi
339360
340361
END
341362

342-
cat emsdk/upstream/emscripten/emcc > emsdk/upstream/emscripten/em++
363+
rm emsdk/upstream/emscripten/em++
364+
if ln emsdk/upstream/emscripten/emcc emsdk/upstream/emscripten/em++
365+
then
366+
# cmake usually wants cc
367+
ln emsdk/upstream/emscripten/emcc emsdk/upstream/emscripten/cc
368+
ln emsdk/upstream/emscripten/emcc.py emsdk/upstream/emscripten/cc.py
369+
else
370+
echo "
371+
372+
============ hard link not supported ==============
373+
374+
375+
"
376+
cat emsdk/upstream/emscripten/emcc > emsdk/upstream/emscripten/em++
377+
cat emsdk/upstream/emscripten/emcc > emsdk/upstream/emscripten/cc
378+
cat emsdk/upstream/emscripten/emcc.py > emsdk/upstream/emscripten/cc.py
379+
fi
343380

344381
cat > emsdk/upstream/emscripten/emar <<END
345382
#!/bin/bash

0 commit comments

Comments
 (0)