tobyink / p5-zydeco

Perl 5 distribution Zydeco; see homepage for downloads and documentation.
https://zydeco.toby.ink/
14 stars 3 forks source link

Possible PadWalker missing dependency #9

Open tobyink opened 3 years ago

tobyink commented 3 years ago

Migrated from rt.cpan.org #133926 (status was 'open')

Requestors:

From smonff@cpan.org on 2020-12-20 21:14:43 :

Hi,

Reporting a possible missing dependency: PadWalker.

While testing my Art::World module (largely based on Zydeco) in CPANTesters or on Gitlab-CI, I experiment a missing PadWalker dependency message and a fail of all tests.

https://gitlab.com/smonff/art-world/-/jobs/923576336

Can't say if it is coming from Zydeco or from an upper level, but the main information I have is:

Error: Can't locate PadWalker.pm in @INC (you may need to install the

PadWalker module) (@INC contains: /builds/smonff/art-world/lib /builds/smonff/art-world/local/lib/perl5/5.32.0/x86_64-linux-gnu etc.) at /builds/smonff/art-world/local/lib/perl5/Zydeco.pm line 847.

This precise 847 line in Zydeco.pm is "requiring" PadWalker, so I guess it is a start...

If I had PadWalker to the dependencies of my project, everything is fine. Looks like it has been removed from someone else's dependencies, maybe? Or, I started to use some features of Zydeco requiring the use of PadWalker, but my understanding of Zydeco's internal code is a bit limited to go further about this.

Thanks and happy Christmas!

tobyink commented 3 years ago

From perl@toby.ink on 2020-12-26 23:28:28 :

It's caused by using:

Num $gain = $self->config->{ FAME }->{ DEFAULT_BUMP }

In one of your signatures. Zydeco needs to do some pretty nasty stuff to figure out what $self is because at the time defaults are evaluated, $self isn't in scope.

I really need to find a better solution for this.

tobyink commented 3 years ago

From smonff@cpan.org on 2021-01-08 16:29:28 :

It's caused by using:

Num $gain = $self->config->{ FAME }->{ DEFAULT_BUMP }

In one of your signatures. Zydeco needs to do some pretty nasty stuff to figure out what $self is because at the time defaults are evaluated, $self isn't in scope.

I really need to find a better solution for this.

Is it "normal" that adding PadWalker as a dependency "solve" the problem?

I tried to take advantage of the implicit declaration of $self that seemed to be an acceptable possibility from what I understood. It looks quite surprising that it can be this way, but why not? Even if some error messages are a bit difficult to target, Zydeco is still fun to use.

For some issues I encountered, including this one, I just required the use of a Perl > 5.24.0. Seems like quite rude, but I don't think this experiment I do will be reused by many people ^^.

tobyink commented 3 years ago

From perl@toby.ink on 2021-01-09 21:37:53 :

Yeah, Zydeco should probably have a dependency on PadWalker for this, but even better would be to fix things so Zydeco doesn't need to use PadWalker for it.