Changes between Version 63 and Version 67 of Ticket #31396


Ignore:
Timestamp:
04/04/21 02:37:06 (6 months ago)
Author:
mkoeppe
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #31396

    • Property Commit changed from c5a823cb524914ab985eaea09f52a87aa93c03cb to 40492737081faab49c4af8f6445237873f7670a6
  • Ticket #31396 – Description

    v63 v67  
    1 This version of `sage_conf` is for making a wheel that packages the precompiled non-Python bits of the Sage distribution (and the wheelhouse `local/var/lib/sage/wheels`), making `SAGE_ROOT` (and thus `SAGE_LOCAL=$SAGE_ROOT/local`) relocatable using Marc Culler's `/var/tmp` surgery (the method proposed in #31076, using `SAGE_ROOT=/var/tmp/sage-...` and a symlink).
     1This version of `sage_conf` is for making a wheel that packages the precompiled non-Python bits of the Sage distribution, making `SAGE_ROOT` (and thus `SAGE_LOCAL=$SAGE_ROOT/local`) relocatable using Marc Culler's symbolic link surgery (the method proposed in #31076, using `SAGE_ROOT=/var/tmp/sage-...` and a symlink).
    22
    33The `sage` script invokes `sage-config` to determine `SAGE_ROOT` and `SAGE_LOCAL`. In the version of `sage-config` supplied by this version of `sage_conf`, we ensure that the symlink from `/var/tmp/sage-....` to the actual install location is set.
    44
    5 To test:
     5So far, a wheel has been built for XCode python 3.8 on macOS 10.15.  The wheel is 670MB in size, an order of magnitude above the standard file size limit on PyPI; but a file size limit increase (requested in  https://github.com/pypa/pypi-support/issues/985) has kindly been granted by the PyPI team.
     6
     7The wheel declares dependencies (`install-requires`) to all Python packages in the Sage distribution that have extension modules.  The dependencies are specific using `@` to URLs on
     8https://github.com/sagemath/sage-wheels/releases/download/9.3.rc1, where I have uploaded the binary wheels.
     9
     10'''Instructions for testing:'''
    611{{{
    7 ./bootstrap && (cd src/pkgs/sage_conf-relocatable/ && tox -v -v -v)
    8 }}}
    9 Specifically for building a wheel on macOS that uses XCode python 3.8:
     12$ /usr/bin/python3 -m pip install -U --user sage-conf
     13}}}
     14
     15
     16
     17'''Procedure for building the sage_conf wheel and compatible wheels:'''
     18
     19
     20For building a wheel on macOS that uses XCode python 3.8:
    1021{{{
    1122$ SKIP_CONFIGURE=1 tox -e local-macos-10.15-nohomebrew-python3_xcode -- bash
    1223(tox -e ...) $ (cd src/pkgs/sage_conf-relocatable/ && python3 setup.py bdist_wheel --plat-name macosx_10_15_x86_64)
    1324}}}
    14 This builds a 850MB wheel, an order of magnitude above the standard file size limit on PyPI; a file size limit increase (requested in  https://github.com/pypa/pypi-support/issues/985) has been granted by the PyPI team.
    1525
    16 In the meantime, you can use a prebuilt wheel (so far, macOS python3.8 x86_64 only) made available at https://github.com/mkoeppe/sage/releases;
    17 install the wheel using
    18 {{{
    19 /usr/bin/python3 -m pip install --user https://github.com/mkoeppe/sage/releases/download/9.3.rc0%2Btrac31396-2021-03-28/sage_conf-9.3rc0-cp38-cp38-macosx_10_14_6_x86_64.whl
    20 }}}
    21 Then proceed with the same instructions as https://pypi.org/project/sage-conf/
    2226
    2327
    2428'''Follow-up steps:'''
    25 - Do not package up the wheel-building venv (247MB in `sage_root/local/lib/python3.8/site-packages/`) (#29013); do not ship any `any` wheels; do not ship the Cython wheel; disable building all sphinx packages; remove unneeded static libraries; remove duplicated/triplicated shared libraries if possible;
     29- do not ship the Cython wheel; disable building all sphinx packages; build sagelib too; remove unneeded static libraries; remove duplicated/triplicated shared libraries if possible;
    2630- #31602: split out `sage_root` from `sage_conf` and use install-requires in the `sage_conf` sdist/wheel with @ links to GH releases to the `sage_root` wheel and the built non-`any` wheels.