1
0
Fork 0

Resolve potential reproducible build issues

GNU ease.js is a pretty trivial case with respect to reproducibility---not
much goes on during the build aside from concatenation and minification.
Non-determinism is essentially confined to filesystem operations, which can
be rectified by sorting using a static locale's collation sequence (which is
done here).

This does not resolve any concerns with autoconf-installed scripts (those in
tools/), or the distribution tarball file metadata.
master
Mike Gerwitz 2015-12-21 22:19:18 -05:00
parent 81bb349238
commit 3db234f9d4
No known key found for this signature in database
GPG Key ID: F22BB8158EE30EAB
1 changed files with 3 additions and 5 deletions

View File

@ -39,6 +39,7 @@ cat_modules=$(
s/[^/\]\+\/\.\.//g; s/[^/\]\+\/\.\.//g;
s/\( \|\/\)\.\//\1/g; s/\( \|\/\)\.\//\1/g;
" \ " \
| LC_ALL=C sort \
| node tools/combine-order.js \ | node tools/combine-order.js \
) || { ) || {
echo "Failed to get module list" >&2 echo "Failed to get module list" >&2
@ -56,7 +57,7 @@ all_modules=$(
remain_modules=$( remain_modules=$(
echo "$cat_modules echo "$cat_modules
$all_modules" \ $all_modules" \
| sort \ | LC_ALL=C sort \
| uniq -u | uniq -u
) )
@ -140,7 +141,7 @@ if [ "$INC_TEST" ]; then
# note that not all tests are included # note that not all tests are included
TEST_CASES=$( cd "$PATH_TEST"; find . -name '*Test*.js' \ TEST_CASES=$( cd "$PATH_TEST"; find . -name '*Test*.js' \
| sed 's/^.\///' \ | sed 's/^.\///' \
| sort \ | LC_ALL=C sort \
| grep -v '\(Combine\(PreEs5\)\?\|Index\)Test.js' \ | grep -v '\(Combine\(PreEs5\)\?\|Index\)Test.js' \
) )
@ -189,6 +190,3 @@ fi
# output combined file footer # output combined file footer
tpl_footer tpl_footer
exit 0