Control: tags -1 + patch Hi.
On Mon, 01 Jun 2015 11:44:06 -0400 Daniel Kahn Gillmor <d...@fifthhorseman.net> wrote: > One example can be seen in the difference in > /usr/share/emacs/24.4/lisp/finder-inf.el from here: > > https://reproducible.debian.net/dbd/unstable/amd64/emacs24_24.4+1-5.debbindiff.html > > compare the list after "convenience" here, which sorts the first 13 > items differently on each build: This difference is coming from the Makefile, which passes file names in a non-reproducible order to finder-compile-keywords-make-dist, which itself seem to me reproducible. The attached patch sorts the filenames before passing them to finder-compile-keywords-make-dist, and fixes this non-reproductible behavior in my experimental toolchain [1]. Regards, Alexis Bienvenüe. [1] https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchain
Description: Sort files in $wins lisp/Makefile.in: sort files in the $wins variable, to make the build reproducible. Author: Alexis Bienvenüe <p...@passoire.fr> Bug-Debian: https://bugs.debian.org/787424 Index: emacs24-24.5+1/lisp/Makefile.in =================================================================== --- emacs24-24.5+1.orig/lisp/Makefile.in +++ emacs24-24.5+1/lisp/Makefile.in @@ -110,14 +110,14 @@ COMPILE_FIRST = \ emacs = EMACSLOADPATH= '$(EMACS)' $(EMACSOPT) # Common command to find subdirectories -setwins=for file in `find . -type d -print`; do \ +setwins=for file in `find . -type d -print | LC_ALL=C sort`; do \ case $$file in */.* ) ;; \ *) wins="$$wins$${wins:+ }$$file" ;; \ esac; \ done # Find all subdirectories except `obsolete' and `term'. -setwins_almost=for file in `find ${srcdir} -type d -print`; do \ +setwins_almost=for file in `find ${srcdir} -type d -print | LC_ALL=C sort`; do \ case $$file in ${srcdir}*/obsolete | ${srcdir}*/term ) ;; \ *) wins="$$wins$${wins:+ }$$file" ;; \ esac; \ @@ -126,14 +126,14 @@ setwins_almost=for file in `find ${srcdi # Find all subdirectories except `obsolete', `term', and `leim' (and subdirs). # We don't want the leim files listed as packages, especially # since many share basenames with files in language/. -setwins_finder=for file in `find ${srcdir} -type d -print`; do \ +setwins_finder=for file in `find ${srcdir} -type d -print | LC_ALL=C sort`; do \ case $$file in ${srcdir}*/obsolete | ${srcdir}*/term | ${srcdir}*/leim* ) ;; \ *) wins="$$wins$${wins:+ }$$file" ;; \ esac; \ done # Find all subdirectories in which we might want to create subdirs.el. -setwins_for_subdirs=for file in `find ${srcdir} -type d -print`; do \ +setwins_for_subdirs=for file in `find ${srcdir} -type d -print | LC_ALL=C sort`; do \ case $$file in \ ${srcdir}*/cedet* | ${srcdir}*/leim* ) ;; \ *) wins="$$wins$${wins:+ }$$file" ;; \