Remove SetContained for GT_FIELD_LIST
[platform/upstream/coreclr.git] / cross / build-rootfs.sh
1 #!/usr/bin/env bash
2
3 usage()
4 {
5     echo "Usage: $0 [BuildArch] [LinuxCodeName] [lldbx.y] [--skipunmount]"
6     echo "BuildArch can be: arm(default), armel, arm64, x86"
7     echo "LinuxCodeName - optional, Code name for Linux, can be: trusty(default), vivid, wily, xenial, zesty. If BuildArch is armel, LinuxCodeName is jessie(default) or tizen."
8     echo "lldbx.y - optional, LLDB version, can be: lldb3.6(default), lldb3.8, lldb3.9, lldb4.0, no-lldb"
9     echo "--skipunmount - optional, will skip the unmount of rootfs folder."
10     exit 1
11 }
12
13 __LinuxCodeName=trusty
14 __CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
15 __InitialDir=$PWD
16 __BuildArch=arm
17 __UbuntuArch=armhf
18 __UbuntuRepo="http://ports.ubuntu.com/"
19 __LLDB_Package="lldb-3.6-dev"
20 __SkipUnmount=0
21
22 # base development support
23 __UbuntuPackages="build-essential"
24
25 # symlinks fixer
26 __UbuntuPackages+=" symlinks"
27
28 # CoreCLR and CoreFX dependencies
29 __UbuntuPackages+=" gettext"
30 __UbuntuPackages+=" libunwind8-dev"
31 __UbuntuPackages+=" liblttng-ust-dev"
32 __UbuntuPackages+=" libicu-dev"
33
34 # CoreFX dependencies
35 __UbuntuPackages+=" libcurl4-openssl-dev"
36 __UbuntuPackages+=" libkrb5-dev"
37 __UbuntuPackages+=" libssl-dev"
38 __UbuntuPackages+=" zlib1g-dev"
39
40 __UnprocessedBuildArgs=
41 for i in "$@" ; do
42     lowerI="$(echo $i | awk '{print tolower($0)}')"
43     case $lowerI in
44         -?|-h|--help)
45             usage
46             exit 1
47             ;;
48         arm)
49             __BuildArch=arm
50             __UbuntuArch=armhf
51             ;;
52         arm64)
53             __BuildArch=arm64
54             __UbuntuArch=arm64
55             ;;
56         armel)
57             __BuildArch=armel
58             __UbuntuArch=armel
59             __UbuntuRepo="http://ftp.debian.org/debian/"
60             __LinuxCodeName=jessie
61             ;;
62         x86)
63             __BuildArch=x86
64             __UbuntuArch=i386
65             __UbuntuRepo="http://archive.ubuntu.com/ubuntu/"
66             ;;
67         lldb3.6)
68             __LLDB_Package="lldb-3.6-dev"
69             ;;
70         lldb3.8)
71             __LLDB_Package="lldb-3.8-dev"
72             ;;
73         lldb3.9)
74             __LLDB_Package="lldb-3.9-dev"
75             ;;
76         lldb4.0)
77             __LLDB_Package="lldb-4.0-dev"
78             ;;
79         no-lldb)
80             unset __LLDB_Package
81             ;;
82         vivid)
83             if [ "$__LinuxCodeName" != "jessie" ]; then
84                 __LinuxCodeName=vivid
85             fi
86             ;;
87         wily)
88             if [ "$__LinuxCodeName" != "jessie" ]; then
89                 __LinuxCodeName=wily
90             fi
91             ;;
92         xenial)
93             if [ "$__LinuxCodeName" != "jessie" ]; then
94                 __LinuxCodeName=xenial
95             fi
96             ;;
97         zesty)
98             if [ "$__LinuxCodeName" != "jessie" ]; then
99                 __LinuxCodeName=zesty
100             fi
101             ;;
102         jessie)
103             __LinuxCodeName=jessie
104             __UbuntuRepo="http://ftp.debian.org/debian/"
105             ;;
106         tizen)
107             if [ "$__BuildArch" != "armel" ]; then
108                 echo "Tizen is available only for armel."
109                 usage;
110                 exit 1;
111             fi
112             __LinuxCodeName=
113             __UbuntuRepo=
114             __Tizen=tizen
115             ;;
116         --skipunmount)
117             __SkipUnmount=1
118             ;;
119         *)
120             __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i"
121             ;;
122     esac
123 done
124
125 if [ "$__BuildArch" == "armel" ]; then
126     __LLDB_Package="lldb-3.5-dev"
127 fi
128 __UbuntuPackages+=" ${__LLDB_Package:-}"
129
130 __RootfsDir="$__CrossDir/rootfs/$__BuildArch"
131
132 if [[ -n "$ROOTFS_DIR" ]]; then
133     __RootfsDir=$ROOTFS_DIR
134 fi
135
136 if [ -d "$__RootfsDir" ]; then
137     if [ $__SkipUnmount == 0 ]; then
138         umount $__RootfsDir/*
139     fi
140     rm -rf $__RootfsDir
141 fi
142
143 if [[ -n $__LinuxCodeName ]]; then
144     qemu-debootstrap --arch $__UbuntuArch $__LinuxCodeName $__RootfsDir $__UbuntuRepo
145     cp $__CrossDir/$__BuildArch/sources.list.$__LinuxCodeName $__RootfsDir/etc/apt/sources.list
146     chroot $__RootfsDir apt-get update
147     chroot $__RootfsDir apt-get -f -y install
148     chroot $__RootfsDir apt-get -y install $__UbuntuPackages
149     chroot $__RootfsDir symlinks -cr /usr
150
151     if [ $__SkipUnmount == 0 ]; then
152         umount $__RootfsDir/*
153     fi
154
155     if [[ "$__BuildArch" == "arm" && "$__LinuxCodeName" == "trusty" ]]; then
156         pushd $__RootfsDir
157         patch -p1 < $__CrossDir/$__BuildArch/trusty.patch
158         popd
159     fi
160 elif [ "$__Tizen" == "tizen" ]; then
161     ROOTFS_DIR=$__RootfsDir $__CrossDir/$__BuildArch/tizen-build-rootfs.sh
162 else
163     echo "Unsupported target platform."
164     usage;
165     exit 1
166 fi