Module::Build omits declared nested Perl module from blib
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 68/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- perl
- Domain
- build-system
Research direction
Start with PerlOnJava's Module::Build file-discovery and staging logic, comparing lib/AudioFile/Info/MP3/Tag.pm with the generated blib/lib tree after Build. Add focused regression coverage that checks the nested module is staged, then run t/1_read.t, t/2_write.t, and t/4_pod_coverage.t. Done means the module is available from blib/lib and the distribution tests pass like system Perl.
Written by the indexing model from the issue text.
Description
Summary
AudioFile::Info::MP3::Tag v1.6.4 fails under PerlOnJava because the Module::Build-based build omits its declared plugin module from blib/lib.
The distribution source contains lib/AudioFile/Info/MP3/Tag.pm, and META.yml correctly provides AudioFile::Info::MP3::Tag, but after the PerlOnJava Build step the generated blib/lib contains AudioFile/Info/Build.pm and does not contain AudioFile/Info/MP3/Tag.pm.
Evidence
- CPAN run:
20260918-141920-96054 - Distribution:
AudioFile::Info::MP3::Tagv1.6.4 - System Perl: PASS, 4 files and 25 tests
- PerlOnJava: FAIL, 3/4 test programs and 2/6 reported subtests
The PerlOnJava failure is:
Can't locate object method "new" via package "AudioFile::Info::MP3::Tag"
It occurs in AudioFile::Info::Info.pm while the plugin-backed tests are trying to construct the MP3 handler. The same missing plugin also causes both POD-coverage checks to report that requiring AudioFile::Info::MP3::Tag failed.
The source package has:
lib/AudioFile/Info/MP3/Tag.pm
but the resulting build tree contains only:
blib/lib/AudioFile/Info/Build.pm
and no blib/lib/AudioFile/Info/MP3/Tag.pm.
Reproduction
Run the CPAN test for AudioFile::Info::MP3::Tag v1.6.4 with PerlOnJava. The dependency builds complete, including AudioFile::Info and MP3::Tag, but the final Build test fails in t/1_read.t, t/2_write.t, and t/4_pod_coverage.t because the plugin is not available from the build output.
The relevant build output reports AudioFile::Info-MP3-Tag as built successfully, despite the missing module file.
Expected behavior
A successful Module::Build build must copy every declared Perl module from lib/ into the corresponding blib/lib/ path. In this case it should produce:
blib/lib/AudioFile/Info/MP3/Tag.pm
The subsequent test environment should then be able to load the plugin and run the 25 tests successfully, matching system Perl.
Requested fix
Investigate PerlOnJava's Module::Build file-discovery or staging logic for nested module paths and ensure that ordinary declared pure-Perl modules are copied into blib/lib during Build.
Add focused regression coverage that verifies a nested module such as AudioFile::Info::MP3::Tag is present in blib/lib after a Module::Build build, then rerun the distribution's test suite.
Related issues
- Related to #1294, which tracks missing generated pure-Perl modules in XS fallback builds. This report concerns an ordinary source module that is present in
lib/but omitted fromblib/lib. - Related to #1372, which tracks missing MakeMaker
pm_to_blibbuild markers. This report concerns the module staging result itself rather than the marker file.
- Dominant language
- Perl
- Stars
- 64
- Forks
- 6
- Avg merge
- 5h 25m
- Merged PRs (30d)
- 157
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from fglock/PerlOnJava
-
area:cpan-port area:unicode bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
fglock/PerlOnJava#1341 ·
-
area:cpan-port bug
Difficulty 4/5 3-5 days Newbie friendliness 44/100
fglock/PerlOnJava#1459 ·
-
area:cpan-port bug
Difficulty 3/5 1-2 days Newbie friendliness 72/100
fglock/PerlOnJava#1457 ·
-
bug high-impact
Difficulty 3/5 1-2 days Newbie friendliness 67/100
fglock/PerlOnJava#1456 · 1 comment ·
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 72/100
fglock/PerlOnJava#1455 ·
All issues in fglock/PerlOnJava
Similar issues
-
1.severity: security
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
api7/lua-resty-saml#63 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 68/100
-
Difficulty 1/5 Under an hour Newbie friendliness 82/100
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100