use Exporter 'import';
use Fcntl;
use File::Path;
-use File::Spec::Functions qw(rel2abs);
+use File::Temp;
use Getopt::Long;
use POSIX;
-our @EXPORT = qw(get_version module_installed prompt_bool prompt_dir prompt_string 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 prompt_bool($$$) {
- my ($interactive, $question, $default) = @_;
- my $answer = prompt_string($interactive, $question, $default ? 'y' : 'n');
- return $answer =~ /y/i;
-}
-
-sub prompt_dir($$$) {
- my ($interactive, $question, $default) = @_;
- my ($answer, $create) = (undef, 'y');
- do {
- $answer = rel2abs(prompt_string($interactive, $question, $default));
- $create = prompt_bool($interactive && !-d $answer, "$answer does not exist. Create it?", 'y');
- my $mkpath = eval {
- mkpath($answer, 0, 0750);
- return 1;
- };
- unless (defined $mkpath) {
- print "Error: unable to create $answer!\n\n";
- $create = 0;
- }
- } while (!$create);
- return $answer;
-}
-
-sub prompt_string($$$) {
- my ($interactive, $question, $default) = @_;
- return $default unless $interactive;
- print $question, "\n";
- print "[\e[1;32m$default\e[0m] => ";
- chomp(my $answer = <STDIN>);
- print "\n";
- return $answer ? $answer : $default;
-}
-
-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($$$$$)
{
return $output;
}
-sub extend_pkg_path()
-{
- if (!exists $ENV{PKG_CONFIG_PATH})
- {
- $ENV{PKG_CONFIG_PATH} = "/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/libdata/pkgconfig:/usr/X11R6/libdata/pkgconfig";
- }
- else
- {
- $ENV{PKG_CONFIG_PATH} .= ":/usr/local/lib/pkgconfig:/usr/local/libdata/pkgconfig:/usr/X11R6/libdata/pkgconfig";
- }
-}
-
sub pkgconfig_get_include_dirs($$$;$)
{
my ($packagename, $headername, $defaults, $module) = @_;
- extend_pkg_path();
-
print "Locating include directory for package \e[1;32m$packagename\e[0m for module \e[1;32m$module\e[0m... ";
my $v = `pkg-config --modversion $packagename 2>/dev/null`;
{
my ($packagename, $version, $module) = @_;
- extend_pkg_path();
-
print "Checking version of package \e[1;32m$packagename\e[0m is >= \e[1;32m$version\e[0m... ";
my $v = `pkg-config --modversion $packagename 2>/dev/null`;
{
my ($packagename, $libname, $defaults, $module) = @_;
- extend_pkg_path();
-
print "Locating library directory for package \e[1;32m$packagename\e[0m for module \e[1;32m$module\e[0m... ";
my $v = `pkg-config --modversion $packagename 2>/dev/null`;
my $tmpfile;
do
{
- $tmpfile = tmpnam();
+ $tmpfile = File::Temp::tmpnam();
} until sysopen(TF, $tmpfile, O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW, 0700);
print "(Created and executed \e[1;32m$tmpfile\e[0m)\n";
print TF $1;