Files
Velix-MPV-Core/scripts/verify-ohos-prefix.sh
T

47 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
set -eu
. "$(dirname -- "$0")/setup-ohos-env.sh"
LIBMPV=$PREFIX/lib/libmpv.so.2.5.0
test -f "$LIBMPV" || { printf 'Missing libmpv: %s\n' "$LIBMPV" >&2; exit 1; }
archive_count=0
for archive in "$PREFIX"/lib/*.a; do
test -f "$archive" || continue
archive_count=$((archive_count + 1))
temp_dir=$(mktemp -d)
(
cd "$temp_dir"
"$AR" x "$archive"
object_count=$(find . -type f | wc -l | tr -d ' ')
machine_count=$(find . -type f -exec "$READELF" -h {} + 2>/dev/null | grep -c 'Machine:.*AArch64')
test "$object_count" -gt 0
test "$object_count" -eq "$machine_count" || {
printf 'Non-AArch64 archive member: %s (%s/%s)\n' "$archive" "$machine_count" "$object_count" >&2
exit 1
}
)
rm -r "$temp_dir"
done
test "$archive_count" -gt 0
if find "$PREFIX" -type f \( -name '*.pc' -o -name '*.cmake' -o -name '*.ninja' \) \
-exec grep -El '(^|[[:space:]])-[IL]/(opt/homebrew|usr/local)|\.dylib|[[:space:]]-framework[[:space:]]' {} + | grep -q .; then
printf 'Host library path found in target metadata\n' >&2
exit 1
fi
needed=$($READELF -d "$LIBMPV" | sed -n 's/.*Shared library: \[\([^]]*\)\].*/\1/p')
for library in $needed; do
case "$library" in
libc.so|libz.so|libnative_media_vdec.so|libnative_media_venc.so|libnative_media_codecbase.so|libnative_media_core.so|libnative_window.so) ;;
*) printf 'Unexpected dynamic dependency: %s\n' "$library" >&2; exit 1 ;;
esac
done
"$PROJECT_ROOT/scripts/verify-ohos-binary.sh" "$LIBMPV"
"$PROJECT_ROOT/scripts/verify-libmpv-symbols.sh" "$LIBMPV"
printf 'verified_archives=%s\n' "$archive_count"
printf 'dynamic_dependencies=%s\n' "$(printf '%s' "$needed" | tr '\n' ',')"