Imported Upstream version 1.25.0
[platform/core/ml/nnfw.git] / tools / cross / install_rootfs.sh
1 #!/usr/bin/env bash
2 usage()
3 {
4     echo "Usage: $0 [BuildArch] [LinuxCodeName] [--setproxy=IP] [--skipunmount]"
5     echo "BuildArch can be: arm(default), aarch64"
6     echo "LinuxCodeName - optional, Code name for Linux, can be: bionic, focal(default), jammy"
7     echo "--setproxy=IP - optional, IP is the proxy server IP address or url with portnumber"
8     echo "                           default no proxy. Example: --setproxy=127.1.2.3:8080"
9     echo "--skipunmount - optional, will skip the unmount of rootfs folder."
10     exit 1
11 }
12
13 __CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
14 __InitialDir=$PWD
15 __UbuntuRepo="http://ports.ubuntu.com/"
16
17 __BuildArch=arm
18 __QemuArch=armhf
19 __LinuxCodeName=focal
20 __SkipUnmount=0
21 __IsProxySet=0
22 __Apt=""
23 # base development support
24 # install cmake to find cmake package configuration for target file system
25 __UbuntuPackages="build-essential"
26 __UbuntuPackages+=" cmake"
27
28 # other development supports
29 __UbuntuPackages+=" ocl-icd-opencl-dev"
30 __UbuntuPackages+=" libhdf5-dev"
31 __UbuntuPackages+=" libboost-all-dev"
32 __UbuntuPackages+=" libglib2.0-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         bionic)
55             __LinuxCodeName=bionic
56             ;;
57         focal)
58             __LinuxCodeName=focal
59             ;;
60         jammy)
61             __LinuxCodeName=jammy
62             ;;
63         --setproxy*)
64             proxyip="${i#*=}"
65             __Apt="Acquire::http::proxy \"http://$proxyip/\";\n"
66             __Apt+="Acquire::https::proxy \"http://$proxyip/\";\n"
67             __Apt+="Acquire::ftp::proxy \"ftp://$proxyip/\";"
68             __IsProxySet=1
69             ;;
70         --skipunmount)
71             __SkipUnmount=1
72             ;;
73         *)
74             __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i"
75             ;;
76     esac
77 done
78
79 set -x
80
81 __RootfsDir="$__CrossDir/rootfs/$__BuildArch"
82
83 if [[ -n "$ROOTFS_DIR" ]]; then
84     __RootfsDir=$ROOTFS_DIR
85 fi
86
87 if [ -d "$__RootfsDir" ]; then
88     if [ $__SkipUnmount == 0 ]; then
89         umount $__RootfsDir/*
90     fi
91     rm -rf $__RootfsDir
92 fi
93
94 if [ $__IsProxySet == 1 ]; then
95     mkdir -p $__RootfsDir/etc/apt/apt.conf.d
96     echo -e "$__Apt" >> $__RootfsDir/etc/apt/apt.conf.d/90proxy
97 fi
98
99 if [[ -n $__LinuxCodeName ]]; then
100     qemu-debootstrap --arch $__QemuArch $__LinuxCodeName $__RootfsDir $__UbuntuRepo
101     cp $__CrossDir/$__BuildArch/sources.list.$__LinuxCodeName $__RootfsDir/etc/apt/sources.list
102     chroot $__RootfsDir apt-get update
103     chroot $__RootfsDir apt-get -f -y install
104     chroot $__RootfsDir apt-get -y install $__UbuntuPackages
105     machine=$(chroot $__RootfsDir gcc -dumpmachine)
106     chroot $__RootfsDir ln -s /usr/lib/${machine}/libhdf5_serial.a /usr/lib/${machine}/libhdf5.a
107     chroot $__RootfsDir ln -s /usr/lib/${machine}/libhdf5_serial.so /usr/lib/${machine}/libhdf5.so
108     chroot $__RootfsDir symlinks -cr /usr
109
110     if [ $__SkipUnmount == 0 ]; then
111         umount $__RootfsDir/*
112     fi
113 else
114     echo "Unsupported target platform."
115     usage;
116     exit 1
117 fi