1#!/bin/bash 2 3# Copyright (c) 2023 Huawei Device Co., Ltd. 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15 16LOCAL="unknown_dir" 17OUTDIR=out/rk3568 18CMD=hdc_std 19ARCH=arm 20 21function usage { 22 echo "usage: $0 -r {source root} -p {product name in out(eg rk3568)}" 23 exit 1 24} 25 26while getopts ":r:p:" opt 27do 28 case $opt in 29 r) 30 LOCAL=$OPTARG 31 ;; 32 p) 33 OUTDIR=out/$OPTARG 34 ;; 35 ?) 36 echo "unknown options $opt" 37 usage 38 exit 1 39 ;; 40 esac 41done 42 43TESTDIR=${LOCAL}/${OUTDIR}/musl/libc-test 44DYNLIB=${LOCAL}/${OUTDIR}/musl/libc-test-lib 45SHDIR=${LOCAL}/third_party/musl/scripts 46REMOTE=/data/tests/libc-test 47REMOTESYSTEM=/system/lib 48 49echo checking HDC device.... 50for device in $($CMD list targets); do 51 device=$(echo $device | tr -d '\n\r') 52 if [ $device == "[Empty]" ]; then 53 echo Device not found, please check your device. 54 exit 1 55 fi 56done 57 58ABILIST=$(${CMD} shell param get const.product.cpu.abilist) 59echo $ABILIST 60 61if [ $ABILIST == "arm64-v8a" ]; then 62 ARCH=aarch64 63fi 64echo detect arch = ${ARCH} 65 66 67echo checking TESTDIR 68if [ ! -d ${TESTDIR} ]; then 69 echo Error: path "${TESTDIR}" was not found. 70 exit 1 71fi 72 73 74echo now mkdir 75${CMD} shell rm -rf ${REMOTE} 76${CMD} shell mkdir /data/tests 77${CMD} shell mkdir ${REMOTE} 78 79#mk temp directory 80${CMD} shell mkdir /tmp 81${CMD} shell mkdir /dev/shm 82echo Mkdir done. 83 84 85${CMD} file send ${TESTDIR} ${REMOTE}/src 86for lib in ${DYNLIB}/*; do 87 echo $lib 88 ${CMD} file send $lib ${REMOTE}/src 89done 90 91${CMD} shell chmod +x ${REMOTE}/src/* 92${CMD} shell mount -o rw,remount / 93${CMD} shell chmod 777 /etc 94${CMD} shell cp /etc/ld-musl-namespace-${ARCH}.ini /etc/ld-musl-namespace-${ARCH}.ini.bak 95${CMD} file send ${LOCAL}/third_party/musl/porting/linux/user/config/ld-musl-namespace-${ARCH}-test.ini /etc/ld-musl-namespace-${ARCH}.ini 96${CMD} shell mkdir ${REMOTE}/src/A 97${CMD} shell mkdir ${REMOTE}/src/B 98${CMD} shell mkdir ${REMOTE}/src/C 99${CMD} shell mkdir ${REMOTE}/src/D 100${CMD} shell mv ${REMOTE}/src/libdlns_dlsym_dep_a.so ${REMOTE}/src/A 101${CMD} shell mv ${REMOTE}/src/libdlns_dlsym_dep_b.so ${REMOTE}/src/B 102${CMD} shell mv ${REMOTE}/src/libdlns_dlsym_dep_c.so ${REMOTE}/src/C 103${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/B/libB.so 104${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/C/libC.so 105${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/D/libD.so 106${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/sharedlibtest.so 107${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/set_lib_path_0200.so 108${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/inherit_0300.so 109${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/inherit_0700.so 110${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/inherit_0800.so 111${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/inherit_1100.so 112${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib 113${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/lib_for_no_delete.so 114${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/lib_for_dlopen.so 115${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib64/libdlopen_ns_dso_sys.so 116${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib64/ndk/libdlopen_ns_dso_ndk.so 117${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib/libdlopen_ns_dso_sys.so 118${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib/ndk/libdlopen_ns_dso_ndk.so 119 120${CMD} shell mv ${REMOTE}/src/zh_CN /tmp/zh_CN 121 122${CMD} file send ${SHDIR}/runtest.sh ${REMOTE}/runtest.sh 123${CMD} shell chmod +x ${REMOTE}/runtest.sh 124${CMD} shell ${REMOTE}/runtest.sh 125 126 127echo hdc file recv ${REMOTE}/REPORT ${SHDIR}/REPORT 128${CMD} file recv ${REMOTE}/REPORT ${SHDIR}/REPORT 129 130if [ -f FileList.txt ]; then 131 rm FileList.txt 132fi 133if [ -f Summary.txt ]; then 134 rm Summary.txt 135fi 136${CMD} file recv ${REMOTE}/FileList.txt ${SHDIR}/FileList.txt 137${CMD} file recv ${REMOTE}/SkipList.txt ${SHDIR}/SkipList.txt 138# 139#for /f "delims=:" %%a in ('dir /b "${TESTDIR}" ^| findstr /n .*') do set all=%%a 140all=$(ls -l ${TESTDIR} | grep "^-" | wc -l) 141#for /f %%b in (' find /c /v "" ^<"FileList.txt" ') do set /a run=%%b 142run=$(cat -t ${SHDIR}/FileList.txt | grep -v ^\s*$ | wc -l) 143#for /f %%c in (' find /c "FAIL" ^<"REPORT" ') do set fail=%%c 144fail=$(cat -t ${SHDIR}/REPORT | grep '^FAIL ' | wc -l) 145# 146# 147echo =================================== 148pass=$[$run - $fail] 149skip=$[$all - $run] 150# 151echo "SUMMARY 152echo All: ${all} | Run: ${run} | Skip: ${skip} 153echo Pass: [${pass}/${run}] 154echo Fail: [${fail}/${run}] 155" | tee Summary.txt 156 157# 158echo "[Failed List]: 159$(cat -t ${SHDIR}/REPORT | grep '^FAIL ') 160" | tee -a Summary.txt 161echo "[Skip List]: " | tee -a Summary.txt 162 163cat ${SHDIR}/SkipList.txt | tee -a Summary.txt 164