Your message dated Thu, 19 Aug 2021 01:35:34 +0530
with message-id <YR1oDiIGtfVaMB9L@debian>
and subject line Re: brian: Fails to build reproducibly
has caused the Debian Bug report #989693,
regarding brian: Fails to build reproducibly
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
989693: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=989693
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Source: brian
Version: 2.4.2-6
Severity: normal
Tags: patch
User: [email protected]
Usertags: timestamps, randomness
X-Debbugs-Cc: [email protected], [email protected]
Dear Maintainer,
Brian does not build reproducibly because:
a) It injects timestamps into docs
b) It injects files and text in random order into files
Super thanks to Felix C. Stegerman <[email protected]> for helping with
patch for the latter reason! :-)
I've committed a patch to salsa here[1] and will upload post bullseye
release.
Also attaching the corresponding patch with this email
[1]:
https://salsa.debian.org/med-team/brian/-/commit/f16a61b846edb138e0d81cba1cc5e58f0e625ccc
Nilesh
-- System Information:
Debian Release: bullseye/sid
APT prefers testing
APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 5.7.0-2-amd64 (SMP w/8 CPU threads)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
From f16a61b846edb138e0d81cba1cc5e58f0e625ccc Mon Sep 17 00:00:00 2001
From: Nilesh Patra <[email protected]>
Date: Thu, 10 Jun 2021 22:03:05 +0530
Subject: [PATCH] Make build reproducible
---
debian/patches/reproducible.patch | 65 +++++++++++++++++++++++++++++++
debian/patches/series | 1 +
debian/rules | 1 +
3 files changed, 67 insertions(+)
create mode 100644 debian/patches/reproducible.patch
diff --git a/debian/patches/reproducible.patch
b/debian/patches/reproducible.patch
new file mode 100644
index 00000000..05db27f0
--- /dev/null
+++ b/debian/patches/reproducible.patch
@@ -0,0 +1,65 @@
+Description: Fix timestamps, insert files in deterministic order
+Author: Nilesh Patra <[email protected]>
+Last-Update: 2021-06-10
+--- a/dev/tools/release/setversion.py
++++ b/dev/tools/release/setversion.py
+@@ -8,7 +8,7 @@
+ * README.txt version
+ '''
+
+-import os, sys, re, datetime
++import os, sys, re, datetime, time
+
+
+ def setversion(version):
+@@ -47,7 +47,9 @@
+
+
+ def setreleasedate():
+- releasedate = str(datetime.date.today())
++ releasedate = str(datetime.datetime.utcfromtimestamp(
++ int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))
++ ).date())
+ pathname = os.path.abspath(os.path.dirname(__file__))
+ os.chdir(pathname)
+ os.chdir('../../../')
+--- a/docs_sphinx/conf.py
++++ b/docs_sphinx/conf.py
+@@ -99,8 +99,10 @@
+
+ # General information about the project.
+ project = 'Brian 2'
+-import datetime
+-copyright = '2012–{}, Brian authors'.format(datetime.datetime.today().year)
++import datetime, time
++copyright = '2012–{}, Brian
authors'.format(datetime.datetime.utcfromtimestamp(
++ int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))
++ ).year)
+
+ # The version info for the project you're documenting, acts as replacement for
+ # |version| and |release|, also used in various other places throughout the
+--- a/brian2/sphinxext/examplefinder.py
++++ b/brian2/sphinxext/examplefinder.py
+@@ -54,9 +54,9 @@
+ '''
+ name = obj.__name__
+ examples_map = get_examples_map()
+- examples = the_examples_map[name]
++ examples = sorted(the_examples_map[name])
+ tutorials_map = get_tutorials_map()
+- tutorials = the_tutorials_map[name]
++ tutorials = sorted(the_tutorials_map[name])
+ if len(examples+tutorials)==0:
+ return ''
+ txt = 'Tutorials and examples using this'
+--- a/brian2/sphinxext/generate_examples.py
++++ b/brian2/sphinxext/generate_examples.py
+@@ -160,7 +160,7 @@
+ category_additional_files[relpath].append((file, full_name))
+ with codecs.open(fname, 'rU', encoding='utf-8') as f:
+ content = f.read()
+- output = file + '\n' + '=' * len(title) + '\n\n'
++ output = file + '\n' + '=' * len(file) + '\n\n'
+ output += '.. code:: none\n\n'
+ content_lines = ['\t' + l for l in content.split('\n')]
+ output += '\n'.join(content_lines)
diff --git a/debian/patches/series b/debian/patches/series
index 742a3d6c..257f3619 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
ignore_failing_test.patch
privacy.patch
gsl-compiler-arg.patch
+reproducible.patch
diff --git a/debian/rules b/debian/rules
index a0cd4b0c..d1719605 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,6 +1,7 @@
#!/usr/bin/make -f
# -*- makefile -*-
+export LANG=C.UTF-8 LC_ALL=C.UTF-8
ifeq (,$(findstring get-orig-source, $(MAKECMDGOALS)))
export http_proxy=http://127.0.0.1:9/
endif
--
GitLab
--- End Message ---
--- Begin Message ---
control: fixed 989693 2.4.2-7
thanks
Closing the bug report, the new revision has been uploaded
signature.asc
Description: PGP signature
--- End Message ---