From ddc8727b70816c16d4806850ba0ecb16e465e00f Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Mon, 24 Jun 2013 16:32:03 +0200 Subject: [PATCH 1/5] Have SLIC3R_NO_AUTO check dependencies before requiring cpanm, and don't skip tests if all prerequisites are there --- Build.PL | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Build.PL b/Build.PL index c6fd4543e..9cbf5717b 100644 --- a/Build.PL +++ b/Build.PL @@ -32,6 +32,21 @@ my %recommends = qw( # removed: # Wx 0.9901 +my $skip_tests = 0; +if ($ENV{SLIC3R_NO_AUTO}) { + foreach my $module (sort keys %prereqs) { + my $version = $prereqs{$module}; + next if eval "use $module $version; 1"; + $skip_tests = 1 if exists $prereqs{$module}; + print "Missing prerequisite $module $version\n"; + } + foreach my $module (sort keys %recommends) { + my $version = $recommends{$module}; + next if eval "use $module $version; 1"; + print "Missing optional $module $version\n"; + } +} + my @try = ( $ENV{CPANM} // (), File::Spec->catfile($Config{sitebin}, 'cpanm'), @@ -69,16 +84,11 @@ EOF my %modules = (%prereqs, %recommends); foreach my $module (sort keys %modules) { my $version = $modules{$module}; - if ($ENV{SLIC3R_NO_AUTO}) { - print "Missing prerequisite $module $version\n" - if !eval "use $module $version; 1"; - } else { - system $cpanm, "$module~$version"; - } + my $res = system $cpanm, "$module~$version"; + $skip_tests = 1 if $res != 0; } -exit if $ENV{SLIC3R_NO_AUTO}; -if (eval "use App::Prove; 1") { +if (eval "use App::Prove; 1" && !$skip_tests) { App::Prove->new->run; } From f32551bd35d45642a9f8e009bb004e3965a42ada Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Mon, 24 Jun 2013 16:39:31 +0200 Subject: [PATCH 2/5] Don't check cpanm existence if SLIC3R_NO_AUTO --- Build.PL | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/Build.PL b/Build.PL index 9cbf5717b..f51b56794 100644 --- a/Build.PL +++ b/Build.PL @@ -45,27 +45,26 @@ if ($ENV{SLIC3R_NO_AUTO}) { next if eval "use $module $version; 1"; print "Missing optional $module $version\n"; } -} - -my @try = ( - $ENV{CPANM} // (), - File::Spec->catfile($Config{sitebin}, 'cpanm'), - File::Spec->catfile($Config{installscript}, 'cpanm'), -); - -my $cpanm; -foreach my $path (@try) { - if (-e $path) { # don't use -x because it fails on Windows - $cpanm = $path; - last; +} else { + my @try = ( + $ENV{CPANM} // (), + File::Spec->catfile($Config{sitebin}, 'cpanm'), + File::Spec->catfile($Config{installscript}, 'cpanm'), + ); + + my $cpanm; + foreach my $path (@try) { + if (-e $path) { # don't use -x because it fails on Windows + $cpanm = $path; + last; + } } -} -if (!$cpanm) { - if ($^O =~ /^(?:darwin|linux)$/ && system(qw(which cpanm)) == 0) { - $cpanm = 'cpanm'; + if (!$cpanm) { + if ($^O =~ /^(?:darwin|linux)$/ && system(qw(which cpanm)) == 0) { + $cpanm = 'cpanm'; + } } -} -die <<'EOF' + die <<'EOF' cpanm was not found. Please install it before running this script. There are several ways to install cpanm, try one of these: @@ -79,13 +78,14 @@ 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}; - my $res = system $cpanm, "$module~$version"; - $skip_tests = 1 if $res != 0; + if !$cpanm; + + my %modules = (%prereqs, %recommends); + foreach my $module (sort keys %modules) { + my $version = $modules{$module}; + my $res = system $cpanm, "$module~$version"; + $skip_tests = 1 if $res != 0; + } } if (eval "use App::Prove; 1" && !$skip_tests) { From 344072d03c24e6f85f37b445b7a9868e6005a143 Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Mon, 24 Jun 2013 16:41:12 +0200 Subject: [PATCH 3/5] Re-enable tests if all prereqs succeeded, regardless of optional modules --- Build.PL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Build.PL b/Build.PL index f51b56794..21373cdc4 100644 --- a/Build.PL +++ b/Build.PL @@ -84,7 +84,7 @@ EOF foreach my $module (sort keys %modules) { my $version = $modules{$module}; my $res = system $cpanm, "$module~$version"; - $skip_tests = 1 if $res != 0; + $skip_tests = 1 if $res != 0 && exists $prereqs{$module}; } } From 7852c07ba36616900d89d48b862a6a286b5645a6 Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Mon, 24 Jun 2013 16:51:01 +0200 Subject: [PATCH 4/5] Exit with 1 if prerequisites are missing --- Build.PL | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Build.PL b/Build.PL index 21373cdc4..128641dfc 100644 --- a/Build.PL +++ b/Build.PL @@ -32,12 +32,12 @@ my %recommends = qw( # removed: # Wx 0.9901 -my $skip_tests = 0; +my $missing_prereqs = 0; if ($ENV{SLIC3R_NO_AUTO}) { foreach my $module (sort keys %prereqs) { my $version = $prereqs{$module}; next if eval "use $module $version; 1"; - $skip_tests = 1 if exists $prereqs{$module}; + $missing_prereqs = 1 if exists $prereqs{$module}; print "Missing prerequisite $module $version\n"; } foreach my $module (sort keys %recommends) { @@ -84,12 +84,14 @@ EOF foreach my $module (sort keys %modules) { my $version = $modules{$module}; my $res = system $cpanm, "$module~$version"; - $skip_tests = 1 if $res != 0 && exists $prereqs{$module}; + $missing_prereqs = 1 if $res != 0 && exists $prereqs{$module}; } } -if (eval "use App::Prove; 1" && !$skip_tests) { +if (eval "use App::Prove; 1" && !$missing_prereqs) { App::Prove->new->run; } +exit 1 if $missing_prereqs; + __END__ From f5cc4468536c8c4a36636fcb67b293090d307e7c Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Mon, 24 Jun 2013 18:07:33 +0200 Subject: [PATCH 5/5] Menu item for launching the manual --- lib/Slic3r/GUI.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Slic3r/GUI.pm b/lib/Slic3r/GUI.pm index d264f73fc..e4cb27600 100644 --- a/lib/Slic3r/GUI.pm +++ b/lib/Slic3r/GUI.pm @@ -164,13 +164,13 @@ sub OnInit { $helpMenu->Append(MI_WEBSITE, "Slic3r &Website", 'Open the Slic3r website in your browser'); my $versioncheck = $helpMenu->Append(MI_VERSIONCHECK, "Check for &Updates...", 'Check for new Slic3r versions'); $versioncheck->Enable(Slic3r::GUI->have_version_check); - $helpMenu->Append(MI_DOCUMENTATION, "&Documentation", 'Open the Slic3r documentation in your browser'); + $helpMenu->Append(MI_DOCUMENTATION, "Slic3r &Manual", 'Open the Slic3r manual in your browser'); $helpMenu->AppendSeparator(); $helpMenu->Append(wxID_ABOUT, "&About Slic3r", 'Show about dialog'); EVT_MENU($frame, MI_CONF_WIZARD, sub { $self->{skeinpanel}->config_wizard }); EVT_MENU($frame, MI_WEBSITE, sub { Wx::LaunchDefaultBrowser('http://slic3r.org/') }); EVT_MENU($frame, MI_VERSIONCHECK, sub { Slic3r::GUI->check_version(manual => 1) }); - EVT_MENU($frame, MI_DOCUMENTATION, sub { Wx::LaunchDefaultBrowser('https://github.com/alexrj/Slic3r/wiki/Documentation') }); + EVT_MENU($frame, MI_DOCUMENTATION, sub { Wx::LaunchDefaultBrowser('https://manual.slic3r.org/') }); EVT_MENU($frame, wxID_ABOUT, \&about); }