Imported Upstream version 1.12.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: bionic(default), trusty, xenial, focal"
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=bionic
23 __SkipUnmount=0
24 __IsProxySet=0
25 __Apt=""
26 # base development support
27 __UbuntuPackages="build-essential"
28
29 # other development supports
30 __UbuntuPackages+=" ocl-icd-opencl-dev"
31 __UbuntuPackages+=" libhdf5-dev"
32 __UbuntuBoostPackages=" libboost-all-dev"
33
34 # symlinks fixer
35 __UbuntuPackages+=" symlinks"
36
37 __UnprocessedBuildArgs=
38
39 for i in "$@" ; do
40     lowerI="$(echo $i | awk '{print tolower($0)}')"
41     case $lowerI in
42         -?|-h|--help)
43             usage
44             exit 1
45             ;;
46         arm)
47             __BuildArch=arm
48             __QemuArch=armhf
49             ;;
50         aarch64)
51             __BuildArch=aarch64
52             __QemuArch=arm64
53             ;;
54         armel)
55             __BuildArch=armel
56             __Tizen=tizen
57             __QemuArch=
58             __UbuntuRepo=
59             __LinuxCodeName=
60             ;;
61         tizen)
62             if [ "$__BuildArch" != "armel" ]; then
63                 echo "Tizen rootfs is available only for armel."
64                 usage;
65                 exit 1;
66             fi
67             __Tizen=tizen
68             __QemuArch=
69             __UbuntuRepo=
70             __LinuxCodeName=
71             ;;
72         trusty)
73             __LinuxCodeName=trusty
74             ;;
75         xenial)
76             __LinuxCodeName=xenial
77             ;;
78         bionic)
79             __LinuxCodeName=bionic
80             ;;
81         focal)
82             __LinuxCodeName=focal
83             __UbuntuBoostPackages=" libboost1.67-all-dev"
84             ;;
85         --setproxy*)
86             proxyip="${i#*=}"
87             __Apt="Acquire::http::proxy \"http://$proxyip/\";\n"
88             __Apt+="Acquire::https::proxy \"http://$proxyip/\";\n"
89             __Apt+="Acquire::ftp::proxy \"ftp://$proxyip/\";"
90             __IsProxySet=1
91             ;;
92         --skipunmount)
93             __SkipUnmount=1
94             ;;
95         *)
96             __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i"
97             ;;
98     esac
99 done
100
101 # Current runtime build system supports boost version under 1.70
102 __UbuntuPackages+="$__UbuntuBoostPackages"
103
104 __RootfsDir="$__CrossDir/rootfs/$__BuildArch"
105
106 if [[ -n "$ROOTFS_DIR" ]]; then
107     __RootfsDir=$ROOTFS_DIR
108 fi
109
110 if [ -d "$__RootfsDir" ]; then
111     if [ $__SkipUnmount == 0 ]; then
112         umount $__RootfsDir/*
113     fi
114     rm -rf $__RootfsDir
115 fi
116
117 if [ $__IsProxySet == 1 ] && [ "$__Tizen" != "tizen" ]; then
118     mkdir -p $__RootfsDir/etc/apt/apt.conf.d
119     echo -e "$__Apt" >> $__RootfsDir/etc/apt/apt.conf.d/90proxy
120 fi
121
122 if [[ -n $__LinuxCodeName ]]; then
123     qemu-debootstrap --arch $__QemuArch $__LinuxCodeName $__RootfsDir $__UbuntuRepo
124     cp $__CrossDir/$__BuildArch/sources.list.$__LinuxCodeName $__RootfsDir/etc/apt/sources.list
125     chroot $__RootfsDir apt-get update
126     chroot $__RootfsDir apt-get -f -y install
127     chroot $__RootfsDir apt-get -y install $__UbuntuPackages
128     machine=$(chroot $__RootfsDir gcc -dumpmachine)
129     chroot $__RootfsDir ln -s /usr/lib/${machine}/libhdf5_serial.a /usr/lib/${machine}/libhdf5.a
130     chroot $__RootfsDir ln -s /usr/lib/${machine}/libhdf5_serial.so /usr/lib/${machine}/libhdf5.so
131     chroot $__RootfsDir symlinks -cr /usr
132
133     if [ $__SkipUnmount == 0 ]; then
134         umount $__RootfsDir/*
135     fi
136 elif [ "$__Tizen" == "tizen" ]; then
137     ROOTFS_DIR=$__RootfsDir $__CrossDir/$__BuildArch/tizen-build-rootfs.sh
138 else
139     echo "Unsupported target platform."
140     usage;
141     exit 1
142 fi