Source: dash Version: 0.5.8-2.2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: locale X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org
Hi! While working on the "reproducible builds" effort [1], we have noticed that dash could not be built reproducibly. The script src/mkbuiltins is used to generate a C file (builtins.c). The order of elements in the struct builtincmd is varying because they are not sorted locale-independently. The attached patch fixes this by setting LC_ALL instead of LC_COLLATE to C. Regards, Reiner [1]: https://wiki.debian.org/ReproducibleBuilds
diff --git a/src/mkbuiltins b/src/mkbuiltins index f562ae2..bf57aa5 100644 --- a/src/mkbuiltins +++ b/src/mkbuiltins @@ -78,7 +78,7 @@ awk '{ for (i = 2 ; i <= NF ; i++) { if ($i ~ /^-/) line = $(++i) "\t" line print line - }}' $temp | LC_COLLATE=C sort -k 1,1 | tee $temp2 | awk '{ + }}' $temp | LC_ALL=C sort -k 1,1 | tee $temp2 | awk '{ opt = "" if (NF > 2) { opt = substr($2, 2) @@ -97,7 +97,7 @@ cat <<\! */ ! -sed 's/ -[a-z]*//' $temp2 | nl -b a -v 0 | LC_COLLATE=C sort -u -k 3,3 | +sed 's/ -[a-z]*//' $temp2 | nl -b a -v 0 | LC_ALL=C sort -u -k 3,3 | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | awk '{ printf "#define %s (builtincmd + %d)\n", $3, $1}' printf '\n#define NUMBUILTINS %d\n' $(wc -l < $temp2)
signature.asc
Description: PGP signature
_______________________________________________ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds