Merge pull request #65802 from timokau/sage-transient-debug

sage: add patch to debug transient issue
This commit is contained in:
Timo Kaufmann 2019-08-17 00:33:05 +02:00 committed by GitHub
commit 192197dc6c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 45 additions and 1 deletions

@ -0,0 +1,17 @@
# Lists past failures and files associated with it. The intention is to build
# up a subset of a testsuite that catches 95% of failures that are relevant for
# distributions while only taking ~5m to run. This in turn makes it more
# reasonable to re-test sage on dependency changes and makes it easier for
# users to override the sage derivation.
# This is an experiment for now. If it turns out that there really is a small
# subset of files responsible for the vast majority of packaging tests, we can
# think about moving this upstream.
[
"src/sage/env.py" # [1]
"src/sage/misc/persist.pyx" # [1]
"src/sage/misc/inline_fortran.py" # [1]
"src/sage/repl/ipython_extension.py" # [1]
]
# Numbered list of past failures to annotate files with
# [1] PYTHONPATH related issue https://github.com/NixOS/nixpkgs/commit/ec7f569211091282410050e89e68832d4fe60528

@ -0,0 +1,19 @@
diff --git a/src/sage/repl/configuration.py b/src/sage/repl/configuration.py
index 67d7d2accf..18279581e2 100644
--- a/src/sage/repl/configuration.py
+++ b/src/sage/repl/configuration.py
@@ -9,10 +9,11 @@ the IPython simple prompt is being used::
sage: cmd = 'print([sys.stdin.isatty(), sys.stdout.isatty()])'
sage: import pexpect
sage: output = pexpect.run(
- ....: 'bash -c \'echo "{0}" | sage\''.format(cmd),
+ ....: 'bash -c \'export SAGE_BANNER=no; echo "{0}" | sage\''.format(cmd),
....: ).decode('utf-8', 'surrogateescape')
- sage: 'sage: [False, True]' in output
- True
+ sage: print(output)
+ sage...[False, True]
+ sage...Exiting Sage ...
"""
#*****************************************************************************

@ -61,7 +61,11 @@ stdenv.mkDerivation rec {
# Since sage unfortunately does not release bugfix releases, packagers must
# fix those bugs themselves. This is for critical bugfixes, where "critical"
# == "causes (transient) doctest failures / somebody complained".
bugfixPatches = [ ];
bugfixPatches = [
# To help debug the transient error in
# https://trac.sagemath.org/ticket/23087 when it next occurs.
./patches/configurationpy-error-verbose.patch
];
# Patches needed because of package updates. We could just pin the versions of
# dependencies, but that would lead to rebuilds, confusion and the burdons of

@ -51,6 +51,10 @@ stdenv.mkDerivation rec {
export HOME="$TMPDIR/sage-home"
mkdir -p "$HOME"
# avoid running out of memory with many threads in subprocesses, see
# https://github.com/NixOS/nixpkgs/pull/65802
export GLIBC_TUNABLES=glibc.malloc.arena_max=4
echo "Running sage tests with arguments ${timeSpecifier} ${patienceSpecifier} ${testArgs}"
"sage" -t --nthreads "$NIX_BUILD_CORES" --optional=sage ${timeSpecifier} ${patienceSpecifier} ${testArgs}
'';