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# Xts test require all so should exist in ${DYNLIB} 74TOTAL_SO_IN_TESTDIR=$(ls ${TESTDIR} | grep -E "*.so$" | wc -l) 75SO_NAMES=$(ls ${TESTDIR} | grep -E "*.so$") 76if [ $TOTAL_SO_IN_TESTDIR -gt 0 ]; then 77 echo Error: so shoul not exist in ${TESTDIR}, you should modify your part_name in gn to set so in ${DYNLIB}. 78 echo "Total so:${TOTAL_SO_IN_TESTDIR}" 79 echo -e "So list:\n${SO_NAMES}" 80 exit 1 81fi 82 83echo now mkdir 84${CMD} shell rm -rf ${REMOTE} 85${CMD} shell mkdir /data/tests 86${CMD} shell mkdir ${REMOTE} 87 88#mk temp directory 89${CMD} shell mkdir /tmp 90${CMD} shell mkdir /dev/shm 91echo Mkdir done. 92 93 94${CMD} file send ${TESTDIR} ${REMOTE}/src 95for lib in ${DYNLIB}/*; do 96 echo $lib 97 ${CMD} file send $lib ${REMOTE}/src 98done 99 100${CMD} shell chmod +x ${REMOTE}/src/* 101${CMD} shell mount -o rw,remount / 102${CMD} shell chmod 777 /etc 103${CMD} shell cp /etc/ld-musl-namespace-${ARCH}.ini /etc/ld-musl-namespace-${ARCH}.ini.bak 104${CMD} file send ${LOCAL}/third_party/musl/porting/linux/user/config/ld-musl-namespace-${ARCH}-test.ini /etc/ld-musl-namespace-${ARCH}.ini 105${CMD} shell mkdir ${REMOTE}/src/A 106${CMD} shell mkdir ${REMOTE}/src/B 107${CMD} shell mkdir ${REMOTE}/src/C 108${CMD} shell mkdir ${REMOTE}/src/D 109${CMD} shell mkdir -p ${REMOTE}/src/rpath_lib/rpath_support_A 110${CMD} shell mkdir -p ${REMOTE}/src/rpath_lib/rpath_support_B 111${CMD} shell mkdir -p ${REMOTE}/src/rpath_support_C 112${CMD} shell mv ${REMOTE}/src/libdlns_dlsym_dep_a.so ${REMOTE}/src/A 113${CMD} shell mv ${REMOTE}/src/libdlns_dlsym_dep_b.so ${REMOTE}/src/B 114${CMD} shell mv ${REMOTE}/src/libdlns_dlsym_dep_c.so ${REMOTE}/src/C 115${CMD} shell mv ${REMOTE}/src/libprimary_absolute.so ${REMOTE}/src/rpath_lib 116${CMD} shell mv ${REMOTE}/src/libprimary_origin.so ${REMOTE}/src/rpath_lib 117${CMD} shell mv ${REMOTE}/src/libprimary_multiple.so ${REMOTE}/src/rpath_lib 118${CMD} shell mv ${REMOTE}/src/libsupport_002.so ${REMOTE}/src/rpath_support_C 119${CMD} shell mv ${REMOTE}/src/libsupport_001.so ${REMOTE}/src/rpath_lib/rpath_support_A 120${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/B/libB.so 121${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/C/libC.so 122${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/D/libD.so 123${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/sharedlibtest.so 124${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/set_lib_path_0200.so 125${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/inherit_0300.so 126${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/inherit_0700.so 127${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/inherit_0800.so 128${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/inherit_1100.so 129${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib 130${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/lib_for_no_delete.so 131${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/lib_for_dlopen.so 132${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib64/libdlopen_ns_dso_sys.so 133${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib64/ndk/libdlopen_ns_dso_ndk.so 134${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib/libdlopen_ns_dso_sys.so 135${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib/ndk/libdlopen_ns_dso_ndk.so 136${CMD} shell cp ${REMOTE}/src/libdlclose_recursive.so /system/lib64/libdlclose_recursive.so 137${CMD} shell cp ${REMOTE}/src/libdlclose_recursive_dlopen_so.so /system/lib64/libdlclose_recursive_dlopen_so.so 138${CMD} shell cp ${REMOTE}/src/libdl_gnu_hash_so.so ${REMOTE}/src/libdl_gnu_hash_so.so 139${CMD} shell cp ${REMOTE}/src/libdl_sysv_hash_so.so ${REMOTE}/src/libdl_sysv_hash_so.so 140 141${CMD} shell mv ${REMOTE}/src/zh_CN /tmp/zh_CN 142 143${CMD} file send ${SHDIR}/runtest.sh ${REMOTE}/runtest.sh 144${CMD} shell chmod +x ${REMOTE}/runtest.sh 145${CMD} shell ${REMOTE}/runtest.sh 146 147 148echo hdc file recv ${REMOTE}/REPORT ${SHDIR}/REPORT 149${CMD} file recv ${REMOTE}/REPORT ${SHDIR}/REPORT 150 151if [ -f FileList.txt ]; then 152 rm FileList.txt 153fi 154if [ -f Summary.txt ]; then 155 rm Summary.txt 156fi 157${CMD} file recv ${REMOTE}/FileList.txt ${SHDIR}/FileList.txt 158${CMD} file recv ${REMOTE}/SkipList.txt ${SHDIR}/SkipList.txt 159# 160#for /f "delims=:" %%a in ('dir /b "${TESTDIR}" ^| findstr /n .*') do set all=%%a 161all=$(ls -l ${TESTDIR} | grep "^-" | wc -l) 162#for /f %%b in (' find /c /v "" ^<"FileList.txt" ') do set /a run=%%b 163run=$(cat -t ${SHDIR}/FileList.txt | grep -v ^\s*$ | wc -l) 164#for /f %%c in (' find /c "FAIL" ^<"REPORT" ') do set fail=%%c 165fail=$(cat -t ${SHDIR}/REPORT | grep 'FAIL ' | wc -l) 166# 167# 168echo =================================== 169pass=$[$run - $fail] 170skip=$[$all - $run] 171# 172echo "SUMMARY 173echo All: ${all} | Run: ${run} | Skip: ${skip} 174echo Pass: [${pass}/${run}] 175echo Fail: [${fail}/${run}] 176" | tee Summary.txt 177 178# 179echo "[Failed List]: 180$(cat -t ${SHDIR}/REPORT | grep 'FAIL ') 181" | tee -a Summary.txt 182echo "[Skip List]: " | tee -a Summary.txt 183 184cat ${SHDIR}/SkipList.txt | tee -a Summary.txt 185