include ../build/Makefile-vars all: deps wasm # See https://github.com/pypa/setuptools/releases VERSION = 65.6.3 URL = https://github.com/pypa/setuptools/archive/refs/tags/v65.6.3.tar.gz TARBALL = ${UPSTREAM}/setuptools-${VERSION}.tar.gz include ../build/Makefile-rules ${BUILD_WASM}/.patched: ${BUILD_WASM}/.build # We apply one patch to support building C++ extensions. Without this, the numpy # build fails pretty quickly. This is needed due to our hacky approach to -fPIC. cd ${BUILD_WASM} && cat ${SRC}/patches/01-c++.patch | patch -p1 touch ${BUILD_WASM}/.patched ${BUILD_WASM}/.built: ${BUILD_WASM}/.patched cd ${BUILD_WASM} \ && pnpm-exec cpython setup.py build touch ${BUILD_WASM}/.built ${DIST_WASM}/.built: ${BUILD_WASM}/.built # Hack: since we are not "properly" installing using "ensurepip", we replace # the code in version.py that calls pkg_resources (and looks at data in site-packages), # and instead just hardcode the version, which we know of course. # Note that we only use setuptools to bootstrap installing pip, then replace # setuptools with the one from pip. echo '__version__="${VERSION}"' > ${BUILD_WASM}/build/lib/setuptools/version.py # create bundles cd ${BUILD_WASM}/build/lib \ && pnpm-exec cpython -m cowasm_bundler setuptools \ && pnpm-exec cpython -m cowasm_bundler _distutils_hack \ && pnpm-exec cpython -m cowasm_bundler pkg_resources rm -rf ${DIST_WASM} mkdir -p ${DIST_WASM} cd ${DIST_WASM} && tar xf ${BUILD_WASM}/build/lib/setuptools.tar.xz cd ${DIST_WASM} && tar xf ${BUILD_WASM}/build/lib/_distutils_hack.tar.xz cd ${DIST_WASM} && tar xf ${BUILD_WASM}/build/lib/pkg_resources.tar.xz touch ${DIST_WASM}/.built test: deps ${DIST_WASM}/.built # Test that importing from the bundle works: PYTHONPATH=${DIST_WASM} pnpm-exec cpython -c 'import setuptools'