aboutsummaryrefslogtreecommitdiff
path: root/tests/tarcompress.sh.in
blob: 726f4e81c6c57cf8eb171732ee5a9faf7c1e912b (plain)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/bash

set -e

TAR2SQFS="@abs_top_builddir@/tar2sqfs"
RDSQFS="@abs_top_builddir@/rdsquashfs"

URL="https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/"
DIR="/dev/shm/tarcompress/"

mkdir -p "$DIR"
curl "$URL/linux-3.11.tar.bz2" > "$DIR/linux-3.11.tar.bz2"
curl "$URL/linux-3.11.tar.gz" > "$DIR/linux-3.11.tar.gz"
curl "$URL/linux-3.11.tar.xz" > "$DIR/linux-3.11.tar.xz"

sha256sum -c <<_EOF
e7ae11d20aafdc5a2dfd104f198d87e5ce65fa8ada1ce18a263e89ff0148e1fa  $DIR/linux-3.11.tar.bz2
59904beb1fdae62eb1991f29926c234283c9e4009b6e437499f13d2749bed6ca  $DIR/linux-3.11.tar.gz
803ec8f0ad4b2ddedcb0332a590cd2b5e10dfc57c3b1c95bc9c46af81d51d7f9  $DIR/linux-3.11.tar.xz
_EOF

"$TAR2SQFS" "$DIR/out1.sqfs" < "$DIR/linux-3.11.tar.bz2"
"$TAR2SQFS" "$DIR/out2.sqfs" < "$DIR/linux-3.11.tar.gz"
"$TAR2SQFS" "$DIR/out3.sqfs" < "$DIR/linux-3.11.tar.xz"

# set -e makes sure this explodes if they aren't equal
diff "$DIR/out1.sqfs" "$DIR/out2.sqfs"
diff "$DIR/out2.sqfs" "$DIR/out3.sqfs"

rm "$DIR/out2.sqfs" "$DIR/out3.sqfs"
rm "$DIR/linux-3.11.tar.bz2"
rm "$DIR/linux-3.11.tar.gz"

# unpack tarball and squashfs image
tar -C "$DIR" -xf "$DIR/linux-3.11.tar.xz"
rm "$DIR/linux-3.11.tar.xz"

"$RDSQFS" -DSF -u / -p "$DIR/sqfs/" "$DIR/out1.sqfs"
rm "$DIR/out1.sqfs"

# every file that exists in the tar ball MUST exist in the squashfs image
# and they MUST be identical
find "$DIR/linux-3.11" -type f | sed "s#$DIR/##" | \
while read fname; do
	set -e
	diff "$DIR/$fname" "$DIR/sqfs/$fname"
	rm "$DIR/sqfs/$fname" "$DIR/$fname"
	echo "match $DIR/$fname"
done

find "$DIR/linux-3.11" -type l | sed "s#$DIR/##" | \
while read fname; do
	set -e
	a=$(readlink "$DIR/$fname")
	b=$(readlink "$DIR/sqfs/$fname")
	[ "x$a" = "x$b" ] || exit 1
	unlink "$DIR/sqfs/$fname"
	unlink "$DIR/$fname"
	echo "match $DIR/$fname"
done

# match directories and cleanup at the same time
find "$DIR/linux-3.11" -type d | sed "s#$DIR/##" | sort -ur | \
while read fname; do
	set -e
	rmdir "$DIR/$fname" "$DIR/sqfs/$fname"
done

rmdir "$DIR/sqfs"
rmdir "$DIR"
echo "DONE!"