From 11f4d02e7020cb5775d2b89af0e652e53cd90ed7 Mon Sep 17 00:00:00 2001 From: Peter Powell Date: Wed, 1 Oct 2014 19:52:23 +0100 Subject: Add Perl module for console related code. - Move prompt_* methods to this module. - Add methods for printing errors and warnings easily. - Add colour code helpers and switch all code to use them. --- tools/genssl | 1 + 1 file changed, 1 insertion(+) (limited to 'tools') diff --git a/tools/genssl b/tools/genssl index 073caa8f4..13b1f01fc 100755 --- a/tools/genssl +++ b/tools/genssl @@ -35,6 +35,7 @@ use File::Temp(); sub prompt($$) { my ($question, $default) = @_; + return prompt_string(1, $question, $default) if eval 'use make::console; 1'; print "$question\n"; print "[$default] => "; chomp(my $answer = ); -- cgit v1.2.3 From 7404ba8b66083c2fbb19c638da85c252551792a2 Mon Sep 17 00:00:00 2001 From: Peter Powell Date: Wed, 1 Oct 2014 19:52:29 +0100 Subject: Move common code to make::common from make::utilities. The other code in that file will be removed very soon so it has been left alone to avoid merge conflicts. This will help prevent insp20 merge conflicts in the future. --- configure | 2 +- make/common.pm | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ make/configure.pm | 1 + make/utilities.pm | 56 +--------------------------------- modulemanager | 2 +- tools/test-build | 2 +- 6 files changed, 96 insertions(+), 58 deletions(-) create mode 100644 make/common.pm (limited to 'tools') diff --git a/configure b/configure index 2a1d260f5..c4f0dffc7 100755 --- a/configure +++ b/configure @@ -39,9 +39,9 @@ use File::Spec::Functions qw(rel2abs); use Getopt::Long qw(GetOptions); use POSIX qw(getgid getuid); +use make::common; use make::configure; use make::console; -use make::utilities; my ($opt_binary_dir, $opt_config_dir, diff --git a/make/common.pm b/make/common.pm new file mode 100644 index 000000000..24ef599ce --- /dev/null +++ b/make/common.pm @@ -0,0 +1,91 @@ +# +# InspIRCd -- Internet Relay Chat Daemon +# +# Copyright (C) 2013-2014 Peter Powell +# +# This file is part of InspIRCd. InspIRCd is free software: you can +# redistribute it and/or modify it under the terms of the GNU General Public +# License as published by the Free Software Foundation, version 2. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + + +BEGIN { + require 5.8.0; +} + +package make::common; + +use strict; +use warnings FATAL => qw(all); + +use Exporter qw(import); +use File::Spec::Functions qw(rel2abs); + +our @EXPORT = qw(get_cpu_count + get_version + module_installed); + +my %version; + +sub get_version { + return %version if %version; + + # Attempt to retrieve version information from src/version.sh + chomp(my $vf = `sh src/version.sh 2>/dev/null`); + if ($vf =~ /^InspIRCd-([0-9]+)\.([0-9]+)\.([0-9]+)(?:\+(\w+))?$/) { + %version = ( MAJOR => $1, MINOR => $2, PATCH => $3, LABEL => $4 ); + } + + # 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{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}; + + # 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}; + + return %version; +} + +sub module_installed($) { + my $module = shift; + eval("use $module;"); + return !$@; +} + +sub get_cpu_count { + my $count = 1; + if ($^O =~ /bsd/) { + $count = `sysctl -n hw.ncpu`; + } elsif ($^O eq 'darwin') { + $count = `sysctl -n hw.activecpu`; + } elsif ($^O eq 'linux') { + $count = `getconf _NPROCESSORS_ONLN`; + } elsif ($^O eq 'solaris') { + $count = `psrinfo -p`; + } + chomp($count); + return $count; +} + +1; diff --git a/make/configure.pm b/make/configure.pm index a5cb05c60..8653edaac 100644 --- a/make/configure.pm +++ b/make/configure.pm @@ -34,6 +34,7 @@ use Cwd qw(getcwd); use Exporter qw(import); use File::Basename qw(basename); +use make::common; use make::console; use make::utilities; diff --git a/make/utilities.pm b/make/utilities.pm index 4103e38f3..dc286da5e 100644 --- a/make/utilities.pm +++ b/make/utilities.pm @@ -35,63 +35,9 @@ use File::Path; use Getopt::Long; use POSIX; -our @EXPORT = qw(get_version module_installed get_cpu_count make_rpath pkgconfig_get_include_dirs pkgconfig_get_lib_dirs pkgconfig_check_version translate_functions promptstring); +our @EXPORT = qw(make_rpath pkgconfig_get_include_dirs pkgconfig_get_lib_dirs pkgconfig_check_version translate_functions promptstring); my %already_added = (); -my %version = (); - -sub get_version { - return %version if %version; - - # Attempt to retrieve version information from src/version.sh - chomp(my $vf = `sh src/version.sh 2>/dev/null`); - if ($vf =~ /^InspIRCd-([0-9]+)\.([0-9]+)\.([0-9]+)(?:\+(\w+))?$/) { - %version = ( MAJOR => $1, MINOR => $2, PATCH => $3, LABEL => $4 ); - } - - # 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+-(\w+))?$/) { - $version{MAJOR} = $1 unless defined $version{MAJOR}; - $version{MINOR} = $2 unless defined $version{MINOR}; - $version{PATCH} = $3 unless defined $version{PATCH}; - $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}; - - # 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}; - - return %version; -} - -sub module_installed($) { - my $module = shift; - eval("use $module;"); - return !$@; -} - -sub get_cpu_count { - my $count = 1; - if ($^O =~ /bsd/) { - $count = `sysctl -n hw.ncpu`; - } elsif ($^O eq 'darwin') { - $count = `sysctl -n hw.activecpu`; - } elsif ($^O eq 'linux') { - $count = `getconf _NPROCESSORS_ONLN`; - } elsif ($^O eq 'solaris') { - $count = `psrinfo -p`; - } - chomp($count); - return $count; -} sub promptstring($$$$$) { diff --git a/modulemanager b/modulemanager index 86f9ca0c4..ee281d7fa 100755 --- a/modulemanager +++ b/modulemanager @@ -22,7 +22,7 @@ use strict; use warnings FATAL => qw(all); -use make::utilities; +use make::common; BEGIN { unless (module_installed("LWP::Simple")) { diff --git a/tools/test-build b/tools/test-build index 7f1bf68cd..85d63ccbe 100755 --- a/tools/test-build +++ b/tools/test-build @@ -29,8 +29,8 @@ BEGIN { use strict; use warnings FATAL => qw(all); +use make::common; use make::configure; -use make::utilities; $ENV{D} = $ENV{V} = 1; -- cgit v1.2.3