diff options
Diffstat (limited to 'tools/cross/build_rootfs.sh')
-rwxr-xr-x | tools/cross/build_rootfs.sh | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/tools/cross/build_rootfs.sh b/tools/cross/build_rootfs.sh new file mode 100755 index 000000000..f52ca6338 --- /dev/null +++ b/tools/cross/build_rootfs.sh @@ -0,0 +1,122 @@ +#!/usr/bin/env bash +set -x + +usage() +{ + echo "Usage: $0 [BuildArch] [LinuxCodeName] [--skipunmount] [--skipproxy]" + echo "BuildArch can be: arm(default), arm64 and armel" + echo "LinuxCodeName - optional, Code name for Linux, can be: xenial(default), trusty" + echo " If BuildArch is armel, this can be tizen(default)" + echo "--skipunmount - optional, will skip the unmount of rootfs folder." + echo "--skipproxy - optional, will skip the adding proxy information for Seoul R&D Campus." + exit 1 +} + +__CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +__InitialDir=$PWD +__UbuntuRepo="http://ports.ubuntu.com/" + +__BuildArch=arm +__UbuntuArch=armhf +__LinuxCodeName=xenial +__SkipUnmount=0 +__SkipProxy=0 + +# base development support +__UbuntuPackages="build-essential" + +# other development supports +__UbuntuPackages+=" libboost-all-dev" + +# symlinks fixer +__UbuntuPackages+=" symlinks" + +__UnprocessedBuildArgs= + +for i in "$@" ; do + lowerI="$(echo $i | awk '{print tolower($0)}')" + case $lowerI in + -?|-h|--help) + usage + exit 1 + ;; + arm) + __BuildArch=arm + __UbuntuArch=armhf + ;; + arm64) + __BuildArch=arm64 + __UbuntuArch=arm64 + ;; + armel) + __BuildArch=armel + __Tizen=tizen + __UbuntuArch= + __UbuntuRepo= + __LinuxCodeName= + ;; + tizen) + if [ "$__BuildArch" != "armel" ]; then + echo "Tizen is available only for armel." + usage; + exit 1; + fi + __Tizen=tizen + __UbuntuArch= + __UbuntuRepo= + __LinuxCodeName= + ;; + trusty) + __LinuxCodeName=trusty + ;; + xenial) + __LinuxCodeName=xenial + ;; + --skipunmount) + __SkipUnmount=1 + ;; + --skipproxy) + __SkipProxy=1 + ;; + *) + __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i" + ;; + esac +done + +__RootfsDir="$__CrossDir/rootfs/$__BuildArch" + +if [[ -n "$ROOTFS_DIR" ]]; then + __RootfsDir=$ROOTFS_DIR +fi + +if [ -d "$__RootfsDir" ]; then + if [ $__SkipUnmount == 0 ]; then + umount $__RootfsDir/* + fi + rm -rf $__RootfsDir +fi + +if [ $__SkipProxy == 0 ] && [ "$__Tizen" != "tizen" ]; then + mkdir -p $__RootfsDir/etc/apt/apt.conf.d + cp $__CrossDir/apt_proxy $__RootfsDir/etc/apt/apt.conf.d/90proxy +fi + +if [[ -n $__LinuxCodeName ]]; then + qemu-debootstrap --arch $__UbuntuArch $__LinuxCodeName $__RootfsDir $__UbuntuRepo + cp $__CrossDir/$__BuildArch/sources.list.$__LinuxCodeName $__RootfsDir/etc/apt/sources.list + chroot $__RootfsDir apt-get update + chroot $__RootfsDir apt-get -f -y install + chroot $__RootfsDir apt-get -y install $__UbuntuPackages + chroot $__RootfsDir symlinks -cr /usr + + if [ $__SkipUnmount == 0 ]; then + umount $__RootfsDir/* + fi +elif [ "$__Tizen" == "tizen" ]; then + ROOTFS_DIR=$__RootfsDir $__CrossDir/$__BuildArch/tizen-build-rootfs.sh +else + echo "Unsupported target platform." + usage; + exit 1 +fi |