[arch-commits] Commit in sagemath/trunk (PKGBUILD sagemath-versioned-threejs.patch)

Antonio Rojas arojas at archlinux.org
Fri Jul 2 21:30:41 UTC 2021


    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)




More information about the arch-commits mailing list