--- a/debian/patches/20_reproducible_build.patch 1970-01-01 01:00:00.000000000 +0100 --- b/debian/patches/20_reproducible_build.patch 2018-05-30 22:15:16.685488898 +0100 @@ -0,0 +1,36 @@ +Description: Make the build reproducible +Author: Chris Lamb +Last-Update: 2018-05-30 + +--- sfepy-2018.1.orig/script/gen_term_table.py ++++ sfepy-2018.1/script/gen_term_table.py +@@ -137,7 +137,8 @@ def typeset_term_table(fd, keys, table, + fd.write(''.join([newpage, label, '\n', '"' * len(label), '\n'])) + fd.write(header % (title[0].upper() + title[1:])) + +- sort_keys = [key[key.find('_'):] for key in keys] ++ # Add a secondary sort on the entire key to avoid collisions. ++ sort_keys = [(key[key.find('_'):] + key) for key in keys] + iis = nm.argsort(sort_keys) + for ii in iis: + key = keys[ii] +--- sfepy-2018.1.orig/sfepy/solvers/ls.py ++++ sfepy-2018.1/sfepy/solvers/ls.py +@@ -217,7 +217,7 @@ class ScipyIterative(LinearSolver): + _parameters = [ + ('method', 'str', 'cg', False, + 'The actual solver to use.'), +- ('setup_precond', 'callable', lambda mtx, context: None, False, ++ ('setup_precond', 'callable', None, False, + """User-supplied function for the preconditioner initialization/setup. + It is called as setup_precond(mtx, context), where mtx is the + matrix, context is a user-supplied context, and should return one +@@ -432,7 +432,7 @@ class PyAMGKrylovSolver(LinearSolver): + _parameters = [ + ('method', 'str', 'cg', False, + 'The actual solver to use.'), +- ('setup_precond', 'callable', lambda mtx, context: None, False, ++ ('setup_precond', 'callable', None, False, + """User-supplied function for the preconditioner initialization/setup. + It is called as setup_precond(mtx, context), where mtx is the + matrix, context is a user-supplied context, and should return one --- a/debian/patches/series 2018-05-30 21:35:13.463684964 +0100 --- b/debian/patches/series 2018-05-30 21:56:40.802946257 +0100 @@ -1 +1,2 @@ 10_remove_google_analytics.patch +20_reproducible_build.patch