1*77f0f79fSYuki Okushi#!/usr/bin/env bash
2*77f0f79fSYuki Okushi
32fd7f7a4SMarco A L Barbosaset -ex
42fd7f7a4SMarco A L Barbosa
52fd7f7a4SMarco A L BarbosaURL=https://dl.google.com/android/repository/sys-img/android
62fd7f7a4SMarco A L Barbosa
72fd7f7a4SMarco A L Barbosamain() {
837a0bd32Sgnzlbg    local arch="${1}"
937a0bd32Sgnzlbg    local name="${2}"
102fd7f7a4SMarco A L Barbosa    local dest=/system
1137a0bd32Sgnzlbg    local td
1237a0bd32Sgnzlbg    td="$(mktemp -d)"
132fd7f7a4SMarco A L Barbosa
142fd7f7a4SMarco A L Barbosa    apt-get install --no-install-recommends e2tools
152fd7f7a4SMarco A L Barbosa
1637a0bd32Sgnzlbg    pushd "${td}"
17b46b6e2eSTom Parker-Shemilt    curl --retry 5 -O "${URL}/${name}"
1837a0bd32Sgnzlbg    unzip -q "${name}"
192fd7f7a4SMarco A L Barbosa
2037a0bd32Sgnzlbg    local system
2137a0bd32Sgnzlbg    system="$(find . -name system.img)"
2237a0bd32Sgnzlbg    mkdir -p ${dest}/{bin,lib,lib64}
232fd7f7a4SMarco A L Barbosa
242fd7f7a4SMarco A L Barbosa    # Extract android linker and libraries to /system
252fd7f7a4SMarco A L Barbosa    # This allows android executables to be run directly (or with qemu)
2637a0bd32Sgnzlbg    if [ "${arch}" = "x86_64" ] || [ "${arch}" = "arm64" ]; then
2737a0bd32Sgnzlbg        e2cp -p "${system}:/bin/linker64" "${dest}/bin/"
2837a0bd32Sgnzlbg        e2cp -p "${system}:/lib64/libdl.so" "${dest}/lib64/"
2937a0bd32Sgnzlbg        e2cp -p "${system}:/lib64/libc.so" "${dest}/lib64/"
3037a0bd32Sgnzlbg        e2cp -p "${system}:/lib64/libm.so" "${dest}/lib64/"
312fd7f7a4SMarco A L Barbosa    else
3237a0bd32Sgnzlbg        e2cp -p "${system}:/bin/linker" "${dest}/bin/"
3337a0bd32Sgnzlbg        e2cp -p "${system}:/lib/libdl.so" "${dest}/lib/"
3437a0bd32Sgnzlbg        e2cp -p "${system}:/lib/libc.so" "${dest}/lib/"
3537a0bd32Sgnzlbg        e2cp -p "${system}:/lib/libm.so" "${dest}/lib/"
362fd7f7a4SMarco A L Barbosa    fi
372fd7f7a4SMarco A L Barbosa
382fd7f7a4SMarco A L Barbosa    # clean up
392fd7f7a4SMarco A L Barbosa    apt-get purge --auto-remove -y e2tools
402fd7f7a4SMarco A L Barbosa
412fd7f7a4SMarco A L Barbosa    popd
422fd7f7a4SMarco A L Barbosa
4337a0bd32Sgnzlbg    rm -rf "${td}"
442fd7f7a4SMarco A L Barbosa}
452fd7f7a4SMarco A L Barbosa
462fd7f7a4SMarco A L Barbosamain "${@}"
47