61 lines
1.7 KiB
Bash
61 lines
1.7 KiB
Bash
|
# vim: set ts=4 sw=4 et ft=bash :
|
||
|
#
|
||
|
# This hook execute the following tasks:
|
||
|
# - warn if packages uses private Qt API but makedepends doesn't have
|
||
|
# qt6-*-private-devel
|
||
|
#
|
||
|
# This hook only really target qt6-base-private-devel, a lot of packages
|
||
|
# linked with Qt6::CorePrivate and Qt6::GuiPrivate, yet don't need its
|
||
|
# headers.
|
||
|
|
||
|
get_qt_private() {
|
||
|
local _elf _fn _lf
|
||
|
find ${PKGDESTDIR} -type f |
|
||
|
while read -r _fn; do
|
||
|
trap - ERR
|
||
|
_lf=${_fn#${PKGDESTDIR}}
|
||
|
if [ "${skiprdeps/${_lf}/}" != "${skiprdeps}" ]; then
|
||
|
continue
|
||
|
fi
|
||
|
read -n4 _elf < "$_fn"
|
||
|
if [ "$_elf" = $'\177ELF' ]; then
|
||
|
$OBJDUMP -p "$_fn" |
|
||
|
sed -n '
|
||
|
/required from /{s/.*required from \(.*\):/\1/;h;}
|
||
|
/Qt_[0-9]*_PRIVATE_API/{g;p;}
|
||
|
'
|
||
|
fi
|
||
|
done |
|
||
|
sort -u
|
||
|
}
|
||
|
|
||
|
|
||
|
hook() {
|
||
|
local _list _shlib _version _md _v _ok
|
||
|
|
||
|
if [ -n "$noverifyrdeps" ]; then
|
||
|
return 0
|
||
|
fi
|
||
|
|
||
|
_list=$(get_qt_private)
|
||
|
for _shlib in $_list; do
|
||
|
msg_normal "${pkgver}: requires PRIVATE_API from $_shlib\n"
|
||
|
done
|
||
|
_version=$(printf '%s\n' $_list | sed 's/^libQt\([0-9]*\).*/\1/' | grep -v '^5$' | uniq)
|
||
|
for _v in $_version; do
|
||
|
_ok=
|
||
|
for _md in ${makedepends}; do
|
||
|
case "${_md}" in
|
||
|
# Anything will works, because they're updated together
|
||
|
qt${_v}-*-private-devel)
|
||
|
_ok=yes
|
||
|
break
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
if [ -z "$_ok" ]; then
|
||
|
msg_warn "${pkgver}: using Qt${_v}_PRIVATE_API but doesn't use qt${_v}-*-private-devel\n"
|
||
|
fi
|
||
|
done
|
||
|
}
|