sympow: 1.018.1 -> 2.023.4

Maintenance taken over by debian package maintainer jgmbenoit:
https://trac.sagemath.org/ticket/3360#comment:17

This moves sympow to his fork, since there is no offical
version-controlled source repository from the original author and they
do not seem to maintain sympow anymore. We had already accumulated quite
some patches from debian, who have effectively maintained sympow for a
while now.
This commit is contained in:
Timo Kaufmann 2019-08-08 22:34:19 +02:00
parent 9175a201bb
commit 5e58c5f900
2 changed files with 44 additions and 59 deletions

View file

@ -3,7 +3,7 @@
, sage-with-env
, makeWrapper
, files ? null # "null" means run all tests
, longTests ? true # run tests marked as "long time" (roughly doubles runtime)
, longTests ? false # run tests marked as "long time" (roughly doubles runtime)
# Run as many tests as possible in approximately n seconds. This will give each
# file to test a "time budget" and stop tests if it is exceeded. 300 is the
# upstream default value.

View file

@ -1,89 +1,74 @@
{ stdenv
, fetchurl
, fetchpatch
, fetchFromGitLab
, makeWrapper
, which
, autoconf
, help2man
, file
, pari
}:
stdenv.mkDerivation rec {
version = "1.018.1";
version = "2.023.4";
name = "sympow-${version}";
src = fetchurl {
# Original website no longer reachable
url = "mirror://sageupstream/sympow/sympow-${version}.tar.bz2";
sha256 = "0hphs7ia1wr5mydf288zvwj4svrymfpadcg3pi6w80km2yg5bm3c";
src = fetchFromGitLab {
group = "rezozer";
owner = "forks";
repo = "sympow";
rev = "v${version}";
sha256 = "0j2qdw9csbr081h8arhlx1z7ibgi5am4ndmvyc8y4hccfa8n4w1y";
};
postUnpack = ''
patchShebangs .
'';
nativeBuildInputs = [
makeWrapper
which
autoconf
help2man
file
pari
];
configurePhase = ''
runHook preConfigure
export PREFIX="$out"
export VARPREFIX="$out" # see comment on postInstall
./Configure # doesn't take any options
runHook postConfigure
'';
installPhase = ''
runHook preInstall
install -D datafiles/* --target-directory "$out/share/sympow/datafiles/"
install *.gp "$out/share/sympow/"
install -Dm755 sympow "$out/share/sympow/sympow"
install -D new_data "$out/bin/new_data"
makeWrapper "$out/share/sympow/sympow" "$out/bin/sympow" \
--run 'export SYMPOW_LOCAL="$HOME/.local/share/sympow"' \
--run 'if [ ! -d "$SYMPOW_LOCAL" ]; then
mkdir -p "$SYMPOW_LOCAL"
cp -r ${placeholder "out"}/share/sympow/* "$SYMPOW_LOCAL"
chmod -R +xw "$SYMPOW_LOCAL"
fi' \
--run 'cd "$SYMPOW_LOCAL"'
runHook postInstall
# Usually, sympow has 3 levels of caching: statically distributed in /usr/,
# shared in /var and per-user in ~/.sympow. The shared cache assumes trust in
# other users and a shared /var is not compatible with nix's approach, so we
# set VARPREFIX to the read-only $out. This effectively disables shared
# caching. See https://trac.sagemath.org/ticket/3360#comment:36 and sympow's
# README for more details on caching.
# sympow will complain at runtime about the lack of write-permissions on the
# shared cache. We pass the `-quiet` flag by default to disable this.
postInstall = ''
wrapProgram "$out/bin/sympow" --add-flags '-quiet'
'';
patches = [
# don't hardcode paths
(fetchpatch {
name = "do_not_hardcode_paths.patch";
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/sympow/patches/Configure.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
sha256 = "1611p8ra8zkxvmxn3gm2l64bd4ma4m6r4vd6vwswcic91k1fci04";
})
# bug on some platforms in combination with a newer gcc:
# https://trac.sagemath.org/ticket/11920
(fetchpatch {
name = "fix_newer_gcc1.patch";
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/sympow/patches/fpu.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
sha256 = "14gfa56w3ddfmd4d5ir9a40y2zi43cj1i4d2l2ij9l0qlqdy9jyx";
})
(fetchpatch {
name = "fix_newer_gcc2.patch";
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/sympow/patches/execlp.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
sha256 = "190gqhgz9wgw4lqwz0nwb1izc9zffx34bazsiw2a2sz94bmgb54v";
})
# fix pointer initialization bug (https://trac.sagemath.org/ticket/22862)
(fetchpatch {
name = "fix_pointer_initialization1.patch";
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/sympow/patches/initialize-tacks.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
sha256 = "02341vdbbidfs39s26vi4n5wigz619sw8fdbl0h9qsmwwhscgf85";
})
(fetchpatch {
name = "fix_pointer_initialization2.patch";
url = "https://git.archlinux.org/svntogit/community.git/plain/trunk/sympow-datafiles.patch?h=packages/sympow&id=5088e641a45b23d0385d8e63be65315129b4cf58";
sha256 = "1m0vz048layb47r1jjf7fplw650ccc9x0w3l322iqmppzmv3022a";
})
];
# Example from the README as a sanity check.
doInstallCheck = true;
installCheckPhase = ''
export HOME="$TMP/home"
mkdir -p "$HOME"
"$out/bin/sympow" -sp 2p16 -curve "[1,2,3,4,5]" | grep '8.3705'
'';
meta = with stdenv.lib; {
description = "A package to compute special values of symmetric power elliptic curve L-functions";
description = "Compute special values of symmetric power elliptic curve L-functions";
license = {
shortName = "sympow";
fullName = "Custom, BSD-like. See COPYING file.";
free = true;
};
maintainers = with maintainers; [ timokau ];
platforms = platforms.all;
platforms = platforms.linux;
};
}