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