| Summary: | Need better perl module dependency tooling | ||
|---|---|---|---|
| Product: | [Build System, Metadata & Runtime] OE-Core | Reporter: | Tim Orling <tim.orling> |
| Component: | core | Assignee: | Tim Orling <tim.orling> |
| Status: | IN PROGRESS IMPLEMENTATION --- | QA Contact: | |
| Severity: | enhancement | ||
| Priority: | Medium | CC: | meta.mr.watcher, meta.watcher, randy.macleod, yf3yu |
| Version: | 5.99 | ||
| Target Milestone: | 6.99 | ||
| Hardware: | x86 | ||
| OS: | Multiple | ||
| Whiteboard: | |||
| OS type for building Yocto: | --- | Type of Regression: | --- |
| Verified: | Documentation change: | Don't know | |
|
Description
Tim Orling
2019-06-04 16:03:26 UTC
also interested for this to get a fix: had to manually update perl dependencies for around an hour when updating tcdump. and it was highly frustrating because of modules depending on other modules. I have a proof-of-concept in the works [1]
This is a “simple” approach relying on perl.req from rpm. I described the workflow concept recently for lmsensors [2]
That issue highlights the need for an additional use case: perl in the shebang for a script in a {sub}package, which the current implementation would not catch. This would require a regex on every file installed.
This needs more work and time has been elusive, hence bumped to 3.4 (optimism).
In particular, the current approach only works for a clean build... package data is not populated in a usable fashion for sstate derived sysroots.
[1] http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=timo/perl-deps_13376
[2] https://lists.yoctoproject.org/g/yocto/message/52570
I have another approach, implemented for recipetool/devtool [1] which relies on querying the metacpan [2] api [3]. This is also still just a proof-of-concept and needs more work. [1] http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=timo/recipetool-perl-v3 [2] https://metacpan.org/ [3] https://github.com/metacpan/metacpan-api/blob/master/docs/API-docs.md Bump. Might get around to it again. Super simple check for dependencies on target (in this case for libio-*-perl recipe):
for path in $(find /usr/lib/perl5/vendor_perl/5.36.0/IO -name *.pm | sed -e 's~/usr/lib/perl5/vendor_perl/5.36.0/~~' -e 's~/~::~g' -e 's~.pm~~'); do perl -M${path} -e'print'; done
Still valid. Moving to 6.99. |