summaryrefslogtreecommitdiff
path: root/tools/cross/build_rootfs.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tools/cross/build_rootfs.sh')
-rwxr-xr-xtools/cross/build_rootfs.sh122
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