From 3cd02cd43dbfe60e4bcd87964c3ae60ba2200669 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Wed, 13 Jul 2011 09:13:32 +0000 Subject: [PATCH] maxima: switch from clisp to sbcl, enable tk gui, and fix various impurities * Build maxima with sbcl for better performance. * Enable the regression test suite. * Configure $PATH at start-up so that maxima knows how to find sbcl, wish, rlwrap, and gnuplot. * Move installed documentation and Emacs lisp modules into standard locations. * Enable parallel building. svn path=/nixpkgs/trunk/; revision=27743 --- .../science/math/maxima/default.nix | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/science/math/maxima/default.nix b/pkgs/applications/science/math/maxima/default.nix index 00f0ab25e4cd..0b71b72f13c7 100644 --- a/pkgs/applications/science/math/maxima/default.nix +++ b/pkgs/applications/science/math/maxima/default.nix @@ -1,8 +1,12 @@ -{ stdenv, fetchurl, clisp, texinfo, perl }: +{ stdenv, fetchurl, sbcl, texinfo, perl, makeWrapper, rlwrap ? null, tk ? null, gnuplot ? null }: let name = "maxima"; version = "5.24.0"; + + searchPath = + stdenv.lib.makeSearchPath "bin" + (stdenv.lib.filter (x: x != null) [ sbcl rlwrap tk gnuplot ]); in stdenv.mkDerivation { name = "${name}-${version}"; @@ -12,11 +16,25 @@ stdenv.mkDerivation { sha256 = "137crv2f6hxwqrv75m8679vrlbnqgg5ww755cs4kihs1cy03bssq"; }; - preConfigure = '' - configureFlags="--infodir=$out/share/info --mandir=$out/share/man" + buildInputs = [sbcl texinfo perl makeWrapper]; + + postInstall = '' + # Make sure that maxima can find its runtime dependencies. + for prog in "$out/bin/"*; do + wrapProgram "$prog" --prefix PATH ":" "${searchPath}" + done + # Move emacs modules and documentation into the right place. + ensureDir $out/share/emacs $out/share/doc + ln -s ../maxima/${version}/emacs $out/share/emacs/site-lisp + ln -s ../maxima/${version}/doc $out/share/doc/maxima ''; - buildInputs = [clisp texinfo perl]; + # The regression test suite has minor failures, but curiously enough + # this doesn't seem to abort the build process: + # . + doCheck = true; + + enableParallelBuilding = true; meta = { description = "Maxima computer algebra system";