blob: 5a0a775c12905263e825853c965bc6efc88bf05a (
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
#!/bin/bash
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# Create the various tarballs we need. GoB does not provide stable archives (unlike github),
# and some repos are uselessly fat, so we have to create things by hand. Fun times.
set -e
die() {
echo "error: $*" >&2
exit 1
}
fetch_boringssl() {
local ver=$1 tag=$2
local content hash
echo "checking boringssl in ${tag}"
content=$(wget -nv "https://android.googlesource.com/platform/external/boringssl/+/${tag}/BORINGSSL_REVISION?format=TEXT" -O -)
hash=$(echo "${content}" | base64 -d)
echo "using boringssl ${hash}"
local tar="${DISTDIR}/boringssl-${hash}.tar.gz"
if [[ ! -e ${tar} ]] ; then
# We use github as it provides stable tarballs. GoB does not (includes timestamps).
# https://boringssl.googlesource.com/boringssl/+archive/${hash}.tar.gz
wget -c "https://github.com/google/boringssl/archive/${hash}.tar.gz" -O "${tar}"
fi
du -h "${tar}"
}
# The extras repo has ballooned to ~200MB, so we have to strip the large useless
# files and random binaries.
fetch_extras() {
local ver=$1 tag=$2
local tar="${DISTDIR}/android-tools-${ver}-extras.tar.xz"
if [[ ! -e ${tar} ]] ; then
local prune=(
ioshark
memory_replay
perfprofd
simpleperf
)
local dir="${tag}-extras"
rm -rf "${dir}"
mkdir "${dir}"
cd "${dir}"
wget "https://android.googlesource.com/platform/system/extras/+archive/${tag}.tar.gz" -O extras.tar.gz
tar xf extras.tar.gz
rm -rf "${prune[@]}" extras.tar.gz
cd ..
tar cf - "${dir}" | xz -9 > "${dir}.tar.xz"
rm -rf "${dir}"
mv "${dir}.tar.xz" "${tar}"
fi
du -h "${tar}"
}
# Since the GoB archive is unstable, we might as well rewrite it into xz to shrink.
fetch_selinux() {
local ver=$1 tag=$2
local tar="${DISTDIR}/android-tools-${ver}-selinux.tar.xz"
if [[ ! -e ${tar} ]] ; then
wget "https://android.googlesource.com/platform/external/selinux/+archive/${tag}.tar.gz" -O - | zcat | xz > "${tar}"
fi
du -h "${tar}"
}
# Since the GoB archive is unstable, we might as well rewrite it into xz to shrink.
fetch_f2fs() {
local ver=$1 tag=$2
local tar="${DISTDIR}/android-tools-${ver}-f2fs-tools.tar.xz"
if [[ ! -e ${tar} ]] ; then
wget "https://android.googlesource.com/platform/external/f2fs-tools/+archive/${tag}.tar.gz" -O - | zcat | xz > "${tar}"
fi
du -h "${tar}"
}
usage() {
local status=$1
[[ ${status} -eq 1 ]] && exec 1>&2
cat <<-EOF
Usage: $0 <android version>
To find the next available version, consult:
https://git.archlinux.org/svntogit/community.git/log/trunk?h=packages/android-tools
They have some helper scripts for building the files directly.
Example:
$0 android-8.1.0_r1
EOF
exit ${status}
}
main() {
[[ $# -ne 1 ]] && usage 1
[[ $1 == "-h" || $1 == "--help" ]] && usage 0
if [[ -z ${DISTDIR} ]] ; then
eval $(portageq -v envvar DISTDIR)
fi
if [[ -z ${DISTDIR} ]] ; then
die "Please set \$DISTDIR first"
fi
local ver="${1#android-}"
local tag="android-${ver}"
fetch_boringssl "${ver}" "${tag}"
fetch_extras "${ver}" "${tag}"
fetch_selinux "${ver}" "${tag}"
fetch_f2fs "${ver}" "${tag}"
}
main "$@"
|