#!/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 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 "$@"