1DOLLY 32MODULE cpython34REQUIRES HEADER libc5REQUIRES HEADER ffi6REQUIRES HEADER ffitarget7REQUIRES HEADER runtime8REQUIRES HEADER zlib9REQUIRES LIB    ffi10REQUIRES LIB    z11REQUIRES TOOL   ar12REQUIRES TOOL   cc13REQUIRES TOOL   c++14REQUIRES TOOL   cp15REQUIRES TOOL   make16REQUIRES TOOL   mkdir17REQUIRES TOOL   mv18REQUIRES TOOL   rm19REQUIRES TOOL   slop20REQUIRES TOOL   tar21REQUIRES TOOL   test22REQUIRES TOOL   touch2324# Upstream Make runs the new interpreter before installing Lib. Do not retain25# timestamped bytecode caches from that build in the immutable image.26EXPORTS ENV PYTHONDONTWRITEBYTECODE 12728# The target is configured outside the browser, but every target object and29# executable is compiled here. Dolly-owned adapters remain independent pinned30# inputs instead of being hidden inside the upstream archive.31SOURCE HOST /static/python/cpython.tar /tmp/cpython.tar 3f7baa1b1c0598f44bb3334d346d851fcb41d3c511a7bac1fe31a036d008f47b3233SLOP tar \34  -xf /tmp/cpython.tar \35  -C /3637SOURCE HOST /static/python/runtimes/cpython-platform.c        /usr/src/python/Python/dolly_platform.c         9a58412f3ecfebfef6bbd67dfc5fa43959314568b6add06c7c0d548ddc7eb5b638SOURCE HOST /static/python/runtimes/cpython-extension-check.c /usr/src/python/Modules/dolly_extension_check.c 1763ec04e582beee6066af81c93fe20e8cf0d83ae7d41d935b395c5cb3cdf07139SOURCE HOST /static/python/runtimes/cpython-socket-stubs.c    /usr/src/python/Modules/dolly_socket_stubs.c    d54e0a1d299c128d483e7edc9dc089693e8ca53a7de54509e687a87a6368a4ce40SOURCE HOST /static/python/runtimes/cpython-termios.c         /usr/src/python/Modules/dolly_termios.c         70126bf939cb2cc3537cb18892a84004801c24bdebc68526a621c52b4a5edc3d41SOURCE HOST /static/python/runtimes/cpython-process.c         /usr/src/python/Modules/dolly_process.c         9dfbbe0c2de367d829b4fec488ff4e17488324c4cc4c750b34de2c82547fb94342SOURCE HOST /static/python/runtimes/cpython-subprocess.py     /usr/src/python/Lib/_dolly_subprocess.py        cabc2b4eb15e61332c2b63454724c3b390c5f2a2f0effa2889861e123835b7854344SLOP CWD /usr/src/python touch \45  Python/frozen_modules/*.h4647# The embedded LLVM optimizer spends minutes on a small measured set of48# translation units. Compile only those outliers at -O0 and let upstream Make49# preserve the prepared objects; the rest of CPython is substantially faster50# at -O2.51SLOP CWD /usr/src/python cc \52  -c \53  -O0 \54  -std=c11 \55  -fno-builtin \56  -fno-strict-aliasing \57  -DDOLLY \58  -IInclude/internal \59  -IInclude/internal/mimalloc \60  -IObjects \61  -IInclude \62  -IPython \63  -I. \64  -DPy_BUILD_CORE \65  Python/tracemalloc.c \66  -o Python/tracemalloc.o67SLOP CWD /usr/src/python cc \68  -c \69  -O0 \70  -std=c11 \71  -fno-builtin \72  -fno-strict-aliasing \73  -DDOLLY \74  -IInclude/internal \75  -IInclude/internal/mimalloc \76  -IObjects \77  -IInclude \78  -IPython \79  -I. \80  -DPy_BUILD_CORE \81  Modules/arraymodule.c \82  -o Modules/arraymodule.o83SLOP CWD /usr/src/python cc \84  -c \85  -O0 \86  -std=c11 \87  -IInclude/internal \88  -IInclude/internal/mimalloc \89  -IObjects \90  -IInclude \91  -IPython \92  -I. \93  -DPy_BUILD_CORE \94  Python/dolly_platform.c \95  -o Python/dolly_platform.o96SLOP CWD /usr/src/python cc \97  -c \98  -O0 \99  -std=c11 \100  -IInclude/internal \101  -IInclude/internal/mimalloc \102  -IObjects \103  -IInclude \104  -IPython \105  -I. \106  -DPy_BUILD_CORE \107  -DDATE='"Jan 01 1970"' \108  -DTIME='"00:00:00"' \109  Modules/getbuildinfo.c \110  -o Modules/getbuildinfo.o111SLOP CWD /usr/src/python cc \112  -c \113  -O0 \114  -std=c11 \115  -IInclude/internal \116  -IInclude/internal/mimalloc \117  -IObjects \118  -IInclude \119  -IPython \120  -I. \121  -DPy_BUILD_CORE \122  -DPLATFORM='"dolly"' \123  Python/getplatform.c \124  -o Python/getplatform.o125SLOP CWD /usr/src/python cc \126  -c \127  -O0 \128  -std=c11 \129  -IInclude/internal \130  -IInclude/internal/mimalloc \131  -IObjects \132  -IInclude \133  -IPython \134  -I. \135  -DPy_BUILD_CORE \136  -DDOLLY \137  -DABIFLAGS='""' \138  -DMULTIARCH='"dolly_0_wasm64"' \139  Python/sysmodule.c \140  -o Python/sysmodule.o141SLOP CWD /usr/src/python cc \142  -c \143  -O0 \144  -std=c17 \145  Modules/dolly_socket_stubs.c \146  -o Modules/dolly_socket_stubs.o147SLOP CWD /usr/src/python cc \148  -c \149  -O0 \150  -std=c17 \151  Modules/dolly_termios.c \152  -o Modules/dolly_termios.o153SLOP CWD /usr/src/python make \154  -o configure \155  -o config.status \156  -o Makefile.pre \157  -o Makefile \158  -o Modules/config.c \159  -o Modules/getbuildinfo.o \160  -o Python/getplatform.o \161  -o Python/sysmodule.o \162  -o Python/tracemalloc.o \163  -o Modules/arraymodule.o \164  python \165  libpython3.14.a \166  SHELL=/bin/slop \167  CC=cc \168  LINKCC=cc \169  AR=ar \170  BLDSHARED=cc\ -shared \171  INSTSONAME=libpython3.14.a \172  DYNLOADFILE=dynload_shlib.o \173  PY_CFLAGS=-O2\ -std=c11\ -fno-builtin\ -fno-strict-aliasing\ -DDOLLY \174  PY_CFLAGS_NODIST= \175  PY_CPPFLAGS=-IInclude/internal\ -IInclude/internal/mimalloc\ -IObjects\ -IInclude\ -IPython\ -I. \176  CFLAGSFORSHARED= \177  PY_CORE_LDFLAGS= \178  LDFLAGS= \179  LINKFORSHARED=-rdynamic \180  MODULE_MATH_LDFLAGS= \181  MODULE_CMATH_LDFLAGS= \182  MODULE__STATISTICS_LDFLAGS= \183  MODULE__DATETIME_LDFLAGS= \184  MODULE_PYEXPAT_LDFLAGS=Modules/expat/libexpat.a \185  MODULE_POSIX_CFLAGS=-DDOLLY \186  MODULE__SOCKET_CFLAGS=-Daccept=dolly_py_accept\ -Daccept4=dolly_py_accept4\ -Dbind=dolly_py_bind\ -Dfreeaddrinfo=dolly_py_freeaddrinfo\ -Dgai_strerror=dolly_py_gai_strerror\ -Dgetaddrinfo=dolly_py_getaddrinfo\ -Dgethostbyaddr=dolly_py_gethostbyaddr\ -Dgethostname=dolly_py_gethostname\ -Dgetnameinfo=dolly_py_getnameinfo\ -Dgetpeername=dolly_py_getpeername\ -Dgetprotobyname=dolly_py_getprotobyname\ -Dgetservbyport=dolly_py_getservbyport\ -Dgetsockname=dolly_py_getsockname\ -Dgetsockopt=dolly_py_getsockopt\ -Dhtonl=dolly_py_htonl\ -Dif_freenameindex=dolly_py_if_freenameindex\ -Dif_indextoname=dolly_py_if_indextoname\ -Dif_nameindex=dolly_py_if_nameindex\ -Dif_nametoindex=dolly_py_if_nametoindex\ -Dinet_aton=dolly_py_inet_aton\ -Dinet_ntop=dolly_py_inet_ntop\ -Dinet_pton=dolly_py_inet_pton\ -Dlisten=dolly_py_listen\ -Dntohl=dolly_py_ntohl\ -Dpoll=dolly_py_poll\ -Drecvfrom=dolly_py_recvfrom\ -Drecvmsg=dolly_py_recvmsg\ -Dsend=dolly_py_send\ -Dsendmsg=dolly_py_sendmsg\ -Dsendto=dolly_py_sendto \187  MODULE_TERMIOS_CFLAGS=-Dcfgetispeed=dolly_py_cfgetispeed\ -Dcfgetospeed=dolly_py_cfgetospeed\ -Dcfsetispeed=dolly_py_cfsetispeed\ -Dcfsetospeed=dolly_py_cfsetospeed\ -Dioctl=dolly_py_ioctl\ -Dtcdrain=dolly_py_tcdrain\ -Dtcflow=dolly_py_tcflow\ -Dtcflush=dolly_py_tcflush\ -Dtcgetattr=dolly_py_tcgetattr\ -Dtcsetattr=dolly_py_tcsetattr\ -Dtcsendbreak=dolly_py_tcsendbreak \188  MODULE_BINASCII_CFLAGS=-DUSE_ZLIB_CRC32 \189  MODULE_BINASCII_LDFLAGS=-lz \190  MODULE_ZLIB_CFLAGS= \191  MODULE_ZLIB_LDFLAGS=-lz \192  MODULE__CTYPES_CFLAGS=-DHAVE_FFI_PREP_CIF_VAR\ -DHAVE_FFI_PREP_CLOSURE_LOC\ -DHAVE_FFI_CLOSURE_ALLOC \193  MODULE__CTYPES_LDFLAGS=-lffi \194  LIBS= \195  SYSLIBS= \196  LIBM= \197  LIBC= \198  SHLIBS= \199  MACHDEP_OBJS=Python/dolly_platform.o\ Modules/dolly_socket_stubs.o\ Modules/dolly_termios.o \200  DTRACE=201202# Install the standard-library contents into their final prefix.  Treat the203# destination as an installation directory explicitly: it may already exist204# in a composed image, and `mv SOURCE DESTINATION` would then create a nested205# `Lib` directory instead of the sys.path layout CPython requires.206SLOP mkdir \207  -p \208  /usr/lib/python3.14 \209  /usr/lib/python3.14/lib-dynload210SLOP cp \211  -R \212  /usr/src/python/Lib/. \213  /usr/lib/python3.14214SLOP test \215  -f \216  /usr/lib/python3.14/encodings/__init__.py217SLOP cp \218  /usr/src/python/libpython3.14.a \219  /usr/lib/libpython3.14.a220SLOP mv \221  /usr/src/python/python \222  /usr/bin/python223SLOP ln -sf python /usr/bin/python3224SLOP mkdir \225  -p \226  /usr/include/python3.14227SLOP cp \228  -R \229  /usr/src/python/Include/. \230  /usr/include/python3.14231SLOP cp \232  /usr/src/python/pyconfig.h \233  /usr/include/python3.14/pyconfig.h234SLOP CWD /usr/src/python slop \235  -c \236  'export _PYTHON_PROJECT_BASE=/usr/src/python; python -m sysconfig --generate-posix-vars'237SLOP cp \238  /usr/src/python/build/lib.dolly_0-wasm64-3.14/_sysconfigdata__dolly_dolly_0_wasm64.py \239  /usr/lib/python3.14/_sysconfigdata__dolly_dolly_0_wasm64.py240SLOP mkdir \241  -p \242  /usr/lib/python3.14/config-3.14-dolly_0_wasm64243SLOP cp \244  /usr/src/python/Makefile \245  /usr/lib/python3.14/config-3.14-dolly_0_wasm64/Makefile246SLOP cc \247  -shared \248  -O0 \249  -std=c17 \250  -I/usr/include/python3.14 \251  /usr/src/python/Modules/dolly_extension_check.c \252  -o /usr/lib/python3.14/lib-dynload/dolly_extension_check.cpython-314-dolly_0_wasm64.so253254EXPORTS TOOL   python255EXPORTS TOOL   python3256EXPORTS ENV    PYTHONUTF8 1257EXPORTS LIB    python     /usr/lib/libpython3.14.a258EXPORTS HEADER python     /usr/include/python3.14259260SLOP python \261  --version262SLOP python \263  -c 'import pathlib; p = pathlib.Path("/tmp/python-check.txt"); p.write_text("PYTHON-WASM64"); assert p.read_text() == "PYTHON-WASM64"'264SLOP python \265  -c 'import dolly_extension_check; assert dolly_extension_check.answer() == 42'266SLOP python \267  -c 'import mmap, pathlib; p = pathlib.Path("/tmp/mmap-check"); p.write_bytes(b"DOLLY"); f = p.open("rb"); m = mmap.mmap(f.fileno(), 5, access=mmap.ACCESS_READ); assert m[:] == b"DOLLY"; m.madvise(mmap.MADV_SEQUENTIAL); m.close(); f.close()'268SLOP python \269  -c 'import sysconfig; assert sysconfig.get_platform() == "dolly_0-wasm64"; assert sysconfig.get_config_var("EXT_SUFFIX") == ".cpython-314-dolly_0_wasm64.so"'270SLOP python \271  -c 'import os, subprocess; assert subprocess.check_output(["echo", "spawn-ok"], text=True).strip() == "spawn-ok"; assert subprocess.check_output(["python", "-c", "print(6 * 7)"], text=True).strip() == "42"; child_env = dict(os.environ, DOLLY_CHILD_ENV="explicit"); assert subprocess.check_output(["python", "-c", "import os; print(os.environ[\"DOLLY_CHILD_ENV\"])"] , env=child_env, text=True, timeout=1).strip() == "explicit"'272SLOP python \273  -c 'import threading; seen = []; worker = threading.Thread(target=seen.append, args=(42,)); worker.start(); worker.join(); assert seen == [42] and not worker.is_alive()'274SLOP python \275  -c 'import hashlib; assert hashlib.md5(b"abc", usedforsecurity=False).hexdigest() == "900150983cd24fb0d6963f7d28e17f72"'276SLOP python \277  -c 'import ctypes; libc = ctypes.CDLL(None); libc.strlen.argtypes = [ctypes.c_char_p]; libc.strlen.restype = ctypes.c_size_t; assert libc.strlen(b"dolly") == 5; callback_type = ctypes.CFUNCTYPE(ctypes.c_int, ctypes.c_int); callback = callback_type(lambda value: value + 1); assert callback(41) == 42'278SLOP python \279  -c 'import locale, sys; assert sys.flags.utf8_mode == 1; assert locale.getpreferredencoding(False).lower() == "utf-8"; assert sys.getfilesystemencoding().lower() == "utf-8"'280SLOP python \281  -c 'from pathlib import Path; p = Path("/tmp/python-header-check/check.cpp"); p.parent.mkdir(); p.write_text("#include <Python.h>\nint python_header_check = 42;\n", encoding="utf-8")'282SLOP c++ \283  -c \284  -std=c++17 \285  -I/usr/include/python3.14 \286  /tmp/python-header-check/check.cpp \287  -o /tmp/python-header-check/check.o288SLOP python \289  -c 'import os, sys, termios, tty; assert not os.isatty(0); assert sys.stdin.buffer.read(1) == b""'290291FILE /usr/share/licenses/cpython/LICENSE292EXPORTS FOLDER python-stdlib /usr/lib/python3.14293294SLOP rm \295  -rf \296  /tmp/cpython.tar \297  /tmp/mmap-check \298  /tmp/python \299  /tmp/python-header-check \300  /tmp/python-check.txt \301  /usr/lib/python3.14/test \302  /usr/src/python303