diff options
Diffstat (limited to 'dev-util/android-tools/files/make-tarballs.sh')
-rwxr-xr-x | dev-util/android-tools/files/make-tarballs.sh | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/dev-util/android-tools/files/make-tarballs.sh b/dev-util/android-tools/files/make-tarballs.sh new file mode 100755 index 000000000000..5a0a775c1290 --- /dev/null +++ b/dev-util/android-tools/files/make-tarballs.sh @@ -0,0 +1,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 "$@" |