Thank you for doing this deep level investigation. I think this pretty much shows that listing all modules in a way that can be maintained isn't feasible (the idea was that maybe there's only a few of them needed for ptest).
Which brings us back to the question: why is perl-modules using RRECOMMENDS and not RDEPENDS? I went through git history, and perl recipe had RRECOMMENDS from the very first mass-import commit in 2005, so the answer is likely no one knows or remembers. I also went and checked python: in there python3-modules is using RDEPENDS. So I think the easiest way out is to simply replace RRECOMMENDS with RDEPENDS in perl as well. Can you make a patch? Alex On Fri, 19 Jan 2024 at 19:11, Lyu, William via lists.openembedded.org <william.lyu=windriver....@lists.openembedded.org> wrote: > > Following your suggestions and iteratively adding packages based on error > message, I am finally able to come up with quite a long list of perl-module-* > packages that fix the dependencies of openssl-ptest. > > > However, I am worried about if the list I came up with is truly comprehensive > in the sense that this list covers all dependencies for other architectures > and other OSes. I see that a lot of openssl-ptest subtests are marked as > "skipped". I am not sure if these dependencies will be sufficient if these > subtests are not skipped. Also, I am not sure if the packages I added are > arch or OS specific. > > The following is the list of perl-module-* I found. > > This first portion is identified by following your suggestion of using grep > "^\s*use". > perl-module-extutils-makemaker \ > perl-module-file-find \ > perl-module-if \ > perl-module-pod-checker \ > perl-module-tap-harness \ > perl-module-tap-parser-aggregator \ > perl-module-tap-parser-source \ > perl-module-tap-parser-sourcehandler-perl \ > perl-module-text-parsewords \ > perl-module-carp \ > perl-module-cwd \ > perl-module-data-dumper \ > perl-module-digest-sha \ > perl-module-encode \ > perl-module-errno \ > perl-module-exporter \ > perl-module-fcntl \ > perl-module-feature \ > perl-module-file-basename \ > perl-module-file-compare \ > perl-module-file-copy \ > perl-module-file-glob \ > perl-module-filehandle \ > perl-module-file-path \ > perl-module-file-spec \ > perl-module-file-spec-functions \ > perl-module-file-temp \ > perl-module-findbin \ > perl-module-getopt-long \ > perl-module-getopt-std \ > perl-module-io-select \ > perl-module-io-socket \ > perl-module-ipc-cmd \ > perl-module-ipc-open2 \ > perl-module-lib \ > perl-module-list-util \ > perl-module-math-bigint \ > perl-module-mime-base64 \ > perl-module-pod-html \ > perl-module-posix \ > perl-module-scalar-util \ > perl-module-storable \ > perl-module-test-harness \ > perl-module-test-more \ > perl-module-time-local \ > perl-module-utf8 \ > perl-module-vars \ > \ > > The following are added iteratively based on error reports from actually > running the test. > perl-module-pod-text \ > perl-module-encode-encoding \ > perl-module-metadata \ > perl-module-locale \ > \ > > The following are added due to internal dependencies between different TAP > modules. I added a few iteratively, and there are still some errors. So, I > just grepped and added all tap modules. > perl-module-tap-base \ > perl-module-tap-formatter-base \ > perl-module-tap-formatter-color \ > perl-module-tap-formatter-console \ > perl-module-tap-formatter-console-parallelsession \ > perl-module-tap-formatter-console-session \ > perl-module-tap-formatter-file \ > perl-module-tap-formatter-file-session \ > perl-module-tap-formatter-session \ > perl-module-tap-harness \ > perl-module-tap-harness-env \ > perl-module-tap-object \ > perl-module-tap-parser \ > perl-module-tap-parser-aggregator \ > perl-module-tap-parser-grammar \ > perl-module-tap-parser-iterator \ > perl-module-tap-parser-iterator-array \ > perl-module-tap-parser-iteratorfactory \ > perl-module-tap-parser-iterator-process \ > perl-module-tap-parser-iterator-stream \ > perl-module-tap-parser-multiplexer \ > perl-module-tap-parser-result \ > perl-module-tap-parser-result-bailout \ > perl-module-tap-parser-result-comment \ > perl-module-tap-parser-resultfactory \ > perl-module-tap-parser-result-plan \ > perl-module-tap-parser-result-pragma \ > perl-module-tap-parser-result-test \ > perl-module-tap-parser-result-unknown \ > perl-module-tap-parser-result-version \ > perl-module-tap-parser-result-yaml \ > perl-module-tap-parser-scheduler \ > perl-module-tap-parser-scheduler-job \ > perl-module-tap-parser-scheduler-spinner \ > perl-module-tap-parser-source \ > perl-module-tap-parser-sourcehandler \ > perl-module-tap-parser-sourcehandler-executable \ > perl-module-tap-parser-sourcehandler-file \ > perl-module-tap-parser-sourcehandler-handle \ > perl-module-tap-parser-sourcehandler-perl \ > perl-module-tap-parser-sourcehandler-rawtap \ > perl-module-tap-parser-yamlish-reader \ > perl-module-tap-parser-yamlish-writer \ > \ > > Only perl-module-extutils-mm-unix was requested. However, I noticed that the > suffix has "unix", so I assumed that this module is OS dependant. In case > openssl-ptest needs to be built for other OSes, I added all > perl-module-extutils-mm*. > perl-module-extutils-mm \ > perl-module-extutils-mm-aix \ > perl-module-extutils-mm-any \ > perl-module-extutils-mm-beos \ > perl-module-extutils-mm-cygwin \ > perl-module-extutils-mm-darwin \ > perl-module-extutils-mm-dos \ > perl-module-extutils-mm-macos \ > perl-module-extutils-mm-nw5 \ > perl-module-extutils-mm-os2 \ > perl-module-extutils-mm-os390 \ > perl-module-extutils-mm-qnx \ > perl-module-extutils-mm-unix \ > perl-module-extutils-mm-uwin \ > perl-module-extutils-mm-vms \ > perl-module-extutils-mm-vos \ > perl-module-extutils-mm-win32 \ > perl-module-extutils-mm-win95 \ > > ===== APPENDIX: Commands I Used to Identify the Potential List of Packages > Needed ===== > These are details and can be ignored. > > Under "{build > directory}/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/rootfs/usr/lib/openssl/ptest", > I executed the following command to convert all imported modules using "use" > statements into "perl-module-*": > $ grep -r -n -I "^\s*use " | sed -E 's/.*:[0-9]+://' | sed -E 's/;/\n/g' | > sed -E 's/^ *use *//' | sed -E 's/ /\n/g' | awk '!/^\s*$/' | tr '[:upper:]' > '[:lower:]' | sed -E 's/::/-/g' | sed -E 's/^/perl-module-/' | sort | uniq > > I saved the above list into a file "PARSED_USE". Then, I listed all > directories under "tmp/work/core2-64-poky-linux/perl/5.38.2/packages-split" > and saved this list as a list of valid perl-module-* into a file > "VALID_MODULE". > > I used the following command to determine which line in file "PARSED_USE" is > a valid perl-module-* based on "VALID_MODULE" using the following command: > $ cat PARSED_USE VALID_MODULE | sort | uniq -c | sort -nk1,1 | grep -E '^ *2' > > > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#194133): https://lists.openembedded.org/g/openembedded-core/message/194133 Mute This Topic: https://lists.openembedded.org/mt/103766391/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-