Date: Friday, July 2, 2021 @ 21:30:40 Author: arojas Revision: 970947
Backport support for versioned three.js install Added: sagemath/trunk/sagemath-versioned-threejs.patch Modified: sagemath/trunk/PKGBUILD ----------------------------------+ PKGBUILD | 14 +++- sagemath-versioned-threejs.patch | 110 +++++++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+), 3 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2021-07-02 21:18:04 UTC (rev 970946) +++ PKGBUILD 2021-07-02 21:30:40 UTC (rev 970947) @@ -7,7 +7,7 @@ pkgname=sagemath pkgver=9.3 -pkgrel=7 +pkgrel=8 pkgdesc='Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab' arch=(x86_64) url='http://www.sagemath.org' @@ -44,7 +44,8 @@ sagemath-lrcalc2.patch sagemath-eclib-20210310.patch sagemath-matplotlib-3.4.patch - sagemath-lrs-071.patch) + sagemath-lrs-071.patch + sagemath-versioned-threejs.patch) sha256sums=('d3b104a83e140cda563ae0b44fa3ec2b3545660f120fab78dde6ceb5fb1ed991' 'c100a61c8dfade43bebc622a363abcb3d935a2f40958371ad87a9eb00689f8b0' '88e944f23c3b2391dc2e9f9be8e1131152d837dc8c829dfc714663869a272e81' @@ -53,7 +54,8 @@ '240ac4c29d96d56407a20e1b7f9846e342a7eb2bb4edd6e5c86b3b5a8ff462f9' 'e7b31f5e7ea88681c6eda41e5a74a2859a12dd128e75c00db3cfbd1d8ddf080d' '5e6f919a386e1a9e9caf7528088a3a3f3f3fc51b158a4daf435771afb1212384' - '4220a65e40f0f9df3a1667d7e5ac6bec36cfb7d2c3056fc02e5a6beb7dc882fa') + '4220a65e40f0f9df3a1667d7e5ac6bec36cfb7d2c3056fc02e5a6beb7dc882fa' + '3b4c38210b11e04a207a523f7bd7c5695393a2b1aa5c953a4647e862849a8530') prepare(){ cd sage-$pkgver @@ -69,6 +71,8 @@ patch -p1 -i ../sagemath-matplotlib-3.4.patch # Fixes for lrs 071 https://trac.sagemath.org/ticket/27745 patch -p1 -i ../sagemath-lrs-071.patch +# Use versioned three.js path https://trac.sagemath.org/ticket/30972 + patch -p1 -i ../sagemath-versioned-threejs.patch # Arch-specific patches # assume all optional packages are installed @@ -100,4 +104,8 @@ rm "$pkgdir"/usr/share/jupyter/kernels/sagemath/$_i ln -s $_pythonpath/sage/ext_data/notebook-ipython/$_i "$pkgdir"/usr/share/jupyter/kernels/sagemath/ done + +# adjust threejs version + rm "$pkgdir"$_pythonpath/sage/ext_data/threejs/threejs-version.txt + ln -s /usr/share/threejs-sage/version "$pkgdir"$_pythonpath/sage/ext_data/threejs/threejs-version.txt } Added: sagemath-versioned-threejs.patch =================================================================== --- sagemath-versioned-threejs.patch (rev 0) +++ sagemath-versioned-threejs.patch 2021-07-02 21:30:40 UTC (rev 970947) @@ -0,0 +1,110 @@ +diff --git a/src/sage/env.py b/src/sage/env.py +index e792ca8..c4f0e02 100644 +--- a/src/sage/env.py ++++ b/src/sage/env.py +@@ -207,7 +207,7 @@ CREMONA_LARGE_DATA_DIR = var("CREMONA_LARGE_DATA_DIR", join(SAGE_SHARE, "cremona + JMOL_DIR = var("JMOL_DIR", join(SAGE_SHARE, "jmol")) + MATHJAX_DIR = var("MATHJAX_DIR", join(SAGE_SHARE, "mathjax")) + MTXLIB = var("MTXLIB", join(SAGE_SHARE, "meataxe")) +-THREEJS_DIR = var("THREEJS_DIR", join(SAGE_SHARE, "threejs")) ++THREEJS_DIR = var("THREEJS_DIR", join(SAGE_SHARE, "threejs-sage")) + SINGULARPATH = var("SINGULARPATH", join(SAGE_SHARE, "singular")) + PPLPY_DOCS = var("PPLPY_DOCS", join(SAGE_SHARE, "doc", "pplpy")) + MAXIMA = var("MAXIMA", "maxima") +diff --git a/src/sage/ext_data/threejs/threejs-version.txt b/src/sage/ext_data/threejs/threejs-version.txt +new file mode 100644 +index 00000000..98ffb8e +--- /dev/null ++++ b/src/sage/ext_data/threejs/threejs-version.txt +@@ -0,0 +1 @@ ++r122 +diff --git a/src/sage/repl/ipython_kernel/install.py b/src/sage/repl/ipython_kernel/install.py +index a1d3ec7..2143c22 100644 +--- a/src/sage/repl/ipython_kernel/install.py ++++ b/src/sage/repl/ipython_kernel/install.py +@@ -123,12 +123,12 @@ class SageKernelSpec(object): + sage: from sage.repl.ipython_kernel.install import SageKernelSpec + sage: spec = SageKernelSpec(prefix=tmp_dir()) + sage: spec.use_local_threejs() +- sage: threejs = os.path.join(spec.nbextensions_dir, 'threejs') ++ sage: threejs = os.path.join(spec.nbextensions_dir, 'threejs-sage') + sage: os.path.isdir(threejs) + True + """ + src = THREEJS_DIR +- dst = os.path.join(self.nbextensions_dir, 'threejs') ++ dst = os.path.join(self.nbextensions_dir, 'threejs-sage') + self.symlink(src, dst) + + def _kernel_cmd(self): +diff --git a/src/sage/repl/rich_output/backend_ipython.py b/src/sage/repl/rich_output/backend_ipython.py +index b290e74..43835b4 100644 +--- a/src/sage/repl/rich_output/backend_ipython.py ++++ b/src/sage/repl/rich_output/backend_ipython.py +@@ -413,8 +413,9 @@ class BackendIPythonCommandline(BackendIPython): + '...<script ...</script>...' + """ + from sage.env import THREEJS_DIR ++ from sage.repl.rich_output.display_manager import _required_threejs_version + +- script = os.path.join(THREEJS_DIR, 'build/three.min.js') ++ script = os.path.join(THREEJS_DIR, '{}/three.min.js'.format(_required_threejs_version())) + + if sys.platform == 'cygwin': + import cygwin +@@ -597,13 +598,15 @@ class BackendIPythonNotebook(BackendIPython): + sage: from sage.repl.rich_output.backend_ipython import BackendIPythonNotebook + sage: backend = BackendIPythonNotebook() + sage: backend.threejs_offline_scripts() +- '...<script src="/nbextensions/threejs/build/three.min...<\\/script>...' ++ '...<script src="/nbextensions/threejs-sage/r.../three.min.js...<\\/script>...' + """ + from sage.repl.rich_output import get_display_manager ++ from sage.repl.rich_output.display_manager import _required_threejs_version + CDN_script = get_display_manager().threejs_scripts(online=True) ++ CDN_script = CDN_script.replace('</script>', r'<\/script>').replace('\n', ' \\\n') + return """ +-<script src="/nbextensions/threejs/build/three.min.js"></script> ++<script src="/nbextensions/threejs-sage/{}/three.min.js"></script> + <script> + if ( !window.THREE ) document.write('{}'); + </script> +- """.format(CDN_script.replace('</script>', r'<\/script>').replace('\n', ' \\\n')) ++ """.format(_required_threejs_version(), CDN_script) +diff --git a/src/sage/repl/rich_output/display_manager.py b/src/sage/repl/rich_output/display_manager.py +index f91c56e..eb042a9 100644 +--- a/src/sage/repl/rich_output/display_manager.py ++++ b/src/sage/repl/rich_output/display_manager.py +@@ -45,6 +45,20 @@ from sage.repl.rich_output.output_browser import ( + ) + from sage.repl.rich_output.preferences import DisplayPreferences + ++def _required_threejs_version(): ++ """ ++ Return the version of threejs that Sage requires. ++ ++ EXAMPLES:: ++ ++ sage: from sage.repl.rich_output.display_manager import _required_threejs_version ++ sage: _required_threejs_version() ++ 'r...' ++ """ ++ import os ++ import sage.env ++ with open(os.path.join(sage.env.SAGE_EXTCODE, 'threejs', 'threejs-version.txt')) as f: ++ return f.read().strip() + + class DisplayException(Exception): + """ +@@ -749,10 +763,7 @@ class DisplayManager(SageObject): + offline threejs graphics + """ + if online: +- import sage.env +- import os +- with open(os.path.join(sage.env.THREEJS_DIR, 'version')) as f: +- version = f.read().strip() ++ version = _required_threejs_version() + return """ + <script src="https://cdn.jsdelivr.net/gh/sagemath/threejs-sage@{0}/build/three.min.js"></script> + """.format(version)
