Source: sleekxmpp Version: 1.3.3-2 Severity: wishlist Tags: patch User: reproducible-bui...@lists.alioth.debian.org Usertags: randomness X-Debbugs-Cc: reproducible-b...@lists.alioth.debian.org
Hi, Whilst working on the Reproducible Builds effort [0], we noticed that sleekxmpp could not be built reproducibly. Patch attached. [0] https://reproducible-builds.org/ Regards, -- ,''`. : :' : Chris Lamb `. `'` la...@debian.org / chris-lamb.co.uk `-
--- a/debian/patches/reproducible_build.patch 1970-01-01 01:00:00.000000000 +0100 --- b/debian/patches/reproducible_build.patch 2018-02-11 18:37:46.173221589 +0000 @@ -0,0 +1,45 @@ +Description: Make the build reproducible +Author: Chris Lamb <la...@debian.org> +Last-Update: 2018-02-11 + +--- sleekxmpp-1.3.3.orig/sleekxmpp/xmlstream/stanzabase.py ++++ sleekxmpp-1.3.3/sleekxmpp/xmlstream/stanzabase.py +@@ -316,7 +316,7 @@ class ElementBase(object): + #: manipulating the underlying XML object. This set may be augmented + #: with the :attr:`plugin_attrib` value of any registered + #: stanza plugins. +- interfaces = set(('type', 'to', 'from', 'id', 'payload')) ++ interfaces = None + + #: A subset of :attr:`interfaces` which maps interfaces to direct + #: subelements of the underlying XML object. Using this set, the text +@@ -404,6 +404,9 @@ class ElementBase(object): + def __init__(self, xml=None, parent=None): + self._index = 0 + ++ if self.interfaces is None: ++ self.interfaces = set(('type', 'to', 'from', 'id', 'payload')) ++ + #: The underlying XML object for the stanza. It is a standard + #: :class:`xml.etree.cElementTree` object. + self.xml = xml +@@ -1462,13 +1465,17 @@ class StanzaBase(ElementBase): + #: There is a small set of attributes which apply to all XMPP stanzas: + #: the stanza type, the to and from JIDs, the stanza ID, and, especially + #: in the case of an Iq stanza, a payload. +- interfaces = set(('type', 'to', 'from', 'id', 'payload')) ++ interfaces = None + + #: A basic set of allowed values for the ``'type'`` interface. +- types = set(('get', 'set', 'error', None, 'unavailable', 'normal', 'chat')) ++ types = None + + def __init__(self, stream=None, xml=None, stype=None, + sto=None, sfrom=None, sid=None, parent=None): ++ if self.interfaces is None: ++ self.interfaces = set(('type', 'to', 'from', 'id', 'payload')) ++ if self.types is None: ++ self.types = set(('get', 'set', 'error', None, 'unavailable', 'normal', 'chat')) + self.stream = stream + if stream is not None: + self.namespace = stream.default_ns --- a/debian/patches/series 2018-02-11 18:13:22.360900812 +0000 --- b/debian/patches/series 2018-02-11 18:37:44.733213465 +0000 @@ -1,3 +1,4 @@ fix_pyasn1_4_compat.patch fix_tls_date_check.patch get-rid-of-embedded-copies-dateutil-gnupg-ordereddic.patch +reproducible_build.patch