diff --git a/libdnet.changes b/libdnet.changes index 22d5a73..afeb919 100644 --- a/libdnet.changes +++ b/libdnet.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Aug 1 04:22:18 UTC 2018 - bwiedemann@suse.com + +- Add reproducible.patch to sort linked .o files + to make package build reproducible (boo#1041090) + ------------------------------------------------------------------- Tue Jul 25 00:45:47 UTC 2017 - jengelh@inai.de diff --git a/libdnet.spec b/libdnet.spec index c0e7c4e..dc1b81d 100644 --- a/libdnet.spec +++ b/libdnet.spec @@ -31,6 +31,7 @@ Patch1: libdnet-config-multilib.patch # PATCH-FIX-UPSTREAM: do include string.h when needed, this is autogenerated # file which can't be generated with today tools :( Patch2: libdnet-fortify.patch +Patch3: reproducible.patch BuildRequires: libbsd-devel BuildRequires: libtool BuildRequires: python-devel @@ -88,6 +89,7 @@ Dnet library Python 2 bindings. %patch0 %patch1 %patch2 -p1 +%patch3 -p1 %build ACLOCAL="aclocal -I config" autoreconf -fvi diff --git a/reproducible.patch b/reproducible.patch new file mode 100644 index 0000000..ce60406 --- /dev/null +++ b/reproducible.patch @@ -0,0 +1,29 @@ +Author: Bernhard M. Wiedemann +Date: 2017-09-02 + +https://github.com/dugsong/libdnet/pull/42 +https://bugzilla.opensuse.org/show_bug.cgi?id=1041090 + +sort linker file list +so that dnet.so builds in a reproducible way +in spite of indeterministic filesystem readdir order +and http://bugs.python.org/issue30461 + +See https://reproducible-builds.org/ for why this is good. + +This allows the libdnet package in openSUSE Tumbleweed +to produce identical rpms on different builds. + +Index: libdnet-libdnet-1.12/python/setup.py.in +=================================================================== +--- libdnet-libdnet-1.12.orig/python/setup.py.in ++++ libdnet-libdnet-1.12/python/setup.py.in +@@ -20,7 +20,7 @@ else: + # XXX - can't build on Cygwin+MinGW yet. + #if sys.platform == 'cygwin': + # dnet_extargs.append('-mno-cygwin') +- dnet_extobj.extend(glob.glob('@top_builddir@/src/.libs/*.o')) ++ dnet_extobj.extend(sorted(glob.glob('@top_builddir@/src/.libs/*.o'))) + + dnet = Extension('dnet', + dnet_srcs,