forked from BroadbandForum/meshComms
-
Notifications
You must be signed in to change notification settings - Fork 0
/
release_compile.sh
executable file
·248 lines (200 loc) · 8.53 KB
/
release_compile.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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
# Broadband Forum IEEE 1905.1/1a stack
#
# Copyright (c) 2017, Broadband Forum
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# Subject to the terms and conditions of this license, each copyright
# holder and contributor hereby grants to those receiving rights under
# this license a perpetual, worldwide, non-exclusive, no-charge,
# royalty-free, irrevocable (except for failure to satisfy the
# conditions of this license) patent license to make, have made, use,
# offer to sell, sell, import, and otherwise transfer this software,
# where such license applies only to those patent claims, already
# acquired or hereafter acquired, licensable by such copyright holder or
# contributor that are necessarily infringed by:
#
# (a) their Contribution(s) (the licensed copyrights of copyright holders
# and non-copyrightable additions of contributors, in source or binary
# form) alone; or
#
# (b) combination of their Contribution(s) with the work of authorship to
# which such Contribution(s) was added by such copyright holder or
# contributor, if, at the time the Contribution is added, such addition
# causes such combination to be necessarily infringed. The patent
# license shall not apply to any other combinations which include the
# Contribution.
#
# Except as expressly stated above, no rights or licenses from any
# copyright holder or contributor is granted under this license, whether
# expressly, by implication, estoppel or otherwise.
#
# DISCLAIMER
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE.
# This is a simple "packaging" utility that executes Make and installs the
# output binaries in a "deployment" folder.
#
# Fell free to customize this to your own development/testing environment
#
# Usage:
#
# ./release_compile.sh <type>
#
# ...where <type> can take any of the following values:
#
# - "cvs"
# The tools will be built and installed in "$RELEASE_FOLDER/<version_tag>",
# but only if that folder did not already existed (otherwise, it won't do
# anything)
#
# - "VersionXXX" (ex: "VersionA7", "VersionB13", ...)
# The tools will be built and installed in
# "$RELEASE_FOLDER/VersionXXX/<version_tag>", wiping a previous folder with
# the same name in case it existed.
#
# In both cases, "<version_tag>" is the value contained in the first line of
# file "version.txt" and it must have the following format:
#
# lowercase "i" + monotonically increasing number
#
# Examples: i145, i146, i147, ....
#
# The last line of output produced by this script will always contain two words:
# 1. The HASH of the current git commit
# 2. The path to the folder where the release has been installed.
#
set -e
RELEASE_FOLDER="/external_dir/fs-rd-server/releases/Ieee1905Tools";
CURRENT_GIT_COMMIT=`git show | head -1 | cut -d" " -f2`
function help_and_quit
{
echo "You must provide one (and only one) argument, wich must be either ";
echo "the string 'cvs' or a string starting with 'Version' (examples: ";
echo "'VersionA7', 'VersionB13', ...)"
echo ""
echo "$CURRENT_GIT_COMMIT <ERROR>"
exit -1;
}
# Check validity of input arguments
#####################################################
echo ""
if [[ $# -ne 1 ]]; then
help_and_quit;
fi
if [[ "$1" != "cvs" ]] && [[ "$1" != "CVS" ]] && ! [[ "$1" =~ "Version" ]]; then
help_and_quit;
fi
version_tag=`cat version.txt | head -1`
if ! [[ "$version_tag" =~ ^i[0-9+]+$ ]]; then
echo "Invalid version tag in file 'version.txt'";
echo "Open that file and make sure the first line contains a valid ";
echo "version tag, which looks like this: o+[number] (ex: 'o106')";
echo ""
echo "$CURRENT_GIT_COMMIT <ERROR>"
exit -1;
fi
# Check if the requested version is already installed
#####################################################
echo "*************************************************************************"
echo "Setup..."
echo "*************************************************************************"
if [[ "$1" == "cvs" ]] || [[ "$1" == "CVS" ]]; then
INSTALL_FOLDER=$RELEASE_FOLDER/$version_tag;
if [[ -d $INSTALL_FOLDER ]]; then
echo "The CVS version you are trying to generate is already installed "
echo "in the 'releases' folder ($INSTALL_FOLDER)"
echo "If you *really* want to regenerate it, first *manually* delete "
echo "that folder and then re-execute this script"
echo "Exiting..."
echo ""
echo "$CURRENT_GIT_COMMIT $INSTALL_FOLDER"
exit 0;
fi
else
INSTALL_FOLDER=$RELEASE_FOLDER/$1/$version_tag
if [[ -d $INSTALL_FOLDER ]]; then
echo "The destination folder where tools are going to be installed "
echo "already existed ($INSTALL_FOLDER)"
echo "We are going to wipe it out."
echo ""
rm -rf $INSTALL_FOLDER
fi
INSTALL_FOLDER_PARENT=$RELEASE_FOLDER/$1
if ! [[ -d $INSTALL_FOLDER_PARENT ]]; then
echo "Creating folder $INSTALL_FOLDER_PARENT ..."
mkdir $INSTALL_FOLDER_PARENT;
fi
fi
echo "Destination folder is: $INSTALL_FOLDER"
# Build Linux (X86 generic) tools
#####################################################
echo ""
echo "*************************************************************************"
echo "Building Linux (X86 generic) tools..."
echo "*************************************************************************"
PLATFORM=linux FLAVOUR=x86_generic make clean all
rm -rf linux_x86_generic
mkdir linux_x86_generic
cp output/al_entity linux_x86_generic
cp output/hle_entity linux_x86_generic
# Build Linux (ARM wrt1900acx) tools
#####################################################
echo ""
echo "*************************************************************************"
echo "Building Linux (ARM wrt1900acx) tools..."
echo "*************************************************************************"
PLATFORM=linux FLAVOUR=arm_wrt1900acx make clean all
rm -rf linux_arm_wrt1900acx
mkdir linux_arm_wrt1900acx
cp output/al_entity linux_arm_wrt1900acx
cp output/hle_entity linux_arm_wrt1900acx
# Build Linux (X86 Windows mingw cross-compilation) tools
#########################################################
echo ""
echo "*************************************************************************"
echo "Building Linux (X86 Windows mingw cross-compilation) tools..."
echo "*************************************************************************"
PLATFORM=linux FLAVOUR=x86_windows_mingw make clean all
rm -rf linux_x86_windows_mingw
mkdir linux_x86_windows_mingw
cp output/hle_entity linux_x86_windows_mingw/hle_entity.exe
# Install
#####################################################
echo ""
echo "*************************************************************************"
echo "Installing ..."
echo "*************************************************************************"
mkdir -p $INSTALL_FOLDER
echo "X86 generic binaries --> $INSTALL_FOLDER/linux_x86_generic/*"
mv linux_x86_generic $INSTALL_FOLDER
echo "ARM wrt1900acx binaries --> $INSTALL_FOLDER/linux_arm_wrt1900acx/*"
mv linux_arm_wrt1900acx $INSTALL_FOLDER
echo "X86 windows mingw binaries --> $INSTALL_FOLDER/linux_x86_windows_mingw/*"
mv linux_x86_windows_mingw $INSTALL_FOLDER
make clean &>/dev/null
git archive --format=tar.gz --prefix=ieee1905/ HEAD > ieee1905_src.tgz
echo "Source code --> $INSTALL_FOLDER/ieee1905_src.tgz"
mv ieee1905_src.tgz $INSTALL_FOLDER/
echo ""
echo $CURRENT_GIT_COMMIT $INSTALL_FOLDER