-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathiot-firmware-build
executable file
·142 lines (108 loc) · 2.82 KB
/
iot-firmware-build
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
135
136
137
138
139
140
141
#!/bin/bash -e
CPWD="$( cd "$(dirname "$0")" ; pwd -P )"
#----------------------------------------------------#
# COMMON ATTRIBUTES #
#----------------------------------------------------#
source $CPWD/scripts/iot-utils
#----------------------------------------------------#
# DEFINES / MACROS #
#----------------------------------------------------#
LOG=$LOGS_DIR/iot-firmware-build.log
#----------------------------------------------------#
# CMDLINE OPTIONS #
#----------------------------------------------------#
ARGC=$#
ARGV=("$@")
VERBOSE=false
HELP=false
DEBUG_SHELL=false
PRODUCTION=false
# Clear args
set --
COUNT=0
while [ $COUNT -lt $ARGC ]; do
STRIP=${ARGV[COUNT]}
ID=0
LONGFORMAT=`echo $STRIP | cut -b 1-2`
if [ "x$LONGFORMAT" == "x--" ]; then
STRIP=`echo ${ARGV[COUNT]} | cut -b 2-3`
else
ID=`echo $STRIP | cut -b 3-`
STRIP=`echo $STRIP | cut -b 1-2`
fi
if [ "x$STRIP" == "x-v" ]; then
VERBOSE=true
elif [ "x$STRIP" == "x-h" ]; then
HELP=true
elif [ "x$STRIP" == "x-d" ]; then
DEBUG_SHELL=true
elif [ "x$STRIP" == "x-p" ]; then
PRODUCTION=true
else
pl
pr "Error: Unknown argument"
COUNT=$ARGC
HELP=true
fi
COUNT=$((COUNT+1))
done
log "Started"
pl
pg "iot-firmware-build ($VERSION)"
if [ "$HELP" == "true" ]; then
pn "Usage:"
pl
pn "Build a device specific firmware image."
pl
pn "iot-firmware-build [-v] [-h] ..."
pl
pn "Help:"
pl
pn "-v (--verbose) Verbose output for operations"
pn "-h (--help) Print this"
pn "-d (--debug-shell) Interactive shell"
pn "-p (--production) Exclude various debug features from the image"
pl
exit 0
fi
#----------------------------------------------------#
# PREPARE #
#----------------------------------------------------#
pn
pg ":: Setup & Checks ::"
pn
common_setup
log "Common Setup OK"
#----------------------------------------------------#
# BODY #
#----------------------------------------------------#
pl
pg ":: Device Selection ::"
pl
DEVICE=$(device)
if [ -z "$DEVICE" ] || [ ! -d $IOT_DEVICE_DIR/$DEVICE ]; then
if [ "x$ADMIN" == "x1" ]; then
select_device
else
err "No default device is set. Without Admin mode we cannot proceed."
fi
else
# Default device (Non-admin mode compatible)
pnn "- Device selected : "
pg "$DEVICE"
fi
pl
pg ":: Building Image ::"
pl
if [ ! -f $IOT_DEVICE_DIR/$DEVICE/device-firmware ]; then
err "Error: Cannot locate firmware script for device: $DEVICE"
fi
source $IOT_DEVICE_DIR/$DEVICE/device-firmware
device_firmware
# Complete, move to real name
mkdir -p $(dirname $FIRMWARE_NAME_FINAL)
mv $FIRMWARE_NAME $FIRMWARE_NAME_FINAL
pl
pnn "Device Firmware Ready : "
pg "$(basename $FIRMWARE_NAME_FINAL)"
pl