mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 09:02:15 -06:00
compile to bytecode so cpython doesn't have to keep it in memory ram usage reduced by: * min: 5.4 MiB (32.6 to 27.2) * ac/im: 5.2 MiB (39.0 to 33.8) * dj/iv: 10.6 MiB (67.3 to 56.7) startup time reduced from: * min: 1.3s to 0.6s * ac/im: 1.6s to 0.9s * dj/iv: 2.0s to 1.1s image size increased by 4 MiB (min), 6 MiB (ac/im/iv), 9 MiB (dj) ram usage measured on idle with: while true; do ps aux | grep -E 'R[S]S|no[-]crt'; read -n1; echo; done startup time measured with: time podman run --rm -it localhost/copyparty-min-amd64 --exit=idx
53 lines
1.2 KiB
Bash
53 lines
1.2 KiB
Bash
#!/bin/ash
|
|
set -ex
|
|
|
|
# cleanup for flavors with python build steps (dj/iv)
|
|
rm -rf /var/cache/apk/* /root/.cache
|
|
|
|
# initial config; common for all flavors
|
|
mkdir /cfg /w
|
|
chmod 777 /cfg /w
|
|
echo % /cfg > initcfg
|
|
|
|
# unpack sfx and dive in
|
|
python3 copyparty-sfx.py --version
|
|
cd /tmp/pe-copyparty.0
|
|
|
|
# workaround s390x deadlock on startup
|
|
[ $(uname -m) = s390x ] && cat >copyparty/stolen/ifaddr/_posix.py <<'EOF'
|
|
def get_adapters(include_unconfigured=False):
|
|
return []
|
|
EOF
|
|
|
|
# steal the stuff we need
|
|
mv copyparty partftpy ftp/* /usr/lib/python3.*/site-packages/
|
|
|
|
# golf
|
|
cd /usr/lib/python3.*/
|
|
rm -rf \
|
|
/tmp/pe-* /z/copyparty-sfx.py \
|
|
ensurepip pydoc_data turtle.py turtledemo lib2to3
|
|
|
|
# drop bytecode
|
|
find / -xdev -name __pycache__ -print0 | xargs -0 rm -rf
|
|
|
|
# build the stuff we want
|
|
python3 -m compileall -qj4 site-packages sqlite3 xml
|
|
|
|
# drop the stuff we dont
|
|
find -name __pycache__ |
|
|
grep -E 'ty/web/|/pycpar' |
|
|
tr '\n' '\0' | xargs -0 rm -rf
|
|
|
|
# two-for-one:
|
|
# 1) smoketest copyparty even starts
|
|
# 2) build any bytecode we missed
|
|
# this tends to race other builders (alle gode ting er tre)
|
|
cd /z
|
|
python3 -m copyparty \
|
|
--ign-ebind -p$((1024+RANDOM)),$((1024+RANDOM)),$((1024+RANDOM)) \
|
|
--no-crt -qi127.1 --exit=idx -e2dsa -e2ts
|
|
|
|
# output from -e2d
|
|
rm -rf .hist
|