commit
78d5690ddc
@ -1,29 +1,80 @@
|
||||
{ stdenv, fetchurl, m4, gmp }:
|
||||
|
||||
let
|
||||
baseName = "gap";
|
||||
version = "4r8p3";
|
||||
|
||||
pkgVer = "2016_03_19-22_17";
|
||||
in
|
||||
{ stdenv
|
||||
, fetchurl
|
||||
, fetchpatch
|
||||
, m4
|
||||
, gmp
|
||||
# don't remove any packages -- results in a ~1.3G size increase
|
||||
# see https://github.com/NixOS/nixpkgs/pull/38754 for a discussion
|
||||
, keepAllPackages ? true
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "${baseName}-${version}";
|
||||
pname = "gap";
|
||||
# https://www.gap-system.org/Releases/
|
||||
# newer versions (4.9.0) are available, but still considered beta (https://github.com/gap-system/gap/wiki/GAP-4.9-release-notes)
|
||||
version = "4r8p10";
|
||||
pkgVer = "2018_01_15-13_02";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "ftp://ftp.gap-system.org/pub/gap/gap48/tar.gz/${baseName}${version}_${pkgVer}.tar.gz";
|
||||
sha256 = "1rmb0lj43avv456sjwb7ia3y0wwk5shlqylpkdwnnqpjnvjbnzv6";
|
||||
src = let
|
||||
# 4r8p10 -> 48
|
||||
majorminor = stdenv.lib.replaceStrings ["r"] [""] (
|
||||
builtins.head (stdenv.lib.splitString "p" version) # 4r8p10 -> 4r8
|
||||
);
|
||||
in
|
||||
fetchurl {
|
||||
url = "https://www.gap-system.org/pub/gap/gap${majorminor}/tar.bz2/gap${version}_${pkgVer}.tar.bz2";
|
||||
sha256 = "0wzfdjnn6sfiaizbk5c7x44rhbfayis4lf57qbqqg84c7dqlwr6f";
|
||||
};
|
||||
|
||||
# remove all non-essential packages (which take up a lot of space)
|
||||
preConfigure = stdenv.lib.optionalString (!keepAllPackages) ''
|
||||
find pkg -type d -maxdepth 1 -mindepth 1 \
|
||||
-not -name 'GAPDoc-*' \
|
||||
-not -name 'autpgrp*' \
|
||||
-exec echo "Removing package {}" \; \
|
||||
-exec rm -r {} \;
|
||||
'';
|
||||
|
||||
configureFlags = [ "--with-gmp=system" ];
|
||||
buildInputs = [ m4 gmp ];
|
||||
|
||||
|
||||
patches = [
|
||||
# fix infinite loop in writeandcheck() when writing an error message fails.
|
||||
(fetchpatch {
|
||||
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/gap/patches/writeandcheck.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
|
||||
sha256 = "1r1511x4kc2i2mbdq1b61rb6p3misvkf1v5qy3z6fmn6vqwziaz1";
|
||||
})
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
checkTarget = "testinstall";
|
||||
# "teststandard" is a superset of testinstall. It takes ~1h instead of ~1min.
|
||||
# tests are run twice, once with all packages loaded and once without
|
||||
# checkTarget = "teststandard";
|
||||
|
||||
preCheck = ''
|
||||
# gap tests check that the home directory exists
|
||||
export HOME="$TMP/gap-home"
|
||||
mkdir -p "$HOME"
|
||||
'';
|
||||
|
||||
postCheck = ''
|
||||
# The testsuite doesn't exit with a non-zero exit code on failure.
|
||||
# It leaves its logs in dev/log however.
|
||||
|
||||
# grep for error messages
|
||||
if grep ^##### dev/log/*; then
|
||||
exit 1
|
||||
fi
|
||||
'';
|
||||
|
||||
postBuild = ''
|
||||
pushd pkg
|
||||
bash ../bin/BuildPackages.sh
|
||||
popd
|
||||
'';
|
||||
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out/bin" "$out/share/gap/"
|
||||
|
||||
@ -31,7 +82,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
sed -e "/GAP_DIR=/aGAP_DIR='$out/share/gap/build-dir/'" -i "$out/share/gap/build-dir/bin/gap.sh"
|
||||
|
||||
ln -s "$out/share/gap/build-dir/bin/gap.sh" "$out/bin"
|
||||
ln -s "$out/share/gap/build-dir/bin/gap.sh" "$out/bin/gap"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
@ -42,6 +93,10 @@ stdenv.mkDerivation rec {
|
||||
chrisjefferson
|
||||
];
|
||||
platforms = platforms.all;
|
||||
# keeping all packages increases the package size considerably, wchich
|
||||
# is why a local build is preferable in that situation. The timeframe
|
||||
# is reasonable and that way the binary cache doesn't get overloaded.
|
||||
hydraPlatforms = stdenv.lib.optionals (!keepAllPackages) platforms;
|
||||
license = licenses.gpl2;
|
||||
homepage = http://gap-system.org/;
|
||||
};
|
||||
|
@ -20127,6 +20127,8 @@ with pkgs;
|
||||
|
||||
gap = callPackage ../applications/science/math/gap { };
|
||||
|
||||
gap-minimal = lowPrio (gap.override { keepAllPackages = false; });
|
||||
|
||||
geogebra = callPackage ../applications/science/math/geogebra { };
|
||||
|
||||
maxima = callPackage ../applications/science/math/maxima {
|
||||
|
Loading…
Reference in New Issue
Block a user