Imported Upstream version 1.7.0
[platform/core/ml/nnfw.git] / tools / cross / install_rootfs.sh
1 #!/usr/bin/env bash
2 set -x
3
4 usage()
5 {
6     echo "Usage: $0 [BuildArch] [LinuxCodeName] [--setproxy=IP] [--skipunmount]"
7     echo "BuildArch can be: arm(default), aarch64 and armel"
8     echo "LinuxCodeName - optional, Code name for Linux, can be: xenial(default), trusty"
9     echo "                          If BuildArch is armel, this can be tizen(default)"
10     echo "--setproxy=IP - optional, IP is the proxy server IP address or url with portnumber"
11     echo "                           default no proxy. Example: --setproxy=127.1.2.3:8080"
12     echo "--skipunmount - optional, will skip the unmount of rootfs folder."
13     exit 1
14 }
15
16 __CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
17 __InitialDir=$PWD
18 __UbuntuRepo="http://ports.ubuntu.com/"
19
20 __BuildArch=arm
21 __QemuArch=armhf
22 __LinuxCodeName=xenial
23 __SkipUnmount=0
24 __IsProxySet=0
25 __Apt=""
26 # base development support
27 __UbuntuPackages="build-essential"
28
29 # other development supports
30 __UbuntuPackages+=" libboost-all-dev ocl-icd-opencl-dev"
31 __UbuntuPackages+=" libhdf5-dev"
32
33 # symlinks fixer
34 __UbuntuPackages+=" symlinks"
35
36 __UnprocessedBuildArgs=
37
38 for i in "$@" ; do
39     lowerI="$(echo $i | awk '{print tolower($0)}')"
40     case $lowerI in
41         -?|-h|--help)
42             usage
43             exit 1
44             ;;
45         arm)
46             __BuildArch=arm
47             __QemuArch=armhf
48             ;;
49         aarch64)
50             __BuildArch=aarch64
51             __QemuArch=arm64
52             ;;
53         armel)
54             __BuildArch=armel
55             __Tizen=tizen
56             __QemuArch=
57             __UbuntuRepo=
58             __LinuxCodeName=
59             ;;
60         tizen)
61             if [ "$__BuildArch" != "armel" ]; then
62                 echo "Tizen rootfs is available only for armel."
63                 usage;
64                 exit 1;
65             fi
66             __Tizen=tizen
67             __QemuArch=
68             __UbuntuRepo=
69             __LinuxCodeName=
70             ;;
71         trusty)
72             __LinuxCodeName=trusty
73             ;;
74         xenial)
75             __LinuxCodeName=xenial
76             ;;
77         bionic)
78             __LinuxCodeName=bionic
79             ;;
80         --setproxy*)
81             proxyip="${i#*=}"
82             __Apt="Acquire::http::proxy \"http://$proxyip/\";\n"
83             __Apt+="Acquire::https::proxy \"http://$proxyip/\";\n"
84             __Apt+="Acquire::ftp::proxy \"ftp://$proxyip/\";"
85             __IsProxySet=1
86             ;;
87         --skipunmount)
88             __SkipUnmount=1
89             ;;
90         *)
91             __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i"
92             ;;
93     esac
94 done
95
96 __RootfsDir="$__CrossDir/rootfs/$__BuildArch"
97
98 if [[ -n "$ROOTFS_DIR" ]]; then
99     __RootfsDir=$ROOTFS_DIR
100 fi
101
102 if [ -d "$__RootfsDir" ]; then
103     if [ $__SkipUnmount == 0 ]; then
104         umount $__RootfsDir/*
105     fi
106     rm -rf $__RootfsDir
107 fi
108
109 if [ $__IsProxySet == 1 ] && [ "$__Tizen" != "tizen" ]; then
110     mkdir -p $__RootfsDir/etc/apt/apt.conf.d
111     echo -e "$__Apt" >> $__RootfsDir/etc/apt/apt.conf.d/90proxy
112 fi
113
114 if [[ -n $__LinuxCodeName ]]; then
115     qemu-debootstrap --arch $__QemuArch $__LinuxCodeName $__RootfsDir $__UbuntuRepo
116     cp $__CrossDir/$__BuildArch/sources.list.$__LinuxCodeName $__RootfsDir/etc/apt/sources.list
117     chroot $__RootfsDir apt-get update
118     chroot $__RootfsDir apt-get -f -y install
119     chroot $__RootfsDir apt-get -y install $__UbuntuPackages
120     machine=$(chroot $__RootfsDir gcc -dumpmachine)
121     chroot $__RootfsDir ln -s /usr/lib/${machine}/libhdf5_serial.a /usr/lib/${machine}/libhdf5.a
122     chroot $__RootfsDir ln -s /usr/lib/${machine}/libhdf5_serial.so /usr/lib/${machine}/libhdf5.so
123     chroot $__RootfsDir symlinks -cr /usr
124
125     if [ $__SkipUnmount == 0 ]; then
126         umount $__RootfsDir/*
127     fi
128 elif [ "$__Tizen" == "tizen" ]; then
129     ROOTFS_DIR=$__RootfsDir $__CrossDir/$__BuildArch/tizen-build-rootfs.sh
130 else
131     echo "Unsupported target platform."
132     usage;
133     exit 1
134 fi