Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sage: fix threejs integration [19.03] #63376

Merged
merged 1 commit into from Jun 18, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion pkgs/applications/science/math/sage/default.nix
Expand Up @@ -33,7 +33,7 @@ let
# `sagelib`, i.e. all of sage except some wrappers and runtime dependencies
sagelib = self.callPackage ./sagelib.nix {
inherit flint ecl arb;
inherit sage-src pynac singular;
inherit sage-src env-locations pynac singular;
linbox = pkgs.linbox.override { withSage = true; };
pkg-config = pkgs.pkgconfig; # not to confuse with pythonPackages.pkgconfig
};
Expand Down
64 changes: 64 additions & 0 deletions pkgs/applications/science/math/sage/patches/threejs-offline.patch
@@ -0,0 +1,64 @@
diff --git a/build/pkgs/threejs/spkg-src b/build/pkgs/threejs/spkg-src
index 91780d813c..254b850a24 100755
--- a/build/pkgs/threejs/spkg-src
+++ b/build/pkgs/threejs/spkg-src
@@ -20,9 +20,17 @@ URL3="https://raw.githubusercontent.com/mrdoob/three.js/${GIT_VERSION}/LICENSE"
echo "Downloading $URL3"
curl -OL "$URL3"

+# Set up directory structure
+
+mkdir build
+mv three.min.js build
+
+mkdir -p examples/js/controls
+mv OrbitControls.js examples/js/controls
+
# Package
-tar czf "$SAGE_ROOT/upstream/threejs-${GIT_VERSION}.tar.gz" 'three.min.js' 'OrbitControls.js' 'LICENSE'
-rm -rf 'three.min.js' 'OrbitControls.js' 'LICENSE'
+tar czf "$SAGE_ROOT/upstream/threejs-${GIT_VERSION}.tar.gz" build examples 'LICENSE'
+rm -rf 'build' 'examples' 'LICENSE'

# Update package info
echo "${GIT_VERSION}" > 'package-version.txt'
diff --git a/src/sage/repl/rich_output/backend_ipython.py b/src/sage/repl/rich_output/backend_ipython.py
index 7c27d48a21..8bf4861a35 100644
--- a/src/sage/repl/rich_output/backend_ipython.py
+++ b/src/sage/repl/rich_output/backend_ipython.py
@@ -411,10 +411,15 @@ class BackendIPythonCommandline(BackendIPython):
sage: backend.threejs_offline_scripts()
'...<script ...</script>...'
"""
- from sage.env import SAGE_SHARE
+ from sage.env import THREEJS_DIR

- scripts = [os.path.join(SAGE_SHARE, 'threejs', script)
- for script in ['three.min.js', 'OrbitControls.js']]
+ scripts = [
+ os.path.join(THREEJS_DIR, script)
+ for script in [
+ 'build/three.min.js',
+ 'examples/js/controls/OrbitControls.js',
+ ]
+ ]

if sys.platform == 'cygwin':
import cygwin
@@ -594,13 +599,13 @@ 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/three.min...<\\/script>...'
+ '...<script src="/nbextensions/threejs/build/three.min...<\\/script>...'
"""
from sage.repl.rich_output import get_display_manager
CDN_scripts = get_display_manager().threejs_scripts(online=True)
return """
-<script src="/nbextensions/threejs/three.min.js"></script>
-<script src="/nbextensions/threejs/OrbitControls.js"></script>
+<script src="/nbextensions/threejs/build/three.min.js"></script>
+<script src="/nbextensions/threejs/examples/js/controls/OrbitControls.js"></script>
<script>
if ( !window.THREE ) document.write('{}');
</script>
3 changes: 3 additions & 0 deletions pkgs/applications/science/math/sage/sage-src.nix
Expand Up @@ -59,6 +59,9 @@ stdenv.mkDerivation rec {
sha256 = "07p9i0fwjgapmfvmi436yn6v60p8pvmxqjc93wsssqgh5kd8qw3n";
stripLen = 1;
})

# https://trac.sagemath.org/ticket/28007
./patches/threejs-offline.patch
];

# Since sage unfortunately does not release bugfix releases, packagers must
Expand Down
6 changes: 5 additions & 1 deletion pkgs/applications/science/math/sage/sagelib.nix
@@ -1,4 +1,5 @@
{ sage-src
, env-locations
, perl
, buildPythonPackage
, arb
Expand Down Expand Up @@ -121,8 +122,11 @@ buildPythonPackage rec {
export SAGE_ROOT="$PWD"
export SAGE_LOCAL="$SAGE_ROOT"
export SAGE_SHARE="$SAGE_LOCAL/share"
export JUPYTER_PATH="$SAGE_LOCAL/jupyter"

# set locations of dependencies (needed for nbextensions like threejs)
. ${env-locations}/sage-env-locations

export JUPYTER_PATH="$SAGE_LOCAL/jupyter"
export PATH="$SAGE_ROOT/build/bin:$SAGE_ROOT/src/bin:$PATH"

export SAGE_NUM_THREADS="$NIX_BUILD_CORES"
Expand Down