diff --git a/.gitignore b/.gitignore index 62e52ce4e8..7d66cacd7e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ xs/buildtmp MANIFEST.bak xs/MANIFEST.bak xs/assertlib* -.init_bundle.ini \ No newline at end of file +.init_bundle.ini +local-lib \ No newline at end of file diff --git a/Build.PL b/Build.PL index 0e51134560..20844c2de5 100644 --- a/Build.PL +++ b/Build.PL @@ -103,6 +103,15 @@ EOF my @cpanm_args = (); push @cpanm_args, "--sudo" if $sudo; + # install local::lib without --local-lib otherwise it's not usable afterwards + if (!eval "use local::lib qw(local-lib); 1") { + my $res = system $cpanm, @cpanm_args, 'local::lib'; + warn "Warning: local::lib is required. You might need to run the `cpanm --sudo local::lib` command in order to install it.\n" + if $res != 0; + } + + push @cpanm_args, ('--local-lib', 'local-lib'); + # make sure our cpanm is updated (old ones don't support the ~ syntax) system $cpanm, @cpanm_args, 'App::cpanminus'; diff --git a/slic3r.pl b/slic3r.pl index 1d3807a6cc..4b6e43e42c 100755 --- a/slic3r.pl +++ b/slic3r.pl @@ -6,6 +6,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/lib"; + use local::lib '--no-create', "$FindBin::Bin/local-lib"; } use File::Basename qw(basename); diff --git a/t/angles.t b/t/angles.t index 1e1a6c9c5a..9dc690dea7 100644 --- a/t/angles.t +++ b/t/angles.t @@ -7,6 +7,7 @@ plan tests => 34; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Slic3r; diff --git a/t/avoid_crossing_perimeters.t b/t/avoid_crossing_perimeters.t index dd6c3e7b69..60442f47fd 100644 --- a/t/avoid_crossing_perimeters.t +++ b/t/avoid_crossing_perimeters.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first sum); diff --git a/t/bridges.t b/t/bridges.t index cee3d3caa9..e3c89faa79 100644 --- a/t/bridges.t +++ b/t/bridges.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first sum); diff --git a/t/clean_polylines.t b/t/clean_polylines.t index 4526bd60cc..50c6f5bbdb 100644 --- a/t/clean_polylines.t +++ b/t/clean_polylines.t @@ -7,6 +7,7 @@ plan tests => 6; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Slic3r; diff --git a/t/clipper.t b/t/clipper.t index a898a53f6e..3c9838143a 100644 --- a/t/clipper.t +++ b/t/clipper.t @@ -7,6 +7,7 @@ plan tests => 6; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(sum); diff --git a/t/collinear.t b/t/collinear.t index 9dee777001..b28a3602c5 100644 --- a/t/collinear.t +++ b/t/collinear.t @@ -7,6 +7,7 @@ plan tests => 11; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Slic3r; diff --git a/t/combineinfill.t b/t/combineinfill.t index 6661cdd6c9..66e461d454 100644 --- a/t/combineinfill.t +++ b/t/combineinfill.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first); diff --git a/t/config.t b/t/config.t index 7f85dae84c..829ef5f393 100644 --- a/t/config.t +++ b/t/config.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Slic3r; diff --git a/t/cooling.t b/t/cooling.t index 1317f1dcea..87a557a04a 100644 --- a/t/cooling.t +++ b/t/cooling.t @@ -7,6 +7,7 @@ plan tests => 15; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(none all); diff --git a/t/custom_gcode.t b/t/custom_gcode.t index f6bfd366f1..653bb26aea 100644 --- a/t/custom_gcode.t +++ b/t/custom_gcode.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first); diff --git a/t/dynamic.t b/t/dynamic.t index beae06ad0f..5d4d3ceb4e 100644 --- a/t/dynamic.t +++ b/t/dynamic.t @@ -8,6 +8,7 @@ plan tests => 20; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first); diff --git a/t/fill.t b/t/fill.t index 3c434ea52e..15b1a2e049 100644 --- a/t/fill.t +++ b/t/fill.t @@ -9,6 +9,7 @@ plan tests => 19; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first sum); diff --git a/t/flow.t b/t/flow.t index 659a1171e1..a0d445ce5d 100644 --- a/t/flow.t +++ b/t/flow.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first sum); diff --git a/t/gaps.t b/t/gaps.t index 23acf9fd02..70e605a4b9 100644 --- a/t/gaps.t +++ b/t/gaps.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first); diff --git a/t/gcode.t b/t/gcode.t index 9e7bd354a6..956c579d4e 100644 --- a/t/gcode.t +++ b/t/gcode.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first); diff --git a/t/geometry.t b/t/geometry.t index 4529e6b1cb..0f37c0aa3b 100644 --- a/t/geometry.t +++ b/t/geometry.t @@ -7,6 +7,7 @@ plan tests => 42; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Slic3r; diff --git a/t/layers.t b/t/layers.t index 57fd257604..a859980771 100644 --- a/t/layers.t +++ b/t/layers.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first); diff --git a/t/loops.t b/t/loops.t index 6293a4be79..e662469cad 100644 --- a/t/loops.t +++ b/t/loops.t @@ -8,6 +8,7 @@ plan tests => 4; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Slic3r; diff --git a/t/multi.t b/t/multi.t index f709f14ed0..caedb982ea 100644 --- a/t/multi.t +++ b/t/multi.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first); diff --git a/t/perimeters.t b/t/perimeters.t index c50ae79c8e..2c190fd696 100644 --- a/t/perimeters.t +++ b/t/perimeters.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Slic3r::ExtrusionLoop ':roles'; diff --git a/t/polyclip.t b/t/polyclip.t index 1292d3216f..0808c7be99 100644 --- a/t/polyclip.t +++ b/t/polyclip.t @@ -7,6 +7,7 @@ plan tests => 18; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Slic3r; diff --git a/t/print.t b/t/print.t index 19f4163571..29ad7cbaa8 100644 --- a/t/print.t +++ b/t/print.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first); diff --git a/t/retraction.t b/t/retraction.t index ca83a2b87a..a0631f31ac 100644 --- a/t/retraction.t +++ b/t/retraction.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(any); diff --git a/t/shells.t b/t/shells.t index eeec94ce27..03bc5665c9 100644 --- a/t/shells.t +++ b/t/shells.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first sum); diff --git a/t/skirt_brim.t b/t/skirt_brim.t index 7a45079422..4d0155ebaf 100644 --- a/t/skirt_brim.t +++ b/t/skirt_brim.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first); diff --git a/t/slice.t b/t/slice.t index 6d1daff977..2f193aae3c 100644 --- a/t/slice.t +++ b/t/slice.t @@ -8,6 +8,7 @@ plan tests => 16; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } # temporarily disable compilation errors due to constant not being exported anymore diff --git a/t/support.t b/t/support.t index e024b7cbe3..ed68c276e9 100644 --- a/t/support.t +++ b/t/support.t @@ -8,6 +8,7 @@ plan tests => 27; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first); diff --git a/t/svg.t b/t/svg.t index 9299eeefa8..6092efe248 100644 --- a/t/svg.t +++ b/t/svg.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Slic3r; diff --git a/t/thin.t b/t/thin.t index 5146148025..2d256d2864 100644 --- a/t/thin.t +++ b/t/thin.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Slic3r; diff --git a/t/threads.t b/t/threads.t index 106a68af55..7fcd86f0ec 100644 --- a/t/threads.t +++ b/t/threads.t @@ -5,6 +5,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use List::Util qw(first); diff --git a/utils/amf-to-stl.pl b/utils/amf-to-stl.pl index 2648ba25dc..802fd9a536 100755 --- a/utils/amf-to-stl.pl +++ b/utils/amf-to-stl.pl @@ -7,6 +7,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use File::Basename qw(basename); diff --git a/utils/config-bundle-to-config.pl b/utils/config-bundle-to-config.pl index beecd666fc..e1d7f61435 100755 --- a/utils/config-bundle-to-config.pl +++ b/utils/config-bundle-to-config.pl @@ -9,6 +9,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Getopt::Long qw(:config no_auto_abbrev); diff --git a/utils/dump-stl.pl b/utils/dump-stl.pl index 0f459ffb14..eee3c73dc1 100644 --- a/utils/dump-stl.pl +++ b/utils/dump-stl.pl @@ -8,6 +8,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Slic3r; diff --git a/utils/gcode_sectioncut.pl b/utils/gcode_sectioncut.pl index a495698de5..afc011ce86 100644 --- a/utils/gcode_sectioncut.pl +++ b/utils/gcode_sectioncut.pl @@ -7,6 +7,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Getopt::Long qw(:config no_auto_abbrev); diff --git a/utils/pdf-slices.pl b/utils/pdf-slices.pl index 670a171718..ca61da08e9 100755 --- a/utils/pdf-slices.pl +++ b/utils/pdf-slices.pl @@ -7,6 +7,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Getopt::Long qw(:config no_auto_abbrev); diff --git a/utils/send-gcode.pl b/utils/send-gcode.pl index 989b17872c..0b803baa6d 100644 --- a/utils/send-gcode.pl +++ b/utils/send-gcode.pl @@ -6,6 +6,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Slic3r; diff --git a/utils/split_stl.pl b/utils/split_stl.pl index fffc576655..56217de4bd 100755 --- a/utils/split_stl.pl +++ b/utils/split_stl.pl @@ -7,6 +7,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use File::Basename qw(basename); diff --git a/utils/stl-to-amf.pl b/utils/stl-to-amf.pl index f0d537b047..bb88b21617 100755 --- a/utils/stl-to-amf.pl +++ b/utils/stl-to-amf.pl @@ -7,6 +7,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use File::Basename qw(basename); diff --git a/utils/view-mesh.pl b/utils/view-mesh.pl index 66f1f3ead8..03153ab3f5 100644 --- a/utils/view-mesh.pl +++ b/utils/view-mesh.pl @@ -7,6 +7,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Getopt::Long qw(:config no_auto_abbrev); diff --git a/utils/view-toolpaths.pl b/utils/view-toolpaths.pl index 4bbbaab4c6..d4c47f0720 100755 --- a/utils/view-toolpaths.pl +++ b/utils/view-toolpaths.pl @@ -7,6 +7,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Getopt::Long qw(:config no_auto_abbrev); diff --git a/utils/wireframe.pl b/utils/wireframe.pl index 53ac69a8a8..5399f31aca 100644 --- a/utils/wireframe.pl +++ b/utils/wireframe.pl @@ -8,6 +8,7 @@ use warnings; BEGIN { use FindBin; use lib "$FindBin::Bin/../lib"; + use local::lib "$FindBin::Bin/../local-lib"; } use Getopt::Long qw(:config no_auto_abbrev);