FWIW, the source distribution of sagemath 10.4 (from pypy) is about 20M, see https://pypi.org/project/sagemath-standard/#files
We build the sagemath package for void linux from this source alone, obtaining a binary package of about 55M, see https://voidlinux.org/packages/?arch=x86_64&q=sagemath. The binary package is compressed with zstd. It expands to 548M $ du -sh /usr/lib/python3.12/site-packages/sage 548M /usr/lib/python3.12/site-packages/sage of which 154M is cython debug information (I'm actually not sure if it's necessary to ship it): $ du -sh /usr/lib/python3.12/site-packages/sage/cython_debug/ 154M /usr/lib/python3.12/site-packages/sage/cython_debug/ This is what could be called "a monolithic sagelib". Everything else is external dependencies and they can be in separate packages. Just as a point of comparision: scipy 1.14.1 source distribution is 59M (https://pypi.org/project/scipy/#files) and the binary package for void linux is 19M (https://voidlinux.org/packages/?arch=x86_64&q=python3-scipy). Note, however, that some dependencies of sagemath are huge. For instance, gap 4.13.1 complete source is more than 500M, and our binary package for void linux is 209M (https://voidlinux.org/packages/?arch=x86_64&q=gap). Maybe it's more useful to split off the big components of sagemath into separate packages (e.g. gap) than try to split sagemath in pieces. And this is partly already done! Indeed gap packages for most distros are already available. IMHO, the main difficulty with packaging sagemath for a distro is not "sagelib is monolithic" but rather that "sage-the-distro is too tightly coupled, almost monolithic". Indeed, sagelib is too rigid in the specific versions of dependencies it requires. This is a hard problem, but we are learning and getting better at this. However, building sagelib in isolation of sage-the-distro is not a clearly supported configuration and I think only a few distro packages really use it, no end users. I think that sagemath without e.g. polynomial rings or without groups, etc. would no longer be sagemath. If one accepts this, it means pari, singular, gap, are hard dependencies of sagemath. And thus it seems the only reasonable way to offer binary wheels of sagemath on pypi is that there are corresponding pypi packages for pari, singular, gap. IOW, distribute a monolithic sagelib via pypi / do not distribute a monolithic sage-the-distro via pypi. Best, Gonzalo On Tuesday, October 8, 2024 at 7:59:12 PM UTC-3 Nils Bruin wrote: On Tuesday 8 October 2024 at 15:40:07 UTC-7 oscar.j....@gmail.com wrote: > As you're pointing out, sage still fits within 10GB in source, so it looks like sagemath could just be one pypi package. I think that you have misunderstood the limits that Marc was referring to. The 100MB file limits means that a single project installer file should be less than 100MB. The 10GB project limit means that all installer files for each Python version and each OS for all versions of a project should not add up to more than 10GB. A single Sage installer file for one OS, Sage version and CPython version comes close to the total file size limit allowed for any project by default in PyPI. Thanks for the clarification. So Pypi is wholly unsuitable for distributing a monolithic sagelib. If we want sagelib distributed through pypi then it *has* to be chopped up in order to make it fit. Distributing sagelib through pypi sounds like a pretty good idea, given that pypi is the de facto standard for distributing python software. So it sounds like considerations for reuse in other projects might not even be so relevant for motivating modularization: we already need it to make sage fit onto pypi. But that might also change the consideration for how sagemath needs to be chopped up. For fitting onto pypi, it's sufficient it gets chopped up in roughly equal-sized parts that can be built separately, in some specified order. -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/ab503f89-cb8b-400c-a34d-400f0d90fe32n%40googlegroups.com.