diff --git a/Build.PL b/Build.PL index b4d5e4411..51f286ed3 100644 --- a/Build.PL +++ b/Build.PL @@ -1,44 +1,67 @@ -use Module::Build; +#!/usr/bin/perl -my $build = Module::Build->new( - module_name => 'Slic3r', - dist_abstract => 'G-code generator for 3D printers', - dist_author => 'Alessandro Ranellucci ', - dist_version => '0.1', - license => 'perl', - requires => { - 'Boost::Geometry::Utils' => '0.15', - 'Encode::Locale' => '0', - 'File::Basename' => '0', - 'File::Spec' => '0', - 'Getopt::Long' => '0', - 'Math::Clipper' => '1.22', - 'Math::ConvexHull::MonotoneChain' => '0.01', - 'Math::Geometry::Voronoi' => '1.3', - 'Math::PlanePath' => '53', - 'Moo' => '0.091009', - 'perl' => '5.10.0', - 'Scalar::Util' => '0', - 'Storable' => '0', - 'Time::HiRes' => '0', - }, - build_requires => { - 'Test::More' => '0.10', - 'IO::Scalar' => '0.10', - }, - recommends => { - 'Class::XSAccessor' => '0', - 'Growl::GNTP' => '0.15', - 'XML::SAX::ExpatXS' => '0', - 'Wx' => '0.9901', - }, - script_files => ['slic3r.pl'], +use strict; +use warnings; + +use Config; +use File::Spec; + +my %prereqs = qw( + Boost::Geometry::Utils 0.15 + Encode::Locale 0 + File::Basename 0 + File::Spec 0 + Getopt::Long 0 + Math::Clipper 1.22 + Math::ConvexHull::MonotoneChain 0.01 + Math::Geometry::Voronoi 1.3 + Math::PlanePath 53 + Moo 0.091009 + Scalar::Util 0 + Storable 0 + Test::More 0 + IO::Scalar 0 + Time::HiRes 0 +); +my %recommends = qw( + Class::XSAccessor 0 + Growl::GNTP 0.15 + XML::SAX::ExpatXS 0 + Wx 0.9901 ); -if (not $ENV{SLIC3R_NO_AUTO}) -{ - $build->dispatch('installdeps'); - $build->dispatch('test', verbose => 0); +my $cpanm; +if (defined $ENV{CPANM} && -x $ENV{CPANM}) { + $cpanm = $ENV{CPANM}; +} elsif (-x (my $c = File::Spec->catfile($Config{installscript}, 'cpanm'))) { + $cpanm = $c; +} elsif ($^O = /^(?:darwin|linux)$/ && system(qw(which cpanm)) == 0) { + $cpanm = 'cpanm'; +} +die <<'EOF' +cpanm was not found. Please install it before running this script. + +There are several ways to install cpanm, try one of these: + + apt-get install cpanminus + curl -L http://cpanmin.us | perl - --sudo App::cpanminus + cpan App::cpanminus + +If it is installed in a non-standard location you can do: + + CPANM=/path/to/cpanm perl Build.PL + +EOF + if !$cpanm; + +my %modules = (%prereqs, %recommends); +foreach my $module (sort keys %modules) { + my $version = $modules{$module}; + system $cpanm, '--sudo', "$module~$version"; } -$build->create_build_script; +if (eval "use App::Prove; 1") { + App::Prove->new->run; +} + +__END__