forked from OpenIPC/composer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
building.sh
executable file
·127 lines (103 loc) · 3.61 KB
/
building.sh
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
#!/bin/bash
#
# OpenIPC | version 2023.11.11
# Autoupdate COMPOSER repo
# Remove old building folder (for full rebuild)
# Download OpenIPC repo
# Copy files from Project Overlay
# Build Firmware
# Copy Kernel and Rootfs to Archive
# Copy Kernel and Rootfs to TFTP server
RELEASE=""
PROJECT="$1"
TFTP_STORAGE="[email protected]:/mnt/bigger-2tb/Rotator/TFTP"
COMPOSER_DIR=$(pwd)
FIRMWARE_DIR="${COMPOSER_DIR}/openipc"
TIMESTAMP=$(date +"%Y%m%d%H%M")
VERSION=$(stat -c"%Y" $0)
echo_c() {
# 30 grey, 31 red, 32 green, 33 yellow, 34 blue, 35 magenta, 36 cyan, 37 white
t="\e[1;$1m$2\e[0m" || t="$2"
echo -e "$t"
}
copy_to_archive() {
echo_c 32 "Copying files to local archive"
mkdir -p "${COMPOSER_DIR}/archive/${PROJECT}/${TIMESTAMP}"
cp -a \
${FIRMWARE_DIR}/output/images/rootfs.squashfs.* \
${FIRMWARE_DIR}/output/images/uImage.* \
${FIRMWARE_DIR}/output/images/*.tar \
${FIRMWARE_DIR}/output/images/openipc.*.tgz \
${COMPOSER_DIR}/archive/${PROJECT}/${TIMESTAMP}
if [ -f "${FIRMWARE_DIR}/output/images/autoupdate-kernel.img" ] ; then
cp -a ${FIRMWARE_DIR}/output/images/autoupdate* ${COMPOSER_DIR}/archive/${PROJECT}/${TIMESTAMP}
fi
echo_c 35 "\nAssembled firmware available in:"
tree -C "${COMPOSER_DIR}/archive/${PROJECT}/${TIMESTAMP}"
}
copy_to_tftp() {
echo_c 32 "\nCopying files to a TFTP server using SCP protocol"
scp -r \
${FIRMWARE_DIR}/output/images/rootfs.squashfs.* \
${FIRMWARE_DIR}/output/images/uImage.* \
${FIRMWARE_DIR}/output/images/openipc.*.tgz \
${TFTP_STORAGE}
if [ -f "${FIRMWARE_DIR}/output/images/autoupdate-kernel.img" ] ; then
scp -r ${FIRMWARE_DIR}/output/images/autoupdate* ${TFTP_STORAGE}
fi
}
select_project() {
AVAILABLE_PROJECTS=$(ls -1 ${COMPOSER_DIR}/projects | grep '_')
cmd="whiptail --title \"Available devices\" --menu \"Please select a device from the list below:\" 20 70 12"
for p in $AVAILABLE_PROJECTS; do cmd="${cmd} \"$p\" \"\""; done
PROJECT=$(eval "${cmd} 3>&1 1>&2 2>&3")
if [ $? != 0 ]; then
echo_c 31 "Cancelled."
exit 1
fi
}
copy_extra_packages() {
extra_packages=${COMPOSER_DIR}/packages
firmware_packages=${FIRMWARE_DIR}/general/package
cp -afv $extra_packages/* $firmware_packages
packages_list_file=$firmware_packages/Config.in
for f in "$extra_packages"/*
do
package_name=$(basename $f)
if ! grep -Fq "$package_name" $packages_list_file
then
printf 'source "$BR2_EXTERNAL_GENERAL_PATH/package/%s/Config.in"\n' $package_name >> $packages_list_file
fi
done
}
echo_c 37 "COMPOSER - custom OpenIPC firmware builder"
echo_c 30 "https://openipc.org/"
echo_c 30 "Version: ${VERSION}"
while [ -z "${PROJECT}" ]; do select_project; done
echo_c 31 "\nStarting a project for ${PROJECT}"
tree -C ${COMPOSER_DIR}/projects/${PROJECT}
sleep 3
echo_c 33 "\nUpdating Composer"
git pull
rm -rf openipc # Weed work with this command
if [ ! -d "$FIRMWARE_DIR" ]; then
echo_c 33 "\nDownloading Firmware"
git clone --depth=1 https://github.com/OpenIPC/firmware.git "$FIRMWARE_DIR"
cd "$FIRMWARE_DIR"
else
echo_c 33 "\nUpdating Firmware"
cd "$FIRMWARE_DIR"
# git reset HEAD --hard
# git pull --rebase
fi
echo_c 33 "\nCopying extra packages"
# cp -afv ${COMPOSER_DIR}/packages/* ${FIRMWARE_DIR}/general/package
copy_extra_packages
echo_c 33 "\nCopying project files"
cp -afv ${COMPOSER_DIR}/projects/${PROJECT}/* ${FIRMWARE_DIR}
echo_c 33 "\nBuilding the project"
make BOARD=${PROJECT} all
copy_to_archive
# copy_to_tftp
echo_c 35 "\nDone"
cd "$COMPOSER_DIR"