remove link of vendor/src after build
[platform/core/system/edge-orchestration.git] / build.sh
1 #! /bin/bash
2
3 export BASE_DIR=$( cd "$(dirname "$0")" ; pwd )
4
5 BINARY_FILE="edge-orchestration"
6 SERVICE_DIR="/etc/systemd/system"
7 BINARY_DIR=$BASE_DIR/"src/CMain/bin"
8 RPM_SPEC_FILE="edge-orchestration.spec"
9 SERVICE_FILE="edge-orchestration.service"
10 SERVICE_FILE_x86="edge-orchestration.service.amd64"
11 DBUS_CONF_FILE="org.tizen.orchestration.conf"
12 DBUS_CONF_FILE_x86="org.tizen.orchestration.conf.amd64"
13 DBUS_SERVICE_FILE="org.tizen.orchestration.service"
14 DBUS_SERVICE_FILE_x86="org.tizen.orchestration.service.amd64"
15 DBUS_CONF_DIR="/etc/dbus-1/system.d"
16 DBUS_SERVICE_DIR="/usr/share/dbus-1/system-services"
17
18 export VERSION=`grep -w "Version" $BASE_DIR/packaging/$RPM_SPEC_FILE | awk -F ':' '{print $2}' | tr -d ' '`
19 export BUILD_DATE=$(date +%Y%m%d.%H%M)
20
21 export GOPATH=$GOPATH:$BASE_DIR:$BASE_DIR/vendor
22
23 ORG_VENDOR_DIR='vendor'
24 CUR_VENDOR_DIR='vendor/src'
25 if [ ! -d $BASE_DIR/$CUR_VENDOR_DIR ]; then
26     ln -s $BASE_DIR/$ORG_VENDOR_DIR $BASE_DIR/$CUR_VENDOR_DIR
27 fi
28
29 function install_prerequisite() {
30     echo ""
31     echo "-----------------------------------"
32     echo " Install prerequisite packages"
33     echo "-----------------------------------"
34     go get github.com/axw/gocov/gocov
35     go get github.com/matm/gocov-html
36     go get github.com/Songmu/make2help/cmd/make2help
37 }
38
39 function build_clean() {
40     echo ""
41     echo "-----------------------------------"
42     echo " Build clean"
43     echo "-----------------------------------"
44     make clean
45 }
46
47 function build_binary() {
48     echo ""
49     echo "----------------------------------------"
50     echo " Create Executable binary from GoMain"
51     echo "----------------------------------------"
52     make build-binary
53 }
54
55 function build_object() {
56     echo ""
57     echo "----------------------------------------"
58     echo " Create Static object of Orchestration"
59     echo "----------------------------------------"
60     make build-object
61 }
62
63 function build_dbus() {
64     echo ""
65     echo "----------------------------------------"
66     echo " Create Executable binary from CMain"
67     echo "----------------------------------------"
68     make build-dbus-server
69
70     echo ""
71     echo "--------------------------------------------------"
72     echo " Create Shared Object from libedge-orchestration"
73     echo "--------------------------------------------------"
74     make build-dbus-client
75 }
76
77 function build_test() {
78     echo ""
79     echo "-------------------------------------"
80     echo " Build test to calculate Coverage"
81     echo "-------------------------------------"
82     sudo systemctl stop ${SERVICE_FILE}
83     sudo systemctl status ${SERVICE_FILE}
84     mkdir -p /tmp/foo
85     make test
86 }
87
88 function lint_src_code() {
89     echo ""
90     echo "---------------------------------------"
91     echo " Analysis source code golint & go vet"
92     echo "---------------------------------------"
93     make lint
94 }
95
96 function build_package() {
97     echo ""
98     echo "------------------------------------------"
99     echo " Create Packages for Tizen from gbs build"
100     echo "------------------------------------------"
101
102     gbs -c ./.tizen.gbs.conf build -A armv7l --include-all
103
104     ### build through go toolchain
105     #gbs -c ./.tizen.gbs.conf build -A armv7l --include-all --define 'go_build ON'
106 }
107
108 function register_service() {
109     echo ""
110     echo "-----------------------------------"
111     echo "  Create Service File [SuperUser]"
112     echo "-----------------------------------"
113
114     sudo systemctl stop $SERVICE_FILE
115     sudo cp $BINARY_DIR/$1/$BINARY_FILE /usr/bin
116     sudo cp $BASE_DIR/packaging/$SERVICE_FILE_x86 $SERVICE_DIR/$SERVICE_FILE
117     sudo cp $BASE_DIR/packaging/$DBUS_CONF_FILE_x86 $DBUS_CONF_DIR/$DBUS_CONF_FILE
118     sudo cp $BASE_DIR/packaging/$DBUS_SERVICE_FILE_x86 $DBUS_SERVICE_DIR/$DBUS_SERVICE_FILE
119     ls -al $SERVICE_DIR | grep $SERVICE_FILE
120
121     echo ""
122     echo "--------------------------------------------"
123     echo "  Create prerequisite Folder [SuperUser]"
124     echo "--------------------------------------------"
125     sudo mkdir -p /var/log/$BINARY_FILE
126     sudo mkdir -p /etc/$BINARY_FILE
127
128     echo ""
129     echo "----------------------------------------"
130     echo "  Register Edge-Orchestration Service"
131     echo "----------------------------------------"
132
133     sudo systemctl daemon-reload
134     sudo systemctl restart $SERVICE_FILE
135     sudo systemctl status $SERVICE_FILE
136 }
137
138 function build_object_x86() {
139     echo ""
140     echo ""
141     echo "**********************************"
142     echo " Target Binary arch is i386 "
143     echo "**********************************"
144     export GOARCH=386
145     export CC="gcc"
146     export ARCH=x86
147
148     build_clean
149     build_object
150 }
151
152 function build_object_x86-64() {
153     echo ""
154     echo ""
155     echo "**********************************"
156     echo " Target Binary arch is amd64 "
157     echo "**********************************"
158     export GOARCH=amd64
159     export CC="gcc"
160     export ARCH=x86-64
161
162     build_clean
163     build_object
164 }
165
166 function build_object_arm() {
167     echo ""
168     echo ""
169     echo "**********************************"
170     echo " Target Binary arch is armv7 "
171     echo "**********************************"
172     export GOARCH=arm GOARM=7
173     export CC="arm-linux-gnueabi-gcc"
174     export ARCH=arm
175
176     build_clean
177     build_object
178 }
179
180 function build_object_aarch64() {
181     echo ""
182     echo ""
183     echo "**********************************"
184     echo " Target Binary arch is arm64 "
185     echo "**********************************"
186     export GOARCH=arm64
187     export CC="aarch64-linux-gnu-gcc"
188     export ARCH=aarch64
189
190     build_clean
191     build_object
192 }
193
194 function build_clean_vendor() {
195     echo ""
196     echo "-------------------------------------"
197     echo " Clean up 3rdParty directory"
198     echo "-------------------------------------"
199     make clean-tmp-packages
200 }
201
202
203 # Always executed for creating orchestration library
204 build_object_x86
205 build_object_arm
206 build_object_aarch64
207
208 if [ "$1" == "tizen" ]; then
209     build_package
210 else
211     case "$1" in
212         "all")
213             build_object_x86-64
214             install_prerequisite
215             build_test
216             build_dbus
217             build_binary
218             lint_src_code
219             register_service linux_x86-64
220             ;;
221         "test")
222             sudo systemctl stop ${SERVICE_FILE}
223             sudo systemctl status ${SERVICE_FILE}
224             build_test
225             ;;
226         "status")
227             sudo systemctl status ${SERVICE_FILE}
228             ;;
229         "start")
230             sudo systemctl daemon-reload
231             sudo systemctl start ${SERVICE_FILE}
232             sudo systemctl status ${SERVICE_FILE}
233             ;;
234         "stop")
235             sudo systemctl stop ${SERVICE_FILE}
236             sudo systemctl status ${SERVICE_FILE}
237             ;;
238         "restart")
239             sudo systemctl daemon-reload
240             sudo systemctl restart ${SERVICE_FILE}
241             sudo systemctl status ${SERVICE_FILE}
242             ;;
243         "")
244             build_object_x86-64
245             build_dbus
246             register_service linux_x86-64
247             ;;
248         *)
249             echo "build script"
250             echo "Usage:"
251             echo "--------------------------------------------------------------"
252             echo "  $0          : build Go executable binary for amd64 "
253             echo "  $0 all      : build C executable binary for amd64  "
254             echo "  $0 tizen    : build arm packages for Tizen"
255             echo "--------------------------------------------------------------"
256             exit 0
257             ;;
258     esac
259 fi
260
261 # Clean up 3rdParty directory
262 build_clean_vendor