1#!/usr/bin/env bash 2# Copyright (c) 2021-2024 Huawei Device Co., Ltd. 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15set -eo pipefail 16set -x 17 18PANDA_SDK_BUILD_TYPE="${1:-"Release"}" 19 20SCRIPT_DIR="$(realpath "$(dirname "${BASH_SOURCE[0]}")")" 21 22BUILD_DIR=${BUILD_DIR:-'.'} 23mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" 24 25OHOS_SDK_NATIVE_URL=${OHOS_SDK_NATIVE_URL:-'https://contentcenter-drcn.dbankcdn.com/pub_1/DevEcoSpace_1_900_9/4a/v3/oidhh45PQ-qFyqu2pO5Kmw/nZgBfyRtTzuaBczj9WgsWQ.zip'} 26 27# Search for default OHOS SDK native or download it 28if [ -z "$OHOS_SDK_NATIVE" ]; then 29 OHOS_SDK_NATIVE_DEFAULT_1=/opt/ohos-sdk/native 30 OHOS_SDK_NATIVE_DEFAULT_2="$(realpath ./native)" 31 if [ -d "$OHOS_SDK_NATIVE_DEFAULT_1" ]; then 32 OHOS_SDK_NATIVE="$OHOS_SDK_NATIVE_DEFAULT_1" 33 elif [ -d "$OHOS_SDK_NATIVE_DEFAULT_2" ]; then 34 OHOS_SDK_NATIVE="$OHOS_SDK_NATIVE_DEFAULT_2" 35 else 36 if [ -z "$OHOS_SDK_NATIVE_URL" ]; then 37 echo "Error: OHOS SDK not found, please set OHOS_SDK_NATIVE or OHOS_SDK_NATIVE_URL environment variable" 38 exit 1 39 fi 40 curl --retry 5 -Lo ohos-sdk-native.zip "${OHOS_SDK_NATIVE_URL}" 41 unzip -q ohos-sdk-native.zip 42 OHOS_SDK_NATIVE=native 43 fi 44fi 45 46# Build panda SDK 47SDK_VERSION=$(grep '"version":' "$SCRIPT_DIR"/package.json | sed 's|.*"version":.*"\(.*\)".*|\1|') 48"$SCRIPT_DIR"/build_sdk.sh "$OHOS_SDK_NATIVE" build-sdk "$PANDA_SDK_BUILD_TYPE" 49 50ACTUAL="/tmp/panda_sdk_test_actual.txt" 51EXPECTED="/tmp/panda_sdk_test_expected.txt" 52 53# Test 1 54find build-sdk -maxdepth 1 | sort --version-sort >"$ACTUAL" 55echo "build-sdk 56build-sdk/linux_host_tools 57build-sdk/ohos_arm64 58build-sdk/panda-sdk-$SDK_VERSION.tgz 59build-sdk/sdk 60build-sdk/windows_host_tools" >"$EXPECTED" 61diff "$ACTUAL" "$EXPECTED" 62 63# Test 2 64find build-sdk/sdk/ -maxdepth 3 | sort --version-sort >"$ACTUAL" 65echo 'build-sdk/sdk/ 66build-sdk/sdk/ets 67build-sdk/sdk/ets/etsstdlib.abc 68build-sdk/sdk/ets/stdlib 69build-sdk/sdk/ets/stdlib/README.md 70build-sdk/sdk/ets/stdlib/escompat 71build-sdk/sdk/ets/stdlib/native 72build-sdk/sdk/ets/stdlib/std 73build-sdk/sdk/linux_host_tools 74build-sdk/sdk/linux_host_tools/bin 75build-sdk/sdk/linux_host_tools/bin/ark 76build-sdk/sdk/linux_host_tools/bin/ark_aot 77build-sdk/sdk/linux_host_tools/bin/ark_disasm 78build-sdk/sdk/linux_host_tools/bin/ark_link 79build-sdk/sdk/linux_host_tools/bin/es2panda 80build-sdk/sdk/linux_host_tools/lib 81build-sdk/sdk/linux_host_tools/lib/libarkaotmanager.so 82build-sdk/sdk/linux_host_tools/lib/libarkassembler.so 83build-sdk/sdk/linux_host_tools/lib/libarkbase.so 84build-sdk/sdk/linux_host_tools/lib/libarkbytecodeopt.so 85build-sdk/sdk/linux_host_tools/lib/libarkcompiler.so 86build-sdk/sdk/linux_host_tools/lib/libarkdisassembler.so 87build-sdk/sdk/linux_host_tools/lib/libarkfile.so 88build-sdk/sdk/linux_host_tools/lib/libarklinker.so 89build-sdk/sdk/linux_host_tools/lib/libarkruntime.so 90build-sdk/sdk/linux_host_tools/lib/libarkziparchive.so 91build-sdk/sdk/linux_host_tools/lib/libc_secshared.so 92build-sdk/sdk/linux_host_tools/lib/libe2p_test_plugin.so 93build-sdk/sdk/linux_host_tools/lib/libes2panda-lib.so 94build-sdk/sdk/linux_host_tools/lib/libes2panda-public.so 95build-sdk/sdk/linux_host_tools/lib/libetsnative.so 96build-sdk/sdk/linux_host_tools/lib/libhmicui18n.z.so 97build-sdk/sdk/linux_host_tools/lib/libhmicuuc.z.so 98build-sdk/sdk/linux_host_tools/lib/libinit_icu.so 99build-sdk/sdk/linux_host_tools/lib/libirtoc.so 100build-sdk/sdk/ohos_arm64 101build-sdk/sdk/ohos_arm64/bin 102build-sdk/sdk/ohos_arm64/bin/ark 103build-sdk/sdk/ohos_arm64/bin/ark_aot 104build-sdk/sdk/ohos_arm64/include 105build-sdk/sdk/ohos_arm64/include/compiler 106build-sdk/sdk/ohos_arm64/include/libpandabase 107build-sdk/sdk/ohos_arm64/include/libpandafile 108build-sdk/sdk/ohos_arm64/include/panda_gen_options 109build-sdk/sdk/ohos_arm64/include/platforms 110build-sdk/sdk/ohos_arm64/include/plugins 111build-sdk/sdk/ohos_arm64/include/runtime 112build-sdk/sdk/ohos_arm64/include/third_party 113build-sdk/sdk/ohos_arm64/include/tools 114build-sdk/sdk/ohos_arm64/include/verification 115build-sdk/sdk/ohos_arm64/lib 116build-sdk/sdk/ohos_arm64/lib/libarkaotmanager.so 117build-sdk/sdk/ohos_arm64/lib/libarkassembler.so 118build-sdk/sdk/ohos_arm64/lib/libarkbase.so 119build-sdk/sdk/ohos_arm64/lib/libarkbytecodeopt.so 120build-sdk/sdk/ohos_arm64/lib/libarkcompiler.so 121build-sdk/sdk/ohos_arm64/lib/libarkfile.so 122build-sdk/sdk/ohos_arm64/lib/libarkruntime.so 123build-sdk/sdk/ohos_arm64/lib/libarkruntime_static.a 124build-sdk/sdk/ohos_arm64/lib/libarkziparchive.so 125build-sdk/sdk/ohos_arm64/lib/libc_secshared.so 126build-sdk/sdk/ohos_arm64/lib/libdprof.a 127build-sdk/sdk/ohos_arm64/lib/libe2p_test_plugin.so 128build-sdk/sdk/ohos_arm64/lib/libes2panda-lib.so 129build-sdk/sdk/ohos_arm64/lib/libes2panda-public.so 130build-sdk/sdk/ohos_arm64/lib/libetsnative.so 131build-sdk/sdk/ohos_arm64/lib/libets_interop_js_napi.so 132build-sdk/sdk/ohos_arm64/lib/libhmicui18n.z.so 133build-sdk/sdk/ohos_arm64/lib/libhmicuuc.z.so 134build-sdk/sdk/ohos_arm64/lib/libinit_icu.a 135build-sdk/sdk/ohos_arm64/plugins 136build-sdk/sdk/ohos_arm64/plugins/ecmascript 137build-sdk/sdk/package.json 138build-sdk/sdk/tslinter 139build-sdk/sdk/tslinter/README.md 140build-sdk/sdk/tslinter/bin 141build-sdk/sdk/tslinter/bin/tslinter.js 142build-sdk/sdk/tslinter/dist 143build-sdk/sdk/tslinter/dist/tslinter.js 144build-sdk/sdk/tslinter/package.json 145build-sdk/sdk/windows_host_tools 146build-sdk/sdk/windows_host_tools/bin 147build-sdk/sdk/windows_host_tools/bin/ark_link.exe 148build-sdk/sdk/windows_host_tools/bin/es2panda.exe' >"$EXPECTED" 149diff "$ACTUAL" "$EXPECTED" 150 151rm "$ACTUAL" "$EXPECTED" 152