Source: qpid-proton
Version: 0.22.0-3
Severity: wishlist
Tags: patch
User: [email protected]
Usertags: randomness
X-Debbugs-Cc: [email protected]

Hi,

Whilst working on the Reproducible Builds effort [0], we noticed
that qpid-proton's documentation could not be built reproducibly.

This is because the PYCTX object is, essentially, a memory address
which naturally varies between builds.

Patch attached that hides this member from the generated Sphinx
documentation. Do note that there is likely another, cleaner,
way of fixing this and — alas — src:qpid-proton as a whole remains
unreproducible.

 [0] https://reproducible-builds.org/


Regards,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      [email protected] / chris-lamb.co.uk
       `-
--- a/debian/patches/reproducible-build.patch   1970-01-01 01:00:00.000000000 
+0100
--- b/debian/patches/reproducible-build.patch   2019-04-03 07:12:24.411967146 
+0200
@@ -0,0 +1,48 @@
+Description: Make the build reproducible
+Author: Chris Lamb <[email protected]>
+Last-Update: 2019-04-03
+
+--- qpid-proton-0.22.0.orig/proton-c/bindings/python/proton/reactor.py
++++ qpid-proton-0.22.0/proton-c/bindings/python/proton/reactor.py
+@@ -29,7 +29,7 @@ from proton import unicode2utf8, utf82un
+ 
+ import traceback
+ from proton import WrappedHandler, _chandler, secs2millis, millis2secs, 
timeout2millis, millis2timeout, Selectable
+-from .wrapper import Wrapper, PYCTX
++from .wrapper import Wrapper, _PYCTX
+ from cproton import *
+ from . import _compat
+ 
+@@ -77,7 +77,7 @@ class Reactor(Wrapper):
+             return None
+         else:
+             record = pn_reactor_attachments(impl)
+-            attrs = pn_void2py(pn_record_get(record, PYCTX))
++            attrs = pn_void2py(pn_record_get(record, _PYCTX))
+             if attrs and 'subclass' in attrs:
+                 return attrs['subclass'](impl=impl)
+             else:
+--- qpid-proton-0.22.0.orig/proton-c/bindings/python/proton/wrapper.py
++++ qpid-proton-0.22.0/proton-c/bindings/python/proton/wrapper.py
+@@ -52,11 +52,11 @@ class Wrapper(object):
+ 
+         if get_context:
+             record = get_context(impl)
+-            attrs = pn_void2py(pn_record_get(record, PYCTX))
++            attrs = pn_void2py(pn_record_get(record, _PYCTX))
+             if attrs is None:
+                 attrs = {}
+-                pn_record_def(record, PYCTX, PN_PYREF)
+-                pn_record_set(record, PYCTX, pn_py2void(attrs))
++                pn_record_def(record, _PYCTX, PN_PYREF)
++                pn_record_set(record, _PYCTX, pn_py2void(attrs))
+                 init = True
+         else:
+             attrs = EMPTY_ATTRS
+@@ -108,5 +108,5 @@ class Wrapper(object):
+                                                id(self), 
addressof(self._impl))
+ 
+ 
+-PYCTX = int(pn_py2void(Wrapper))
++_PYCTX = int(pn_py2void(Wrapper))
+ addressof = int
--- a/debian/patches/series     2019-04-03 06:51:43.062179829 +0200
--- b/debian/patches/series     2019-04-03 07:12:23.231968052 +0200
@@ -1,2 +1,3 @@
 no-format.patch
 fix-conversion_error-gcc-warning.patch
+reproducible-build.patch

Reply via email to