You should probably scan CPAN for other uses of use inc::...

My darker memory is throwing up some other potentially false positive red flags.

File::ShareDir may be worth a look as it did some fairly funky stuff at 
build/test time... at one point in its history.

Anything file in CPAN with an explicit mention of Makefile.PL in a string is 
maybe worth a quick scan, for CPAN like tooling that doesn't use CPAN itself.

Adam

> On 14 Nov. 2016, at 6:11 am, Todd Rinaldo <to...@cpanel.net> wrote:
> 
> Howdy,
> 
> I've done a write up of a recent change to blead perl. In the future it will 
> no longer be possible to count on . being in @INC. This will break many of 
> the existing CPAN installs.
> 
> It was suggested I send the RFC here:
> 
> http://blogs.perl.org/users/todd_rinaldo/2016/11/how-removing-from-inc-is-about-to-break-cpan.html
> 
> In Perl 5.26, it will no longer be a safe assumption to assume . is in @INC. 
> This is a good move towards a more secure Perl, but will break the 
> installation of many CPAN modules. For those of you wondering why this was 
> done, see this post for more information.
> 
> Many CPAN modules try to do things like: use inc::Module::Install; This 
> depends on . being in @INC. If you invoke Makefile.PL without it, the script 
> will not even run.
> 
> We have come up with several ways to mitigate and ultimately fix the problem:
> 
> Short Term
> 
> Perl 5.26 will support an environment variable "PERL_USE_UNSAFE_INC=1". If 
> you set this, any perl script invoked will include . at the end of @INC. 
> Tentatively, support for this environment variable will be immediately 
> deprecated since long term, the CPAN modules need to simply take this into 
> account.
> 
> My current thinking is that if we inject this environment variable into the 
> CPAN clients (cpanm, cpan, cpanplus, etc.), then they will build and install 
> modules as they normally did. Packagers (RPM, deb, etc.) will also need to 
> amend their build systems by also setting this environment variable. It is 
> also possible that a fix will be require to CPAN smoke testers.
> 
> Long Term
> 
> We need to fix the CPAN modules themselves. The vast majority of modules can 
> be fixed by putting use lib "."; at the top of Makefile.PL or Build.PL. 
> Others will need to fix additional scripts in their tree to also take this 
> into account. In some cases use blib; might be more appropriate, for 
> instance, in unit tests which invoke child scripts.
> 
> My original proposal included a patch to ExtUtils::MakeMaker, Module::Build, 
> and Module::Build::Tiny. At this point I think that this might be the wrong 
> place to fix the problem.
> 
> These are all my thoughts based on conversations with others about how this 
> transition needs to be addressed. I do not claim to have all the correct 
> answers. I am using this blog post to anchor the conversations that need to 
> be had with multiple groups (CPAN Testers, P5P, Tool Chain Gang, etc.).
> 
> If you want to try a Perl with this functionality now, you will need to build 
> Perl with the Configure option: -Ddefault_inc_excludes_dot. This is available 
> in blead and the next development build of perl.
> 
> I'll be opening a ticket with the CPAN clients this week. If you know of 
> other items that need consideration, please let me know in comments or feel 
> free to reach out to me or perl 5 porters.
> 
> -- Todd

Reply via email to