1*37a0bd32Sgnzlbg#!/usr/bin/env bash
2*37a0bd32Sgnzlbg
32fd7f7a4SMarco A L Barbosa# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
42fd7f7a4SMarco A L Barbosa# file at the top-level directory of this distribution and at
52fd7f7a4SMarco A L Barbosa# http://rust-lang.org/COPYRIGHT.
62fd7f7a4SMarco A L Barbosa#
72fd7f7a4SMarco A L Barbosa# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
82fd7f7a4SMarco A L Barbosa# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
92fd7f7a4SMarco A L Barbosa# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
102fd7f7a4SMarco A L Barbosa# option. This file may not be copied, modified, or distributed
112fd7f7a4SMarco A L Barbosa# except according to those terms.
122fd7f7a4SMarco A L Barbosa
132fd7f7a4SMarco A L Barbosaset -ex
142fd7f7a4SMarco A L Barbosa
152fd7f7a4SMarco A L BarbosaURL=https://dl.google.com/android/repository/sys-img/android
162fd7f7a4SMarco A L Barbosa
172fd7f7a4SMarco A L Barbosamain() {
18*37a0bd32Sgnzlbg    local arch="${1}"
19*37a0bd32Sgnzlbg    local name="${2}"
202fd7f7a4SMarco A L Barbosa    local dest=/system
21*37a0bd32Sgnzlbg    local td
22*37a0bd32Sgnzlbg    td="$(mktemp -d)"
232fd7f7a4SMarco A L Barbosa
242fd7f7a4SMarco A L Barbosa    apt-get install --no-install-recommends e2tools
252fd7f7a4SMarco A L Barbosa
26*37a0bd32Sgnzlbg    pushd "${td}"
27*37a0bd32Sgnzlbg    curl -O "${URL}/${name}"
28*37a0bd32Sgnzlbg    unzip -q "${name}"
292fd7f7a4SMarco A L Barbosa
30*37a0bd32Sgnzlbg    local system
31*37a0bd32Sgnzlbg    system="$(find . -name system.img)"
32*37a0bd32Sgnzlbg    mkdir -p ${dest}/{bin,lib,lib64}
332fd7f7a4SMarco A L Barbosa
342fd7f7a4SMarco A L Barbosa    # Extract android linker and libraries to /system
352fd7f7a4SMarco A L Barbosa    # This allows android executables to be run directly (or with qemu)
36*37a0bd32Sgnzlbg    if [ "${arch}" = "x86_64" ] || [ "${arch}" = "arm64" ]; then
37*37a0bd32Sgnzlbg        e2cp -p "${system}:/bin/linker64" "${dest}/bin/"
38*37a0bd32Sgnzlbg        e2cp -p "${system}:/lib64/libdl.so" "${dest}/lib64/"
39*37a0bd32Sgnzlbg        e2cp -p "${system}:/lib64/libc.so" "${dest}/lib64/"
40*37a0bd32Sgnzlbg        e2cp -p "${system}:/lib64/libm.so" "${dest}/lib64/"
412fd7f7a4SMarco A L Barbosa    else
42*37a0bd32Sgnzlbg        e2cp -p "${system}:/bin/linker" "${dest}/bin/"
43*37a0bd32Sgnzlbg        e2cp -p "${system}:/lib/libdl.so" "${dest}/lib/"
44*37a0bd32Sgnzlbg        e2cp -p "${system}:/lib/libc.so" "${dest}/lib/"
45*37a0bd32Sgnzlbg        e2cp -p "${system}:/lib/libm.so" "${dest}/lib/"
462fd7f7a4SMarco A L Barbosa    fi
472fd7f7a4SMarco A L Barbosa
482fd7f7a4SMarco A L Barbosa    # clean up
492fd7f7a4SMarco A L Barbosa    apt-get purge --auto-remove -y e2tools
502fd7f7a4SMarco A L Barbosa
512fd7f7a4SMarco A L Barbosa    popd
522fd7f7a4SMarco A L Barbosa
53*37a0bd32Sgnzlbg    rm -rf "${td}"
542fd7f7a4SMarco A L Barbosa}
552fd7f7a4SMarco A L Barbosa
562fd7f7a4SMarco A L Barbosamain "${@}"
57