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

