mirror of
https://github.com/xHyroM/void-packages.git
synced 2024-11-25 15:41:04 +01:00
60 lines
1.7 KiB
Bash
60 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
|
|
}
|