summaryrefslogtreecommitdiff
blob: ad908fa84a0e91ce4394a4fc64329923bf136ab5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
From fda708069c3c3bdb2b6d8922b21eb604084d51e2 Mon Sep 17 00:00:00 2001
From: Kent Fredric <kentnl@gentoo.org>
Date: Fri, 6 Oct 2017 22:32:36 +1300
Subject: Keep dist-root in @INC beyond Perl 5.26

The only thing that makes sense is to ensure CWD of some description is
in @INC at some stage before plugins are actually loaded, because
that's the traditional expectation.

Basically, this option is the only option that works. There's no viable
way to scope @INC changes to anything narrower without breaking the
usage entirely.

There's no sane way to limit the depth of @INC changes either, even if
we wanted to.

And if you have vulnerable code in your project source tree that you're
worried about, you're pretty much beyond screwed already, and you're
about to be screwing CPAN when you ship next, and no amount of @INC
magic will save you.

Bug: https://bugs.gentoo.org/613586
Bug: https://github.com/rjbs/Dist-Zilla/issues/581
Bug: https://github.com/rjbs/Dist-Zilla/pull/590
Bug: https://github.com/rjbs/Dist-Zilla/pull/600
---
 lib/Dist/Zilla/Dist/Builder.pm    | 1 +
 lib/Dist/Zilla/Util/AuthorDeps.pm | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/Dist/Zilla/Dist/Builder.pm b/lib/Dist/Zilla/Dist/Builder.pm
index 2148eeb..6b8e301 100644
--- a/lib/Dist/Zilla/Dist/Builder.pm
+++ b/lib/Dist/Zilla/Dist/Builder.pm
@@ -36,6 +36,7 @@ sub from_config {
   $arg ||= {};
 
   my $root = path($arg->{dist_root} || '.');
+  unshift @INC, $root->absolute->stringify;
 
   my $sequence = $class->_load_config({
     root   => $root,
diff --git a/lib/Dist/Zilla/Util/AuthorDeps.pm b/lib/Dist/Zilla/Util/AuthorDeps.pm
index 01a958e..cfcd62f 100644
--- a/lib/Dist/Zilla/Util/AuthorDeps.pm
+++ b/lib/Dist/Zilla/Util/AuthorDeps.pm
@@ -105,7 +105,7 @@ sub extract_author_deps {
 
   if ($missing) {
     require Module::Runtime;
-
+    unshift @INC, $root->absolute->stringify;
     @packages =
       grep {
         $_ eq 'perl'
-- 
2.14.1