Skip to content

Commit 3f1fb93

Browse files
XToripururestyled-commitsarkqandy31415
authored
[Tizen] Add arm64 target - Docker part (#37761)
* Add arm64 target * Refactor install.sh * Restyled by shellharden * Restyled by shfmt * Refactor files * Dedup downloads * Update integrations/docker/images/stage-2/chip-build-tizen/tizen-sdk-installer/install.sh Co-authored-by: Arkadiusz Bokowy <arkadiusz.bokowy@gmail.com> * Merge download sections --------- Co-authored-by: Restyled.io <commits@restyled.io> Co-authored-by: Arkadiusz Bokowy <arkadiusz.bokowy@gmail.com> Co-authored-by: Andrei Litvin <andy314@gmail.com>
1 parent 2489811 commit 3f1fb93

File tree

3 files changed

+194
-28
lines changed

3 files changed

+194
-28
lines changed
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
122 : [Telink] Update Docker image (Zephyr update)
1+
123 : [Tizen] Add arm64 target - Docker part

integrations/docker/images/stage-2/chip-build-tizen/Dockerfile

+11-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ ENV TIZEN_SDK_ROOT=/opt/tizen-sdk
2626
COPY tizen-sdk-installer $TIZEN_SDK_ROOT/files/installer
2727
RUN set -x \
2828
&& bash $TIZEN_SDK_ROOT/files/installer/install.sh \
29+
--cpu arm,arm64 \
2930
--tizen-sdk-path $TIZEN_SDK_ROOT \
3031
--tizen-sdk-data-path /home/ubuntu/tizen-sdk-data \
3132
--tizen-version $TIZEN_VERSION \
@@ -34,9 +35,18 @@ RUN set -x \
3435

3536
# ------------------------------------------------------------------------------
3637
# Set environment
38+
# Tools
39+
ENV PATH="$TIZEN_SDK_ROOT/tools/ide/bin:$TIZEN_SDK_ROOT/tools:$PATH"
40+
41+
# ARM
3742
ENV TIZEN_SDK_TOOLCHAIN=$TIZEN_SDK_ROOT/tools/arm-linux-gnueabi-gcc-9.2
3843
ENV TIZEN_SDK_SYSROOT=$TIZEN_SDK_ROOT/platforms/tizen-$TIZEN_VERSION/tizen/rootstraps/tizen-$TIZEN_VERSION-device.core
39-
ENV PATH="$TIZEN_SDK_TOOLCHAIN/bin:$TIZEN_SDK_ROOT/tools/ide/bin:$TIZEN_SDK_ROOT/tools:$PATH"
44+
ENV PATH="$TIZEN_SDK_TOOLCHAIN/bin:$PATH"
45+
46+
# ARM64
47+
ENV TIZEN_SDK_TOOLCHAIN_ARM64=$TIZEN_SDK_ROOT/tools/aarch64-linux-gnu-gcc-9.2
48+
ENV TIZEN_SDK_SYSROOT_ARM64=$TIZEN_SDK_ROOT/platforms/tizen-$TIZEN_VERSION/tizen/rootstraps/tizen-$TIZEN_VERSION-device64.core
49+
ENV PATH="$TIZEN_SDK_TOOLCHAIN_ARM64/bin:$PATH"
4050

4151
# ------------------------------------------------------------------------------
4252
# Switch to the non-root user

integrations/docker/images/stage-2/chip-build-tizen/tizen-sdk-installer/install.sh

+182-26
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ function show_help() {
4545
echo
4646
echo "Options:"
4747
echo " -h, --help Display this information"
48+
echo " --cpu Comma separated list of CPU architectures. Like arm or arm64"
4849
echo " --tizen-sdk-path Set directory for Tizen SDK installation. Default is $TIZEN_SDK_ROOT"
4950
echo " --tizen-sdk-data-path Set directory for Tizen SDK runtime data. Default is $TIZEN_SDK_DATA_PATH"
5051
echo " --install-dependencies This option installs all required dependencies"
@@ -141,15 +142,12 @@ function cleanup() {
141142
}
142143

143144
# ------------------------------------------------------------------------------
144-
# Function for installing Tizen SDK.
145-
function install_tizen_sdk() {
146-
145+
# Function for installing common packages for Tizen SDK.
146+
function install_tizen_sdk_common() {
147147
mkdir -p "$TIZEN_SDK_ROOT" || return
148148

149149
info "Tizen SDK installation directory: $TIZEN_SDK_ROOT"
150150

151-
TIZEN_SDK_SYSROOT="$TIZEN_SDK_ROOT/platforms/tizen-$TIZEN_VERSION/tizen/rootstraps/tizen-$TIZEN_VERSION-device.core"
152-
153151
cd "$TMP_DIR" || return
154152

155153
# Get Tizen Studio CLI
@@ -162,9 +160,24 @@ function install_tizen_sdk() {
162160
'certificate-generator_0.1.4_ubuntu-64.zip'
163161
'new-common-cli_2.5.64_ubuntu-64.zip'
164162
'new-native-cli_2.5.64_ubuntu-64.zip'
165-
'sdb_4.2.23_ubuntu-64.zip')
163+
'sdb_4.2.23_ubuntu-64.zip'
164+
"tizen-$TIZEN_VERSION-core-add-ons_*_ubuntu-64.zip")
166165
download "$URL" "${PKG_ARR[@]}"
167166

167+
# Tizen Developer Platform Certificate
168+
URL="http://download.tizen.org/sdk/extensions/Tizen_IoT_Headless/binary/"
169+
# Tizen site does not have this package available in version 8.0.
170+
# Certificates are the same for 7.0 and 8.0, though.
171+
PKG_ARR=(
172+
"7.0-iot-things-add-ons_*_ubuntu-64.zip")
173+
download "$URL" "${PKG_ARR[@]}"
174+
}
175+
176+
# Function for installing Tizen SDK (arm).
177+
function install_tizen_sdk_arm() {
178+
179+
TIZEN_SDK_SYSROOT="$TIZEN_SDK_ROOT/platforms/tizen-$TIZEN_VERSION/tizen/rootstraps/tizen-$TIZEN_VERSION-device.core"
180+
168181
# Get toolchain
169182
info "Downloading Tizen toolchain..."
170183

@@ -182,7 +195,6 @@ function install_tizen_sdk() {
182195
# Different versions of Tizen have different rootstrap versions
183196
URL="http://download.tizen.org/sdk/tizenstudio/official/binary/"
184197
PKG_ARR=(
185-
"tizen-$TIZEN_VERSION-core-add-ons_*_ubuntu-64.zip"
186198
"tizen-$TIZEN_VERSION-rs-device.core_*_ubuntu-64.zip")
187199
download "$URL" "${PKG_ARR[@]}"
188200

@@ -251,12 +263,113 @@ function install_tizen_sdk() {
251263
PKG_ARR=()
252264
download "$URL" "${PKG_ARR[@]}"
253265

254-
# Tizen Developer Platform Certificate
255-
URL="http://download.tizen.org/sdk/extensions/Tizen_IoT_Headless/binary/"
256-
# Tizen site does not have this package available in version 8.0.
257-
# Certificates are the same for 7.0 and 8.0, though.
266+
# Install all
267+
info "Installing Tizen SDK..."
268+
269+
unzip -o '*.zip'
270+
cp -rf data/* "$TIZEN_SDK_ROOT"
271+
272+
unrpm *.rpm
273+
cp -rf lib usr "$TIZEN_SDK_SYSROOT"
274+
275+
# Make symbolic links relative
276+
find "$TIZEN_SDK_SYSROOT/usr/lib" -maxdepth 1 -type l | while IFS= read -r LNK; do
277+
ln -sf "$(basename "$(readlink "$LNK")")" "$LNK"
278+
done
279+
280+
ln -sf ../../lib/libcap.so.2 "$TIZEN_SDK_SYSROOT/usr/lib/libcap.so"
281+
ln -sf openssl3.pc "$TIZEN_SDK_SYSROOT/usr/lib/pkgconfig/openssl.pc"
282+
}
283+
284+
# Function for installing Tizen SDK (arm64).
285+
function install_tizen_sdk_arm64() {
286+
287+
TIZEN_SDK_SYSROOT="$TIZEN_SDK_ROOT/platforms/tizen-$TIZEN_VERSION/tizen/rootstraps/tizen-$TIZEN_VERSION-device64.core"
288+
289+
# Get toolchain
290+
info "Downloading Tizen toolchain..."
291+
292+
# Download
293+
URL="http://download.tizen.org/sdk/tizenstudio/official/binary/"
258294
PKG_ARR=(
259-
"7.0-iot-things-add-ons_*_ubuntu-64.zip")
295+
"cross-aarch64-gcc-9.2_0.1.9_ubuntu-64.zip"
296+
"sbi-toolchain-gcc-9.2.cpp.app_2.2.16_ubuntu-64.zip")
297+
download "$URL" "${PKG_ARR[@]}"
298+
299+
# Get Tizen sysroot
300+
info "Downloading Tizen sysroot..."
301+
302+
# Base sysroot
303+
# Different versions of Tizen have different rootstrap versions
304+
URL="http://download.tizen.org/sdk/tizenstudio/official/binary/"
305+
PKG_ARR=(
306+
"tizen-$TIZEN_VERSION-rs-device64.core_*_ubuntu-64.zip")
307+
download "$URL" "${PKG_ARR[@]}"
308+
309+
# Base packages
310+
URL="http://download.tizen.org/releases/milestone/TIZEN/Tizen-$TIZEN_VERSION/Tizen-$TIZEN_VERSION-Base/latest/repos/standard/packages/aarch64/"
311+
PKG_ARR=(
312+
'iniparser-*.aarch64.rpm'
313+
'libblkid-devel-*.aarch64.rpm'
314+
'libcap-*.aarch64.rpm'
315+
'libffi-devel-*.aarch64.rpm'
316+
'liblzma-*.aarch64.rpm'
317+
'libmount-devel-*.aarch64.rpm'
318+
'libncurses6-*.aarch64.rpm'
319+
'libreadline-*.aarch64.rpm'
320+
'libuuid-*.aarch64.rpm'
321+
'pcre-devel-*.aarch64.rpm'
322+
'readline-devel-*.aarch64.rpm'
323+
'xdgmime-*.aarch64.rpm')
324+
download "$URL" "${PKG_ARR[@]}"
325+
326+
# Unified packages
327+
URL="http://download.tizen.org/releases/milestone/TIZEN/Tizen-$TIZEN_VERSION/Tizen-$TIZEN_VERSION-Unified/latest/repos/standard/packages/aarch64/"
328+
PKG_ARR=(
329+
'app-core-common-*.rpm'
330+
'aul-0*.aarch64.rpm'
331+
'aul-devel-*.aarch64.rpm'
332+
'bluetooth-frwk-0*.aarch64.rpm'
333+
'bundle-0*.aarch64.rpm'
334+
'bundle-devel-*.aarch64.rpm'
335+
'buxton2-*.aarch64.rpm'
336+
'capi-network-bluetooth-0*.aarch64.rpm'
337+
'capi-network-bluetooth-devel-*.aarch64.rpm'
338+
'capi-network-nsd-*.aarch64.rpm'
339+
'capi-network-thread-*.aarch64.rpm'
340+
'capi-system-peripheral-io-*.aarch64.rpm'
341+
'capi-system-peripheral-io-devel-*.aarch64.rpm'
342+
'capi-system-resource-1*.aarch64.rpm'
343+
'cynara-devel-*.aarch64.rpm'
344+
'dbus-1*.aarch64.rpm'
345+
'dbus-devel-*.aarch64.rpm'
346+
'dbus-libs-1*.aarch64.rpm'
347+
'glib2-devel-2*.aarch64.rpm'
348+
'hal-api-common-*.aarch64.rpm'
349+
'hal-api-sensor-*.aarch64.rpm'
350+
'json-glib-devel-*.aarch64.rpm'
351+
'libcynara-client-*.aarch64.rpm'
352+
'libcynara-commons-*.aarch64.rpm'
353+
'libdns_sd-*.aarch64.rpm'
354+
'libjson-glib-*.aarch64.rpm'
355+
'libnsd-dns-sd-*.aarch64.rpm'
356+
'libsessiond-0*.aarch64.rpm'
357+
'libsystemd-*.aarch64.rpm'
358+
'libtzplatform-config-*.aarch64.rpm'
359+
'parcel-0*.aarch64.rpm'
360+
'parcel-devel-*.aarch64.rpm'
361+
'pkgmgr-info-*.aarch64.rpm'
362+
'sensord-*.aarch64.rpm'
363+
'sensord-devel-*.aarch64.rpm'
364+
'sensord-dummy-*.aarch64.rpm'
365+
'vconf-compat-*.aarch64.rpm'
366+
'vconf-internal-keys-devel-*.aarch64.rpm'
367+
)
368+
download "$URL" "${PKG_ARR[@]}"
369+
370+
# Unified packages (snapshots)
371+
URL="http://download.tizen.org/snapshots/TIZEN/Tizen/Tizen-Unified/latest/repos/standard/packages/aarch64/"
372+
PKG_ARR=()
260373
download "$URL" "${PKG_ARR[@]}"
261374

262375
# Install all
@@ -266,8 +379,18 @@ function install_tizen_sdk() {
266379
cp -rf data/* "$TIZEN_SDK_ROOT"
267380

268381
unrpm *.rpm
269-
cp -rf lib usr "$TIZEN_SDK_SYSROOT"
382+
cp -rf lib64 usr "$TIZEN_SDK_SYSROOT"
383+
384+
# Make symbolic links relative
385+
find "$TIZEN_SDK_SYSROOT/usr/lib64" -maxdepth 1 -type l | while IFS= read -r LNK; do
386+
ln -sf "$(basename "$(readlink "$LNK")")" "$LNK"
387+
done
270388

389+
ln -sf ../../lib64/libcap.so.2 "$TIZEN_SDK_SYSROOT/usr/lib64/libcap.so"
390+
ln -sf openssl3.pc "$TIZEN_SDK_SYSROOT/usr/lib64/pkgconfig/openssl.pc"
391+
}
392+
393+
function install_tizen_sdk_finalize() {
271394
# Install secret tool or not
272395
if ("$SECRET_TOOL"); then
273396
info "Overriding secret tool..."
@@ -279,28 +402,30 @@ function install_tizen_sdk() {
279402
echo "TIZEN_SDK_DATA_PATH=$TIZEN_SDK_DATA_PATH" >>"$TIZEN_SDK_ROOT/sdk.info"
280403
ln -sf "$TIZEN_SDK_DATA_PATH/.tizen-cli-config" "$TIZEN_SDK_ROOT/tools/.tizen-cli-config"
281404

282-
# Use Tizen developer platform certificate as default
405+
# Use Tizen developer platform certificate as defaults
283406
cp "$TIZEN_SDK_ROOT"/tools/certificate-generator/certificates/distributor/sdk-platform/* \
284407
"$TIZEN_SDK_ROOT"/tools/certificate-generator/certificates/distributor/
285408

286-
# Make symbolic links relative
287-
find "$TIZEN_SDK_SYSROOT/usr/lib" -maxdepth 1 -type l | while IFS= read -r LNK; do
288-
ln -sf "$(basename "$(readlink "$LNK")")" "$LNK"
289-
done
290-
ln -sf ../../lib/libcap.so.2 "$TIZEN_SDK_SYSROOT/usr/lib/libcap.so"
291-
ln -sf openssl3.pc "$TIZEN_SDK_SYSROOT/usr/lib/pkgconfig/openssl.pc"
292-
293409
info "Done."
294410
echo
295411

296-
# Information on necessary environment variables
297412
warning "Before proceeding with Matter export environment variables as follows:"
298413
echo -n "$COLOR_YELLOW"
299414
echo "export TIZEN_VERSION=\"$TIZEN_VERSION\""
300415
echo "export TIZEN_SDK_ROOT=\"$(realpath "$TIZEN_SDK_ROOT")\""
301-
echo "export TIZEN_SDK_TOOLCHAIN=\"\$TIZEN_SDK_ROOT/tools/arm-linux-gnueabi-gcc-9.2\""
302-
echo "export TIZEN_SDK_SYSROOT=\"\$TIZEN_SDK_ROOT/platforms/tizen-$TIZEN_VERSION/tizen/rootstraps/tizen-$TIZEN_VERSION-device.core\""
303-
echo "export PATH=\"\$TIZEN_SDK_TOOLCHAIN/bin:\$TIZEN_SDK_ROOT/tools/ide/bin:\$TIZEN_SDK_ROOT/tools:\$PATH\""
416+
417+
if [ "$INSTALL_ARM" = true ]; then
418+
echo "export TIZEN_SDK_TOOLCHAIN=\"\$TIZEN_SDK_ROOT/tools/arm-linux-gnueabi-gcc-9.2\""
419+
echo "export TIZEN_SDK_SYSROOT=\"\$TIZEN_SDK_ROOT/platforms/tizen-$TIZEN_VERSION/tizen/rootstraps/tizen-$TIZEN_VERSION-device.core\""
420+
echo "export PATH=\"\$TIZEN_SDK_TOOLCHAIN/bin:\$TIZEN_SDK_ROOT/tools/ide/bin:\$TIZEN_SDK_ROOT/tools:\$PATH\""
421+
fi
422+
423+
if [ "$INSTALL_ARM64" = true ]; then
424+
echo "export TIZEN_SDK_TOOLCHAIN_ARM64=\"\$TIZEN_SDK_ROOT/tools/aarch64-linux-gnu-gcc-9.2\""
425+
echo "export TIZEN_SDK_SYSROOT_ARM64=\"\$TIZEN_SDK_ROOT/platforms/tizen-$TIZEN_VERSION/tizen/rootstraps/tizen-$TIZEN_VERSION-device64.core\""
426+
echo "export PATH=\"\$TIZEN_SDK_TOOLCHAIN_ARM64/bin:\$TIZEN_SDK_ROOT/tools/ide/bin:\$TIZEN_SDK_ROOT/tools:\$PATH\""
427+
fi
428+
304429
echo -n "$COLOR_NONE"
305430
}
306431

@@ -310,6 +435,20 @@ while (($#)); do
310435
show_help
311436
exit 0
312437
;;
438+
--cpu)
439+
IFS=',' read -r -a array <<<"$2"
440+
for CPU in "${array[@]}"; do
441+
if [ "$CPU" == "arm" ]; then
442+
INSTALL_ARM=true
443+
elif [ "$CPU" == "arm64" ]; then
444+
INSTALL_ARM64=true
445+
else
446+
error "Invalid CPU: $CPU. Use --help"
447+
exit 1
448+
fi
449+
done
450+
shift
451+
;;
313452
--tizen-sdk-path)
314453
TIZEN_SDK_ROOT="$2"
315454
shift
@@ -336,6 +475,13 @@ while (($#)); do
336475
shift
337476
done
338477

478+
# ------------------------------------------------------------------------------
479+
# Verify passed arguments and flags
480+
if [ -z "$INSTALL_ARM" ] && [ -z "$INSTALL_ARM64" ]; then
481+
error "No CPU architecture provided. Use --help."
482+
exit 1
483+
fi
484+
339485
# ------------------------------------------------------------------------------
340486
# Prepare a temporary directory and cleanup
341487
trap cleanup EXIT
@@ -368,4 +514,14 @@ fi
368514

369515
# ------------------------------------------------------------------------------
370516
# Installation Tizen SDK
371-
install_tizen_sdk
517+
install_tizen_sdk_common
518+
519+
if [ "$INSTALL_ARM" = true ]; then
520+
install_tizen_sdk_arm
521+
fi
522+
523+
if [ "$INSTALL_ARM64" = true ]; then
524+
install_tizen_sdk_arm64
525+
fi
526+
527+
install_tizen_sdk_finalize

0 commit comments

Comments
 (0)