hooks/post-install: check for -private-devel if PRIVATE_API is used
This commit is contained in:
parent
d1e7f98c9d
commit
4fb1dd4a21
|
@ -0,0 +1,60 @@
|
|||
# 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
|
||||
}
|
Loading…
Reference in New Issue