[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#825138: console-setup: please make the build reproducible



Source: console-setup
Version: 1.143
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: umask locale fileordering
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Hi!

While working on the "reproducible builds" effort [1], we have noticed
that console-setup could not be built reproducibly.

There are three remaining issues:
- different umasks cause differences in the mode of uuencoded files
- $(wildcard ...) in Makefiles is unsorted, which causes randomly
  ordered entries in charmap_functions.sh
- files are listed in debian/preprocessor with `ls *.{psf,acm}`, which
  is sorted, but sorted differently depending on the locale.

The attached patch fixes those issues.

Regards,
 Reiner

[1]: https://wiki.debian.org/ReproducibleBuilds
diff --git a/Fonts/Makefile b/Fonts/Makefile
index 3769cbe..452f8fa 100644
--- a/Fonts/Makefile
+++ b/Fonts/Makefile
@@ -330,7 +330,7 @@ $(ALL_BSD_FONTS) :
 		$(equivalents) $(symbolsets) $(size) $@ $(@:%.raw=%.raw.sfm)
 
 %.fnt : %.raw
-	uuencode $< $(*F) >$@
+	umask 022; uuencode $< $(*F) >$@
 
 gzipped_linux_fonts : $(GZIPPED_LINUX_FONTS)
 
@@ -355,7 +355,7 @@ $(SCRNMAPS) : somefont = \
 $(SCRNMAPS) : sfm = $(somefont:%.fnt=%.raw.sfm)
 
 $(SCRNMAPS) : $(UUENCODED_BSD_FONTS) $./freebsd.set $./fbsdmap
-	$(fntdir)/fbsdmap --binaryscm $(fntdir)/freebsd.set $(sfm) \
+	umask 022; $(fntdir)/fbsdmap --binaryscm $(fntdir)/freebsd.set $(sfm) \
 		$(fntdir)/../acm/$(encoding).acm | \
 		uuencode $(encoding_fontset) >$@
 
diff --git a/Keyboard/Makefile b/Keyboard/Makefile
index d5e4e8b..3313210 100644
--- a/Keyboard/Makefile
+++ b/Keyboard/Makefile
@@ -27,7 +27,7 @@ $./%.ekbd :
 $./charmap_functions.sh : $(acmfiles)
 	$(kbddir)/make_charmap_functions $(kbddir)/../acm $(charmaps) >$@
 
-acmfiles := $(wildcard $./../acm/*.acm)
+acmfiles := $(sort $(wildcard $./../acm/*.acm))
 
 charmaps := $(basename $(notdir $(acmfiles)))
 
diff --git a/debian/preprocessor b/debian/preprocessor
index 89b6717..4f0d1a7 100755
--- a/debian/preprocessor
+++ b/debian/preprocessor
@@ -46,13 +46,13 @@ awk '
 }
 /## *FONTSETS *##/ {
     printf "fontsets='\''";
-    system("cd Fonts && ls *.psf | sed '\''s/.psf$//'\''");
+    system("cd Fonts && LC_ALL=C ls *.psf | sed '\''s/.psf$//'\''");
     printf "'\''";
     next;
 }
 /## *CHARMAPS *##/ {
     printf "charmaps='\''";
-    system("ls acm/*.acm |sed -e '\''s/^acm.//'\'' -e '\''s/.acm$//'\''");
+    system("LC_ALL=C ls acm/*.acm |sed -e '\''s/^acm.//'\'' -e '\''s/.acm$//'\''");
     printf "UTF-8'\''\n";
     next;
 }

Attachment: signature.asc
Description: PGP signature


Reply to: