From aae283e1dd292ace3a02809ca571a72eb06d9732 Mon Sep 17 00:00:00 2001 From: Peter Powell Date: Sat, 21 Mar 2015 20:04:03 +0000 Subject: Convert the build system to Perl 5.10. Thanks to Kross for the heads up on "use feature". --- make/common.pm | 20 ++++++++++---------- make/configure.pm | 23 ++++++++++++----------- make/console.pm | 7 ++++--- 3 files changed, 26 insertions(+), 24 deletions(-) (limited to 'make') diff --git a/make/common.pm b/make/common.pm index 24ef599ce..638cc668a 100644 --- a/make/common.pm +++ b/make/common.pm @@ -18,11 +18,12 @@ BEGIN { - require 5.8.0; + require 5.10.0; } package make::common; +use feature ':5.10'; use strict; use warnings FATAL => qw(all); @@ -33,9 +34,8 @@ our @EXPORT = qw(get_cpu_count get_version module_installed); -my %version; - sub get_version { + state %version; return %version if %version; # Attempt to retrieve version information from src/version.sh @@ -47,22 +47,22 @@ sub get_version { # Attempt to retrieve missing version information from Git chomp(my $gr = `git describe --tags 2>/dev/null`); if ($gr =~ /^v([0-9]+)\.([0-9]+)\.([0-9]+)(?:-\d+-g(\w+))?$/) { - $version{MAJOR} = $1 unless defined $version{MAJOR}; - $version{MINOR} = $2 unless defined $version{MINOR}; - $version{PATCH} = $3 unless defined $version{PATCH}; + $version{MAJOR} //= $1; + $version{MINOR} //= $2; + $version{PATCH} //= $3; $version{LABEL} = $4 if defined $4; } # The user is using a stable release which does not have # a label attached. - $version{LABEL} = 'release' unless defined $version{LABEL}; + $version{LABEL} //= 'release'; # If any of these fields are missing then the user has deleted the # version file and is not running from Git. Fill in the fields with # dummy data so we don't get into trouble with undef values later. - $version{MAJOR} = '0' unless defined $version{MAJOR}; - $version{MINOR} = '0' unless defined $version{MINOR}; - $version{PATCH} = '0' unless defined $version{PATCH}; + $version{MAJOR} //= '0'; + $version{MINOR} //= '0'; + $version{PATCH} //= '0'; return %version; } diff --git a/make/configure.pm b/make/configure.pm index 84f076483..9a53221a8 100644 --- a/make/configure.pm +++ b/make/configure.pm @@ -22,11 +22,12 @@ BEGIN { - require 5.8.0; + require 5.10.0; } package make::configure; +use feature ':5.10'; use strict; use warnings FATAL => qw(all); @@ -175,18 +176,18 @@ EOH sub cmd_update { print_error "You have not run $0 before. Please do this before trying to update the generated files." unless -f CONFIGURE_CACHE_FILE; - print "Updating...\n"; + say 'Updating...'; my %config = read_configure_cache(); my %compiler = get_compiler_info($config{CXX}); my %version = get_version(); parse_templates(\%config, \%compiler, \%version); - print "Update complete!\n"; + say 'Update complete!'; exit 0; } sub run_test($$;$) { my ($what, $result, $adjective) = @_; - $adjective ||= 'available'; + $adjective //= 'available'; print_format "Checking whether <|GREEN $what|> is $adjective ... "; print_format $result ? "<|GREEN yes|>\n" : "<|RED no|>\n"; return $result; @@ -195,7 +196,7 @@ sub run_test($$;$) { sub test_file($$;$) { my ($compiler, $file, $args) = @_; my $status = 0; - $args ||= ''; + $args //= ''; $status ||= system "$compiler -o __test_$file make/test/$file $args >/dev/null 2>&1"; $status ||= system "./__test_$file >/dev/null 2>&1"; unlink "./__test_$file"; @@ -204,7 +205,7 @@ sub test_file($$;$) { sub test_header($$;$) { my ($compiler, $header, $args) = @_; - $args ||= ''; + $args //= ''; open(COMPILER, "| $compiler -E - $args >/dev/null 2>&1") or return 0; print COMPILER "#include <$header>"; close(COMPILER); @@ -228,8 +229,8 @@ sub write_configure_cache(%) { my %config = @_; open(CACHE, '>', CONFIGURE_CACHE_FILE) or print_error "unable to write ${\CONFIGURE_CACHE_FILE}: $!"; while (my ($key, $value) = each %config) { - $value = '' unless defined $value; - print CACHE "$key=\"$value\"\n"; + $value //= ''; + say CACHE "$key=\"$value\""; } close(CACHE); } @@ -251,7 +252,7 @@ sub get_compiler_info($) { sub find_compiler { my @compilers = qw(c++ g++ clang++ icpc); - foreach my $compiler (shift || @compilers) { + foreach my $compiler (shift // @compilers) { return $compiler if __test_compiler $compiler; return "xcrun $compiler" if $^O eq 'darwin' && __test_compiler "xcrun $compiler"; } @@ -269,7 +270,7 @@ sub get_property($$;$) } } close(MODULE); - return defined $default ? $default : ''; + return $default // ''; } sub parse_templates($$$) { @@ -418,7 +419,7 @@ sub parse_templates($$$) { print_format "Writing <|GREEN $target|> ...\n"; open(TARGET, '>', $target) or print_error "unable to write $_: $!"; foreach (@final_lines) { - print TARGET $_, "\n"; + say TARGET $_; } close(TARGET); diff --git a/make/console.pm b/make/console.pm index 045df8a70..4e7b32d49 100644 --- a/make/console.pm +++ b/make/console.pm @@ -20,9 +20,10 @@ package make::console; BEGIN { - require 5.8.0; + require 5.10.0; } +use feature ':5.10'; use strict; use warnings FATAL => qw(all); @@ -55,7 +56,7 @@ sub __console_format($$) { sub print_format($;$) { my $message = shift; - my $stream = shift || *STDOUT; + my $stream = shift // *STDOUT; while ($message =~ /(<\|(\S+)\s(.+?)\|>)/) { my $formatted = __console_format $2, $3; $message =~ s/\Q$1\E/$formatted/; @@ -106,7 +107,7 @@ sub prompt_string($$$) { print_format "$question\n"; print_format "[<|GREEN $default|>] => "; chomp(my $answer = ); - print "\n"; + say ''; return $answer ? $answer : $default; } -- cgit v1.2.3