diff options
Diffstat (limited to 'pkgs/applications/science')
63 files changed, 1181 insertions, 1396 deletions
diff --git a/pkgs/applications/science/astronomy/astrolabe-generator/default.nix b/pkgs/applications/science/astronomy/astrolabe-generator/default.nix new file mode 100644 index 000000000000..3150d41ca9f6 --- /dev/null +++ b/pkgs/applications/science/astronomy/astrolabe-generator/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, jre, makeWrapper, unzip }: + +stdenv.mkDerivation rec { + name = "astrolabe-generator-${version}"; + version = "3.3"; + + src = fetchurl { + url = "https://github.com/wymarc/astrolabe-generator/releases/download/v${version}/AstrolabeGenerator-${version}.zip"; + sha256 = "141gfmrqa1mf2qas87qig4phym9fg9gbrcfl2idzd5gi91824dn9"; + }; + + buildInputs = [ jre ]; + nativeBuildInputs = [ makeWrapper unzip ]; + sourceRoot = "."; + + installPhase = '' + mkdir -p $out/{bin,share/java} + cp AstrolabeGenerator-${version}.jar $out/share/java + + makeWrapper ${jre}/bin/java $out/bin/AstrolabeGenerator \ + --add-flags "-jar $out/share/java/AstrolabeGenerator-${version}.jar" + ''; + + meta = with stdenv.lib;{ + homepage = https://www.astrolabeproject.com; + description = "A Java-based tool for generating EPS files for constructing astrolabes and related tools"; + license = licenses.gpl3; + maintainers = [ maintainers.genesis ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/science/astronomy/gildas/aarch64.patch b/pkgs/applications/science/astronomy/gildas/aarch64.patch new file mode 100644 index 000000000000..40696a03dec7 --- /dev/null +++ b/pkgs/applications/science/astronomy/gildas/aarch64.patch @@ -0,0 +1,12 @@ +diff -ruN gildas-src-jul18a/admin/define-system.sh gildas-src-jul18a.aarch64/admin/define-system.sh +--- gildas-src-jul18a/admin/define-system.sh 2018-06-12 15:22:32.000000000 +0200 ++++ gildas-src-jul18a.aarch64/admin/define-system.sh 2018-07-21 13:05:52.000000000 +0200 +@@ -174,7 +174,7 @@ + DEFAULT_CONFIG= # Default config is empty + case `uname` in + Linux) +- if [ `uname -m | grep -c "x86_64"` -ne 0 ]; then ++ if [ `uname -m | grep -c "64"` -ne 0 ]; then + GAG_MACHINE=x86_64 + else + GAG_MACHINE=pc diff --git a/pkgs/applications/science/astronomy/gildas/default.nix b/pkgs/applications/science/astronomy/gildas/default.nix index bd4587bf2276..ee19077065e0 100644 --- a/pkgs/applications/science/astronomy/gildas/default.nix +++ b/pkgs/applications/science/astronomy/gildas/default.nix @@ -7,13 +7,13 @@ let in stdenv.mkDerivation rec { - srcVersion = "jun18a"; - version = "20180601_a"; + srcVersion = "aug18a"; + version = "20180801_a"; name = "gildas-${version}"; src = fetchurl { url = "http://www.iram.fr/~gildas/dist/gildas-src-${srcVersion}.tar.gz"; - sha256 = "0k4x0g69fphb1759cwcw6bbs8imwmq0qwj6zqixxk60skk4n4jvb"; + sha256 = "0mg3wijrj8x1p912vkgrhxbypjx7aj9b1492yxvq2y3fxban6bj1"; }; enableParallelBuilding = true; @@ -22,20 +22,16 @@ stdenv.mkDerivation rec { buildInputs = [ gtk2-x11 lesstif cfitsio python27Env ]; - patches = [ ./wrapper.patch ./return-error-code.patch ./clang.patch ]; + patches = [ ./wrapper.patch ./return-error-code.patch ./clang.patch ./aarch64.patch ]; configurePhase='' substituteInPlace admin/wrapper.sh --replace '%%OUT%%' $out substituteInPlace admin/wrapper.sh --replace '%%PYTHONHOME%%' ${python27Env} + substituteInPlace utilities/main/gag-makedepend.pl --replace '/usr/bin/perl' ${perl}/bin/perl source admin/gildas-env.sh -c gfortran -o openmp echo "gag_doc: $out/share/doc/" >> kernel/etc/gag.dico.lcl ''; - buildPhase='' - make depend - make - ''; - postInstall='' mkdir -p $out/bin cp -a ../gildas-exe-${srcVersion}/* $out diff --git a/pkgs/applications/science/astronomy/stellarium/default.nix b/pkgs/applications/science/astronomy/stellarium/default.nix index 24d6246e90cd..cb7b2fbff3cb 100644 --- a/pkgs/applications/science/astronomy/stellarium/default.nix +++ b/pkgs/applications/science/astronomy/stellarium/default.nix @@ -6,13 +6,13 @@ mkDerivation rec { name = "stellarium-${version}"; - version = "0.18.1"; + version = "0.18.2"; src = fetchFromGitHub { owner = "Stellarium"; repo = "stellarium"; rev = "v${version}"; - sha256 = "0srwi08azzzayf50dr4dr1zcdcc8hwribzv7xvb7hbp6xp51c813"; + sha256 = "17764i52dmipaz62k5n23fyx07d7cjir0dgav0s5b6sjd8gbjwbf"; }; nativeBuildInputs = [ cmake perl ]; diff --git a/pkgs/applications/science/biology/bowtie2/default.nix b/pkgs/applications/science/biology/bowtie2/default.nix index 829672d64cc2..675c7d4eb0b4 100644 --- a/pkgs/applications/science/biology/bowtie2/default.nix +++ b/pkgs/applications/science/biology/bowtie2/default.nix @@ -2,14 +2,14 @@ stdenv.mkDerivation rec { pname = "bowtie2"; - version = "2.3.4.1"; + version = "2.3.4.2"; name = "${pname}-${version}"; src = fetchFromGitHub { owner = "BenLangmead"; repo = pname; rev = "v${version}"; - sha256 = "07cvcy6483araayj41arjzpxjmf4fmn4iqyl6gp6zmrbzw72wwzj"; + sha256 = "1gsfaf7rjg4nwhs7vc1vf63xd5r5v1yq58w7x3barycplzbvixzz"; }; buildInputs = [ zlib tbb ]; @@ -22,5 +22,6 @@ stdenv.mkDerivation rec { homepage = http://bowtie-bio.sf.net/bowtie2; maintainers = with maintainers; [ rybern ]; platforms = platforms.all; + broken = stdenv.isAarch64; }; } diff --git a/pkgs/applications/science/biology/igv/default.nix b/pkgs/applications/science/biology/igv/default.nix index 2df8b188f785..89e38104feb5 100644 --- a/pkgs/applications/science/biology/igv/default.nix +++ b/pkgs/applications/science/biology/igv/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "igv-${version}"; - version = "2.4.13"; + version = "2.4.14"; src = fetchurl { url = "https://data.broadinstitute.org/igv/projects/downloads/2.4/IGV_${version}.zip"; - sha256 = "0cl6fs1v9rqkzjq4syx0m1pr71hbhvidwa3ym57pvz8ardfs3qa1"; + sha256 = "0z9hk01czkdgi55b0qdvvi43jsqkkx6gl7wglamv425c6rklcvhc"; }; buildInputs = [ unzip jre ]; diff --git a/pkgs/applications/science/biology/ncbi-tools/default.nix b/pkgs/applications/science/biology/ncbi-tools/default.nix index 821a80230e50..1c24ef092542 100644 --- a/pkgs/applications/science/biology/ncbi-tools/default.nix +++ b/pkgs/applications/science/biology/ncbi-tools/default.nix @@ -15,7 +15,12 @@ stdenv.mkDerivation rec { sha256 = "1b2v0dcdqn3bysgdkj57sxmd6s0hc9wpnxssviz399g6plhxggbr"; }; - configureFlags = "--without-debug --with-bin-release --with-dll --without-static"; + configureFlags = [ + "--without-debug" + "--with-bin-release" + "--with-dll" + "--without-static" + ]; buildInputs = [ cpio ]; meta = { diff --git a/pkgs/applications/science/biology/picard-tools/default.nix b/pkgs/applications/science/biology/picard-tools/default.nix index a08a54c94ecd..0ddbdab4c1b1 100644 --- a/pkgs/applications/science/biology/picard-tools/default.nix +++ b/pkgs/applications/science/biology/picard-tools/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "picard-tools-${version}"; - version = "2.18.10"; + version = "2.18.11"; src = fetchurl { url = "https://github.com/broadinstitute/picard/releases/download/${version}/picard.jar"; - sha256 = "1px5ar6iizm4czpc66hyyafandw6g9x9s1abj8klc78alvihciw4"; + sha256 = "03wkyz3bjx3n8bwambhz9lr09271r1wxycmx4p7m2naqs4afxb89"; }; buildInputs = [ jre makeWrapper ]; diff --git a/pkgs/applications/science/biology/strelka/default.nix b/pkgs/applications/science/biology/strelka/default.nix new file mode 100644 index 000000000000..1527f5d3ddad --- /dev/null +++ b/pkgs/applications/science/biology/strelka/default.nix @@ -0,0 +1,37 @@ +{stdenv, fetchFromGitHub, cmake, zlib, python2}: + +stdenv.mkDerivation rec { + name = "strelka-${version}"; + version = "2.9.5"; + + src = fetchFromGitHub { + owner = "Illumina"; + repo = "strelka"; + rev = "v${version}"; + sha256 = "0x4a6nkx1jnyag9svghsdjz1fz6q7qx5pn77wphdfnk81f9yspf8"; + }; + + buildInputs = [ cmake zlib python2 ]; + + preConfigure = '' + sed -i 's|/usr/bin/env python|${python2}/bin/python|' src/python/lib/makeRunScript.py + patchShebangs . + ''; + + postFixup = '' + pushd $out/lib/python/pyflow + sed -i 's|/bin/bash|${stdenv.shell}|' pyflowTaskWrapper.py + rm pyflowTaskWrapper.pyc + echo "import pyflowTaskWrapper" | python2 + popd + ''; + + meta = with stdenv.lib; { + description = "Germline and small variant caller"; + license = licenses.gpl3; + homepage = https://github.com/Illumina/strelka; + maintainers = with maintainers; [ jbedo ]; + platforms = [ "x86_64-linux" ]; + }; + +} diff --git a/pkgs/applications/science/biology/vcftools/default.nix b/pkgs/applications/science/biology/vcftools/default.nix index 394973692dca..a6f52ae97b59 100755 --- a/pkgs/applications/science/biology/vcftools/default.nix +++ b/pkgs/applications/science/biology/vcftools/default.nix @@ -3,13 +3,13 @@ stdenv.mkDerivation rec { name = "${pname}-${version}"; pname = "vcftools"; - version = "0.1.15"; + version = "0.1.16"; src = fetchFromGitHub { repo = pname; owner = "vcftools"; rev = "v${version}"; - sha256 = "15yxr4kidqb42gkbd6rjra6b07wpl6rgivlh9q73yavh5myafqk4"; + sha256 = "0msb09d2cnm8rlpg8bsc1lhjddvp3kf3i9dsj1qs4qgsdlzhxkyx"; }; buildInputs = [ autoreconfHook pkgconfig zlib perl ]; diff --git a/pkgs/applications/science/chemistry/gwyddion/default.nix b/pkgs/applications/science/chemistry/gwyddion/default.nix index 4f028e0053af..6ea6be52fce4 100644 --- a/pkgs/applications/science/chemistry/gwyddion/default.nix +++ b/pkgs/applications/science/chemistry/gwyddion/default.nix @@ -2,11 +2,11 @@ with stdenv.lib; +let version = "2.48"; in stdenv.mkDerivation { name = "gwyddion-${version}"; - version = "2.48"; src = fetchurl { - url = "http://sourceforge.net/projects/gwyddion/files/gwyddion/2.48/gwyddion-2.48.tar.xz"; + url = "http://sourceforge.net/projects/gwyddion/files/gwyddion/${version}/gwyddion-${version}.tar.xz"; sha256 = "119iw58ac2wn4cas6js8m7r1n4gmmkga6b1y711xzcyjp9hshgwx"; }; nativeBuildInputs = [ pkgconfig ]; diff --git a/pkgs/applications/science/chemistry/molden/default.nix b/pkgs/applications/science/chemistry/molden/default.nix index 1472b4b2af9e..76a19d410ef8 100644 --- a/pkgs/applications/science/chemistry/molden/default.nix +++ b/pkgs/applications/science/chemistry/molden/default.nix @@ -1,17 +1,19 @@ { stdenv, fetchurl, which, gfortran, libGLU, xorg } : stdenv.mkDerivation rec { - version = "5.7"; + version = "5.8.2"; name = "molden-${version}"; src = fetchurl { url = "ftp://ftp.cmbi.ru.nl/pub/molgraph/molden/molden${version}.tar.gz"; - sha256 = "0gaq11gm09ax25lvgfrvxv9dxvi76hps116fp6k7sqgvdd68vf0s"; + sha256 = "1lhjx8fa8xynnlk5g6ipvchhfnz6j5lgqxlsifx82pbbnbm6mps4"; }; nativeBuildInputs = [ which ]; buildInputs = [ gfortran libGLU xorg.libX11 xorg.libXmu ]; + patches = [ ./dont_register_file_types.patch ]; + postPatch = '' substituteInPlace ./makefile --replace '-L/usr/X11R6/lib' "" \ --replace '-I/usr/X11R6/include' "" \ diff --git a/pkgs/applications/science/chemistry/molden/dont_register_file_types.patch b/pkgs/applications/science/chemistry/molden/dont_register_file_types.patch new file mode 100644 index 000000000000..75ce593ed29a --- /dev/null +++ b/pkgs/applications/science/chemistry/molden/dont_register_file_types.patch @@ -0,0 +1,29 @@ +diff --git a/makefile b/makefile +index 58a9e74..64615b6 100644 +--- a/makefile ++++ b/makefile +@@ -32,8 +32,6 @@ os := + ifeq ($(uname), Linux) + os := $(shell head -n 1 /etc/issue | cut -d" " -f1) + ifeq ($(os), Ubuntu) +- EXTEN = exten +- EXTENZ = exten2 + LIBSG = -L/usr/X11R6/lib -lGLU -lGL -lX11 -lm + endif + ifeq ($(os), Debian) +@@ -278,7 +276,7 @@ LIBSOGL = -lglut -lGLU -lGL -lXmu -lX11 -lm + # + #LIBSG = -L/usr/X11R6/lib -Wl,-framework -Wl,GLUT -Wl,-framework -Wl,OpenGL -Wl,-framework -Wl,Cocoa -lGLU -lGL -lXmu -lX11 -lm + +-all: molden gmolden ambfor/ambfor ambfor/ambmd surf/surf $(EXTEN) ++all: molden gmolden ambfor/ambfor ambfor/ambmd surf/surf + xwin.o: xwin.c rots.h + xwingl.o: xwin.c rots.h + +@@ -344,5 +342,5 @@ exten: + exten2: + ./register_extension.sh /usr/local/bin + +-install: $(EXTENZ) ++install: + sudo install -t /usr/local/bin -m 755 molden gmolden ambfor/ambfor ambfor/ambmd surf/surf diff --git a/pkgs/applications/science/chemistry/octopus/default.nix b/pkgs/applications/science/chemistry/octopus/default.nix index 0d8ab0d0e191..e79e21707d4f 100644 --- a/pkgs/applications/science/chemistry/octopus/default.nix +++ b/pkgs/applications/science/chemistry/octopus/default.nix @@ -3,7 +3,7 @@ }: let - version = "8.1"; + version = "8.2"; fftwAll = symlinkJoin { name ="ftw-dev-out"; paths = [ fftw.dev fftw.out ]; }; in stdenv.mkDerivation { @@ -11,20 +11,20 @@ in stdenv.mkDerivation { src = fetchurl { url = "http://www.tddft.org/programs/octopus/down.php?file=${version}/octopus-${version}.tar.gz"; - sha256 = "0rxwvcp22364nnhwhqlr38w4rwv1yl60snxi2f8nqdflx1143n10"; + sha256 = "0z74q17lzyga44m5pbsr1hmq12ly96y44pcz7glfvc4vbaq3jd8p"; }; nativeBuildInputs = [ perl procps fftw.dev ]; buildInputs = [ libyaml gfortran libxc openblas gsl fftw.out netcdf arpack ]; - configureFlags = '' - --with-yaml-prefix=${libyaml} - --with-blas=-lopenblas - --with-lapack=-lopenblas - --with-fftw-prefix=${fftwAll} - --with-gsl-prefix=${gsl} - --with-libxc-prefix=${libxc} - ''; + configureFlags = [ + "--with-yaml-prefix=${libyaml}" + "--with-blas=-lopenblas" + "--with-lapack=-lopenblas" + "--with-fftw-prefix=${fftwAll}" + "--with-gsl-prefix=${gsl}" + "--with-libxc-prefix=${libxc}" + ]; doCheck = false; checkTarget = "check-short"; diff --git a/pkgs/applications/science/chemistry/pymol/default.nix b/pkgs/applications/science/chemistry/pymol/default.nix index e7dd04377be7..7b482d82e2fa 100644 --- a/pkgs/applications/science/chemistry/pymol/default.nix +++ b/pkgs/applications/science/chemistry/pymol/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, makeDesktopItem , python3, python3Packages -, glew, freeglut, libpng, libxml2, tk, freetype, libmsgpack }: +, glew, freeglut, libpng, libxml2, tk, freetype, msgpack }: with stdenv.lib; @@ -29,7 +29,7 @@ python3Packages.buildPythonApplication { sha256 = "1qpacd5w4r9a0nm5iqmkd92ym3ai00dp7v61cwd6jgakk6wfps3s"; }; - buildInputs = [ python3Packages.numpy glew freeglut libpng libxml2 tk freetype libmsgpack ]; + buildInputs = [ python3Packages.numpy glew freeglut libpng libxml2 tk freetype msgpack ]; NIX_CFLAGS_COMPILE = "-I ${libxml2.dev}/include/libxml2"; installPhase = '' diff --git a/pkgs/applications/science/electronics/eagle/eagle.nix b/pkgs/applications/science/electronics/eagle/eagle.nix new file mode 100644 index 000000000000..b97ede413963 --- /dev/null +++ b/pkgs/applications/science/electronics/eagle/eagle.nix @@ -0,0 +1,83 @@ +{ stdenv, fetchurl, makeDesktopItem, patchelf +, libXrender, libXrandr, libXcursor, libX11, libXext, libXi, libxcb +, cups , libGL, glib, nss, nspr, expat, alsaLib +, qtbase, qtdeclarative, qtsvg, qtlocation, qtwebchannel, qtwebengine +}: + +let + libPath = stdenv.lib.makeLibraryPath + [ libXrender libXrandr libXcursor libX11 libXext libXi libxcb + libGL glib nss nspr expat alsaLib + qtbase qtdeclarative qtsvg qtlocation qtwebchannel qtwebengine + ]; + in + stdenv.mkDerivation rec { + name = "eagle-${version}"; + version = "9.1.2"; + + src = fetchurl { + url = "https://eagle-updates.circuits.io/downloads/${builtins.replaceStrings ["."] ["_"] version}/Autodesk_EAGLE_${version}_English_Linux_64bit.tar.gz"; + sha256 = "0y7ahl9z5a7l9cjk8hzmyv6ga8chlry5rr8v116q5mnsgs4i11an"; + }; + + desktopItem = makeDesktopItem { + name = "eagle"; + exec = "eagle"; + icon = "eagle"; + comment = "Schematic capture and PCB layout"; + desktopName = "Eagle"; + genericName = "Schematic editor"; + categories = "Application;Development;"; + }; + + buildInputs = + [ libXrender libXrandr libXcursor libX11 libXext libXi libxcb + libGL glib nss nspr expat alsaLib + qtbase qtdeclarative qtsvg qtlocation qtwebchannel qtwebengine + ]; + + doConfigure = false; + doBuild = false; + + installPhase = '' + # Extract eagle tarball + mkdir "$out" + tar -xzf "$src" -C "$out" + + # Install manpage + mkdir -p "$out"/share/man/man1 + ln -s "$out"/eagle-${version}/doc/eagle.1 "$out"/share/man/man1/eagle.1 + + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${libPath}:$out/eagle-${version}/lib:${stdenv.cc.cc.lib}/lib" \ + "$out"/eagle-${version}/eagle + + mkdir -p "$out"/bin + ln -s "$out"/eagle-${version}/eagle "$out"/bin/eagle + + # Remove bundled libraries that are available in nixpkgs + # TODO: There still may be unused bundled libraries + rm "$out"/eagle-${version}/lib/libQt5*.so.5 + rm "$out"/eagle-${version}/lib/{libxcb-*.so.*,libX*.so.*,libxshmfence.so.1} + rm "$out"/eagle-${version}/lib/{libEGL.so.1,libglapi.so.0,libgbm.so.1} + + # No longer needed (we don't use the bundled Qt libraries) + rm -r "$out"/eagle-${version}/libexec + rm -r "$out"/eagle-${version}/plugins + + # Make desktop item + mkdir -p "$out"/share/applications + cp "$desktopItem"/share/applications/* "$out"/share/applications/ + mkdir -p "$out"/share/icons + ln -s "$out/eagle-${version}/bin/eagle-logo.png" "$out"/share/icons/eagle.png + ''; + + meta = with stdenv.lib; { + description = "Schematic editor and PCB layout tool from Autodesk (formerly CadSoft)"; + homepage = https://www.autodesk.com/products/eagle/overview; + license = licenses.unfree; + platforms = [ "x86_64-linux" ]; + maintainers = [ maintainers.rittelle ]; + }; + } diff --git a/pkgs/applications/science/electronics/eagle/default.nix b/pkgs/applications/science/electronics/eagle/eagle7.nix index b9294ef3639a..9b8827187b26 100644 --- a/pkgs/applications/science/electronics/eagle/default.nix +++ b/pkgs/applications/science/electronics/eagle/eagle7.nix @@ -66,7 +66,7 @@ stdenv.mkDerivation rec { # Build LD_PRELOAD library that redirects license file access to the home # directory of the user mkdir -p "$out"/lib - gcc -shared -fPIC -DEAGLE_PATH=\"$out/eagle-${version}\" ${./eagle_fixer.c} -o "$out"/lib/eagle_fixer.so -ldl + gcc -shared -fPIC -DEAGLE_PATH=\"$out/eagle-${version}\" ${./eagle7_fixer.c} -o "$out"/lib/eagle_fixer.so -ldl # Make wrapper script dynlinker="$(cat $NIX_CC/nix-support/dynamic-linker)" diff --git a/pkgs/applications/science/electronics/eagle/eagle_fixer.c b/pkgs/applications/science/electronics/eagle/eagle7_fixer.c index da9da4dcbd3a..da9da4dcbd3a 100644 --- a/pkgs/applications/science/electronics/eagle/eagle_fixer.c +++ b/pkgs/applications/science/electronics/eagle/eagle7_fixer.c diff --git a/pkgs/applications/science/electronics/geda/default.nix b/pkgs/applications/science/electronics/geda/default.nix index e080569e56fb..93fe7b6ba77a 100644 --- a/pkgs/applications/science/electronics/geda/default.nix +++ b/pkgs/applications/science/electronics/geda/default.nix @@ -9,7 +9,9 @@ stdenv.mkDerivation rec { sha256 = "08dpa506xk4gjbbi8vnxcb640wq4ihlgmhzlssl52nhvxwx7gx5v"; }; - configureFlags = "--disable-update-xdg-database"; + configureFlags = [ + "--disable-update-xdg-database" + ]; nativeBuildInputs = [ pkgconfig ]; buildInputs = [ guile gtk2 flex gawk perl ]; diff --git a/pkgs/applications/science/electronics/gtkwave/default.nix b/pkgs/applications/science/electronics/gtkwave/default.nix index 78c981ded56f..c0048740193f 100644 --- a/pkgs/applications/science/electronics/gtkwave/default.nix +++ b/pkgs/applications/science/electronics/gtkwave/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "gtkwave-${version}"; - version = "3.3.92"; + version = "3.3.93"; src = fetchurl { url = "mirror://sourceforge/gtkwave/${name}.tar.gz"; - sha256 = "08916gv5vl7dgvlsq098mxljbciby9miyh8jqwn1q8sfdhzvmxak"; + sha256 = "0a92zlwvshp75k7cv11rc4ab11fzsy0a5qfvxkh0bjvrq1k946ys"; }; nativeBuildInputs = [ pkgconfig ]; diff --git a/pkgs/applications/science/electronics/xcircuit/default.nix b/pkgs/applications/science/electronics/xcircuit/default.nix index ba2a170e6255..418144e6af7b 100644 --- a/pkgs/applications/science/electronics/xcircuit/default.nix +++ b/pkgs/applications/science/electronics/xcircuit/default.nix @@ -17,7 +17,11 @@ in stdenv.mkDerivation { nativeBuildInputs = [ autoreconfHook automake pkgconfig ]; hardeningDisable = [ "format" ]; - configureFlags = "--with-tcl=${tcl}/lib --with-tk=${tk}/lib --with-ngspice=${getBin ngspice}/bin/ngspice"; + configureFlags = [ + "--with-tcl=${tcl}/lib" + "--with-tk=${tk}/lib" + "--with-ngspice=${getBin ngspice}/bin/ngspice" + ]; buildInputs = with xorg; [ cairo ghostscript libSM libXt libICE libX11 libXpm tcl tk zlib ]; diff --git a/pkgs/applications/science/logic/aiger/default.nix b/pkgs/applications/science/logic/aiger/default.nix index 1a60c5e148cc..a03e777a033e 100644 --- a/pkgs/applications/science/logic/aiger/default.nix +++ b/pkgs/applications/science/logic/aiger/default.nix @@ -12,19 +12,19 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; configurePhase = '' + CC=${stdenv.cc.targetPrefix}cc + CXX=${stdenv.cc.targetPrefix}c++ + # Set up picosat, so we can build 'aigbmc' - echo $(pwd) - ls .. mkdir ../picosat ln -s ${picosat}/include/picosat/picosat.h ../picosat/picosat.h ln -s ${picosat}/lib/picosat.o ../picosat/picosat.o ln -s ${picosat}/share/picosat.version ../picosat/VERSION - ls .. ./configure.sh ''; installPhase = '' - mkdir -p $out/bin + mkdir -p $out/bin $dev/include $lib/lib # Do the installation manually, as the Makefile has odd # cyrillic characters, and this is easier than adding @@ -41,8 +41,13 @@ stdenv.mkDerivation rec { for x in ''${BINS[*]}; do install -m 755 -s $x $out/bin/$x done + + cp -v aiger.o $lib/lib + cp -v aiger.h $dev/include ''; + outputs = [ "out" "dev" "lib" ]; + meta = { description = "And-Inverter Graph (AIG) utilities"; homepage = http://fmv.jku.at/aiger/; diff --git a/pkgs/applications/science/logic/boolector/default.nix b/pkgs/applications/science/logic/boolector/default.nix index aa815e48db41..8e0ad22bba18 100644 --- a/pkgs/applications/science/logic/boolector/default.nix +++ b/pkgs/applications/science/logic/boolector/default.nix @@ -1,41 +1,50 @@ -{ stdenv, fetchurl, writeShellScriptBin }: +{ stdenv, fetchFromGitHub +, cmake, lingeling, btor2tools +}: stdenv.mkDerivation rec { name = "boolector-${version}"; - version = "2.4.1"; - src = fetchurl { - url = "http://fmv.jku.at/boolector/boolector-${version}-with-lingeling-bbc.tar.bz2"; - sha256 = "0mdf7hwix237pvknvrpazcx6s3ininj5k7vhysqjqgxa7lxgq045"; + version = "3.0.0"; + + src = fetchFromGitHub { + owner = "boolector"; + repo = "boolector"; + rev = "refs/tags/${version}"; + sha256 = "15i3ni5klss423m57wcy1gx0m5wfrjmglapwg85pm7fb3jj1y7sz"; }; - prePatch = - let - lingelingPatch = writeShellScriptBin "lingeling-patch" '' - sed -i -e "1i#include <stdint.h>" lingeling/lglib.h - - ${crossFix}/bin/crossFix lingeling - ''; - crossFix = writeShellScriptBin "crossFix" '' - # substituteInPlace not available here - sed -i $1/makefile.in \ - -e 's@ar rc@$(AR) rc@' \ - -e 's@ranlib@$(RANLIB)@' - ''; - in '' - sed -i -e 's@mv lingeling\* lingeling@\0 \&\& ${lingelingPatch}/bin/lingeling-patch@' makefile - sed -i -e 's@mv boolector\* boolector@\0 \&\& ${crossFix}/bin/crossFix boolector@' makefile - ''; + nativeBuildInputs = [ cmake ]; + buildInputs = [ lingeling btor2tools ]; + + cmakeFlags = + [ "-DSHARED=ON" + "-DUSE_LINGELING=YES" + "-DBTOR2_INCLUDE_DIR=${btor2tools.dev}/include" + "-DBTOR2_LIBRARIES=${btor2tools.lib}/lib/libbtor2parser.so" + "-DLINGELING_INCLUDE_DIR=${lingeling.dev}/include" + "-DLINGELING_LIBRARIES=${lingeling.lib}/lib/liblgl.a" + ]; installPhase = '' - mkdir $out - mv boolector/bin $out + mkdir -p $out/bin $lib/lib $dev/include + + cp -vr bin/* $out/bin + cp -vr lib/* $lib/lib + + rm -rf $out/bin/{examples,test} + + cd ../src + find . -iname '*.h' -exec cp --parents '{}' $dev/include \; + rm -rf $dev/include/tests ''; - meta = { - license = stdenv.lib.licenses.unfreeRedistributable; + outputs = [ "out" "dev" "lib" ]; + + meta = with stdenv.lib; { description = "An extremely fast SMT solver for bit-vectors and arrays"; - homepage = "http://fmv.jku.at/boolector"; - platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.maintainers.thoughtpolice ]; + homepage = https://boolector.github.io; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ thoughtpolice ]; }; } diff --git a/pkgs/applications/science/logic/btor2tools/default.nix b/pkgs/applications/science/logic/btor2tools/default.nix new file mode 100644 index 000000000000..ed3d9e638121 --- /dev/null +++ b/pkgs/applications/science/logic/btor2tools/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + name = "btor2tools-${version}"; + version = "pre55_8c150b39"; + + src = fetchFromGitHub { + owner = "boolector"; + repo = "btor2tools"; + rev = "8c150b39cdbcdef4247344acf465d75ef642365d"; + sha256 = "1r5pid4x567nms02ajjrz3v0zj18k0fi5pansrmc2907rnx2acxx"; + }; + + configurePhase = "./configure.sh -shared"; + + installPhase = '' + mkdir -p $out $dev/include/btor2parser/ $lib/lib + + cp -vr bin $out + cp -v src/btor2parser/btor2parser.h $dev/include/btor2parser + cp -v build/libbtor2parser.* $lib/lib + ''; + + outputs = [ "out" "dev" "lib" ]; + + meta = with stdenv.lib; { + description = "Fast SAT solver"; + homepage = http://fmv.jku.at/lingeling/; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ thoughtpolice ]; + }; +} diff --git a/pkgs/applications/science/logic/eprover/default.nix b/pkgs/applications/science/logic/eprover/default.nix index 95f5385fac3d..0e978f2d5c9d 100644 --- a/pkgs/applications/science/logic/eprover/default.nix +++ b/pkgs/applications/science/logic/eprover/default.nix @@ -14,7 +14,10 @@ stdenv.mkDerivation rec { preConfigure = '' sed -e 's/ *CC *= *gcc$//' -i Makefile.vars ''; - configureFlags = "--exec-prefix=$(out) --man-prefix=$(out)/share/man"; + configureFlags = [ + "--exec-prefix=$(out)" + "--man-prefix=$(out)/share/man" + ]; meta = with stdenv.lib; { description = "Automated theorem prover for full first-order logic with equality"; diff --git a/pkgs/applications/science/logic/hol/default.nix b/pkgs/applications/science/logic/hol/default.nix index 5eb33daefe80..d6a1eb6cbf71 100644 --- a/pkgs/applications/science/logic/hol/default.nix +++ b/pkgs/applications/science/logic/hol/default.nix @@ -15,7 +15,7 @@ in let polymlEnableShared = with pkgs; lib.overrideDerivation polyml (attrs: { - configureFlags = "--enable-shared"; + configureFlags = [ "--enable-shared" ]; }); in diff --git a/pkgs/applications/science/logic/lingeling/default.nix b/pkgs/applications/science/logic/lingeling/default.nix new file mode 100644 index 000000000000..000587a22e67 --- /dev/null +++ b/pkgs/applications/science/logic/lingeling/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchFromGitHub +, aiger +}: + +stdenv.mkDerivation rec { + name = "lingeling-${version}"; + # This is the version used in satcomp2018, which was + # relicensed, and also known as version 'bcj' + version = "pre1_03b4860d"; + + src = fetchFromGitHub { + owner = "arminbiere"; + repo = "lingeling"; + rev = "03b4860d14016f42213ea271014f2f13d181f504"; + sha256 = "1lw1yfy219p7rrk88sbq4zl24b70040zapbjdrpv5a6i0jsblksx"; + }; + + configurePhase = '' + ./configure.sh + + # Rather than patch ./configure, just sneak in use of aiger here, since it + # doesn't handle real build products very well (it works on a build-time + # dir, not installed copy)... This is so we can build 'blimc' + substituteInPlace ./makefile \ + --replace 'targets: liblgl.a' 'targets: liblgl.a blimc' \ + --replace '$(AIGER)/aiger.o' '${aiger.lib}/lib/aiger.o' \ + --replace '$(AIGER)/aiger.h' '${aiger.dev}/include/aiger.h' \ + --replace '-I$(AIGER)' '-I${aiger.dev}/include' + ''; + + installPhase = '' + mkdir -p $out/bin $lib/lib $dev/include + + cp lglib.h $dev/include + cp liblgl.a $lib/lib + + cp lingeling plingeling treengeling ilingeling blimc $out/bin + ''; + + outputs = [ "out" "dev" "lib" ]; + + meta = with stdenv.lib; { + description = "Fast SAT solver"; + homepage = http://fmv.jku.at/lingeling/; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ thoughtpolice ]; + }; +} diff --git a/pkgs/applications/science/logic/sad/default.nix b/pkgs/applications/science/logic/sad/default.nix index 51ea9b9c0e76..426f1928938c 100644 --- a/pkgs/applications/science/logic/sad/default.nix +++ b/pkgs/applications/science/logic/sad/default.nix @@ -7,7 +7,12 @@ stdenv.mkDerivation { sha256 = "10jd93xgarik7xwys5lq7fx4vqp7c0yg1gfin9cqfch1k1v8ap4b"; }; buildInputs = [ ghc spass ]; - patches = [ ./patch ]; + patches = [ + ./patch + # Since the LTS 12.0 update, <> is an operator in Prelude, colliding with + # the <> operator with a different meaning defined by this package + ./monoid.patch + ]; postPatch = '' substituteInPlace Alice/Main.hs --replace init.opt $out/init.opt ''; @@ -23,7 +28,7 @@ stdenv.mkDerivation { meta = { description = "A program for automated proving of mathematical texts"; longDescription = '' - The system for automated deduction is intended for automated processing of formal mathematical texts + The system for automated deduction is intended for automated processing of formal mathematical texts written in a special language called ForTheL (FORmal THEory Language) or in a traditional first-order language ''; license = stdenv.lib.licenses.gpl3Plus; diff --git a/pkgs/applications/science/logic/sad/monoid.patch b/pkgs/applications/science/logic/sad/monoid.patch new file mode 100644 index 000000000000..da9c21bcae91 --- /dev/null +++ b/pkgs/applications/science/logic/sad/monoid.patch @@ -0,0 +1,51 @@ +diff --git a/Alice/Core/Check.hs b/Alice/Core/Check.hs +index 0700fa0388f..69815864710 100644 +--- a/Alice/Core/Check.hs ++++ b/Alice/Core/Check.hs +@@ -18,8 +18,12 @@ + - along with this program. If not, see <http://www.gnu.org/licenses/>. + -} + ++{-# LANGUAGE NoImplicitPrelude #-} ++ + module Alice.Core.Check (fillDef) where + ++import Prelude hiding ((<>)) ++ + import Control.Monad + import Data.Maybe + +diff --git a/Alice/Core/Reason.hs b/Alice/Core/Reason.hs +index c361bcf220d..4e493d8c91b 100644 +--- a/Alice/Core/Reason.hs ++++ b/Alice/Core/Reason.hs +@@ -17,9 +17,12 @@ + - You should have received a copy of the GNU General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + -} ++{-# LANGUAGE NoImplicitPrelude #-} + + module Alice.Core.Reason where + ++import Prelude hiding ((<>)) ++ + import Control.Monad + + import Alice.Core.Base +diff --git a/Alice/Core/Verify.hs b/Alice/Core/Verify.hs +index 4f8550bdf11..0f59d135b16 100644 +--- a/Alice/Core/Verify.hs ++++ b/Alice/Core/Verify.hs +@@ -18,8 +18,12 @@ + - along with this program. If not, see <http://www.gnu.org/licenses/>. + -} + ++{-# LANGUAGE NoImplicitPrelude #-} ++ + module Alice.Core.Verify (verify) where + ++import Prelude hiding ((<>)) ++ + import Control.Monad + import Data.IORef + import Data.Maybe diff --git a/pkgs/applications/science/logic/symbiyosys/default.nix b/pkgs/applications/science/logic/symbiyosys/default.nix index 2580b9b0fbe0..946f65d944b3 100644 --- a/pkgs/applications/science/logic/symbiyosys/default.nix +++ b/pkgs/applications/science/logic/symbiyosys/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { name = "symbiyosys-${version}"; - version = "2018.05.03"; + version = "2018.07.26"; src = fetchFromGitHub { owner = "yosyshq"; repo = "symbiyosys"; - rev = "35d956c7bb77c0602d198035b2d73a9c61cb4de4"; - sha256 = "02zg3nkwp3fdjwz1agvsn55k1xipwh2rradb0bgjrjpsmmw63gda"; + rev = "2fef25f93dd1cb5137a08e71f507e3eee8100fb1"; + sha256 = "103fga0n11h4n2q346xyz3k0615d9lgx2b8sqr1pwn2hx26kchav"; }; buildInputs = [ python3 yosys ]; diff --git a/pkgs/applications/science/logic/verit/default.nix b/pkgs/applications/science/logic/verit/default.nix index ca3673d7bf97..d8873604b213 100644 --- a/pkgs/applications/science/logic/verit/default.nix +++ b/pkgs/applications/science/logic/verit/default.nix @@ -15,6 +15,11 @@ stdenv.mkDerivation rec { # --disable-static actually enables static linking here... dontDisableStatic = true; + preConfigure = '' + CC=${stdenv.cc.targetPrefix}gcc + CXX=${stdenv.cc.targetPrefix}g++ + ''; + makeFlags = [ "LEX=${flex}/bin/flex" ]; preInstall = '' diff --git a/pkgs/applications/science/math/almonds/default.nix b/pkgs/applications/science/math/almonds/default.nix index fb76699b0c83..96613f4e38a6 100644 --- a/pkgs/applications/science/math/almonds/default.nix +++ b/pkgs/applications/science/math/almonds/default.nix @@ -1,11 +1,9 @@ -{ stdenv, buildPythonApplication, fetchFromGitHub, ncurses, pillow, pytest }: +{ stdenv, python3, fetchFromGitHub, ncurses }: -let +with python3.pkgs; buildPythonApplication rec { + pname = "almonds"; version = "1.25b"; -in -buildPythonApplication { - name = "almonds-${version}"; src = fetchFromGitHub { owner = "Tenchi2xh"; repo = "Almonds"; diff --git a/pkgs/applications/science/math/caffe/darwin.patch b/pkgs/applications/science/math/caffe/darwin.patch new file mode 100644 index 000000000000..e8fa6a683f73 --- /dev/null +++ b/pkgs/applications/science/math/caffe/darwin.patch @@ -0,0 +1,47 @@ +diff --git a/Makefile b/Makefile +index c823f66e..65b90c5e 100644 +--- a/Makefile ++++ b/Makefile +@@ -32,9 +32,9 @@ SRC_DIRS := $(shell find * -type d -exec bash -c "find {} -maxdepth 1 \ + LIBRARY_NAME := $(PROJECT) + LIB_BUILD_DIR := $(BUILD_DIR)/lib + STATIC_NAME := $(LIB_BUILD_DIR)/lib$(LIBRARY_NAME).a +-DYNAMIC_VERSION_MAJOR := 1 +-DYNAMIC_VERSION_MINOR := 0 +-DYNAMIC_VERSION_REVISION := 0 ++DYNAMIC_VERSION_MAJOR := 1 ++DYNAMIC_VERSION_MINOR := 0 ++DYNAMIC_VERSION_REVISION := 0 + DYNAMIC_NAME_SHORT := lib$(LIBRARY_NAME).so + #DYNAMIC_SONAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR) + DYNAMIC_VERSIONED_NAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION) +diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake +index c48255c8..cf4c580e 100644 +--- a/cmake/Dependencies.cmake ++++ b/cmake/Dependencies.cmake +@@ -105,7 +105,6 @@ if(USE_OPENCV) + endif() + + # ---[ BLAS +-if(NOT APPLE) + set(BLAS "Atlas" CACHE STRING "Selected BLAS library") + set_property(CACHE BLAS PROPERTY STRINGS "Atlas;Open;MKL") + +@@ -123,17 +122,6 @@ if(NOT APPLE) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${MKL_LIBRARIES}) + list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_MKL) + endif() +-elseif(APPLE) +- find_package(vecLib REQUIRED) +- list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${vecLib_INCLUDE_DIR}) +- list(APPEND Caffe_LINKER_LIBS PUBLIC ${vecLib_LINKER_LIBS}) +- +- if(VECLIB_FOUND) +- if(NOT vecLib_INCLUDE_DIR MATCHES "^/System/Library/Frameworks/vecLib.framework.*") +- list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_ACCELERATE) +- endif() +- endif() +-endif() + + # ---[ Python + if(BUILD_python) diff --git a/pkgs/applications/science/math/caffe/default.nix b/pkgs/applications/science/math/caffe/default.nix index d7357c5048d5..e56c63e01bf0 100644 --- a/pkgs/applications/science/math/caffe/default.nix +++ b/pkgs/applications/science/math/caffe/default.nix @@ -1,27 +1,39 @@ -{ stdenv, lib +{ stdenv, lib, runCommand , fetchFromGitHub +, fetchurl , cmake , boost , google-gflags , glog , hdf5-cpp -, leveldb -, lmdb , opencv3 , protobuf -, snappy , doxygen , openblas -, cudaSupport ? true, cudatoolkit +, Accelerate, CoreGraphics, CoreVideo +, lmdbSupport ? true, lmdb +, leveldbSupport ? true, leveldb, snappy +, cudaSupport ? stdenv.isLinux, cudatoolkit , cudnnSupport ? false, cudnn ? null , ncclSupport ? false, nccl ? null , pythonSupport ? false, python ? null, numpy ? null }: +assert leveldbSupport -> (leveldb != null && snappy != null); assert cudnnSupport -> cudaSupport; assert ncclSupport -> cudaSupport; assert pythonSupport -> (python != null && numpy != null); +let + toggle = bool: if bool then "ON" else "OFF"; + + test_model_weights = fetchurl { + url = "http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel"; + sha256 = "472d4a06035497b180636d8a82667129960371375bd10fcb6df5c6c7631f25e0"; + }; + +in + stdenv.mkDerivation rec { name = "caffe-${version}"; version = "1.0"; @@ -44,19 +56,27 @@ stdenv.mkDerivation rec { "-DCUDA_ARCH_NAME=All" "-DCUDA_HOST_COMPILER=${cudatoolkit.cc}/bin/cc" ] else [ "-DCPU_ONLY=ON" ]) - ++ lib.optional ncclSupport "-DUSE_NCCL=ON"; + ++ ["-DUSE_NCCL=${toggle ncclSupport}"] + ++ ["-DUSE_LEVELDB=${toggle leveldbSupport}"] + ++ ["-DUSE_LMDB=${toggle lmdbSupport}"]; - buildInputs = [ boost google-gflags glog protobuf hdf5-cpp lmdb leveldb snappy opencv3 openblas ] + buildInputs = [ boost google-gflags glog protobuf hdf5-cpp opencv3 openblas ] ++ lib.optional cudaSupport cudatoolkit ++ lib.optional cudnnSupport cudnn + ++ lib.optional lmdbSupport lmdb ++ lib.optional ncclSupport nccl - ++ lib.optionals pythonSupport [ python numpy ]; + ++ lib.optionals leveldbSupport [ leveldb snappy ] + ++ lib.optionals pythonSupport [ python numpy ] + ++ lib.optionals stdenv.isDarwin [ Accelerate CoreGraphics CoreVideo ] + ; propagatedBuildInputs = lib.optional pythonSupport python.pkgs.protobuf; outputs = [ "bin" "out"]; propagatedBuildOutputs = []; # otherwise propagates out -> bin cycle + patches = [ ./darwin.patch ]; + preConfigure = lib.optionalString (cudaSupport && lib.versionAtLeast cudatoolkit.version "9.0") '' # CUDA 9.0 doesn't support sm_20 sed -i 's,20 21(20) ,,' cmake/Cuda.cmake @@ -71,6 +91,9 @@ stdenv.mkDerivation rec { # Internal static library. rm $out/lib/libproto.a + # Install models + cp -a ../models $out/share/Caffe/models + moveToOutput "bin" "$bin" '' + lib.optionalString pythonSupport '' mkdir -p $out/${python.sitePackages} @@ -78,6 +101,16 @@ stdenv.mkDerivation rec { rm -rf $out/python ''; + doInstallCheck = false; # build takes more than 30 min otherwise + installCheckPhase = '' + model=bvlc_reference_caffenet + m_path="$out/share/Caffe/models/$model" + $bin/bin/caffe test \ + -model "$m_path/deploy.prototxt" \ + -solver "$m_path/solver.prototxt" \ + -weights "${test_model_weights}" + ''; + meta = with stdenv.lib; { description = "Deep learning framework"; longDescription = '' @@ -88,6 +121,6 @@ stdenv.mkDerivation rec { homepage = http://caffe.berkeleyvision.org/; maintainers = with maintainers; [ jb55 ]; license = licenses.bsd2; - platforms = platforms.linux; + platforms = platforms.linux ++ platforms.darwin; }; } diff --git a/pkgs/applications/science/math/cbc/default.nix b/pkgs/applications/science/math/cbc/default.nix index 689261abc661..93aefbca2160 100644 --- a/pkgs/applications/science/math/cbc/default.nix +++ b/pkgs/applications/science/math/cbc/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation { sha256 = "1w8axdzm05xf5y13c31w7rc5z6ywxqxiwafnxcq3p195kgj0915a"; }; - configureFlags = "-C"; + configureFlags = [ "-C" ]; enableParallelBuilding = true; diff --git a/pkgs/applications/science/math/cplex/default.nix b/pkgs/applications/science/math/cplex/default.nix new file mode 100644 index 000000000000..fe3913648f87 --- /dev/null +++ b/pkgs/applications/science/math/cplex/default.nix @@ -0,0 +1,82 @@ +{ stdenv, makeWrapper, openjdk, gtk2, xorg, glibcLocales, releasePath }: + +# To use this package, you need to download your own cplex installer from IBM +# and override the releasePath attribute to point to the location of the file. +# +# Note: cplex creates an individual build for each license which screws +# somewhat with the use of functions like requireFile as the hash will be +# different for every user. + +stdenv.mkDerivation rec { + name = "cplex-${version}"; + version = "128"; + + src = + if builtins.isNull releasePath then + throw '' + This nix expression requires that the cplex installer is already + downloaded to your machine. Get it from IBM: + https://developer.ibm.com/docloud/blog/2017/12/20/cplex-optimization-studio-12-8-now-available/ + + Set `cplex.releasePath = /path/to/download;` in your + ~/.config/nixpkgs/config.nix for `nix-*` commands, or + `config.cplex.releasePath = /path/to/download;` in your + `configuration.nix` for NixOS. + '' + else + releasePath; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ openjdk gtk2 xorg.libXtst glibcLocales ]; + + unpackPhase = "cp $src $name"; + + patchPhase = '' + sed -i -e 's|/usr/bin/tr"|tr" |' $name + ''; + + buildPhase = '' + sh $name -i silent -DLICENSE_ACCEPTED=TRUE -DUSER_INSTALL_DIR=$out + ''; + + installPhase = '' + mkdir -p $out/bin + ln -s $out/opl/bin/x86-64_linux/oplrun\ + $out/opl/bin/x86-64_linux/oplrunjava\ + $out/opl/oplide/oplide\ + $out/cplex/bin/x86-64_linux/cplex\ + $out/cpoptimizer/bin/x86-64_linux/cpoptimizer\ + $out/bin + ''; + + fixupPhase = + let + libraryPath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc gtk2 xorg.libXtst ]; + in '' + interpreter=${stdenv.glibc}/lib/ld-linux-x86-64.so.2 + + for pgm in $out/opl/bin/x86-64_linux/oplrun $out/opl/bin/x86-64_linux/oplrunjava $out/opl/oplide/oplide; + do + patchelf --set-interpreter "$interpreter" $pgm; + wrapProgram $pgm \ + --prefix LD_LIBRARY_PATH : $out/opl/bin/x86-64_linux:${libraryPath} \ + --set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive; + done + + for pgm in $out/cplex/bin/x86-64_linux/cplex $out/cpoptimizer/bin/x86-64_linux/cpoptimizer $out/opl/oplide/jre/bin/*; + do + if grep ELF $pgm > /dev/null; + then + patchelf --set-interpreter "$interpreter" $pgm; + fi + done + ''; + + meta = with stdenv.lib; { + description = "Optimization solver for mathematical programming"; + homepage = "https://www.ibm.com/be-en/marketplace/ibm-ilog-cplex"; + license = licenses.unfree; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ bfortz ]; + }; +} diff --git a/pkgs/applications/science/math/gfan/default.nix b/pkgs/applications/science/math/gfan/default.nix index 65d551f39a71..d2d1ddb65846 100644 --- a/pkgs/applications/science/math/gfan/default.nix +++ b/pkgs/applications/science/math/gfan/default.nix @@ -9,15 +9,20 @@ stdenv.mkDerivation rec { sha256 = "02pihqb1lb76a0xbfwjzs1cd6ay3ldfxsm8dvsbl6qs3vkjxax56"; }; - makeFlags = ''PREFIX=$(out) CC=cc CXX=c++ cddnoprefix=1''; - buildInputs = [gmp mpir cddlib]; + patchPhase = stdenv.lib.optionalString stdenv.isDarwin '' + substituteInPlace Makefile --replace "-fno-guess-branch-probability" "" + ''; + + buildFlags = [ "CC=cc" "CXX=c++" "cddnoprefix=1" ]; + installFlags = [ ''PREFIX=$(out)'' ]; + buildInputs = [ gmp mpir cddlib ]; meta = { inherit version; description = ''A software package for computing Gröbner fans and tropical varieties''; license = stdenv.lib.licenses.gpl2 ; maintainers = [stdenv.lib.maintainers.raskin]; - platforms = stdenv.lib.platforms.linux; + platforms = stdenv.lib.platforms.unix; homepage = http://home.math.au.dk/jensen/software/gfan/gfan.html; }; } diff --git a/pkgs/applications/science/math/ginac/default.nix b/pkgs/applications/science/math/ginac/default.nix index 944460de9c75..18a5281bebb0 100644 --- a/pkgs/applications/science/math/ginac/default.nix +++ b/pkgs/applications/science/math/ginac/default.nix @@ -16,12 +16,13 @@ stdenv.mkDerivation rec { preConfigure = "patchShebangs ginsh"; - configureFlags = "--disable-rpath"; + configureFlags = [ "--disable-rpath" ]; meta = with stdenv.lib; { description = "GiNaC is Not a CAS"; homepage = http://www.ginac.de/; maintainers = with maintainers; [ lovek323 ]; + license = licenses.gpl2; platforms = platforms.all; }; } diff --git a/pkgs/applications/science/math/glsurf/default.nix b/pkgs/applications/science/math/glsurf/default.nix index a53829347053..4de683cdce90 100644 --- a/pkgs/applications/science/math/glsurf/default.nix +++ b/pkgs/applications/science/math/glsurf/default.nix @@ -26,5 +26,6 @@ stdenv.mkDerivation { meta = { homepage = http://www.lama.univ-savoie.fr/~raffalli/glsurf; description = "A program to draw implicit surfaces and curves"; + license = stdenv.lib.licenses.lgpl21; }; } diff --git a/pkgs/applications/science/math/palp/default.nix b/pkgs/applications/science/math/palp/default.nix index 4c7df4412e4f..e9fd21b46d8a 100644 --- a/pkgs/applications/science/math/palp/default.nix +++ b/pkgs/applications/science/math/palp/default.nix @@ -19,6 +19,10 @@ stdenv.mkDerivation rec { "strictoverflow" # causes runtime failure (tested in checkPhase) ]; + patchPhase = stdenv.lib.optionalString stdenv.isDarwin '' + substituteInPlace GNUmakefile --replace gcc cc + ''; + preBuild = '' echo Building PALP optimized for ${dim} dimensions sed -i "s/^#define[^a-zA-Z]*POLY_Dmax.*/#define POLY_Dmax ${dim}/" Global.h @@ -77,6 +81,6 @@ stdenv.mkDerivation rec { # the right license. license = licenses.gpl2; maintainers = with maintainers; [ timokau ]; - platforms = platforms.linux; + platforms = platforms.unix; }; } diff --git a/pkgs/applications/science/math/qalculate-gtk/default.nix b/pkgs/applications/science/math/qalculate-gtk/default.nix index 7990088ffbe9..59dbfdb509dc 100644 --- a/pkgs/applications/science/math/qalculate-gtk/default.nix +++ b/pkgs/applications/science/math/qalculate-gtk/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { name = "qalculate-gtk-${version}"; - version = "2.6.1"; + version = "2.6.2"; src = fetchFromGitHub { owner = "qalculate"; repo = "qalculate-gtk"; rev = "v${version}"; - sha256 = "19jw1w29x0r1qq5r8gmqrqr00ml2pfi2w433723vjzxpfg2pp70r"; + sha256 = "1yzw6avhka7bbi071z9d8cipcghyjq2bg9x3arv1cf395xlnrmb9"; }; patchPhase = '' diff --git a/pkgs/applications/science/math/ratpoints/default.nix b/pkgs/applications/science/math/ratpoints/default.nix index 82a6836bd623..2dd4778234df 100644 --- a/pkgs/applications/science/math/ratpoints/default.nix +++ b/pkgs/applications/science/math/ratpoints/default.nix @@ -1,20 +1,36 @@ -{stdenv, fetchurl, gmp}: +{ stdenv, fetchurl, fetchpatch, gmp }: stdenv.mkDerivation rec { name = "ratpoints-${version}"; - version = "2.1.3"; + version = "2.1.3.p4"; + src = fetchurl { url = "http://www.mathe2.uni-bayreuth.de/stoll/programs/ratpoints-${version}.tar.gz"; sha256 = "0zhad84sfds7izyksbqjmwpfw4rvyqk63yzdjd3ysd32zss5bgf4"; }; - buildInputs = [gmp]; - makeFlags = "INSTALL_DIR=$(out)"; + + enableParallelBuilding = true; + + patches = [ + (fetchpatch { + url = "https://git.sagemath.org/sage.git/plain/build/pkgs/ratpoints/patches/sturm_and_rp_private.patch?id=1615f58890e8f9881c4228c78a6b39b9aab1303a"; + sha256 = "0q3wajncyfr3gahd8gwk9x7g56zw54lpywrl63lqk7drkf60mrcl"; + }) + ]; + + buildInputs = [ gmp ]; + + makeFlags = [ "CC=cc" ]; + buildFlags = stdenv.lib.optional stdenv.isDarwin ["CCFLAGS2=-lgmp -lc -lm" "CCFLAGS=-UUSE_SSE"]; + installFlags = [ "INSTALL_DIR=$(out)" ]; + preInstall = ''mkdir -p "$out"/{bin,share,lib,include}''; + meta = { inherit version; description = ''A program to find rational points on hyperelliptic curves''; license = stdenv.lib.licenses.gpl2Plus; maintainers = [stdenv.lib.maintainers.raskin]; - platforms = stdenv.lib.platforms.linux; + platforms = stdenv.lib.platforms.unix; homepage = http://www.mathe2.uni-bayreuth.de/stoll/programs/; updateWalker = true; }; diff --git a/pkgs/applications/science/math/ripser/default.nix b/pkgs/applications/science/math/ripser/default.nix index 651ad8a2c0f8..21948a279d07 100644 --- a/pkgs/applications/science/math/ripser/default.nix +++ b/pkgs/applications/science/math/ripser/default.nix @@ -13,10 +13,10 @@ assert useGoogleHashmap -> sparsehash != null; let inherit (stdenv.lib) optional; + version = "1.0"; in stdenv.mkDerivation { name = "ripser-${version}"; - version = "1.0"; src = fetchFromGitHub { owner = "Ripser"; diff --git a/pkgs/applications/science/math/sage/default.nix b/pkgs/applications/science/math/sage/default.nix index 0bbf2cec0dcb..7e62f0cf75ee 100644 --- a/pkgs/applications/science/math/sage/default.nix +++ b/pkgs/applications/science/math/sage/default.nix @@ -8,10 +8,6 @@ let # https://trac.sagemath.org/ticket/15980 for tracking of python3 support python = nixpkgs.python2.override { packageOverrides = self: super: { - cypari2 = super.cypari2.override { inherit pari; }; - - cysignals = super.cysignals.override { inherit pari; }; - # python packages that appear unmaintained and were not accepted into the nixpkgs # tree because of that. These packages are only dependencies of the more-or-less # deprecated sagenb. However sagenb is still a default dependency and the doctests @@ -24,7 +20,7 @@ let pybrial = self.callPackage ./pybrial.nix {}; sagelib = self.callPackage ./sagelib.nix { - inherit flint ecl pari eclib ntl arb; + inherit flint ecl arb; inherit sage-src openblas-blas-pc openblas-cblas-pc openblas-lapack-pc pynac singular; linbox = nixpkgs.linbox.override { withSage = true; }; }; @@ -38,20 +34,20 @@ let }; env-locations = self.callPackage ./env-locations.nix { - inherit pari_data ecl pari; + inherit pari_data ecl; inherit singular; three = nodePackages_8_x.three; mathjax = nodePackages_8_x.mathjax; }; sage-env = self.callPackage ./sage-env.nix { - inherit sage-src python rWrapper openblas-cblas-pc ecl singular eclib pari palp flint pynac pythonEnv giac ntl; + inherit sage-src python rWrapper openblas-cblas-pc ecl singular palp flint pynac pythonEnv; pkg-config = nixpkgs.pkgconfig; # not to confuse with pythonPackages.pkgconfig }; sage-with-env = self.callPackage ./sage-with-env.nix { - inherit pari eclib pythonEnv ntl; - inherit sage-src openblas-blas-pc openblas-cblas-pc openblas-lapack-pc pynac singular giac; + inherit pythonEnv; + inherit sage-src openblas-blas-pc openblas-cblas-pc openblas-lapack-pc pynac singular; pkg-config = nixpkgs.pkgconfig; # not to confuse with pythonPackages.pkgconfig three = nodePackages_8_x.three; }; @@ -106,41 +102,18 @@ let }); }; - # https://trac.sagemath.org/ticket/25532 - ntl = nixpkgs.ntl.overrideAttrs (oldAttrs: rec { - name = "ntl-10.5.0"; - sourceRoot = "${name}/src"; - src = fetchurl { - url = "http://www.shoup.net/ntl/${name}.tar.gz"; - sha256 = "1lmldaldgfr2b2a6585m3np5ds8bq1bis2s1ajycjm49vp4kc2xr"; - }; - }); - - giac = nixpkgs.giac.override { inherit ntl; }; arb = nixpkgs.arb.override { inherit flint; }; - # update causes issues - # https://groups.google.com/forum/#!topic/sage-packaging/cS3v05Q0zso - # https://trac.sagemath.org/ticket/24735 - singular = (nixpkgs.singular.override { inherit ntl flint; }).overrideAttrs (oldAttrs: { - name = "singular-4.1.0p3"; - src = fetchurl { - url = "http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/SOURCES/4-1-0/singular-4.1.0p3.tar.gz"; - sha256 = "105zs3zk46b1cps403ap9423rl48824ap5gyrdgmg8fma34680a4"; - }; - }); + singular = nixpkgs.singular.override { inherit flint; }; # *not* to confuse with the python package "pynac" - # https://trac.sagemath.org/ticket/24838 (depends on arb update) pynac = nixpkgs.pynac.override { inherit singular flint; }; - eclib = nixpkgs.eclib.override { inherit pari ntl; }; - # With openblas (64 bit), the tests fail the same way as when sage is build with # openblas instead of openblasCompat. Apparently other packages somehow use flints # blas when it is available. Alternative would be to override flint to use # openblasCompat. - flint = nixpkgs.flint.override { withBlas = false; inherit ntl; }; + flint = nixpkgs.flint.override { withBlas = false; }; # Multiple palp dimensions need to be available and sage expects them all to be # in the same folder. @@ -165,15 +138,6 @@ let # https://trac.sagemath.org/ticket/22191 ecl = nixpkgs.ecl_16_1_2; - - # sage currently uses an unreleased version of pari - pari = (nixpkgs.pari.override { withThread = false; }).overrideAttrs (attrs: rec { - version = "2.10-1280-g88fb5b3"; # on update remove pari-stackwarn patch from `sage-src.nix` - src = fetchurl { - url = "mirror://sageupstream/pari/pari-${version}.tar.gz"; - sha256 = "19gbsm8jqq3hraanbmsvzkbh88iwlqbckzbnga3y76r7k42akn7m"; - }; - }); in python.pkgs.sage-wrapper // { doc = python.pkgs.sagedoc; diff --git a/pkgs/applications/science/math/sage/patches/arb-2.13.0.patch b/pkgs/applications/science/math/sage/patches/arb-2.13.0.patch deleted file mode 100644 index a20f1670a256..000000000000 --- a/pkgs/applications/science/math/sage/patches/arb-2.13.0.patch +++ /dev/null @@ -1,427 +0,0 @@ -commit c885927e25b29bd23869e02379c2918da430323e -Author: Timo Kaufmann <timokau@zoho.com> -Date: Sat Jun 30 02:26:15 2018 +0200 - -diff --git a/build/pkgs/arb/checksums.ini b/build/pkgs/arb/checksums.ini -index 1924ee03c3..9323b97391 100644 ---- a/build/pkgs/arb/checksums.ini -+++ b/build/pkgs/arb/checksums.ini -@@ -1,4 +1,4 @@ - tarball=arb-VERSION.tar.gz --sha1=27476d0529e48a07d92da90bd0fb80dd18f443e3 --md5=733285d9705d10b8024e551ffa81952f --cksum=2391183744 -+sha1=44eda7bf8eaa666c45b1fc2c1b5bd08756d94b58 -+md5=fa24de9fffe4394fb6a7a6792e2ecc5f -+cksum=3689220688 -diff --git a/build/pkgs/arb/package-version.txt b/build/pkgs/arb/package-version.txt -index c8810e9bdb..fb2c0766b7 100644 ---- a/build/pkgs/arb/package-version.txt -+++ b/build/pkgs/arb/package-version.txt -@@ -1 +1 @@ --2.12.0.p0 -+2.13.0 -diff --git a/build/pkgs/arb/patches/arb-pie-hardening-conflict.patch b/build/pkgs/arb/patches/arb-pie-hardening-conflict.patch -deleted file mode 100644 -index 3e5c0e708b..0000000000 ---- a/build/pkgs/arb/patches/arb-pie-hardening-conflict.patch -+++ /dev/null -@@ -1,17 +0,0 @@ --In newer binutils, ld options -r and -pie conflict. --Patch due to Jörg-Volker Peetz --(source : https://groups.google.com/d/msg/sage-devel/TduebNoZuBE/sEULolL0BQAJ), --packaged by Emmanuel Charpentier -- --diff -ru arb-2.8.1-orig/Makefile.subdirs arb-2.8.1-new/Makefile.subdirs ----- arb-2.8.1-orig/Makefile.subdirs 2015-12-31 17:30:01.000000000 +0100 --+++ arb-2.8.1-new/Makefile.subdirs 2016-11-07 18:50:34.540051779 +0100 --@@ -52,7 +52,7 @@ -- $(QUIET_CC) $(CC) $(CFLAGS) $(INCS) -c $< -o $@ -MMD -MP -MF "$(BUILD_DIR)/$(MOD_DIR)_$*.d" -MT "$(BUILD_DIR)/$(MOD_DIR)_$*.d" -MT "$@" -- -- $(MOD_LOBJ): $(LOBJS) --- $(QUIET_CC) $(CC) $(ABI_FLAG) -Wl,-r $^ -o $@ -nostdlib --+ $(QUIET_CC) $(CC) $(ABI_FLAG) -r $^ -o $@ -nostdlib -- -- -include $(LOBJS:.lo=.d) -- -diff --git a/src/sage/rings/complex_arb.pyx b/src/sage/rings/complex_arb.pyx -index 70d51e655a..00e7caea2c 100644 ---- a/src/sage/rings/complex_arb.pyx -+++ b/src/sage/rings/complex_arb.pyx -@@ -857,14 +857,14 @@ class ComplexBallField(UniqueRepresentation, Field): - [0.500000000000000 +/- 2.09e-16] - - sage: CBF.integral(lambda x, _: x.gamma(), 1 - CBF(i), 1 + CBF(i)) -- [+/- 3.95e-15] + [1.5723926694981 +/- 4.53e-14]*I -+ [+/- 4...e-15] + [1.5723926694981 +/- 4...e-14]*I - - sage: C = ComplexBallField(100) - sage: C.integral(lambda x, _: x.cos() * x.sin(), 0, 1) - [0.35403670913678559674939205737 +/- 8.89e-30] - - sage: CBF.integral(lambda x, _: (x + x.exp()).sin(), 0, 8) -- [0.34740017266 +/- 6.36e-12] -+ [0.34740017266 +/- 6...e-12] - - sage: C = ComplexBallField(2000) - sage: C.integral(lambda x, _: (x + x.exp()).sin(), 0, 8) # long time -@@ -879,14 +879,14 @@ class ComplexBallField(UniqueRepresentation, Field): - ....: else: - ....: return z.sqrt() - sage: CBF.integral(my_sqrt, -1 + CBF(i), -1 - CBF(i)) -- [+/- 1.14e-14] + [-0.4752076627926 +/- 5.18e-14]*I -+ [+/- 1.14e-14] + [-0.4752076627926 +/- 5...e-14]*I - - Note, though, that proper handling of the ``analytic`` flag is required - even when the path does not touch the branch cut:: - - sage: correct = CBF.integral(my_sqrt, 1, 2); correct - [1.21895141649746 +/- 3.73e-15] -- sage: RBF(integral(sqrt(x), x, 1, 2)) -+ sage: RBF(integral(sqrt(x), x, 1, 2)) # long time - [1.21895141649746 +/- 1.79e-15] - sage: wrong = CBF.integral(lambda z, _: z.sqrt(), 1, 2) # WRONG! - sage: correct - wrong -@@ -915,9 +915,9 @@ class ComplexBallField(UniqueRepresentation, Field): - the integrand is unbounded:: - - sage: CBF.integral(lambda x, _: 1/x, -1, 1) -- [+/- inf] + [+/- inf]*I -+ nan + nan*I - sage: CBF.integral(lambda x, _: 1/x, 10^-1000, 1) -- [+/- inf] + [+/- inf]*I -+ nan + nan*I - sage: CBF.integral(lambda x, _: 1/x, 10^-1000, 1, abs_tol=1e-10) - [2302.5850930 +/- 1.26e-8] - -@@ -928,14 +928,15 @@ class ComplexBallField(UniqueRepresentation, Field): - sage: CBF.integral(lambda x, _: x.exp(), -1020, -1010, abs_tol=1e-450) - [2.304377150950e-439 +/- 9.74e-452] - sage: CBF.integral(lambda x, _: x.exp(), -1020, -1010, abs_tol=0) -- [2.304377150949e-439 +/- 7.53e-452] -- sage: CBF.integral(lambda x, _: x.exp(), -1020, -1010, rel_tol=1e-4, abs_tol=0) -- [2.30438e-439 +/- 3.90e-445] -+ [2.304377150950e-439 +/- 7...e-452] -+ sage: CBF.integral(lambda x, _: x.exp(), -1020, -1010, rel_tol=1e-2, abs_tol=0) -+ [2.30438e-439 +/- 5.94e-445] - -- sage: CBF.integral(lambda x, _: x*(1/x).sin(), 0, 1) -- [+/- 0.644] -- sage: CBF.integral(lambda x, _: x*(1/x).sin(), 0, 1, use_heap=True) -- [0.3785300 +/- 4.32e-8] -+ sage: epsi = CBF(1e-10) -+ sage: CBF.integral(lambda x, _: x*(1/x).sin(), epsi, 1) -+ [0.38 +/- 8.54e-3] -+ sage: CBF.integral(lambda x, _: x*(1/x).sin(), epsi, 1, use_heap=True) -+ [0.37853002 +/- 8.73e-9] - - ALGORITHM: - -@@ -951,12 +952,12 @@ class ComplexBallField(UniqueRepresentation, Field): - - sage: i = QuadraticField(-1).gen() - sage: CBF.integral(lambda x, _: (1 + i*x).gamma(), -1, 1) -- [1.5723926694981 +/- 4.53e-14] + [+/- 3.95e-15]*I -+ [1.5723926694981 +/- 4...e-14] + [+/- 4...e-15]*I - -- sage: ComplexBallField(10000).integral(lambda x, _: x.sin(), 0, 1, rel_tol=1e-400) -- [0.459... +/- ...e-4...] -+ sage: ComplexBallField(10000).integral(lambda x, _: x.sin(), 0, 1, rel_tol=1e-300) -+ [0.459... +/- ...e-3...] - sage: CBF.integral(lambda x, _: x.sin(), 0, 100, rel_tol=10) -- [+/- 7.61] -+ [0.138 +/- 5.53e-4] - - sage: ComplexBallField(10000).integral(lambda x, _: x.sin(), 0, 1, abs_tol=1e-400) - [0.459697... +/- ...e-4...] -@@ -2389,9 +2390,9 @@ cdef class ComplexBall(RingElement): - sage: ~CBF(i/3) - [-3.00000000000000 +/- 9.44e-16]*I - sage: ~CBF(0) -- [+/- inf] -+ nan - sage: ~CBF(RIF(10,11)) -- [0.1 +/- 9.53e-3] -+ [0.1 +/- 9.10e-3] - """ - cdef ComplexBall res = self._new() - if _do_sig(prec(self)): sig_on() -@@ -2512,9 +2513,9 @@ cdef class ComplexBall(RingElement): - sage: CBF(-2, 1)/CBF(1, 1/3) - [-1.500000000000000 +/- 8.83e-16] + [1.500000000000000 +/- 5.64e-16]*I - sage: CBF(2+I)/CBF(0) -- [+/- inf] + [+/- inf]*I -+ nan + nan*I - sage: CBF(1)/CBF(0) -- [+/- inf] -+ nan - sage: CBF(1)/CBF(RBF(0, 1.)) - nan - """ -@@ -2543,9 +2544,9 @@ cdef class ComplexBall(RingElement): - sage: CBF(0)^(1/3) - 0 - sage: CBF(0)^(-1) -- [+/- inf] -+ nan - sage: CBF(0)^(-2) -- [+/- inf] + [+/- inf]*I -+ nan + nan*I - - TESTS:: - -@@ -2656,12 +2657,12 @@ cdef class ComplexBall(RingElement): - sage: CBF(1).rising_factorial(5) - 120.0000000000000 - sage: CBF(1/3, 1/2).rising_factorial(300) -- [-3.87949484514e+612 +/- 5.23e+600] + [-3.52042209763e+612 +/- 5.55e+600]*I -+ [-3.87949484514e+612 +/- 5...e+600] + [-3.52042209763e+612 +/- 5...e+600]*I - - sage: CBF(1).rising_factorial(-1) - nan - sage: CBF(1).rising_factorial(2**64) -- [+/- 2.30e+347382171305201370464] -+ [+/- 2.30e+347382171326740403407] - sage: ComplexBallField(128)(1).rising_factorial(2**64) - [2.343691126796861348e+347382171305201285713 +/- 4.71e+347382171305201285694] - sage: CBF(1/2).rising_factorial(CBF(2,3)) -@@ -2700,7 +2701,7 @@ cdef class ComplexBall(RingElement): - [1.000000000000000 +/- 2.83e-16] + [-0.441271200305303 +/- 2.82e-16]*I - - sage: CBF('inf').log() -- nan + nan*I -+ [+/- inf] - sage: CBF(2).log(0) - nan + nan*I - """ -@@ -2808,7 +2809,7 @@ cdef class ComplexBall(RingElement): - sage: CBF(pi/2, 1/10).tan() - [+/- 2.87e-14] + [10.0333111322540 +/- 2.36e-14]*I - sage: CBF(pi/2).tan() -- [+/- inf] -+ nan - """ - cdef ComplexBall res = self._new() - if _do_sig(prec(self)): sig_on() -@@ -2825,7 +2826,7 @@ cdef class ComplexBall(RingElement): - sage: CBF(pi, 1/10).cot() - [+/- 5.74e-14] + [-10.0333111322540 +/- 2.81e-14]*I - sage: CBF(pi).cot() -- [+/- inf] -+ nan - """ - cdef ComplexBall res = self._new() - if _do_sig(prec(self)): sig_on() -@@ -3211,9 +3212,9 @@ cdef class ComplexBall(RingElement): - 1.000000000000000*I - - sage: CBF(2+3*I).hypergeometric([1/4,1/3],[1/2]) -- [0.7871684267473 +/- 7.34e-14] + [0.2749254173721 +/- 9.23e-14]*I -+ [0.7871684267473 +/- 7...e-14] + [0.2749254173721 +/- 9...e-14]*I - sage: CBF(2+3*I).hypergeometric([1/4,1/3],[1/2],regularized=True) -- [0.4441122268685 +/- 3.96e-14] + [0.1551100567338 +/- 5.75e-14]*I -+ [0.4441122268685 +/- 3...e-14] + [0.1551100567338 +/- 5...e-14]*I - - sage: CBF(5).hypergeometric([2,3], [-5]) - nan + nan*I -@@ -4041,9 +4042,9 @@ cdef class ComplexBall(RingElement): - - sage: phi = CBF(1,1) - sage: (CBF.pi()/2).elliptic_e_inc(phi) -- [1.283840957898 +/- 3.23e-13] + [-0.5317843366915 +/- 7.79e-14]*I -+ [1.283840957898 +/- 3...e-13] + [-0.5317843366915 +/- 7...e-14]*I - sage: phi.elliptic_e() -- [1.2838409578982 +/- 5.90e-14] + [-0.5317843366915 +/- 3.35e-14]*I -+ [1.2838409578982 +/- 5...e-14] + [-0.5317843366915 +/- 3...e-14]*I - - sage: phi = CBF(2, 3/7) - sage: (CBF.pi()/2).elliptic_e_inc(phi) -@@ -4312,8 +4313,7 @@ cdef class ComplexBall(RingElement): - sage: CBF(10).laguerre_L(3, 2) - [-6.666666666667 +/- 4.15e-13] - sage: CBF(5,7).laguerre_L(CBF(2,3), CBF(1,-2)) -- [5515.315030271 +/- 4.37e-10] + [-12386.942845271 +/- 5.47e-10]*I -- -+ [5515.315030271 +/- 4...e-10] + [-12386.942845271 +/- 5...e-10]*I - """ - cdef ComplexBall my_n = self._parent.coerce(n) - cdef ComplexBall my_m = self._parent.coerce(m) -@@ -4357,9 +4357,9 @@ cdef class ComplexBall(RingElement): - EXAMPLES:: - - sage: CBF(1/2).legendre_P(5) -- [0.08984375000000000 +/- 4.5...e-18] -+ [0.0898437500000000 +/- 7...e-17] - sage: CBF(1,2).legendre_P(CBF(2,3), CBF(0,1)) -- [0.10996180744364 +/- 7.45e-15] + [0.14312767804055 +/- 8.38e-15]*I -+ [0.10996180744364 +/- 7.12e-15] + [0.14312767804055 +/- 8.07e-15]*I - sage: CBF(-10).legendre_P(5, 325/100) - [-22104403.487377 +/- 6.81e-7] + [53364750.687392 +/- 7.25e-7]*I - sage: CBF(-10).legendre_P(5, 325/100, type=3) -@@ -4393,9 +4393,9 @@ cdef class ComplexBall(RingElement): - sage: CBF(1/2).legendre_Q(5) - [0.55508089057168 +/- 2.79e-15] - sage: CBF(1,2).legendre_Q(CBF(2,3), CBF(0,1)) -- [0.167678710 +/- 4.60e-10] + [-0.161558598 +/- 7.47e-10]*I -+ [0.167678710 +/- 3.91e-10] + [-0.161558598 +/- 6.77e-10]*I - sage: CBF(-10).legendre_Q(5, 325/100) -- [-83825154.36008 +/- 4.94e-6] + [-34721515.80396 +/- 5.40e-6]*I -+ [-83825154.36008 +/- 5.02e-6] + [-34721515.80396 +/- 5.42e-6]*I - sage: CBF(-10).legendre_Q(5, 325/100, type=3) - [-4.797306921692e-6 +/- 6.82e-19] + [-4.797306921692e-6 +/- 6.57e-19]*I - -diff --git a/src/sage/rings/polynomial/polynomial_complex_arb.pyx b/src/sage/rings/polynomial/polynomial_complex_arb.pyx -index c436d4705b..ef611a566b 100644 ---- a/src/sage/rings/polynomial/polynomial_complex_arb.pyx -+++ b/src/sage/rings/polynomial/polynomial_complex_arb.pyx -@@ -543,7 +543,7 @@ cdef class Polynomial_complex_arb(Polynomial): - sage: (1 - x/3).inverse_series_trunc(3) - ([0.1111111111111111 +/- 5.99e-17])*x^2 + ([0.3333333333333333 +/- 7.04e-17])*x + 1.000000000000000 - sage: x.inverse_series_trunc(1) -- [+/- inf] -+ nan - sage: Pol(0).inverse_series_trunc(2) - (nan + nan*I)*x + nan + nan*I - -@@ -671,7 +671,7 @@ cdef class Polynomial_complex_arb(Polynomial): - sage: pol._sqrt_series(2) - ([+/- 7.51e-3] + [+/- 0.501]*I)*x + [+/- 5.01e-3] + [+/- 1.01]*I - sage: x._sqrt_series(2) -- ([+/- inf] + [+/- inf]*I)*x -+ (nan + nan*I)*x - """ - cdef Polynomial_complex_arb res = self._new() - if n < 0: -diff --git a/src/sage/rings/real_arb.pyx b/src/sage/rings/real_arb.pyx -index c9f68e38d7..76e3037a9a 100644 ---- a/src/sage/rings/real_arb.pyx -+++ b/src/sage/rings/real_arb.pyx -@@ -161,7 +161,7 @@ values and should be preferred:: - - sage: RBF(NaN) < RBF(infinity) - False -- sage: 1/RBF(0) <= RBF(infinity) -+ sage: RBF(0).add_error(infinity) <= RBF(infinity) - True - - TESTS:: -@@ -252,6 +252,8 @@ cdef void mpfi_to_arb(arb_t target, const mpfi_t source, const long precision): - (+infinity, +infinity) - sage: RBF(RIF(-infinity)).endpoints() - (-infinity, -infinity) -+ sage: RBF(RIF(-infinity, infinity)).endpoints() -+ (-infinity, +infinity) - sage: RIF(RBF(infinity)).endpoints() - (+infinity, +infinity) - sage: RIF(RBF(-infinity)).endpoints() -@@ -266,10 +268,11 @@ cdef void mpfi_to_arb(arb_t target, const mpfi_t source, const long precision): - if _do_sig(precision): sig_on() - mpfi_get_left(left, source) - mpfi_get_right(right, source) -- arb_set_interval_mpfr(target, left, right, precision) -- # Work around weakness of arb_set_interval_mpfr(tgt, inf, inf) -- if mpfr_equal_p(left, right): -- mag_zero(arb_radref(target)) -+ if mpfr_inf_p(left) and mpfr_inf_p(right) and mpfr_sgn(left) < 0 < mpfr_sgn(right): -+ # Work around a weakness of arb_set_interval_mpfr(tgt, -inf, inf) -+ arb_zero_pm_inf(target) -+ else: -+ arb_set_interval_mpfr(target, left, right, precision) - if _do_sig(precision): sig_off() - - mpfr_clear(left) -@@ -649,17 +652,15 @@ class RealBallField(UniqueRepresentation, Field): - EXAMPLES:: - - sage: RBF.some_elements() -- [1.000000000000000, -- [0.3333333333333333 +/- 7.04e-17], -+ [0, 1.000000000000000, [0.3333333333333333 +/- 7.04e-17], - [-4.733045976388941e+363922934236666733021124 +/- 3.46e+363922934236666733021108], -- [+/- inf], -- [+/- inf], -- nan] -+ [+/- inf], [+/- inf], [+/- inf], nan] - """ - import sage.symbolic.constants -- return [self(1), self(1)/3, -+ inf = self(sage.rings.infinity.Infinity) -+ return [self(0), self(1), self(1)/3, - -self(2)**(Integer(2)**80), -- self(sage.rings.infinity.Infinity), ~self(0), -+ inf, -inf, self.zero().add_error(inf), - self.element_class(self, sage.symbolic.constants.NotANumber())] - - def _sum_of_products(self, terms): -@@ -881,7 +882,7 @@ class RealBallField(UniqueRepresentation, Field): - sage: RBF.gamma(5) - 24.00000000000000 - sage: RBF.gamma(10**20) -- [+/- 5.92e+1956570551809674821757] -+ [+/- 5.50e+1956570552410610660600] - sage: RBF.gamma(1/3) - [2.678938534707747 +/- 8.99e-16] - sage: RBF.gamma(-5) -@@ -2247,7 +2248,7 @@ cdef class RealBall(RingElement): - sage: inf = RBF(+infinity) - sage: other_inf = RBF(+infinity, 42.r) - sage: neg_inf = RBF(-infinity) -- sage: extended_line = 1/RBF(0) -+ sage: extended_line = RBF(0).add_error(infinity) - sage: exact_nan = inf - inf - sage: exact_nan.mid(), exact_nan.rad() - (NaN, 0.00000000) -@@ -2659,7 +2660,7 @@ cdef class RealBall(RingElement): - sage: ~RBF(5) - [0.2000000000000000 +/- 4.45e-17] - sage: ~RBF(0) -- [+/- inf] -+ nan - sage: RBF(RIF(-0.1,0.1)) - [+/- 0.101] - -@@ -2739,7 +2740,7 @@ cdef class RealBall(RingElement): - sage: RBF(pi)/RBF(e) - [1.155727349790922 +/- 8.43e-16] - sage: RBF(2)/RBF(0) -- [+/- inf] -+ nan - """ - cdef RealBall res = self._new() - if _do_sig(prec(self)): sig_on() -@@ -2765,7 +2766,7 @@ cdef class RealBall(RingElement): - sage: RBF(-1)^(1/3) - nan - sage: RBF(0)^(-1) -- [+/- inf] -+ nan - sage: RBF(-e)**RBF(pi) - nan - -@@ -3129,7 +3130,7 @@ cdef class RealBall(RingElement): - sage: RBF(1).tan() - [1.557407724654902 +/- 3.26e-16] - sage: RBF(pi/2).tan() -- [+/- inf] -+ nan - """ - cdef RealBall res = self._new() - if _do_sig(prec(self)): sig_on() -@@ -3146,7 +3147,7 @@ cdef class RealBall(RingElement): - sage: RBF(1).cot() - [0.642092615934331 +/- 4.79e-16] - sage: RBF(pi).cot() -- [+/- inf] -+ nan - """ - cdef RealBall res = self._new() - if _do_sig(prec(self)): sig_on() -@@ -3257,7 +3258,7 @@ cdef class RealBall(RingElement): - sage: RBF(1).coth() - [1.313035285499331 +/- 4.97e-16] - sage: RBF(0).coth() -- [+/- inf] -+ nan - """ - cdef RealBall res = self._new() - if _do_sig(prec(self)): sig_on() diff --git a/pkgs/applications/science/math/sage/patches/known-padics-bug.patch b/pkgs/applications/science/math/sage/patches/known-padics-bug.patch new file mode 100644 index 000000000000..bdccd73e0ce1 --- /dev/null +++ b/pkgs/applications/science/math/sage/patches/known-padics-bug.patch @@ -0,0 +1,15 @@ +diff --git a/build/pkgs/openblas/package-version.txt b/build/pkgs/openblas/package-version.txt +index 3bc45c25d4..7c7c224887 100644 +--- a/src/sage/schemes/elliptic_curves/padics.py ++++ b/src/sage/schemes/elliptic_curves/padics.py +@@ -292,8 +292,8 @@ def padic_regulator(self, p, prec=20, height=None, check_hypotheses=True): + + sage: max_prec = 30 # make sure we get past p^2 # long time + sage: full = E.padic_regulator(5, max_prec) # long time +- sage: for prec in range(1, max_prec): # long time +- ....: assert E.padic_regulator(5, prec) == full # long time ++ sage: for prec in range(1, max_prec): # known bug (#25969) # long time ++ ....: assert E.padic_regulator(5, prec) == full # known bug (#25969) # long time + + A case where the generator belongs to the formal group already + (:trac:`3632`):: diff --git a/pkgs/applications/science/math/sage/patches/maxima-5.41.0-doctests.patch b/pkgs/applications/science/math/sage/patches/maxima-5.41.0-doctests.patch deleted file mode 100644 index fad434e52ada..000000000000 --- a/pkgs/applications/science/math/sage/patches/maxima-5.41.0-doctests.patch +++ /dev/null @@ -1,48 +0,0 @@ -diff --git a/src/sage/interfaces/maxima_abstract.py b/src/sage/interfaces/maxima_abstract.py -index 961c20aaac..3d601d8939 100644 ---- a/src/sage/interfaces/maxima_abstract.py -+++ b/src/sage/interfaces/maxima_abstract.py -@@ -1743,7 +1743,7 @@ class MaximaAbstractElement(ExtraTabCompletion, InterfaceElement): - sage: y,d = var('y,d') - sage: f = function('f') - sage: latex(maxima(derivative(f(x*y), x))) -- \left(\left.{{{\it \partial}}\over{{\it \partial}\, {\it t_0}}}\,f\left({\it t_0}\right) \right|_{{\it t_0}={\it x}\, {\it y}}\right)\,{\it y} -+ \left(\left.{{{\it \partial}}\over{{\it \partial}\, {\it t}_{0}}}\,f\left({\it t}_{0}\right) \right|_{{\it t}_{0}={\it x}\, {\it y}}\right)\,{\it y} - sage: latex(maxima(derivative(f(x,y,d), d,x,x,y))) - {{{\it \partial}^4}\over{{\it \partial}\,{\it d}\, {\it \partial}\,{\it x}^2\,{\it \partial}\, {\it y}}}\,f\left({\it x} , {\it y} , {\it d}\right) - sage: latex(maxima(d/(d-2))) -diff --git a/src/sage/manifolds/differentiable/metric.py b/src/sage/manifolds/differentiable/metric.py -index 3cd6ad3235..1e18af1a6b 100644 ---- a/src/sage/manifolds/differentiable/metric.py -+++ b/src/sage/manifolds/differentiable/metric.py -@@ -993,7 +993,7 @@ class PseudoRiemannianMetric(TensorField): - 2-dimensional differentiable manifold S^2 - sage: g.riemann()[:] - [[[[0, 0], [0, 0]], [[0, sin(th)^2], [-sin(th)^2, 0]]], -- [[[0, (cos(th)^2 - 1)/sin(th)^2], [1, 0]], [[0, 0], [0, 0]]]] -+ [[[0, -1], [1, 0]], [[0, 0], [0, 0]]]] - - In dimension 2, the Riemann tensor can be expressed entirely in terms of - the Ricci scalar `r`: -diff --git a/src/sage/symbolic/expression.pyx b/src/sage/symbolic/expression.pyx -index dfb8751467..27402e54ab 100644 ---- a/src/sage/symbolic/expression.pyx -+++ b/src/sage/symbolic/expression.pyx -@@ -7154,7 +7154,7 @@ cdef class Expression(CommutativeRingElement): - sage: ex = lcm(sin(x)^2 - 1, sin(x)^2 + sin(x)); ex - (sin(x)^2 + sin(x))*(sin(x)^2 - 1)/(sin(x) + 1) - sage: ex.simplify_full() -- -cos(x)^2*sin(x) -+ sin(x)^3 - sin(x) - - TESTS: - -@@ -10004,7 +10004,7 @@ cdef class Expression(CommutativeRingElement): - - sage: f=tan(3*x) - sage: f.simplify_trig() -- (4*cos(x)^2 - 1)*sin(x)/(4*cos(x)^3 - 3*cos(x)) -+ -(4*cos(x)^2 - 1)*sin(x)/(4*cos(x)*sin(x)^2 - cos(x)) - sage: f.simplify_trig(False) - sin(3*x)/cos(3*x) - diff --git a/pkgs/applications/science/math/sage/patches/pari-no-threads.patch b/pkgs/applications/science/math/sage/patches/pari-no-threads.patch new file mode 100644 index 000000000000..13b47dbdd31b --- /dev/null +++ b/pkgs/applications/science/math/sage/patches/pari-no-threads.patch @@ -0,0 +1,18 @@ +diff --git a/src/sage/libs/pari/__init__.py b/src/sage/libs/pari/__init__.py +index e451766474..77eda66097 100644 +--- a/src/sage/libs/pari/__init__.py ++++ b/src/sage/libs/pari/__init__.py +@@ -205,6 +205,13 @@ def _get_pari_instance(): + # messages in Sage. + P.default("debugmem", 0) + ++ # Make sure pari doesn't use threads, regardless of how it was compiled. ++ # Threads cause some doctest failures (memory issues). Those could probably ++ # be solved without disabling threads. But that would require figuring out ++ # some sensible values for `threadsizemax`. See ++ # https://pari.math.u-bordeaux.fr/dochtml/html/GP_defaults.html ++ P.default("nbthreads", 1) ++ + return P + + pari = _get_pari_instance() diff --git a/pkgs/applications/science/math/sage/patches/pynac-0.7.22.patch b/pkgs/applications/science/math/sage/patches/pynac-0.7.22.patch deleted file mode 100644 index 22f274d608d4..000000000000 --- a/pkgs/applications/science/math/sage/patches/pynac-0.7.22.patch +++ /dev/null @@ -1,479 +0,0 @@ -diff --git a/src/sage/calculus/calculus.py b/src/sage/calculus/calculus.py -index 3a417d9d5c..fadaadbaf6 100644 ---- a/src/sage/calculus/calculus.py -+++ b/src/sage/calculus/calculus.py -@@ -231,7 +231,7 @@ Another example:: - sage: f(x=3) - arcsinh(1) - sage: f.derivative(x) -- 1/3/sqrt(1/9*x^2 + 1) -+ 1/sqrt(x^2 + 9) - - We compute the length of the parabola from 0 to 2:: - -@@ -1509,8 +1509,8 @@ def laplace(ex, t, s, algorithm='maxima'): - Testing SymPy:: - - sage: laplace(t^n, t, s, algorithm='sympy') -- (s^(-n)*gamma(n + 1)/s, 0, -re(n) < 1) -- -+ (gamma(n + 1)/(s*s^n), 0, -re(n) < 1) -+ - Testing Maxima:: - - sage: laplace(t^n, t, s, algorithm='maxima') -diff --git a/src/sage/functions/hypergeometric.py b/src/sage/functions/hypergeometric.py -index 1fc2db5c94..f3e49b9cdb 100644 ---- a/src/sage/functions/hypergeometric.py -+++ b/src/sage/functions/hypergeometric.py -@@ -34,7 +34,7 @@ Simplification (note that ``simplify_full`` does not yet call - sage: a.simplify_hypergeometric() - 1/((-e^x + 1)^e^x) - sage: a.simplify_hypergeometric(algorithm='sage') -- (-e^x + 1)^(-e^x) -+ 1/((-e^x + 1)^e^x) - - Equality testing:: - -@@ -145,7 +145,7 @@ Series expansions of confluent hypergeometric functions:: - - sage: hypergeometric_M(2, 2, x).series(x, 3) - 1 + 1*x + 1/2*x^2 + Order(x^3) -- sage: hypergeometric_U(2, 2, x).series(x == 3, 100).subs(x=1).n() -+ sage: hypergeometric_U(2, 2, x).series(x == 3, 100).subs(x=1).n() # known bug (see :trac:`25688`) - 0.403652637676806 - sage: hypergeometric_U(2, 2, 1).n() - 0.403652637676806 -@@ -773,7 +773,7 @@ def closed_form(hyp): - sage: closed_form(hypergeometric([], [], z)) - e^z - sage: closed_form(hypergeometric([a], [], z)) -- (-z + 1)^(-a) -+ 1/((-z + 1)^a) - sage: closed_form(hypergeometric([1, 1, 2], [1, 1], z)) - (z - 1)^(-2) - sage: closed_form(hypergeometric([2, 3], [1], x)) -@@ -1121,7 +1121,7 @@ class Hypergeometric_U(BuiltinFunction): - sage: var('a b z') - (a, b, z) - sage: hypergeometric_U(a, b, z).generalized() -- z^(-a)*hypergeometric((a, a - b + 1), (), -1/z) -+ hypergeometric((a, a - b + 1), (), -1/z)/z^a - sage: hypergeometric_U(1, 3, 1/2).generalized() - 2*hypergeometric((1, -1), (), -2) - sage: hypergeometric_U(3, I, 2).generalized() -diff --git a/src/sage/functions/log.py b/src/sage/functions/log.py -index 75d1bf8060..61968582af 100644 ---- a/src/sage/functions/log.py -+++ b/src/sage/functions/log.py -@@ -518,17 +518,17 @@ class Function_polylog(GinacFunction): - - sage: BF = RealBallField(100) - sage: polylog(2, BF(1/3)) -- [0.36621322997706348761674629766 +/- 4.51e-30] -+ [0.36621322997706348761674629766... +/- ...] - sage: polylog(2, BF(4/3)) -- nan -+ [2.27001825336107090380391448586 +/- 5.64e-30] + [-0.90377988538400159956755721265 +/- 8.39e-30]*I - sage: parent(_) -- Real ball field with 100 bits of precision -+ Complex ball field with 100 bits of precision - sage: polylog(2, CBF(1/3)) -- [0.366213229977063 +/- 5.85e-16] -+ [0.366213229977063 +/- ...] - sage: parent(_) - Complex ball field with 53 bits of precision - sage: polylog(2, CBF(1)) -- [1.644934066848226 +/- 6.59e-16] -+ [1.644934066848226 +/- ...] - sage: parent(_) - Complex ball field with 53 bits of precision - """ -diff --git a/src/sage/functions/trig.py b/src/sage/functions/trig.py -index e7e7a311cd..1f2926d6c9 100644 ---- a/src/sage/functions/trig.py -+++ b/src/sage/functions/trig.py -@@ -529,13 +529,8 @@ class Function_arcsin(GinacFunction): - arcsin - sage: asin(complex(1,1)) - (0.6662394324925152+1.0612750619050357j) -- -- Check that :trac:`22823` is fixed:: -- -- sage: bool(asin(SR(2.1)) == NaN) -- True -- sage: asin(SR(2.1)).is_real() -- False -+ sage: asin(SR(2.1)) -+ 1.57079632679490 - 1.37285914424258*I - """ - GinacFunction.__init__(self, 'arcsin', latex_name=r"\arcsin", - conversions=dict(maxima='asin', sympy='asin', fricas="asin", giac="asin")) -@@ -595,13 +590,8 @@ class Function_arccos(GinacFunction): - arccos - sage: acos(complex(1,1)) - (0.9045568943023814-1.0612750619050357j) -- -- Check that :trac:`22823` is fixed:: -- -- sage: bool(acos(SR(2.1)) == NaN) -- True -- sage: acos(SR(2.1)).is_real() -- False -+ sage: acos(SR(2.1)) -+ 1.37285914424258*I - """ - GinacFunction.__init__(self, 'arccos', latex_name=r"\arccos", - conversions=dict(maxima='acos', sympy='acos', fricas='acos', giac='acos')) -@@ -807,7 +797,7 @@ class Function_arcsec(GinacFunction): - sage: arcsec(2).n(100) - 1.0471975511965977461542144611 - sage: arcsec(1/2).n(100) -- NaN -+ 1.3169578969248167086250463473*I - sage: RDF(arcsec(2)) # abs tol 1e-15 - 1.0471975511965976 - sage: arcsec(1 + I) -@@ -958,7 +948,9 @@ class Function_arctan2(GinacFunction): - sage: atan2(0,0,hold=True) - arctan2(0, 0) - sage: atan2(0,0,hold=True).n() -- NaN -+ Traceback (most recent call last): -+ ... -+ RuntimeError: atan2(): division by zero - - Check if :trac:`10062` is fixed, this was caused by - ``(I*I).is_positive()`` returning ``True``:: -diff --git a/src/sage/geometry/hyperbolic_space/hyperbolic_geodesic.py b/src/sage/geometry/hyperbolic_space/hyperbolic_geodesic.py -index 3b5c8d1729..1c6b73a16c 100644 ---- a/src/sage/geometry/hyperbolic_space/hyperbolic_geodesic.py -+++ b/src/sage/geometry/hyperbolic_space/hyperbolic_geodesic.py -@@ -1422,8 +1422,10 @@ class HyperbolicGeodesicUHP(HyperbolicGeodesic): - expressions do not generate runtime errors. :: - - sage: g=HyperbolicPlane().UHP().get_geodesic(-1+I,1+I) -- sage: g.midpoint() -- Point in UHP 1/2*(sqrt(2)*e^(1/2*arccosh(3)) - sqrt(2) + (I - 1)*e^(1/2*arccosh(3)) + I - 1)/((1/4*I - 1/4)*sqrt(2)*e^(1/2*arccosh(3)) - (1/4*I - 1/4)*sqrt(2) + 1/2*e^(1/2*arccosh(3)) + 1/2) -+ sage: point = g.midpoint(); point -+ Point in UHP -1/2*(sqrt(2)*... -+ sage: QQbar(point.coordinates()).radical_expression() -+ I*sqrt(2) - - Check that floating points remain floating points - in :meth:`midpoint` :: -diff --git a/src/sage/interfaces/fricas.py b/src/sage/interfaces/fricas.py -index 82aae78e37..8501ea2a18 100644 ---- a/src/sage/interfaces/fricas.py -+++ b/src/sage/interfaces/fricas.py -@@ -1084,14 +1084,14 @@ class FriCASElement(ExpectElement): - 0.451026811796262, - 0.732815101786507, - 0.837981225008390, -- NaN, -- NaN, -+ 1.57079632679490 - 0.467145308103262*I, -+ 0.467145308103262*I, - 1.11976951499863, - 0.451026811796262, - 0.732815101786507, - 0.837981225008390, -- NaN, -- NaN] -+ 1.57079632679490 - 0.467145308103262*I, -+ 0.467145308103262*I] - sage: l = [tanh, sinh, cosh, coth, sech, csch, asinh, acosh, atanh, acoth, asech, acsch, arcsinh, arccosh, arctanh, arccoth, arcsech, arccsch] - sage: [f(x)._fricas_().sage().subs(x=0.9) for f in l] # optional - fricas - [0.716297870199024, -diff --git a/src/sage/libs/pynac/pynac.pyx b/src/sage/libs/pynac/pynac.pyx -index 9e9d8f664b..e3406f007e 100644 ---- a/src/sage/libs/pynac/pynac.pyx -+++ b/src/sage/libs/pynac/pynac.pyx -@@ -1824,7 +1824,7 @@ cdef py_atan2(x, y): - sage: atan2(CC(I), CC(I+1)) - 0.553574358897045 + 0.402359478108525*I - sage: atan2(CBF(I), CBF(I+1)) -- [0.55357435889705 +/- 5.58e-15] + [0.402359478108525 +/- 7.11e-16]*I -+ [0.55357435889705 +/- ...] + [0.402359478108525 +/- ...]*I - - Check that :trac:`23776` is fixed and RDF input gives real output:: - -diff --git a/src/sage/matrix/matrix_symbolic_dense.pyx b/src/sage/matrix/matrix_symbolic_dense.pyx -index 46a15e53eb..7a0beb437b 100644 ---- a/src/sage/matrix/matrix_symbolic_dense.pyx -+++ b/src/sage/matrix/matrix_symbolic_dense.pyx -@@ -200,7 +200,7 @@ cdef class Matrix_symbolic_dense(Matrix_generic_dense): - sage: eval, [evec], mult = es[0] - sage: delta = eval*evec - evec*A - sage: abs(abs(delta)) < 1e-10 -- sqrt(9/25*((2*sqrt(6) - 3)*(sqrt(6) - 2) + 7*sqrt(6) - 18)^2 + 9/25*((sqrt(6) - 2)*(sqrt(6) - 4) + 6*sqrt(6) - 14)^2) < (1.00000000000000e-10) -+ 3/5*sqrt(((2*sqrt(6) - 3)*(sqrt(6) - 2) + 7*sqrt(6) - 18)^2 + ((sqrt(6) - 2)*(sqrt(6) - 4) + 6*sqrt(6) - 14)^2) < (1.00000000000000e-10) - sage: abs(abs(delta)).n() < 1e-10 - True - -diff --git a/src/sage/modules/matrix_morphism.py b/src/sage/modules/matrix_morphism.py -index 17a1d6e290..03892ceec0 100644 ---- a/src/sage/modules/matrix_morphism.py -+++ b/src/sage/modules/matrix_morphism.py -@@ -214,9 +214,9 @@ class MatrixMorphism_abstract(sage.categories.morphism.Morphism): - sage: f((1, 0)) - Traceback (most recent call last): - ... -- TypeError: Unable to coerce entries (=[1.00000000000000*I, 0.000000000000000]) to coefficients in Real Field with 53 bits of precision -+ TypeError: Unable to coerce entries (=[1.00000000000000*I, 0]) to coefficients in Real Field with 53 bits of precision - sage: f((1, 0), coerce=False) -- (1.00000000000000*I, 0.000000000000000) -+ (1.00000000000000*I, 0) - - """ - if self.domain().is_ambient(): -diff --git a/src/sage/plot/plot.py b/src/sage/plot/plot.py -index 77cdeb8c46..e501e74036 100644 ---- a/src/sage/plot/plot.py -+++ b/src/sage/plot/plot.py -@@ -2061,7 +2061,7 @@ def _plot(funcs, xrange, parametric=False, - plot properly (:trac:`13246`):: - - sage: parametric_plot((x, arcsec(x)), (x, -2, 2)) -- Graphics object consisting of 1 graphics primitive -+ Graphics object consisting of 2 graphics primitives - - """ - from sage.plot.colors import Color -diff --git a/src/sage/repl/display/formatter.py b/src/sage/repl/display/formatter.py -index 8ce2e839d7..948207c95e 100644 ---- a/src/sage/repl/display/formatter.py -+++ b/src/sage/repl/display/formatter.py -@@ -25,11 +25,11 @@ generally, all sage expression as an ASCII art object:: - sage: shell = get_test_shell() - sage: shell.run_cell('%display ascii_art') - sage: shell.run_cell('integral(x^2/pi^x, x)') -- / 2 2 \ -x*log(pi) -- -\x *log (pi) + 2*x*log(pi) + 2/*e -- --------------------------------------------- -- 3 -- log (pi) -+ -x / 2 2 \ -+ -pi *\x *log (pi) + 2*x*log(pi) + 2/ -+ -------------------------------------- -+ 3 -+ log (pi) - sage: shell.run_cell("i = var('i')") - sage: shell.run_cell('sum(i*x^i, i, 0, 10)') - 10 9 8 7 6 5 4 3 2 -diff --git a/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py b/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py -index d8ebbf4f76..8c60f65e99 100644 ---- a/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py -+++ b/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py -@@ -151,8 +151,8 @@ A multiple point example (Example 6.5 of [RaWi2012]_):: - [(x + 2*y - 1, 1), (2*x + y - 1, 1)]) - sage: F1 = decomp[1] - sage: F1.asymptotics(p, alpha, 2) -- (-3*((2*a^2 - 5*a*b + 2*b^2)*r^2 + (a + b)*r + 3)*((1/3)^(-a)*(1/3)^(-b))^r, -- (1/3)^(-a)*(1/3)^(-b), -3*(2*a^2 - 5*a*b + 2*b^2)*r^2 - 3*(a + b)*r - 9) -+ (-3*((2*a^2 - 5*a*b + 2*b^2)*r^2 + (a + b)*r + 3)*(1/((1/3)^a*(1/3)^b))^r, -+ 1/((1/3)^a*(1/3)^b), -3*(2*a^2 - 5*a*b + 2*b^2)*r^2 - 3*(a + b)*r - 9) - sage: alpha = [4, 3] - sage: decomp = F.asymptotic_decomposition(alpha) - sage: F1 = decomp[1] -@@ -2159,7 +2159,7 @@ class FractionWithFactoredDenominator(RingElement): - sage: p = {x: 1/3, y: 1/3} - sage: alpha = (var('a'), var('b')) - sage: F.asymptotics_multiple(p, alpha, 2, var('r')) # long time -- (3*((1/3)^(-a)*(1/3)^(-b))^r*e^(2/3), (1/3)^(-a)*(1/3)^(-b), 3*e^(2/3)) -+ (3*(1/((1/3)^a*(1/3)^b))^r*e^(2/3), 1/((1/3)^a*(1/3)^b), 3*e^(2/3)) - """ - from itertools import product - from sage.calculus.functions import jacobian -diff --git a/src/sage/stats/basic_stats.py b/src/sage/stats/basic_stats.py -index 16a268a02c..5fd244e93b 100644 ---- a/src/sage/stats/basic_stats.py -+++ b/src/sage/stats/basic_stats.py -@@ -183,7 +183,7 @@ def std(v, bias=False): - sage: std([]) - NaN - sage: std([I, sqrt(2), 3/5]) -- sqrt(1/450*(10*sqrt(2) - 5*I - 3)^2 + 1/450*(5*sqrt(2) - 10*I + 3)^2 + 1/450*(5*sqrt(2) + 5*I - 6)^2) -+ 1/15*sqrt(1/2)*sqrt((10*sqrt(2) - 5*I - 3)^2 + (5*sqrt(2) - 10*I + 3)^2 + (5*sqrt(2) + 5*I - 6)^2) - sage: std([RIF(1.0103, 1.0103), RIF(2)]) - 0.6998235813403261? - sage: import numpy -diff --git a/src/sage/symbolic/expression.pyx b/src/sage/symbolic/expression.pyx -index ab4c05de3a..60f0dc549a 100644 ---- a/src/sage/symbolic/expression.pyx -+++ b/src/sage/symbolic/expression.pyx -@@ -622,7 +622,7 @@ cdef class Expression(CommutativeRingElement): - sage: x^(-5) - x^(-5) - sage: x^(-y) -- x^(-y) -+ 1/(x^y) - sage: 2*x^(-1) - 2/x - sage: i*x -@@ -3621,14 +3621,14 @@ cdef class Expression(CommutativeRingElement): - sage: repl_dict = {b_0: b_0, b_3: b_1, b_2: b_3, b_1: b_2} - sage: P = precomp.substitute(repl_dict) - sage: P.expand() -- -2^(-b_0)*2^(-b_2)*2^b_3 - 2^b_0*2^(-b_2)*2^b_3 - -- 2^(-b_0)*2^b_2*2^b_3 + 2^b_0*2^b_2*2^b_3 - 2*2^(-b_0)*2^(-b_2) -- - 2*2^b_0*2^(-b_2) - 2*2^(-b_0)*2^b_2 + 2*2^b_0*2^b_2 + -- 2^(-b_0)*2^b_3 + 2^b_0*2^b_3 + 2^(-b_2)*2^b_3 + 2^b_2*2^b_3 + -- 2*2^(-b_0) + 2*2^b_0 + 2*2^(-b_2) + 2*2^b_2 - 9*2^b_3 - -- 2^(-b_0)*2^(-b_2)/2^b_3 - 2^b_0*2^(-b_2)/2^b_3 - -- 2^(-b_0)*2^b_2/2^b_3 + 2^b_0*2^b_2/2^b_3 + 2^(-b_0)/2^b_3 + -- 2^b_0/2^b_3 + 2^(-b_2)/2^b_3 + 2^b_2/2^b_3 - 9/2^b_3 - 18 -+ 2^b_0*2^b_2*2^b_3 + 2*2^b_0*2^b_2 + 2^b_0*2^b_3 + 2^b_2*2^b_3 + -+ 2*2^b_0 + 2*2^b_2 - 9*2^b_3 + 2^b_0*2^b_2/2^b_3 - -+ 2^b_0*2^b_3/2^b_2 - 2^b_2*2^b_3/2^b_0 - 2*2^b_0/2^b_2 - -+ 2*2^b_2/2^b_0 + 2^b_0/2^b_3 + 2^b_2/2^b_3 + 2^b_3/2^b_0 + -+ 2^b_3/2^b_2 + 2/2^b_0 + 2/2^b_2 - 2^b_0/(2^b_2*2^b_3) - -+ 2^b_2/(2^b_0*2^b_3) - 9/2^b_3 - 2^b_3/(2^b_0*2^b_2) - -+ 2/(2^b_0*2^b_2) + 1/(2^b_0*2^b_3) + 1/(2^b_2*2^b_3) - -+ 1/(2^b_0*2^b_2*2^b_3) - 18 - - sage: _0,b_1,b_2=var('b_0,b_1,b_2') - sage: f = 1/27*b_2^2/(2^b_2)^2 + 1/27*b_1^2/(2^b_1)^2 + \ -@@ -3809,7 +3809,7 @@ cdef class Expression(CommutativeRingElement): - - sage: x = SR.symbol('x', domain='real') - sage: (x^3)^(1/3) -- (x^3)^(1/3) -+ x - sage: (x^4)^(1/4) - abs(x) - sage: (x^8)^(1/4) -@@ -3872,7 +3872,7 @@ cdef class Expression(CommutativeRingElement): - sage: 2^(x/log(2)) - e^x - sage: 2^(-x^2/2/log(2)) -- e^(-1/2*x^2) -+ 1/e^(1/2*x^2) - sage: x^(x/log(x)) - x^(x/log(x)) - sage: assume(x > 0) -@@ -4816,18 +4816,24 @@ cdef class Expression(CommutativeRingElement): - sage: ((x+y)^(x+y)).match(w0^w0) - {$0: x + y} - sage: t = ((a+b)*(a+c)).match((a+w0)*(a+w1)) -- sage: t[w0], t[w1] -- (c, b) -+ sage: set([t[w0], t[w1]]) == set([b, c]) -+ True - sage: ((a+b)*(a+c)).match((w0+b)*(w0+c)) - {$0: a} - sage: t = ((a+b)*(a+c)).match((w0+w1)*(w0+w2)) -- sage: t[w0], t[w1], t[w2] -- (a, c, b) -- sage: print(((a+b)*(a+c)).match((w0+w1)*(w1+w2))) -- None -+ sage: t[w0] -+ a -+ sage: set([t[w1], t[w2]]) == set([b, c]) -+ True -+ sage: t = ((a+b)*(a+c)).match((w0+w1)*(w1+w2)) -+ sage: t[w1] -+ a -+ sage: set([t[w0], t[w2]]) == set([b, c]) -+ True - sage: t = (a*(x+y)+a*z+b).match(a*w0+w1) -- sage: t[w0], t[w1] -- (x + y, a*z + b) -+ sage: s = set([t[w0], t[w1]]) -+ sage: s == set([x+y, a*z+b]) or s == set([z, a*(x+y)+b]) -+ True - sage: print((a+b+c+d+f+g).match(c)) - None - sage: (a+b+c+d+f+g).has(c) -@@ -4836,7 +4842,7 @@ cdef class Expression(CommutativeRingElement): - {$0: a + b + d + f + g} - sage: (a+b+c+d+f+g).match(c+g+w0) - {$0: a + b + d + f} -- sage: (a+b).match(a+b+w0) -+ sage: (a+b).match(a+b+w0) # known bug - {$0: 0} - sage: print((a*b^2).match(a^w0*b^w1)) - None -@@ -5009,7 +5015,7 @@ cdef class Expression(CommutativeRingElement): - a^3 + b^3 + (x + y)^3 - - sage: t.subs(w0 == w0^2) -- (x^2 + y^2)^18 + a^16 + b^16 -+ a^8 + b^8 + (x^2 + y^2)^6 - - sage: t.subs(a == b, b == c) - (x + y)^3 + b^2 + c^2 -@@ -8392,9 +8398,13 @@ cdef class Expression(CommutativeRingElement): - sage: SR(I).arctan2(1) - arctan2(I, 1) - sage: SR(CDF(0,1)).arctan2(1) -- NaN + +infinity*I -- sage: SR(1).arctan2(CDF(0,1)) # known bug -- 0.7853981633974484 - 19.012501686914433*I -+ Traceback (most recent call last): -+ ... -+ ValueError: power::eval(): division by zero -+ sage: SR(1).arctan2(CDF(0,1)) -+ Traceback (most recent call last): -+ ... -+ ValueError: power::eval(): division by zero - - sage: arctan2(0,oo) - 0 -@@ -8656,7 +8666,7 @@ cdef class Expression(CommutativeRingElement): - 1/2*I*pi - sage: SR(1/2).arccosh() - arccosh(1/2) -- sage: SR(CDF(1/2)).arccosh() # rel tol 1e-15 -+ sage: SR(CDF(1/2)).arccosh() # rel tol 1e-15 - 1.0471975511965976*I - sage: maxima('acosh(0.5)') - 1.04719755119659...*%i -@@ -11687,7 +11697,7 @@ cdef class Expression(CommutativeRingElement): - sage: a.solve(t) - [] - sage: b = a.canonicalize_radical(); b -- -23040.0*(-2.0*e^(1800*t) + 25.0*e^(900*t) - 32.0)*e^(-2400*t) -+ (46080.0*e^(1800*t) - 576000.0*e^(900*t) + 737280.0)*e^(-2400*t) - sage: b.solve(t) - [] - sage: b.solve(t, to_poly_solve=True) -@@ -12163,14 +12173,14 @@ cdef class Expression(CommutativeRingElement): - - sage: (n,k,j)=var('n,k,j') - sage: sum(binomial(n,k)*binomial(k-1,j)*(-1)**(k-1-j),k,j+1,n) -- -(-1)^(-j)*sum((-1)^k*binomial(k - 1, j)*binomial(n, k), k, j + 1, n) -+ -(-1)^j*sum((-1)^k*binomial(k - 1, j)*binomial(n, k), k, j + 1, n) - sage: assume(j>-1) - sage: sum(binomial(n,k)*binomial(k-1,j)*(-1)**(k-1-j),k,j+1,n) - 1 - sage: forget() - sage: assume(n>=j) - sage: sum(binomial(n,k)*binomial(k-1,j)*(-1)**(k-1-j),k,j+1,n) -- -(-1)^(-j)*sum((-1)^k*binomial(k - 1, j)*binomial(n, k), k, j + 1, n) -+ -(-1)^j*sum((-1)^k*binomial(k - 1, j)*binomial(n, k), k, j + 1, n) - sage: forget() - sage: assume(j==-1) - sage: sum(binomial(n,k)*binomial(k-1,j)*(-1)**(k-1-j),k,j+1,n) -@@ -12178,7 +12188,7 @@ cdef class Expression(CommutativeRingElement): - sage: forget() - sage: assume(j<-1) - sage: sum(binomial(n,k)*binomial(k-1,j)*(-1)**(k-1-j),k,j+1,n) -- -(-1)^(-j)*sum((-1)^k*binomial(k - 1, j)*binomial(n, k), k, j + 1, n) -+ -(-1)^j*sum((-1)^k*binomial(k - 1, j)*binomial(n, k), k, j + 1, n) - sage: forget() - - Check that :trac:`16176` is fixed:: -diff --git a/src/sage/symbolic/relation.py b/src/sage/symbolic/relation.py -index da6f0eef42..4bd65ef572 100644 ---- a/src/sage/symbolic/relation.py -+++ b/src/sage/symbolic/relation.py -@@ -895,7 +895,7 @@ def solve(f, *args, **kwds): - sage: (r[0][x], r[0][y]) - (2*lambert_w(1/2), 1) - sage: solve(-2*x**3 + 4*x**2 - 2*x + 6 > 0, x, algorithm='sympy') -- [x < (1/6*sqrt(77) + 79/54)^(1/3) + 1/9/(1/6*sqrt(77) + 79/54)^(1/3) + 2/3] -+ [x < 1/3*(1/2)^(1/3)*(9*sqrt(77) + 79)^(1/3) + 2/3*(1/2)^(2/3)/(9*sqrt(77) + 79)^(1/3) + 2/3] - sage: solve(sqrt(2*x^2 - 7) - (3 - x),x,algorithm='sympy') - [x == -8, x == 2] - sage: solve(sqrt(2*x + 9) - sqrt(x + 1) - sqrt(x + 4),x,algorithm='sympy') diff --git a/pkgs/applications/science/math/sage/patches/python3-syntax-without-write.patch b/pkgs/applications/science/math/sage/patches/python3-syntax-without-write.patch deleted file mode 100644 index ff1dcd22acf3..000000000000 --- a/pkgs/applications/science/math/sage/patches/python3-syntax-without-write.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/src/sage/tests/py3_syntax.py b/src/sage/tests/py3_syntax.py -index e564860b48..86ab3725f9 100644 ---- a/src/sage/tests/py3_syntax.py -+++ b/src/sage/tests/py3_syntax.py -@@ -179,15 +179,30 @@ class Python3SyntaxTest(SortedDirectoryWalkerABC): - sage: py3_syntax = Python3SyntaxTest() - sage: py3_syntax.test(src.name) - Invalid Python 3 syntax found: -- File "...py", line 1 -- print "invalid print statement" -- ^ -- SyntaxError: Missing parentheses in call to 'print' -+ Missing parentheses in call to 'print'... - sage: os.unlink(src.name) - """ -+ -+ # compile all given files in memory, printing all errors -+ # inspired by the py_compile module (but without writing to file) -+ script = """ -+import sys -+import importlib.machinery -+rv = 0 -+for file in sys.argv[1:]: -+ loader = importlib.machinery.SourceFileLoader('<sage_test>', file) -+ source_bytes = loader.get_data(file) -+ try: -+ code = loader.source_to_code(source_bytes, file) -+ except Exception as err: -+ print(err) -+ rv = 1 -+sys.exit(rv) -+""" - cmd = [ - 'python3', -- '-m', 'py_compile' -+ '-c', -+ script, - ] + list(filenames) - process = subprocess.Popen( - cmd, diff --git a/pkgs/applications/science/math/sage/patches/sagenb-sphinx-1.7.patch b/pkgs/applications/science/math/sage/patches/sagenb-sphinx-1.7.patch deleted file mode 100644 index 42deef4eab0c..000000000000 --- a/pkgs/applications/science/math/sage/patches/sagenb-sphinx-1.7.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 7419e0246230594ebfd5e7a2fe6b80d67abfc98a Mon Sep 17 00:00:00 2001 -From: Jeroen Demeyer <jdemeyer@cage.ugent.be> -Date: Tue, 20 Mar 2018 10:40:41 +0100 -Subject: Fix sphinxify doctests - ---- - sagenb/misc/sphinxify.py | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/sagenb/misc/sphinxify.py b/sagenb/misc/sphinxify.py -index 4f76d41..15623d9 100644 ---- a/sagenb/misc/sphinxify.py -+++ b/sagenb/misc/sphinxify.py -@@ -47,11 +47,11 @@ def sphinxify(docstring, format='html'): - - sage: from sage.misc.sphinxify import sphinxify - sage: sphinxify('A test') -- '...<div class="docstring">\n \n <p>A test</p>\n\n\n</div>' -+ '<div class="docstring">\n \n <p>A test</p>\n\n\n</div>' - sage: sphinxify('**Testing**\n`monospace`') -- '...<div class="docstring"...<strong>Testing</strong>\n<span class="math"...</p>\n\n\n</div>' -+ '<div class="docstring"...<strong>Testing</strong>\n<span class="math notranslate"...</p>\n\n\n</div>' - sage: sphinxify('`x=y`') -- '...<div class="docstring">\n \n <p><span class="math">x=y</span></p>\n\n\n</div>' -+ '<div class="docstring">\n \n <p><span class="math notranslate">x=y</span></p>\n\n\n</div>' - sage: sphinxify('`x=y`', format='text') - 'x=y\n' - sage: sphinxify(':math:`x=y`', format='text') --- -cgit v1.0-1-gd88e - diff --git a/pkgs/applications/science/math/sage/patches/singular-4.1.1p2.patch b/pkgs/applications/science/math/sage/patches/singular-4.1.1p2.patch new file mode 100644 index 000000000000..4c8df92904ed --- /dev/null +++ b/pkgs/applications/science/math/sage/patches/singular-4.1.1p2.patch @@ -0,0 +1,274 @@ +diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py +index 9d65c9fa6c..a028bbe719 100644 +--- a/src/sage/interfaces/singular.py ++++ b/src/sage/interfaces/singular.py +@@ -654,7 +654,7 @@ class Singular(ExtraTabCompletion, Expect): + + s = Expect.eval(self, x, **kwds) + +- if s.find("error") != -1 or s.find("Segment fault") != -1: ++ if s.find("error occurred") != -1 or s.find("Segment fault") != -1: + raise SingularError('Singular error:\n%s'%s) + + if get_verbose() > 0: +@@ -1079,7 +1079,7 @@ class Singular(ExtraTabCompletion, Expect): + sage: S = singular.ring('real', '(a,b)', 'lp') + sage: singular.current_ring() + polynomial ring, over a field, global ordering +- // coefficients: float ++ // coefficients: Float() + // number of vars : 2 + // block 1 : ordering lp + // : names a b +@@ -1157,7 +1157,7 @@ class Singular(ExtraTabCompletion, Expect): + sage: singular._tab_completion() + ['exteriorPower', + ... +- 'flintZ'] ++ 'crossprod'] + """ + p = re.compile("// *([a-z0-9A-Z_]*).*") #compiles regular expression + proclist = self.eval("listvar(proc)").splitlines() +@@ -1183,7 +1183,7 @@ class Singular(ExtraTabCompletion, Expect): + EXAMPLES:: + + sage: singular.version() +- "Singular ... version 4.1.0 ... ++ "Singular ... version 4... + """ + return singular_version() + +@@ -1562,7 +1562,7 @@ class SingularElement(ExtraTabCompletion, ExpectElement): + elif charstr[0] in ['0', 'QQ']: + from sage.all import QQ + br = QQ +- elif charstr[0]=='real': ++ elif charstr[0].startswith('Float'): + from sage.all import RealField, ceil, log + prec = singular.eval('ringlist(basering)[1][2][1]') + br = RealField(ceil((ZZ(prec)+1)/log(2,10))) +@@ -1750,7 +1750,7 @@ class SingularElement(ExtraTabCompletion, ExpectElement): + + # Singular 4 puts parentheses around floats and sign outside them + charstr = self.parent().eval('charstr(basering)').split(',',1) +- if charstr[0] in ['real', 'complex']: ++ if charstr[0]=='complex' or charstr[0].startswith('Float'): + for i in range(coeff_start, 2 * coeff_start): + singular_poly_list[i] = singular_poly_list[i].replace('(','').replace(')','') + +@@ -1992,7 +1992,7 @@ class SingularElement(ExtraTabCompletion, ExpectElement): + sage: S = singular.ring('real', '(a,b)', 'lp') + sage: singular.current_ring() + polynomial ring, over a field, global ordering +- // coefficients: float ++ // coefficients: Float() + // number of vars : 2 + // block 1 : ordering lp + // : names a b +@@ -2072,7 +2072,7 @@ class SingularElement(ExtraTabCompletion, ExpectElement): + sage: R._tab_completion() + ['exteriorPower', + ... +- 'flintZ'] ++ 'crossprod'] + """ + return self.parent()._tab_completion() + +@@ -2358,7 +2358,7 @@ def singular_version(): + EXAMPLES:: + + sage: singular.version() +- "Singular ... version 4.1.0 ... ++ "Singular ... version 4... + """ + return singular.eval('system("--version");') + +diff --git a/src/sage/libs/singular/decl.pxd b/src/sage/libs/singular/decl.pxd +index 4b658c4807..d863740419 100644 +--- a/src/sage/libs/singular/decl.pxd ++++ b/src/sage/libs/singular/decl.pxd +@@ -170,7 +170,7 @@ cdef extern from "singular/Singular/libsingular.h": + + int n_NumberOfParameters(const n_Procs_s* r) + +- ctypedef struct poly "polyrec": ++ ctypedef struct poly "spolyrec": + poly *next + number *coef + unsigned long exp[1] +@@ -630,9 +630,13 @@ cdef extern from "singular/Singular/libsingular.h": + # return p*q, destroys p and q + poly *p_Mult_q(poly *p, poly *q, ring *r) + ++ # polynomial division, ignoring the rest ++ # via singclap_pdivide resp. idLift, destroys p,q ++ poly *p_Divide(poly *p, poly *q, ring *r) ++ + # divide monomial p by monomial q, p,q const + +- poly *pDivide(poly *p,poly *q) ++ poly *pMDivide(poly *p,poly *q) + + # return the i-th power of p; p destroyed, requires global ring + +diff --git a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx +index 2a8d9ae021..aeff53af6c 100644 +--- a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx ++++ b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx +@@ -190,8 +190,8 @@ from sage.libs.singular.decl cimport ( + n_IsUnit, n_Invers, + p_ISet, rChangeCurrRing, p_Copy, p_Init, p_SetCoeff, p_Setm, p_SetExp, p_Add_q, + p_NSet, p_GetCoeff, p_Delete, p_GetExp, pNext, rRingVar, omAlloc0, omStrDup, +- omFree, pDivide, p_SetCoeff0, n_Init, p_DivisibleBy, pLcm, p_LmDivisibleBy, +- pDivide, p_IsConstant, p_ExpVectorEqual, p_String, p_LmInit, n_Copy, ++ omFree, pMDivide, p_Divide, p_SetCoeff0, n_Init, p_DivisibleBy, pLcm, p_LmDivisibleBy, ++ pMDivide, p_IsConstant, p_ExpVectorEqual, p_String, p_LmInit, n_Copy, + p_IsUnit, p_Series, p_Head, idInit, fast_map_common_subexp, id_Delete, + p_IsHomogeneous, p_Homogen, p_Totaldegree,pLDeg1_Totaldegree, singclap_pdivide, singclap_factorize, + idLift, IDELEMS, On, Off, SW_USE_CHINREM_GCD, SW_USE_EZGCD, +@@ -1693,8 +1693,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base): + if not g._poly: + raise ZeroDivisionError + +- if r!=currRing: rChangeCurrRing(r) # pDivide +- res = pDivide(f._poly, g._poly) ++ if r!=currRing: rChangeCurrRing(r) # pMDivide ++ res = pMDivide(f._poly, g._poly) + if coeff: + if r.cf.type == n_unknown or r.cf.cfDivBy(p_GetCoeff(f._poly, r), p_GetCoeff(g._poly, r), r.cf): + n = r.cf.cfDiv( p_GetCoeff(f._poly, r) , p_GetCoeff(g._poly, r), r.cf) +@@ -1853,8 +1853,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base): + and (<MPolynomial_libsingular>g) \ + and g.parent() is self \ + and p_LmDivisibleBy((<MPolynomial_libsingular>g)._poly, m, r): +- if r!=currRing: rChangeCurrRing(r) # pDivide +- flt = pDivide(f._poly, (<MPolynomial_libsingular>g)._poly) ++ if r!=currRing: rChangeCurrRing(r) # pMDivide ++ flt = pMDivide(f._poly, (<MPolynomial_libsingular>g)._poly) + #p_SetCoeff(flt, n_Div( p_GetCoeff(f._poly, r) , p_GetCoeff((<MPolynomial_libsingular>g)._poly, r), r), r) + p_SetCoeff(flt, n_Init(1, r), r) + return new_MP(self,flt), g +@@ -4023,16 +4023,6 @@ cdef class MPolynomial_libsingular(MPolynomial): + Traceback (most recent call last): + ... + NotImplementedError: Division of multivariate polynomials over non fields by non-monomials not implemented. +- +- TESTS:: +- +- sage: P.<x,y> = ZZ[] +- sage: p = 3*(-x^8*y^2 - x*y^9 + 6*x^8*y + 17*x^2*y^6 - x^3*y^2) +- sage: q = 7*(x^2 + x*y + y^2 + 1) +- sage: p*q//q == p +- True +- sage: p*q//p == q +- True + """ + cdef MPolynomialRing_libsingular parent = self._parent + cdef ring *r = self._parent_ring +@@ -4052,13 +4042,18 @@ cdef class MPolynomial_libsingular(MPolynomial): + _right = <MPolynomial_libsingular>right + + if r.cf.type != n_unknown: ++ if r.cf.type == n_Z: ++ P = parent.change_ring(RationalField()) ++ f = P(self)//P(right) ++ CM = list(f) ++ return parent(sum([c.floor()*m for c,m in CM])) + if _right.is_monomial(): + p = _self._poly + quo = p_ISet(0,r) +- if r != currRing: rChangeCurrRing(r) # pDivide ++ if r != currRing: rChangeCurrRing(r) # pMDivide + while p: + if p_DivisibleBy(_right._poly, p, r): +- temp = pDivide(p, _right._poly) ++ temp = pMDivide(p, _right._poly) + p_SetCoeff0(temp, n_Copy(p_GetCoeff(p, r), r), r) + quo = p_Add_q(quo, temp, r) + p = pNext(p) +@@ -4794,6 +4789,8 @@ cdef class MPolynomial_libsingular(MPolynomial): + sage: p = -x*y + x*z + 54*x - 2 + sage: (5*p^2).lcm(3*p) == 15*p^2 + True ++ sage: lcm(2*x,2*x*y) ++ 2*x*y + """ + cdef ring *_ring = self._parent_ring + cdef poly *ret +@@ -4821,9 +4818,7 @@ cdef class MPolynomial_libsingular(MPolynomial): + if _ring!=currRing: rChangeCurrRing(_ring) # singclap_gcd + gcd = singclap_gcd(p_Copy(self._poly, _ring), p_Copy(_g._poly, _ring), _ring ) + prod = pp_Mult_qq(self._poly, _g._poly, _ring) +- ret = singclap_pdivide(prod , gcd , _ring) +- p_Delete(&prod, _ring) +- p_Delete(&gcd, _ring) ++ ret = p_Divide(prod, gcd, _ring) + if count >= 20: + sig_off() + return new_MP(self._parent, ret) +@@ -4866,7 +4861,7 @@ cdef class MPolynomial_libsingular(MPolynomial): + sage: f.quo_rem(y) + (2*x^2, x + 1) + sage: f.quo_rem(3*x) +- (2*x*y + 1, -4*x^2*y - 2*x + 1) ++ (0, 2*x^2*y + x + 1) + + TESTS:: + +@@ -4888,7 +4883,7 @@ cdef class MPolynomial_libsingular(MPolynomial): + if right.is_zero(): + raise ZeroDivisionError + +- if not self._parent._base.is_field() and not is_IntegerRing(self._parent._base): ++ if not self._parent._base.is_field(): + py_quo = self//right + py_rem = self - right*py_quo + return py_quo, py_rem +diff --git a/src/sage/rings/polynomial/plural.pyx b/src/sage/rings/polynomial/plural.pyx +index d5439f7f08..ad20ebcca0 100644 +--- a/src/sage/rings/polynomial/plural.pyx ++++ b/src/sage/rings/polynomial/plural.pyx +@@ -998,7 +998,7 @@ cdef class NCPolynomialRing_plural(Ring): + if not g._poly: + raise ZeroDivisionError + +- res = pDivide(f._poly,g._poly) ++ res = pMDivide(f._poly,g._poly) + if coeff: + if (r.cf.type == n_unknown) or r.cf.cfDivBy(p_GetCoeff(f._poly, r), p_GetCoeff(g._poly, r), r.cf): + n = r.cf.cfDiv( p_GetCoeff(f._poly, r) , p_GetCoeff(g._poly, r), r.cf) +@@ -1193,7 +1193,7 @@ cdef class NCPolynomialRing_plural(Ring): + if isinstance(g, NCPolynomial_plural) \ + and (<NCPolynomial_plural>g) \ + and p_LmDivisibleBy((<NCPolynomial_plural>g)._poly, m, r): +- flt = pDivide(f._poly, (<NCPolynomial_plural>g)._poly) ++ flt = pMDivide(f._poly, (<NCPolynomial_plural>g)._poly) + #p_SetCoeff(flt, n_Div( p_GetCoeff(f._poly, r) , p_GetCoeff((<NCPolynomial_plural>g)._poly, r), r), r) + p_SetCoeff(flt, n_Init(1, r), r) + return new_NCP(self,flt), g +diff --git a/src/sage/rings/polynomial/polynomial_singular_interface.py b/src/sage/rings/polynomial/polynomial_singular_interface.py +index 9331169f8b..f753610fd3 100644 +--- a/src/sage/rings/polynomial/polynomial_singular_interface.py ++++ b/src/sage/rings/polynomial/polynomial_singular_interface.py +@@ -81,8 +81,8 @@ class PolynomialRing_singular_repr: + sage: R.<x,y> = PolynomialRing(CC) + sage: singular(R) + polynomial ring, over a field, global ordering +- // coefficients: float[I](complex:15 digits, additional 0 digits)/(I^2+1) +- // number of vars : 2 ++ // coefficients: real[I](complex:15 digits, additional 0 digits)/(I^2+1) ++ // number of vars : 2 + // block 1 : ordering dp + // : names x y + // block 2 : ordering C +@@ -90,8 +90,8 @@ class PolynomialRing_singular_repr: + sage: R.<x,y> = PolynomialRing(RealField(100)) + sage: singular(R) + polynomial ring, over a field, global ordering +- // coefficients: float +- // number of vars : 2 ++ // coefficients: Float() ++ // number of vars : 2 + // block 1 : ordering dp + // : names x y + // block 2 : ordering C diff --git a/pkgs/applications/science/math/sage/patches/sphinx-1.7.patch b/pkgs/applications/science/math/sage/patches/sphinx-1.7.patch deleted file mode 100644 index c67b8942e28b..000000000000 --- a/pkgs/applications/science/math/sage/patches/sphinx-1.7.patch +++ /dev/null @@ -1,62 +0,0 @@ -diff --git a/src/bin/sage b/src/bin/sage -index 397f30cbed..3fc473c343 100755 ---- a/src/bin/sage -+++ b/src/bin/sage -@@ -980,8 +980,11 @@ if [ "$1" = '-rsyncdist' -o "$1" = "--rsyncdist" ]; then - fi - - if [ "$1" = "-docbuild" -o "$1" = "--docbuild" ]; then -+ # Redirect stdin from /dev/null. This helps with running TeX which -+ # tends to ask interactive questions if something goes wrong. These -+ # cause the build to hang. If stdin is /dev/null, TeX just aborts. - shift -- exec sage-python23 -m "sage_setup.docbuild" "$@" -+ exec sage-python23 -m sage_setup.docbuild "$@" </dev/null - fi - - if [ "$1" = '-gdb' -o "$1" = "--gdb" ]; then -diff --git a/src/doc/common/conf.py b/src/doc/common/conf.py -index 25f94f7b7d..3f07474d9b 100644 ---- a/src/doc/common/conf.py -+++ b/src/doc/common/conf.py -@@ -627,7 +627,7 @@ def call_intersphinx(app, env, node, contnode): - sage: for line in open(thematic_index).readlines(): - ....: if "padics" in line: - ....: sys.stdout.write(line) -- <li><a class="reference external" href="../reference/padics/sage/rings/padics/tutorial.html#sage-rings-padics-tutorial" title="(in Sage Reference Manual: p-Adics ...)"><span>Introduction to the -adics</span></a></li> -+ <li><a class="reference external" href="../reference/padics/sage/rings/padics/tutorial.html#sage-rings-padics-tutorial" title="(in Sage Reference Manual: p-Adics v...)"><span>Introduction to the -adics</span></a></li> - """ - debug_inf(app, "???? Trying intersphinx for %s"%node['reftarget']) - builder = app.builder -diff --git a/src/sage/misc/sphinxify.py b/src/sage/misc/sphinxify.py -index 4f76d4113a..8f426b5989 100644 ---- a/src/sage/misc/sphinxify.py -+++ b/src/sage/misc/sphinxify.py -@@ -47,11 +47,11 @@ def sphinxify(docstring, format='html'): - - sage: from sage.misc.sphinxify import sphinxify - sage: sphinxify('A test') -- '...<div class="docstring">\n \n <p>A test</p>\n\n\n</div>' -+ '<div class="docstring">\n \n <p>A test</p>\n\n\n</div>' - sage: sphinxify('**Testing**\n`monospace`') -- '...<div class="docstring"...<strong>Testing</strong>\n<span class="math"...</p>\n\n\n</div>' -+ '<div class="docstring"...<strong>Testing</strong>\n<span class="math...</p>\n\n\n</div>' - sage: sphinxify('`x=y`') -- '...<div class="docstring">\n \n <p><span class="math">x=y</span></p>\n\n\n</div>' -+ '<div class="docstring">\n \n <p><span class="math notranslate nohighlight">x=y</span></p>\n\n\n</div>' - sage: sphinxify('`x=y`', format='text') - 'x=y\n' - sage: sphinxify(':math:`x=y`', format='text') -diff --git a/src/sage_setup/docbuild/sphinxbuild.py b/src/sage_setup/docbuild/sphinxbuild.py -index fda76a4174..d3413239dd 100644 ---- a/src/sage_setup/docbuild/sphinxbuild.py -+++ b/src/sage_setup/docbuild/sphinxbuild.py -@@ -207,7 +207,7 @@ def runsphinx(): - try: - sys.stdout = SageSphinxLogger(sys.stdout, os.path.basename(output_dir)) - sys.stderr = SageSphinxLogger(sys.stderr, os.path.basename(output_dir)) -- sphinx.cmdline.main(sys.argv) -+ sphinx.cmdline.main(sys.argv[1:]) - finally: - sys.stdout = saved_stdout - sys.stderr = saved_stderr diff --git a/pkgs/applications/science/math/sage/patches/spkg-scripts.patch b/pkgs/applications/science/math/sage/patches/spkg-scripts.patch new file mode 100644 index 000000000000..4d37998b288b --- /dev/null +++ b/pkgs/applications/science/math/sage/patches/spkg-scripts.patch @@ -0,0 +1,46 @@ +commit f02714d4aea80e17cb8df62bab75d7c1a1b61a8e +Author: Timo Kaufmann <timokau@zoho.com> +Date: Mon Jul 9 18:26:18 2018 +0200 + + Don't attempt to create dirs when showing pkg info + + The script dir cannot be assumed to be writeable after installation. + +diff --git a/build/bin/sage-spkg b/build/bin/sage-spkg +index f3e02aeae5..190d558ad1 100755 +--- a/build/bin/sage-spkg ++++ b/build/bin/sage-spkg +@@ -167,14 +167,6 @@ if [ -z "$SAGE_BUILD_DIR" ]; then + export SAGE_BUILD_DIR="$SAGE_LOCAL/var/tmp/sage/build" + fi + +-for dir in "$SAGE_SPKG_INST" "$SAGE_SPKG_SCRIPTS"; do +- mkdir -p "$dir" +- if [ $? -ne 0 ]; then +- error_msg "Error creating directory $dir" +- exit 1 +- fi +-done +- + + # Remove '.' from PYTHONPATH, which may also come from SAGE_PATH, to avoid + # trouble with setuptools / easy_install (cf. #10192, #10176): +@@ -563,11 +555,13 @@ fi + # Setup directories + ################################################################## + +-mkdir -p "$SAGE_BUILD_DIR" +-if [ $? -ne 0 ]; then +- error_msg "Error creating directory $SAGE_BUILD_DIR" +- exit 1 +-fi ++for dir in "$SAGE_SPKG_INST" "$SAGE_SPKG_SCRIPTS" "$SAGE_BUILD_DIR"; do ++ mkdir -p "$dir" ++ if [ $? -ne 0 ]; then ++ error_msg "Error creating directory $dir" ++ exit 1 ++ fi ++done + + # Trac #5852: check write permissions + if [ ! -w "$SAGE_BUILD_DIR" ]; then diff --git a/pkgs/applications/science/math/sage/patches/zn_poly_version.patch b/pkgs/applications/science/math/sage/patches/zn_poly_version.patch deleted file mode 100644 index 92ea4303e477..000000000000 --- a/pkgs/applications/science/math/sage/patches/zn_poly_version.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/sage/misc/package.py b/src/sage/misc/package.py -index 7ff4f21675..1d72168833 100644 ---- a/src/sage/misc/package.py -+++ b/src/sage/misc/package.py -@@ -350,7 +350,7 @@ def package_versions(package_type, local=False): - sage: 'gap' in std - True - sage: std['zn_poly'] -- ('0.9.p11', '0.9.p11') -+ ('0.9', '0.9.p11') - """ - return {pkg['name']: (pkg['installed_version'], pkg['remote_version']) for pkg in list_packages(package_type, local=local).values()} - diff --git a/pkgs/applications/science/math/sage/sage-src.nix b/pkgs/applications/science/math/sage/sage-src.nix index c97785c574cb..096f2212cc49 100644 --- a/pkgs/applications/science/math/sage/sage-src.nix +++ b/pkgs/applications/science/math/sage/sage-src.nix @@ -3,17 +3,20 @@ , fetchpatch }: stdenv.mkDerivation rec { - version = "8.2"; + version = "8.3"; name = "sage-src-${version}"; src = fetchFromGitHub { owner = "sagemath"; repo = "sage"; rev = version; - sha256 = "0d7vc16s7dj23an2cb8v5bhbnc6nsw20qhnnxr0xh8qg629027b8"; + sha256 = "0mbm99m5xry21xpi4q3q96gx392liwbifywf5awvl0j85a7rkfyx"; }; nixPatches = [ + # https://trac.sagemath.org/ticket/25809 + ./patches/spkg-scripts.patch + # https://trac.sagemath.org/ticket/25309 (fetchpatch { name = "spkg-paths.patch"; @@ -26,14 +29,7 @@ stdenv.mkDerivation rec { sha256 = "14s50yg3hpw9cp3v581dx7zfmpm2j972im7x30iwki8k45mjvk3i"; }) - # https://trac.sagemath.org/ticket/25328 - # https://trac.sagemath.org/ticket/25546 # https://trac.sagemath.org/ticket/25722 - (fetchpatch { - name = "install-jupyter-kernel-in-correct-prefix.patch"; - url = "https://git.sagemath.org/sage.git/patch?id=72167b98e3f64326df6b2c78785df25539472fcc"; - sha256 = "0pscnjhm7r2yr2rxnv4kkkq626vwaja720lixa3m3w9rwlxll5a7"; - }) ./patches/test-in-tmpdir.patch # https://trac.sagemath.org/ticket/25358 @@ -43,27 +39,13 @@ stdenv.mkDerivation rec { sha256 = "1hhannz7xzprijakn2w2d0rhd5zv2zikik9p51i87bas3nc658f7"; }) - # https://trac.sagemath.org/ticket/25357 rebased on 8.2 - ./patches/python3-syntax-without-write.patch - - # https://trac.sagemath.org/ticket/25314 - (fetchpatch { - name = "make-qepcad-test-optional.patch"; - url = "https://git.sagemath.org/sage.git/patch/?h=fe294c58bd035ef427e268901d54a6faa0058138"; - sha256 = "003d5baf5c0n5rfg010ijwkwz8kg0s414cxwczs2vhdayxdixbix"; - }) - + # Unfortunately inclusion in upstream sage was rejected. Instead the bug was + # fixed in python, but of course not backported to 2.7. So we'll probably + # have to keep this around until 2.7 is deprecated. # https://trac.sagemath.org/ticket/25316 + # https://github.com/python/cpython/pull/7476 ./patches/python-5755-hotpatch.patch - # https://trac.sagemath.org/ticket/25354 - # https://trac.sagemath.org/ticket/25531 - (fetchpatch { - name = "cysignals-include.patch"; - url = "https://git.sagemath.org/sage.git/patch/?h=28778bd25a37c80884d2b24e0683fb2989300cef"; - sha256 = "0fiiiw91pgs8avm9ggj8hb64bhqzl6jcw094d94nhirmh8w2jmc5"; - }) - # https://trac.sagemath.org/ticket/25315 (fetchpatch { name = "find-libraries-in-dyld-library-path.patch"; @@ -71,16 +53,13 @@ stdenv.mkDerivation rec { sha256 = "1k3afq3qlzmgqwx6rzs5wv153vv9dsf5rk8pi61g57l3r3npbjmc"; }) - # Pari upstream has since accepted a patch, so this patch won't be necessary once sage updates pari. - # https://trac.sagemath.org/ticket/25312 - ./patches/pari-stackwarn.patch - - # https://trac.sagemath.org/ticket/25311 - ./patches/zn_poly_version.patch - # https://trac.sagemath.org/ticket/25345 # (upstream patch doesn't apply on 8.2 source) ./patches/dochtml-optional.patch + + # work with pari with threads enabled at compile time (disable them at runtime) + # https://trac.sagemath.org/ticket/26002 + ./patches/pari-no-threads.patch ]; packageUpgradePatches = [ @@ -106,87 +85,62 @@ stdenv.mkDerivation rec { # the last version. ./patches/eclib-regulator-precision.patch - # sphinx 1.6 -> 1.7 upgrade - # https://trac.sagemath.org/ticket/24935 - ./patches/sphinx-1.7.patch - - # Adapt hashes to new boost version - # https://trac.sagemath.org/ticket/22243 - # (this ticket doesn't only upgrade boost but also avoids this problem in the future) - (fetchpatch { - name = "boost-upgrade.patch"; - url = "https://git.sagemath.org/sage.git/patch?id=a24a9c6b30b93957333a3116196214a931325b69"; - sha256 = "0z3870g2ms2a81vnw08dc2i4k7jr62w8fggvcdwaavgd1wvdxwfl"; - }) - - # gfan 0.6.2 - # https://trac.sagemath.org/ticket/23353 - (fetchpatch { - name = "gfan-update.patch"; - url = "https://git.sagemath.org/sage.git/patch/?h=420215fc469cde733ec7a339e59b78ad6eec804c&id=112498a293ea2bf563e41aed35f1aa608f01b349"; - sha256 = "0ga3hkx8cr23dpc919lgvpi5lmy0d728jkq9z6kf0fl9s8g31mxb"; - }) - # New glpk version has new warnings, filter those out until upstream sage has found a solution # https://trac.sagemath.org/ticket/24824 + ./patches/pari-stackwarn.patch # not actually necessary since tha pari upgrade, but necessary for the glpk patch to apply (fetchpatch { url = "https://salsa.debian.org/science-team/sagemath/raw/58bbba93a807ca2933ca317501d093a1bb4b84db/debian/patches/dt-version-glpk-4.65-ignore-warnings.patch"; sha256 = "0b9293v73wb4x13wv5zwyjgclc01zn16msccfzzi6znswklgvddp"; stripLen = 1; }) - # https://trac.sagemath.org/ticket/25329 + # Only formatting changes. + # https://trac.sagemath.org/ticket/25260 + ./patches/numpy-1.14.3.patch + + # https://trac.sagemath.org/ticket/25862 + ./patches/eclib-20180710.patch + + # https://trac.sagemath.org/ticket/24735 + ./patches/singular-4.1.1p2.patch + + # https://trac.sagemath.org/ticket/25567 and dependency #25635 (fetchpatch { - name = "dont-check-exact-glpk-version.patch"; - url = "https://git.sagemath.org/sage.git/patch?id2=8bdc326ba57d1bb9664f63cf165a9e9920cc1afc&id=89d068d8d77316bfffa6bf8e9ebf70b3b3b88e5c"; - sha256 = "00knwxs6fmymfgfl0q5kcavmxm9sf90a4r76y35n5s55gj8pl918"; + name = "pari-upgrade-dependency.patch"; + url = "https://git.sagemath.org/sage.git/patch/?id=6995e7cae1b3476ad0145f8dfc897cf91f0c3c4d"; + sha256 = "1dvhabl1c9pwd9xkjvbjjg15mvb14b24p1f3cby1mlqk34d4lrs6"; }) - - # https://trac.sagemath.org/ticket/25355 (fetchpatch { - name = "maxima-5.41.0.patch"; - url = "https://git.sagemath.org/sage.git/patch/?id=87328023c4739abdf24108038201e3fa9bdfc739"; - sha256 = "0hxi7qr5mfx1bc32r8j7iba4gzd7c6v63asylyf5cbyp86azpb7i"; + name = "pari-2.11.0.patch"; + url = "https://git.sagemath.org/sage.git/patch/?id=7af4748cab37d651eaa88be501db88f4a5ffc584"; + sha256 = "13f740ly3c19gcmhjngiycvmc3mcfj61y00i6jv0wmfgpm2z3ank"; }) - # Update cddlib from 0.94g to 0.94h. - # https://trac.sagemath.org/ticket/25341 (doesn't apply to 8.2 sources) + # ntl upgrade (fetchpatch { - url = "https://salsa.debian.org/science-team/sagemath/raw/58bbba93a807ca2933ca317501d093a1bb4b84db/debian/patches/u2-version-cddlib-094h.patch"; - sha256 = "0fmw7pzbaxs2dshky6iw9pr8i23p9ih2y2lw661qypdrxh5xw03k"; - stripLen = 1; + name = "lcalc-c++11.patch"; + url = "https://git.archlinux.org/svntogit/community.git/plain/trunk/sagemath-lcalc-c++11.patch?h=packages/sagemath&id=0e31ae526ab7c6b5c0bfacb3f8b1c4fd490035aa"; + sha256 = "0p5wnvbx65i7cp0bjyaqgp4rly8xgnk12pqwaq3dqby0j2bk6ijb"; }) + + # cddlib 0.94i -> 0.94j (fetchpatch { - name = "revert-cddlib-doctest-changes.patch"; - url = "https://git.sagemath.org/sage.git/patch/?id=269c1e1551285566b8ba7a2b890989e5590e9f11"; - sha256 = "12bcjhq7hm2pmmj2bgjvcffjyls2x7q61ivlnaj5v5bsvhc183iy"; - revert = true; + name = "cddlib-0.94j.patch"; + url = "https://git.sagemath.org/sage.git/patch/?id=2ab1546b3e21d1d0ab3b4fcd58576848b3a2d888"; + sha256 = "1c5gnasq7y9xxj762bn79bis0zi8d9bgg7jzlf64ifixsrc5cymb"; }) - - # Only formatting changes. - # https://trac.sagemath.org/ticket/25260 - ./patches/numpy-1.14.3.patch - - # https://trac.sagemath.org/ticket/24374 + # arb 2.13.0 -> 2.14.0 (fetchpatch { - name = "networkx-2.1.patch"; - url = "https://salsa.debian.org/science-team/sagemath/raw/487df9ae48ca1d93d9b1cb3af8745d31e30fb741/debian/patches/u0-version-networkx-2.1.patch"; - sha256 = "1xxxawygbgxgvlv7b4w8hhzgdnva4rhmgdxaiaa3pwdwln0yc750"; - stripLen = 1; + name = "arb-2.14.0.patch"; + url = "https://git.sagemath.org/sage.git/patch?id2=8.4.beta0&id=8bef4fd2876a61969b516fe4eb3b8ad7cc076c5e"; + sha256 = "00p3hfsfn3w2vxgd9fjd23mz7xfxjfravf8ysjxkyd657jbkpjmk"; }) - - # https://trac.sagemath.org/ticket/24927 rebased - ./patches/arb-2.13.0.patch - - # https://trac.sagemath.org/ticket/24838 rebased - ./patches/pynac-0.7.22.patch - - # https://trac.sagemath.org/ticket/25862 - ./patches/eclib-20180710.patch ]; - patches = nixPatches ++ packageUpgradePatches; + patches = nixPatches ++ packageUpgradePatches ++ [ + ./patches/known-padics-bug.patch + ]; postPatch = '' # make sure shebangs etc are fixed, but sage-python23 still works diff --git a/pkgs/applications/science/math/scilab-bin/default.nix b/pkgs/applications/science/math/scilab-bin/default.nix index ad0231d37b0e..dacd3e730736 100644 --- a/pkgs/applications/science/math/scilab-bin/default.nix +++ b/pkgs/applications/science/math/scilab-bin/default.nix @@ -3,7 +3,7 @@ let name = "scilab-bin-${ver}"; - ver = "5.5.2"; + ver = "6.0.1"; majorVer = builtins.elemAt (lib.splitString "." ver) 0; @@ -24,9 +24,9 @@ stdenv.mkDerivation rec { url = "https://www.scilab.org/download/${ver}/scilab-${ver}.bin.linux-${architecture}.tar.gz"; sha256 = if stdenv.system == "i686-linux" then - "6143a95ded40411a35630a89b365875a6526cd4db1e2865ac5612929a7db937a" + "0fgjc2ak3b2qi6yin3fy50qwk2bcj0zbz1h4lyyic9n1n1qcliib" else if stdenv.system == "x86_64-linux" then - "c0dd7a5f06ec7a1df7a6b1b8b14407ff7f45e56821dff9b3c46bd09d4df8d350" + "1scswlznc14vyzg0gqa1q9gcpwx05kz1sbn563463mzkdp7nd35d" else badArch; }; diff --git a/pkgs/applications/science/math/scilab/default.nix b/pkgs/applications/science/math/scilab/default.nix index 6063a45a3efb..96b7dec19c21 100644 --- a/pkgs/applications/science/math/scilab/default.nix +++ b/pkgs/applications/science/math/scilab/default.nix @@ -29,35 +29,29 @@ stdenv.mkDerivation rec { /* --with-atlas-library=DIR Atlas library files are in DIR and we use Atlas */ - configureFlags = "" - # use gcc C compiler and gnu Fortran compiler (g77 or gfortran) - + " --with-gcc --with-g77" - # use Xaw3d widgets given with Scilab - + (lib.optionalString (!withXaw3d) " --with-local-xaw") - # do not compile with PVM library - + " --without-pvm" - # compile with GTK - + (if withGtk then " - --with-gtk --with-gtk2 - " else " - --without-gtk --without-gtk2 - ") - # compile with TCL/TK - + (lib.optionalString withTk " - --with-tk - --with-tcl-library=${tcl}/lib - --with-tcl-include=${tcl}/include - --with-tk-library=${tk}/lib - --with-tk-include=${tk}/include - ") - # do not use Gtk widgets - + " --without-gtk --without-gtk2" - # compile with ocaml - + (if withOCaml then " --with-ocaml" else " --without-ocaml") - # do not compile Java interface - + " --without-java" - # use the X Window System - + lib.optionalString withX "--with-x" + configureFlags = [ + # use gcc C compiler and gnu Fortran compiler (g77 or gfortran) + "--with-gcc" "--with-g77" + # do not compile with PVM library + "--without-pvm" + # compile with GTK + (stdenv.lib.enableFeature withGtk "gtk") + (stdenv.lib.enableFeature withGtk "gtk2") + # compile with ocaml + (stdenv.lib.withFeature withOCaml "ocaml") + # do not compile Java interface + "--without-java" + # use the X Window System + (stdenv.lib.withFeature withX "x") + # compile with TCL/TK + ] ++ lib.optionals withTk [ + "--with-tk" + "--with-tcl-library=${tcl}/lib" + "--with-tcl-include=${tcl}/include" + "--with-tk-library=${tk}/lib" + "--with-tk-include=${tk}/include" + ] # use Xaw3d widgets given with Scilab + ++ lib.optional (!withXaw3d) "--with-local-xaw" ; makeFlags = "all"; diff --git a/pkgs/applications/science/math/singular/default.nix b/pkgs/applications/science/math/singular/default.nix index 98b75cd22d05..24063216db04 100644 --- a/pkgs/applications/science/math/singular/default.nix +++ b/pkgs/applications/science/math/singular/default.nix @@ -1,5 +1,6 @@ { stdenv, fetchurl, gmp, bison, perl, ncurses, readline, coreutils, pkgconfig , lib +, fetchpatch , autoreconfHook , file , flint @@ -36,6 +37,18 @@ stdenv.mkDerivation rec { patchShebangs . ''; + patches = [ + # NTL error handler was introduced in the library part, preventing users of + # the library from implementing their own error handling + # https://www.singular.uni-kl.de/forum/viewtopic.php?t=2769 + (fetchpatch { + name = "move_error_handler_out_of_libsingular.patch"; + # rebased version of https://github.com/Singular/Sources/commit/502cf86d0bb2a96715be6764774b64a69c1ca34c.patch + url = "https://git.sagemath.org/sage.git/plain/build/pkgs/singular/patches/singular-ntl-error-handler.patch?h=50b9ae2fd233c30860e1cbb3e63a26f2cc10560a"; + sha256 = "0vgh4m9zn1kjl0br68n04j4nmn5i1igfn28cph0chnwf7dvr9194"; + }) + ]; + # For reference (last checked on commit 75f460d): # https://github.com/Singular/Sources/blob/spielwiese/doc/Building-Singular-from-source.md # https://github.com/Singular/Sources/blob/spielwiese/doc/external-packages-dynamic-modules.md diff --git a/pkgs/applications/science/math/symmetrica/default.nix b/pkgs/applications/science/math/symmetrica/default.nix index 6123fd7306d9..a641993b393b 100644 --- a/pkgs/applications/science/math/symmetrica/default.nix +++ b/pkgs/applications/science/math/symmetrica/default.nix @@ -5,20 +5,15 @@ stdenv.mkDerivation rec { name = "symmetrica-${version}"; version = "2.0"; + src = fetchurl { url = "http://www.algorithm.uni-bayreuth.de/en/research/SYMMETRICA/SYM2_0_tar.gz"; sha256 = "1qhfrbd5ybb0sinl9pad64rscr08qvlfzrzmi4p4hk61xn6phlmz"; name = "symmetrica-2.0.tar.gz"; }; + sourceRoot = "."; - installPhase = '' - mkdir -p "$out"/{lib,share/doc/symmetrica,include/symmetrica} - ar crs libsymmetrica.a *.o - ranlib libsymmetrica.a - cp libsymmetrica.a "$out/lib" - cp *.h "$out/include/symmetrica" - cp README *.doc "$out/share/doc/symmetrica" - ''; + patches = [ # don't show banner ("SYMMETRICA VERSION X - STARTING) # it doesn't contain very much helpful information and a banner is not ideal for a library @@ -34,13 +29,34 @@ stdenv.mkDerivation rec { url = "https://git.sagemath.org/sage.git/plain/build/pkgs/symmetrica/patches/int32.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba"; sha256 = "0p33c85ck4kd453z687ni4bdcqr1pqx2756j7aq11bf63vjz4cyz"; }) + + (fetchpatch { + url = "https://git.sagemath.org/sage.git/plain/build/pkgs/symmetrica/patches/return_values.patch?id=1615f58890e8f9881c4228c78a6b39b9aab1303a"; + sha256 = "0dmczkicwl50sivc07w3wm3jpfk78wm576dr25999jdj2ipsb7nk"; + }) ]; + + postPatch = '' + substituteInPlace makefile --replace gcc cc + ''; + + enableParallelBuilding = true; + + installPhase = '' + mkdir -p "$out"/{lib,share/doc/symmetrica,include/symmetrica} + ar crs libsymmetrica.a *.o + ranlib libsymmetrica.a + cp libsymmetrica.a "$out/lib" + cp *.h "$out/include/symmetrica" + cp README *.doc "$out/share/doc/symmetrica" + ''; + meta = { inherit version; description = ''A collection of routines for representation theory and combinatorics''; license = stdenv.lib.licenses.publicDomain; maintainers = [stdenv.lib.maintainers.raskin]; - platforms = stdenv.lib.platforms.linux; + platforms = stdenv.lib.platforms.unix; homepage = http://www.symmetrica.de/; }; } diff --git a/pkgs/applications/science/misc/boinc/default.nix b/pkgs/applications/science/misc/boinc/default.nix index a1b8769617c9..01bd1c6fd80c 100644 --- a/pkgs/applications/science/misc/boinc/default.nix +++ b/pkgs/applications/science/misc/boinc/default.nix @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - configureFlags = "--disable-server"; + configureFlags = [ "--disable-server" ]; meta = { description = "Free software for distributed and grid computing"; diff --git a/pkgs/applications/science/misc/simgrid/default.nix b/pkgs/applications/science/misc/simgrid/default.nix index 17a1719ba1ed..b6cd8c294c1b 100644 --- a/pkgs/applications/science/misc/simgrid/default.nix +++ b/pkgs/applications/science/misc/simgrid/default.nix @@ -1,11 +1,11 @@ -{ stdenv, fetchFromGitHub, cmake, elfutils, perl, python3, boost, valgrind +{ stdenv, fetchFromGitHub, cmake, perl, python3, boost, valgrind # Optional requirements # Lua 5.3 needed and not available now #, luaSupport ? false, lua5 , fortranSupport ? false, gfortran , buildDocumentation ? false, transfig, ghostscript, doxygen , buildJavaBindings ? false, openjdk -, modelCheckingSupport ? false, libunwind, libevent # Inside elfutils - , libelf, libevent, libdw +, modelCheckingSupport ? false, libunwind, libevent, elfutils # Inside elfutils: libelf and libdw , debug ? false , moreTests ? false }: @@ -18,20 +18,20 @@ in stdenv.mkDerivation rec { name = "simgrid-${version}"; - version = "3.19.1"; + version = "3.20"; src = fetchFromGitHub { owner = "simgrid"; repo = "simgrid"; rev = "v${version}"; - sha256 = "0vpgcp40xv20hcpslx5wz2mf2phaq41f7x8yr0bm7mknqd3zwxih"; + sha256 = "0xb20qhvsah2dz2hvn850i3w9a5ghsbcx8vka2ap6xsdkxf593gy"; }; - nativeBuildInputs = [ cmake perl elfutils python3 boost valgrind ] + nativeBuildInputs = [ cmake perl python3 boost valgrind ] ++ optionals fortranSupport [ gfortran ] ++ optionals buildJavaBindings [ openjdk ] ++ optionals buildDocumentation [ transfig ghostscript doxygen ] - ++ optionals modelCheckingSupport [ libunwind libevent ]; + ++ optionals modelCheckingSupport [ libunwind libevent elfutils ]; #buildInputs = optional luaSupport lua5; @@ -83,13 +83,15 @@ stdenv.mkDerivation rec { ''; doCheck = true; - + checkPhase = '' runHook preCheck - ctest --output-on-failure -E smpi-replay-multiple + + ctest -j $NIX_BUILD_CORES --output-on-failure -E smpi-replay-multiple + runHook postCheck ''; - + enableParallelBuilding = true; meta = { diff --git a/pkgs/applications/science/robotics/apmplanner2/default.nix b/pkgs/applications/science/robotics/apmplanner2/default.nix new file mode 100644 index 000000000000..7ae44418fff6 --- /dev/null +++ b/pkgs/applications/science/robotics/apmplanner2/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchFromGitHub, qmake +, qtbase, qtscript, qtwebkit, qtserialport, qtsvg, qtdeclarative, qtquickcontrols2 +, alsaLib, libsndfile, flite, openssl, udev, SDL2 +}: + +stdenv.mkDerivation rec { + name = "apmplanner2-${version}"; + version = "2.0.26"; + src = fetchFromGitHub { + owner = "ArduPilot"; + repo = "apm_planner"; + rev = "${version}"; + sha256 = "0bnyi1r8k8ij5sq2zqv7mfbrxm0xdw97qrx3sk4rinqv2g6h6di4"; + }; + + qtInputs = [ + qtbase qtscript qtwebkit qtserialport qtsvg qtdeclarative qtquickcontrols2 + ]; + + buildInputs = [ alsaLib libsndfile flite openssl udev SDL2 ] ++ qtInputs; + nativeBuildInputs = [ qmake ]; + + qmakeFlags = [ "apm_planner.pro" ]; + + # this ugly hack is necessary, as `bin/apmplanner2` needs the contents of `share/APMPlanner2` inside of `bin/` + preFixup = "ln --relative --symbolic $out/share/APMPlanner2/* $out/bin/"; + + enableParallelBuilding = true; + + meta = { + description = "Ground station software for autonomous vehicles"; + longDescription = '' + A GUI ground control station for autonomous vehicles using the MAVLink protocol. + Includes support for the APM and PX4 based controllers. + ''; + homepage = http://ardupilot.org/planner2/; + license = stdenv.lib.licenses.gpl3; + maintainers = [ stdenv.lib.maintainers.wucke13 ]; + }; +} |