aboutsummaryrefslogtreecommitdiff
path: root/ci/verify-repro.sh
blob: 580ccd03555d217e9562356e5046ef5030320082 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/sh
# Build the complete unsigned APK twice and compare it byte for byte.
set -eu

root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
a=$(mktemp -d)
b=$(mktemp -d)
trap 'rm -rf "$a" "$b"' 0

[ ! -f "$root/keystore.properties" ] || {
	echo "verify-repro: keystore.properties must be absent" >&2
	exit 1
}

make -C "$root" app
cp "$root/app/build/outputs/apk/release/app-release-unsigned.apk" "$a/app.apk"

rm -rf "$root/app/build" "$root/app/src/main/jniLibs" "$root/rsync/work" "$root/out"
make -C "$root" app
cp "$root/app/build/outputs/apk/release/app-release-unsigned.apk" "$b/app.apk"

if cmp "$a/app.apk" "$b/app.apk"; then
	echo "verify-repro: APKs are bit-identical"
else
	echo "verify-repro: NONDETERMINISM detected" >&2
	exit 1
fi