I'm facing an issue, where I notice that stage-qa does not alway warn about misuse of _DEPENDS instead of USES=xxx.
For example graphics/librasterlite2, I have a warning for Gnome/libxml2 (Warning: you need USE_GNOME+=libxml2) but not for sqlite3.
Another example sysutils/pacman requires libarchive.so (LIB_DEPENDS= libarchive.so.13:archivers/libarchive) but stage-qa doesn't warn about USES=libarchive
I tested all ports found with libsqlite3.so instead of USES=sqlite and I have no notice in the poudriere of the warning "you need USES+=sqlite".
Am I missing something?
Other example with SDL:
games/dose-response use "LIB_DEPENDS+= libSDL2.so:devel/sdl20" instead of USES=sdl2
====> Running Q/A tests (stage-qa)
====> Checking for pkg-plist issues (check-plist)
===> Parsing plist
===> Checking for items in STAGEDIR missing from pkg-plist
===> Checking for items in pkg-plist which are not in STAGEDIR
===> No pkg-plist issues found (check-plist)
=>> Checking for staging violations... done
=======================<phase: package >============================
(In reply to Loïc Bartoletti from comment #0)
> Am I missing something?
A patch ?
If you look at proxydeps_suggest_uses() in qa.sh there are already sdl related lines, maybe they need expanding.
(In reply to Mathieu Arnold from comment #2)
> A patch ?
Patches are coming, yes.
> If you look at proxydeps_suggest_uses() in qa.sh there are already sdl related lines,
That's exactly why I opened this ticket. I don't understand why there is no warning on the ports listed above (sdl for the example above, but it's the same for those using databases/sqlite3 instead of USES=sqlite3)
> maybe they need expanding.
What do you mean by expanding?
A commit references this bug:
Date: Mon Nov 16 18:18:02 UTC 2020
New revision: 555504
game/dose-response: convert to USE_SDL=sdl2
Approved by: portmgr (blanket convert to USE)
A commit references this bug:
Date: Mon Nov 16 18:43:44 UTC 2020
New revision: 555507
graphics/* convert to USES=sqlite
Approved by: portmgr (blanket, convert to USES)
Mmmm, sorry, mismatched problems.
The proxydep thing is there to tell you if you forgot a dependency on some lib.
For example, your port needs libfoo that came as a dependency of the bar port your port depends on, it builds fine because the dependency is proxied through bar, the framework tells you "you need to add a dependency on libfoo", and if there is a special case, which is what the suggest thing is for, instead of telling you "add LIB_DEPENDS+= libfoo.so:devel/foo" it tells you "add USES+=foo"
I do not think there is a check that tells you that if you have a dependency on devel/foo it needs to be done through USES=foo and not on a LIB_DEPENDS directly.
(In reply to Mathieu Arnold from comment #6)
I thought its role was indeed to warn if there was a dependency not specified in the makefile AND also to check if the dependency on devel/foo it needs to be done through USES=foo and not on a LIB_DEPENDS directly.
Thanks for your clarification!
I close the ticket
I will continue to fix the ports I find not using USES=foo.
Well, USES=foo simply add stuff to LIB_DEPENDS, so from the QA script, it is the same.
There could be a new QA checked added to warn when you have libfoo in LIB_DEPENDS but not USES=foo, and the various USE_FOO=bar, but it does not exist yet.