diff options
author | Timo Kaufmann <timokau@zoho.com> | 2019-06-18 11:50:41 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-18 11:50:41 +0200 |
commit | 6e74109b13f57dde059ae59f15a5100ac8cd5b0b (patch) | |
tree | 3fb4bd224ecf2ae7e18c70e01cbf4a99f54e1961 /pkgs/applications/science/math | |
parent | abf2c876d65e4594530053d6870803884a47a62c (diff) | |
download | nixlib-6e74109b13f57dde059ae59f15a5100ac8cd5b0b.tar nixlib-6e74109b13f57dde059ae59f15a5100ac8cd5b0b.tar.gz nixlib-6e74109b13f57dde059ae59f15a5100ac8cd5b0b.tar.bz2 nixlib-6e74109b13f57dde059ae59f15a5100ac8cd5b0b.tar.lz nixlib-6e74109b13f57dde059ae59f15a5100ac8cd5b0b.tar.xz nixlib-6e74109b13f57dde059ae59f15a5100ac8cd5b0b.tar.zst nixlib-6e74109b13f57dde059ae59f15a5100ac8cd5b0b.zip |
sage: fix threejs integration (#63375)
Before this it didn't find the correct files. Unfortunately, the interactive parts of sage are hard to test automatically.
Diffstat (limited to 'pkgs/applications/science/math')
4 files changed, 73 insertions, 2 deletions
diff --git a/pkgs/applications/science/math/sage/default.nix b/pkgs/applications/science/math/sage/default.nix index 875ccb3a4847..061b3beeb3f2 100644 --- a/pkgs/applications/science/math/sage/default.nix +++ b/pkgs/applications/science/math/sage/default.nix @@ -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 }; diff --git a/pkgs/applications/science/math/sage/patches/threejs-offline.patch b/pkgs/applications/science/math/sage/patches/threejs-offline.patch new file mode 100644 index 000000000000..62b2f114bd62 --- /dev/null +++ b/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> diff --git a/pkgs/applications/science/math/sage/sage-src.nix b/pkgs/applications/science/math/sage/sage-src.nix index 56d8082d2f55..e0050efe6bdd 100644 --- a/pkgs/applications/science/math/sage/sage-src.nix +++ b/pkgs/applications/science/math/sage/sage-src.nix @@ -68,6 +68,9 @@ stdenv.mkDerivation rec { url = "https://git.sagemath.org/sage.git/patch/?h=c4d966e7cb0c7b87c55d52dc6f46518433a2a0a2"; sha256 = "0pqbbsx8mriwny422s9mp3z5d095cnam32sm62q4mxk8g8jb9vm9"; }) + + # https://trac.sagemath.org/ticket/28007 + ./patches/threejs-offline.patch ]; # Since sage unfortunately does not release bugfix releases, packagers must diff --git a/pkgs/applications/science/math/sage/sagelib.nix b/pkgs/applications/science/math/sage/sagelib.nix index d745532d5d70..1040d6d4ba15 100644 --- a/pkgs/applications/science/math/sage/sagelib.nix +++ b/pkgs/applications/science/math/sage/sagelib.nix @@ -1,4 +1,5 @@ { sage-src +, env-locations , perl , buildPythonPackage , arb @@ -125,8 +126,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" |