X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=src%2Ftype3_AndroidCloud%2Fanbox-master%2Fscripts%2Fsetup-partial-chroot.sh;fp=src%2Ftype3_AndroidCloud%2Fanbox-master%2Fscripts%2Fsetup-partial-chroot.sh;h=983a649fd84671c5633a586426ae94b1f720a1e2;hb=e26c1ec581be598521517829adba8c8dd23a768f;hp=0000000000000000000000000000000000000000;hpb=6699c1aea74eeb0eb400e6299079f0c7576f716f;p=iec.git diff --git a/src/type3_AndroidCloud/anbox-master/scripts/setup-partial-chroot.sh b/src/type3_AndroidCloud/anbox-master/scripts/setup-partial-chroot.sh new file mode 100644 index 0000000..983a649 --- /dev/null +++ b/src/type3_AndroidCloud/anbox-master/scripts/setup-partial-chroot.sh @@ -0,0 +1,181 @@ +#!/bin/bash +# +# Copyright © 2016 Canonical Ltd. +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . +# +# Taken from the Mir Project (https://launchpad.net/mir) + +set -e + +name=${0} + +usage() { + echo "Usage: ${name} [options] mychroot-dir" + echo "options:" + echo " -a arch Select architecture, i.e. armhf, arm64, ppc... Default is armhf" + echo " -d dist Select distribution, i.e. vivid, wily. Default is vivid" + echo " -r rep Select an additional repository for bootstrap. Default is none" + echo + echo "please supply at least a directory to create partial chroot in. (eg, ./setup-partial-armhf-chroot.sh mychroot-dir)" +} + +# Default to vivid as we don't seem to have any working wily devices right now. +# Also Jenkins expects this script to default to vivid (TODO: update CI?) +arch=armhf +dist=vivid +sourceid=0 +repositories= +sources= + +while getopts a:d:r:h opt; do + case $opt in + a) + arch=$OPTARG + ;; + d) + dist=$OPTARG + ;; + r) + repositories="$repositories $OPTARG" + ((++sourceid)) + sources="$sources source$sourceid" + ;; + :) + echo "Option -$OPTARG requires an argument" + usage + exit 1 + ;; + h) + usage + exit 0 + ;; + \?) + echo "Invalid option: -$OPTARG" + usage + exit 1 + ;; + esac +done + +shift $((OPTIND-1)) + +if [ -z ${1} ]; then + usage + exit 1 +fi + +directory=${1} +echo "creating phablet-compatible $arch partial chroot for anbox compilation in directory ${directory}" + +if [ ! -d ${directory} ]; then + mkdir -p ${directory} +fi + +DEBCONTROL=$(pwd)/../debian/control + +pushd ${directory} > /dev/null + +# Empty dpkg status file, so that ALL dependencies are listed with dpkg-checkbuilddeps +echo "" > status + +# Manual error code checking is needed for dpkg-checkbuilddeps +set +e + +# Parse dependencies from debian/control +# dpkg-checkbuilddeps returns non-zero when dependencies are not met and the list is sent to stderr +builddeps=$(dpkg-checkbuilddeps -a ${arch} --admindir=. ${DEBCONTROL} 2>&1 ) +if [ $? -eq 0 ] ; then + exit 0 +fi +echo "${builddeps}" + +# now turn exit on error option +set -e + +# Sanitize dependencies list for submission to multistrap +# build-essential is not needed as we are cross-compiling +builddeps=$(echo ${builddeps} | sed -e 's/dpkg-checkbuilddeps://g' \ + -e 's/error://g' \ + -e 's/Unmet build dependencies://g' \ + -e 's/build-essential:native//g') +builddeps=$(echo ${builddeps} | sed 's/([^)]*)//g') +builddeps=$(echo ${builddeps} | sed -e 's/abi-compliance-checker//g') +builddeps=$(echo ${builddeps} | sed -e 's/multistrap//g') + +case ${arch} in + amd64 | i386 ) + source_url=http://archive.ubuntu.com/ubuntu + ;; + * ) + source_url=http://ports.ubuntu.com/ubuntu-ports + ;; +esac + +echo "[General] +arch=${arch} +directory=${directory} +unpack=false +noauth=true +bootstrap=Ubuntu UbuntuUpdates UbuntuSecurity ${sources} + +[Ubuntu] +packages=${builddeps} +source=${source_url} +suite=${dist} +components=main universe + +[UbuntuUpdates] +packages=${builddeps} +source=${source_url} +suite=${dist}-updates +components=main universe + +[UbuntuSecurity] +packages=${builddeps} +source=${source_url} +suite=${dist}-security +components=main universe +" > mstrap.conf + +sourceid=0 +for x in ${repositories}; +do + ((++sourceid)) + echo "[source${sourceid}] +source=${x} +suite=${dist} +" >> mstrap.conf +done + +multistrap -f mstrap.conf + +rm -f var/cache/apt/archives/lock + +# Remove libc libraries that confuse the cross-compiler +rm -f var/cache/apt/archives/libc-dev*.deb +rm -f var/cache/apt/archives/libc6*.deb + +for deb in var/cache/apt/archives/* ; do + if [ ! -d ${deb} ] ; then + echo "unpacking: ${deb}" + dpkg -x ${deb} . + fi +done + +# Fix up symlinks which asssumed the usual root path +for broken_symlink in $(find . -name \*.so -type l -xtype l) ; do + ln -sf $(pwd)$(readlink ${broken_symlink}) ${broken_symlink} +done + +popd > /dev/null