Skip to content

Commit d61936b

Browse files
Merge branch 'reproducible-build' of https://github.com/eighthave/android-database-sqlcipher into eighthave-reproducible-build
Conflicts: Makefile
2 parents 76ce45e + b97c9dd commit d61936b

File tree

2 files changed

+77
-5
lines changed

2 files changed

+77
-5
lines changed

Makefile

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ SQLCIPHER_DIR := ${EXTERNAL_DIR}/sqlcipher
77
LICENSE := SQLCIPHER_LICENSE
88
ASSETS_DIR := assets
99
OPENSSL_DIR := ${EXTERNAL_DIR}/openssl
10+
GIT_DESCRIBE := $(shell git describe)
1011
LATEST_TAG := $(shell git tag | sort -r | head -1)
1112
SECOND_LATEST_TAG := $(shell git tag | sort -r | head -2 | tail -1)
12-
RELEASE_DIR := sqlipher-for-android-${LATEST_TAG}
13-
CHANGE_LOG_HEADER := "Changes included in the ${LATEST_TAG} release of SQLCipher for Android:"
13+
RELEASE_DIR := sqlcipher-for-android-${GIT_DESCRIBE}
14+
CHANGE_LOG_HEADER := "Changes included in the ${GIT_DESCRIBE} release of SQLCipher for Android:"
1415
README := ${RELEASE_DIR}/README
1516

1617
# Use faketime to freeze time to make for reproducible builds.
@@ -21,8 +22,10 @@ README := ${RELEASE_DIR}/README
2122
# time to UTC so its always the same on all machines.
2223
ifeq ($(shell if which faketime > /dev/null; then echo faketime; fi),faketime)
2324
export TZ=UTC
24-
TIMESTAMP := $(shell faketime "`git log -n1 --format=format:%ai`" \
25-
date --utc '+%Y-%m-%d %H:%M:%S')
25+
TIMESTAMP := $(shell faketime -f "`git log -n1 --format=format:%ai`" \
26+
date -u '+%Y-%m-%d %H:%M:%S')
27+
TOUCH := touch -t $(shell faketime -f "`git log -n1 --format=format:%ai`" \
28+
date -u '+%Y%m%d%H%M.%S')
2629
# frozen time
2730
FAKETIME := faketime -f "$(TIMESTAMP)"
2831
# time moving at 5% of normal speed
@@ -59,7 +62,10 @@ release:
5962
cp ${LICENSE} ${RELEASE_DIR}
6063
printf "%s\n\n" ${CHANGE_LOG_HEADER} > ${README}
6164
git log --pretty=format:' * %s' ${SECOND_LATEST_TAG}..${LATEST_TAG} >> ${README}
62-
zip -r ${RELEASE_DIR}.zip ${RELEASE_DIR}
65+
# fix the timestamp on the files to include in the zipball
66+
find ${RELEASE_DIR} | xargs $(TOUCH)
67+
ls -lR ${RELEASE_DIR}
68+
find ${RELEASE_DIR} | sort -u | $(FAKETIME) zip -@9 ${RELEASE_DIR}.zip
6369
rm -rf ${RELEASE_DIR}
6470

6571
clean:

compare-to-official-release

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#!/bin/sh
2+
3+
if [ $# -ne 2 ]; then
4+
echo "Usage: $0 /path/to/sqlcipher-for-android.zip /another/sqlcipher-for-android.zip"
5+
exit 1
6+
fi
7+
8+
set -e
9+
set -x
10+
11+
test -e "$1"
12+
test -e "$2"
13+
14+
tmpdir=`mktemp -d /tmp/.compare-zips.XXXXXXXXXX`
15+
zip1=$(basename $1)
16+
zip2=$(basename $2)
17+
sourcedir1=$(cd `dirname $1` && pwd)
18+
sourcedir2=$(cd `dirname $2` && pwd)
19+
zipname1=`echo $zip1 | sed 's,\.zip$,,'`
20+
zipname2=`echo $zip2 | sed 's,\.zip$,,'`
21+
dir1=$tmpdir/`echo $(dirname $1) | sed 's,[/ ],_,g'`-$zipname1
22+
dir2=$tmpdir/`echo $(dirname $2) | sed 's,[/ ],_,g'`-$zipname2
23+
24+
mkdir -p $dir1
25+
cd $dir1
26+
unzip "$sourcedir1/$zip1"
27+
# strip the full path to the zip for the comparison
28+
unzip -l "$sourcedir1/$zip1" | sed 's,^\(Archive:\s\s*\)/.*/,\1,' > $dir1/unzip-l.txt
29+
unzip -lv "$sourcedir1/$zip1" | sed 's,^\(Archive:\s\s*\)/.*/,\1,' > $dir1/unzip-lv.txt
30+
mkdir -p $dir1/$zipname1/libs/sqlcipher
31+
cd $dir1/$zipname1/libs/sqlcipher
32+
unzip ../sqlcipher.jar
33+
unzip -l ../sqlcipher.jar > unzip-l.txt
34+
unzip -lv ../sqlcipher.jar > unzip-lv.txt
35+
mkdir -p $dir1/$zipname1/libs/sqlcipher-javadoc
36+
cd $dir1/$zipname1/libs/sqlcipher-javadoc
37+
unzip ../sqlcipher-javadoc.jar
38+
unzip -l ../sqlcipher-javadoc.jar > unzip-l.txt
39+
unzip -lv ../sqlcipher-javadoc.jar > unzip-lv.txt
40+
41+
mkdir -p $dir2
42+
cd $dir2
43+
unzip "$sourcedir2/$zip2"
44+
# strip the full path to the zip for the comparison
45+
unzip -l "$sourcedir2/$zip2" | sed 's,^\(Archive:\s\s*\)/.*/,\1,' > $dir2/unzip-l.txt
46+
unzip -lv "$sourcedir2/$zip2" | sed 's,^\(Archive:\s\s*\)/.*/,\1,' > $dir2/unzip-lv.txt
47+
mkdir -p $dir2/$zipname2/libs/sqlcipher
48+
cd $dir2/$zipname2/libs/sqlcipher
49+
unzip ../sqlcipher.jar
50+
unzip -l ../sqlcipher.jar > unzip-l.txt
51+
unzip -lv ../sqlcipher.jar > unzip-lv.txt
52+
mkdir -p $dir2/$zipname2/libs/sqlcipher-javadoc
53+
cd $dir2/$zipname2/libs/sqlcipher-javadoc
54+
unzip ../sqlcipher-javadoc.jar
55+
unzip -l ../sqlcipher-javadoc.jar > unzip-l.txt
56+
unzip -lv ../sqlcipher-javadoc.jar > unzip-lv.txt
57+
58+
if which meld > /dev/null; then
59+
meld $dir1 $dir2
60+
elif which opendiff > /dev/null; then
61+
opendiff $dir1 $dir2
62+
else
63+
echo "ERROR: meld or opendiff required for the comparison!"
64+
fi
65+
66+
rm -rf $tmpdir/

0 commit comments

Comments
 (0)