It probably needs environment changes and other differences to be more effective, but if anything it adds a placeholder for improvement, and shows some solidarity with the reproducible builds project that was started in debian.
40 lines
1.1 KiB
Bash
Executable File
40 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# simple test for reproducibility, probably needs major improvements
|
|
|
|
set -o errexit
|
|
set -o pipefail
|
|
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd .. && pwd )" # dir!
|
|
cd "$DIR" >/dev/null # work from main mgmt directory
|
|
make build
|
|
T=`mktemp --tmpdir -d tmp.XXX`
|
|
cp -a ./mgmt "$T"/mgmt.1
|
|
make clean
|
|
make build
|
|
cp -a ./mgmt "$T"/mgmt.2
|
|
|
|
# size comparison test
|
|
[ `stat -c '%s' "$T"/mgmt.1` -eq `stat -c '%s' "$T"/mgmt.2` ] || failures="Size of binary was not reproducible"
|
|
|
|
# sha1sum test
|
|
sha1sum "$T"/mgmt.1 > "$T"/mgmt.SHA1SUMS.1
|
|
sha1sum "$T"/mgmt.2 > "$T"/mgmt.SHA1SUMS.2
|
|
cat "$T"/mgmt.SHA1SUMS.1 | sed 's/mgmt\.1/mgmt\.X/' > "$T"/mgmt.SHA1SUMS.1X
|
|
cat "$T"/mgmt.SHA1SUMS.2 | sed 's/mgmt\.2/mgmt\.X/' > "$T"/mgmt.SHA1SUMS.2X
|
|
diff -q "$T"/mgmt.SHA1SUMS.1X "$T"/mgmt.SHA1SUMS.2X || failures=$( [ -n "${failures}" ] && echo "$failures" ; echo "SHA1SUM of binary was not reproducible" )
|
|
|
|
# clean up
|
|
if [ "$T" != '' ]; then
|
|
rm -rf "$T"
|
|
fi
|
|
make clean
|
|
|
|
# display errors
|
|
if [[ -n "${failures}" ]]; then
|
|
echo 'FAIL'
|
|
echo 'The following tests failed:'
|
|
echo "${failures}"
|
|
exit 1
|
|
fi
|
|
echo PASS
|