Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 27 additions & 16 deletions pkgs/applications/science/math/giac/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,44 @@
, gmp, mpfr, pari, ntl, gsl, mpfi, ecm, glpk, nauty
, readline, gettext, libpng, libao, gfortran, perl
, enableGUI ? false, libGL, libGLU, xorg, fltk
, enableMicroPy ? false, python3
}:

assert (!blas.isILP64) && (!lapack.isILP64);

stdenv.mkDerivation rec {
pname = "giac${lib.optionalString enableGUI "-with-xcas"}";
version = "1.5.0-87"; # TODO try to remove preCheck phase on upgrade
version = "1.6.0-47"; # TODO try to remove preCheck phase on upgrade

src = fetchurl {
url = "https://www-fourier.ujf-grenoble.fr/~parisse/debian/dists/stable/main/source/giac_${version}.tar.gz";
sha256 = "1d0h1yb7qvh9x7wwv9yrzmcp712f49w1iljkxp4y6g9pzsmg1mmv";
sha256 = "sha256-c5A9/I6L/o3Y3dxEPoTKpw/fJqYMr6euLldaQ1HWT5c=";
};

patches = lib.optionals (!enableGUI) [
# when enableGui is false, giac is compiled without fltk. That means some
# outputs differ in the make check. Patch around this:
patches = [
(fetchpatch {
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/giac/patches/nofltk-check.patch?id=7553a3c8dfa7bcec07241a07e6a4e7dcf5bb4f26";
name = "pari_2_11.patch";
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/giac/patches/pari_2_11.patch?id=21ba7540d385a9864b44850d6987893dfa16bfc0";
sha256 = "sha256-vEo/5MNzMdYRPWgLFPsDcMT1W80Qzj4EPBjx/B8j68k=";
})
] ++ lib.optionals (!enableGUI) [
# when enableGui is false, giac is compiled without fltk. That
# means some outputs differ in the make check. Patch around this:
(fetchpatch {
name = "nofltk-check.patch";
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/giac/patches/nofltk-check.patch?id=7553a3c8dfa7bcec07241a07e6a4e7dcf5bb4f26";
sha256 = "0xkmfc028vg5w6va04gp2x2iv31n8v4shd6vbyvk4blzgfmpj2cw";
})
];

postPatch = ''
for i in doc/*/Makefile*; do
for i in doc/*/Makefile* micropython*/xcas/Makefile*; do
substituteInPlace "$i" --replace "/bin/cp" "cp";
done;
'' +
# workaround for 1.6.0-47, should not be necessary in future versions
lib.optionalString (!enableMicroPy) ''
sed -i -e 's/micropython-[0-9.]* //' Makefile*
'';

nativeBuildInputs = [
Expand All @@ -44,7 +56,7 @@ stdenv.mkDerivation rec {
lapack blas
] ++ lib.optionals enableGUI [
libGL libGLU fltk xorg.libX11
];
] ++ lib.optional enableMicroPy python3;

/* fixes:
configure:16211: checking for main in -lntl
Expand All @@ -58,13 +70,12 @@ stdenv.mkDerivation rec {
outputs = [ "out" ] ++ lib.optional (!enableGUI) "doc";

doCheck = true;
preCheck = ''
# One test in this file fails. That test just tests a part of the pari
# interface that isn't actually used in giac. Of course it would be better
# to only remove that one test, but that would require a patch.
# Removing the whole test set should be good enough for now.
# Upstream report: https://xcas.univ-grenoble-alpes.fr/forum/viewtopic.php?f=4&t=2102#p10326
echo > check/chk_fhan11
preCheck = lib.optionalString (!enableGUI) ''
# even with the nofltk patch, some changes in src/misc.cc (grep
# for HAVE_LIBFLTK) made it so that giac behaves differently
# when fltk is disabled. disable these tests for now.
echo > check/chk_fhan2
echo > check/chk_fhan9
'';

enableParallelBuilding = true;
Expand All @@ -75,7 +86,7 @@ stdenv.mkDerivation rec {
"--enable-ao" "--enable-ecm" "--enable-glpk"
] ++ lib.optionals enableGUI [
"--enable-gui" "--with-x"
];
] ++ lib.optional (!enableMicroPy) "--disable-micropy";

postInstall = ''
# example Makefiles contain the full path to some commands
Expand Down
6 changes: 3 additions & 3 deletions pkgs/applications/science/math/palp/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ let
in
stdenv.mkDerivation rec {
pname = "palp";
version = "2.11";
version = "2.20";

src = fetchurl {
url = "http://hep.itp.tuwien.ac.at/~kreuzer/CY/palp/palp-${version}.tar.gz";
sha256 = "00jpm73fw9jjq58z6rysr1mwv489j6rpfqqlhm9ab0dln4kyhh05";
url = "http://hep.itp.tuwien.ac.at/~kreuzer/CY/palp/${pname}-${version}.tar.gz";
sha256 = "1q1cl3vpdir16szy0jcadysydcrjp48hqxyx42kr8g9digkqjgkj";
};

hardeningDisable = [
Expand Down

This file was deleted.

39 changes: 0 additions & 39 deletions pkgs/applications/science/math/sage/patches/pillow-update.patch

This file was deleted.

This file was deleted.

This file was deleted.

102 changes: 70 additions & 32 deletions pkgs/applications/science/math/sage/sage-src.nix
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,20 @@
# This is done because multiple derivations rely on these sources and they should
# all get the same sources with the same patches applied.

let
# Fetch a diff between `base` and `rev` on sage's git server.
# Used to fetch trac tickets by setting the `base` to the last release and the
# `rev` to the last commit of the ticket.
fetchSageDiff = { base, name, rev, sha256, ...}@args: (
fetchpatch ({
inherit name sha256;
url = "https://git.sagemath.org/sage.git/patch?id2=${base}&id=${rev}";
# We don't care about sage's own build system (which builds all its dependencies).
# Exclude build system changes to avoid conflicts.
excludes = [ "build/*" ];
} // builtins.removeAttrs args [ "rev" "base" "sha256" ])
);
in
stdenv.mkDerivation rec {
version = "9.2";
pname = "sage-src";
Expand Down Expand Up @@ -40,17 +54,13 @@ stdenv.mkDerivation rec {
# https://groups.google.com/forum/#!topic/sage-packaging/YGOm8tkADrE
./patches/sphinx-docbuild-subprocesses.patch

# Sage's workaround to pretty print dicts (in
# src/sage/doctest/forker.py:init_sage) runs too late (after
# controller.load_environment(), which imports sage.all.*) to to
# affect sage.sandpiles.Sandpile{Config,Divisor}'s pretty printer.
# Due to the sandpiles module being lazily loaded, this only
# affects the first run (subsequent runs read from an import cache
# at ~/.sage/cache and are not affected), which is probably why
# other distributions don't hit this bug. This breaks two sandpile
# tests, so do the workaround a little bit earlier.
# https://trac.sagemath.org/ticket/31053
./patches/register-pretty-printer-earlier.patch
# Register sorted dict pprinter earlier (https://trac.sagemath.org/ticket/31053)
(fetchSageDiff {
base = "9.3.beta4";
name = "register-pretty-printer-earlier.patch";
rev = "d658230ce06ca19f4a3b3a4576297ee82f2d2151";
sha256 = "sha256-9mPUV7K5PoLDH2vVaYaOfvDLDpmxU0Aj7m/eaXYotDs=";
})
];

# Since sage unfortunately does not release bugfix releases, packagers must
Expand All @@ -63,17 +73,20 @@ stdenv.mkDerivation rec {

# fix intermittent errors in Sage 9.2's psage.py (this patch is
# already included in Sage 9.3): https://trac.sagemath.org/ticket/30730
(fetchpatch {
(fetchSageDiff {
base = "9.2.rc2";
name = "fix-psage-is-locked.patch";
url = "https://git.sagemath.org/sage.git/patch/?id=75df605f216ddc7b6ca719be942d666b241520e9";
rev = "75df605f216ddc7b6ca719be942d666b241520e9";
sha256 = "0g9pl1wbb3sgs26d3bvv70cpa77sfskylv4kd255y1794f1fgk4q";
})

# fix intermittent errors in sagespawn.pyx: https://trac.sagemath.org/ticket/31052
./patches/sagespawn-implicit-casting.patch

# disable pexpect interrupt test (see https://trac.sagemath.org/ticket/30945)
./patches/disable-pexpect-intermittent-failure.patch
(fetchSageDiff {
base = "9.2";
name = "sagespawn-implicit-casting.patch";
rev = "2959ac792ebd6107fe87c9af1541083de5ba02d6";
sha256 = "sha256-bWIpEGir9Kawak5CJegBMNcHm/CqhWmdru+emeSsvO0=";
})
];

# Patches needed because of package updates. We could just pin the versions of
Expand All @@ -82,20 +95,7 @@ stdenv.mkDerivation rec {
# compatible with never dependency versions when possible. All these changes
# should come from or be proposed to upstream. This list will probably never
# be empty since dependencies update all the time.
packageUpgradePatches = let
# Fetch a diff between `base` and `rev` on sage's git server.
# Used to fetch trac tickets by setting the `base` to the last release and the
# `rev` to the last commit of the ticket.
fetchSageDiff = { base, rev, name ? "sage-diff-${base}-${rev}.patch", ...}@args: (
fetchpatch ({
inherit name;
url = "https://git.sagemath.org/sage.git/patch?id2=${base}&id=${rev}";
# We don't care about sage's own build system (which builds all its dependencies).
# Exclude build system changes to avoid conflicts.
excludes = [ "build/*" ];
} // builtins.removeAttrs args [ "rev" "base" ])
);
in [
packageUpgradePatches = [
# After updating smypow to (https://trac.sagemath.org/ticket/3360) we can
# now set the cache dir to be withing the .sage directory. This is not
# strictly necessary, but keeps us from littering in the user's HOME.
Expand All @@ -105,7 +105,20 @@ stdenv.mkDerivation rec {
./patches/ignore-cmp-deprecation.patch

# adapt sage's Image class to pillow 8.0.1 (https://trac.sagemath.org/ticket/30971)
./patches/pillow-update.patch
(fetchSageDiff {
base = "9.3.beta2";
name = "pillow-8.0.1-update.patch";
rev = "f05f2d0aac9c4b5abe68105cee2cc7f2c8461847";
sha256 = "sha256-uY2UlgSd5hhOUUukB4Xc3Gjy0/e7p/qyq9jdvz10IOs=";
})

# don't use deprecated numpy type aliases (https://trac.sagemath.org/ticket/31364)
(fetchSageDiff {
base = "9.3.beta7";
name = "dont-use-deprecated-numpy-type-aliases.patch";
rev = "dfdef60515d4a4269e82d91280f76a7fdf10bf97";
sha256 = "sha256-77/3LkT5J7DQN8IPlGJKB6ZcJPaF7xwje06JNns+0AE=";
})

# fix test output with sympy 1.7 (https://trac.sagemath.org/ticket/30985)
./patches/sympy-1.7-update.patch
Expand All @@ -115,6 +128,31 @@ stdenv.mkDerivation rec {

# updated eclib output has punctuation changes and tidier whitespace
./patches/eclib-20210223-test-formatting.patch

# upgrade arb to 2.18.1 (https://trac.sagemath.org/ticket/28623)
(fetchSageDiff {
base = "9.3.beta3";
name = "arb-2.18.1-update.patch";
rev = "0c9c4ed35c2eaf34ae0d19387c07b7f460e4abce";
sha256 = "sha256-CjOJIsyyVCziAfvE6pWSihPO35IZMcY2/taXAsqhPLY=";
})

# giac 1.6.0-47 update (https://trac.sagemath.org/ticket/30537)
(fetchSageDiff {
base = "9.3.beta7";
name = "giac-1.6.0-47-update.patch";
rev = "f05720bf63dfaf33a4e3b6d3ed2c2c0ec46b5d31";
sha256 = "sha256-gDUq+84eXd5GxLBWUSI61GMJpBF2KX4LBVOt3mS1NF8=";
})

# Make gcd/lcm interact better with pari and gmpy2 (https://trac.sagemath.org/ticket/30849)
# needed for pari 2.13.1 update, which we will do in the future
(fetchSageDiff {
base = "9.3.beta0";
name = "make-gcd-lcm-interact-better-with-pari-and-gmpy2.patch";
rev = "75c1516f0abb9e6f8c335e38e4031f6ef674ed30";
sha256 = "sha256-RukkieIZcXNrju904H2oyGKdtpdE+9vNzvyjN2IBNg0=";
})
];

patches = nixPatches ++ bugfixPatches ++ packageUpgradePatches;
Expand Down
13 changes: 10 additions & 3 deletions pkgs/development/libraries/arb/default.nix
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
{ lib, stdenv, fetchFromGitHub, mpir, gmp, mpfr, flint }:
{ lib
, stdenv
, fetchFromGitHub
, mpir
, gmp
, mpfr
, flint
}:

stdenv.mkDerivation rec {
pname = "arb";
version = "2.17.0";
version = "2.19.0";

src = fetchFromGitHub {
owner = "fredrik-johansson";
repo = pname;
rev = version;
sha256 = "05lpy3hkl5f8ik19aw40cqydrb932xaf2n8hbq9ib5dnk7f010p1";
sha256 = "sha256-J/LQVZ8gmssazE7ru89EtvW6cVjaLEHgUHuwjW1nuOE=";
};

buildInputs = [ mpir gmp mpfr flint ];
Expand Down
Loading