X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=configure;h=1b28e30a1f982e29f13d11c54b669195f3a7faa1;hb=0808eb7a9dd3b339f5b37f0ee67c5253ccbc2956;hp=dab2a6a9d89570353d41b9ba74b41d34f58e7407;hpb=586c3cae3d4aeaf87c01538436ea9c84788cc23f;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/configure b/configure index dab2a6a9d..1b28e30a1 100755 --- a/configure +++ b/configure @@ -12,7 +12,9 @@ # ################################################### -require 5.8.0; +BEGIN { + require 5.8.0; +} use strict; use warnings FATAL => qw(all); @@ -23,6 +25,8 @@ BEGIN { $Data::Dumper::Useqq = 1; }; +use File::Copy (); + use Socket; use Cwd; use Getopt::Long; @@ -376,8 +380,11 @@ if (defined $opt_away) $config{MAX_AWAY} = $opt_away; } -$config{HAS_OPENSSL} =~ /^([-[:digit:].]+)([a-z])?(\-[a-z][0-9])?$/; -$config{HAS_OPENSSL} = $1; +if ($config{HAS_OPENSSL} =~ /^([-[:digit:].]+)([a-z])?(\-[a-z][0-9])?$/) { + $config{HAS_OPENSSL} = $1; +} else { + $config{HAS_OPENSSL} = ""; +} if ($config{GCCVER} eq "") { print $config{CC} . " was not found! You require g++ (the GNU C++ compiler, part of GCC) to build InspIRCd!\n"; @@ -542,7 +549,7 @@ $has_kqueue = 0; $fail = 0; open(KQUEUE, ")) { + while (defined(my $line = )) { chomp($line); # try and find the delcaration of: # int kqueue(void); @@ -639,7 +646,7 @@ $config{HAS_EPOLL} = $has_epoll; $config{HAS_KQUEUE} = $has_kqueue; printf "Checking for libgnutls... "; -if (($config{HAS_GNUTLS}) || ($config{HAS_GNUTLS} eq "y")) { +if (defined($config{HAS_GNUTLS}) && (($config{HAS_GNUTLS}) || ($config{HAS_GNUTLS} eq "y"))) { print "yes\n"; $config{HAS_GNUTLS} = "y"; } else { @@ -648,7 +655,7 @@ if (($config{HAS_GNUTLS}) || ($config{HAS_GNUTLS} eq "y")) { } printf "Checking for openssl... "; -if (($config{HAS_OPENSSL}) || ($config{HAS_OPENSSL} eq "y")) { +if (defined($config{HAS_OPENSSL}) && (($config{HAS_OPENSSL}) || ($config{HAS_OPENSSL} eq "y"))) { print "yes\n"; $config{HAS_OPENSSL} = "y"; } else { @@ -693,41 +700,42 @@ else # Clear the Screen.. if ($interactive) { - system("clear"); + print "\e[2J\e[0G\e[0d"; # J = Erase in Display, 2 = Entire Screen, (G, d) = Move cursor to (..,..) my $wholeos = $^O; my $rev = getrevision(); # Display Introduction Message.. - print " -Welcome to the \033[1mInspIRCd\033[0m Configuration program! (\033[1minteractive mode\033[0m) -\033[1mPackage maintainers: Type ./configure --help for non-interactive help\033[0m + print <<"STOP" ; +Welcome to the \e[1mInspIRCd\e[0m Configuration program! (\e[1minteractive mode\e[0m) +\e[1mPackage maintainers: Type ./configure --help for non-interactive help\e[0m *** If you are unsure of any of these values, leave it blank for *** *** standard settings that will work, and your server will run *** *** using them. Please consult your IRC network admin if in doubt. *** -Press \033[1m\033[0m to accept the default for any option, or enter -a new value. Please note: You will \033[1mHAVE\033[0m to read the docs +Press \e[1m\e[0m to accept the default for any option, or enter +a new value. Please note: You will \e[1mHAVE\e[0m to read the docs dir, otherwise you won't have a config file! -Your operating system is: \033[1;32m$config{OSNAME}\033[0m ($wholeos) -Maximum file descriptors: \033[1;32m$config{MAX_CLIENT_T}\033[0m -Your InspIRCd revision ID is \033[1;32mr$rev\033[0m"; +Your operating system is: \e[1;32m$config{OSNAME}\e[0m ($wholeos) +Maximum file descriptors: \e[1;32m$config{MAX_CLIENT_T}\e[0m +Your InspIRCd revision ID is \e[1;32mr$rev\e[0m +STOP if ($rev eq "r0") { print " (Non-SVN build)"; } print ".\n\n"; $config{CHANGE_COMPILER} = "n"; - print "I have detected the following compiler: \033[1;32m$config{CC}\033[0m (version \033[1;32m$config{GCCVER}.x\033[0m)\n"; + print "I have detected the following compiler: \e[1;32m$config{CC}\e[0m (version \e[1;32m$config{GCCVER}.x\e[0m)\n"; while (($config{GCCVER} < 3) || ($config{GCCVER} eq "")) { - print "\033[1;32mIMPORTANT!\033[0m A GCC 2.x compiler has been detected, and + print "\e[1;32mIMPORTANT!\e[0m A GCC 2.x compiler has been detected, and should NOT be used. You should probably specify a newer compiler.\n\n"; yesno('CHANGE_COMPILER',"Do you want to change the compiler?"); if ($config{CHANGE_COMPILER} =~ /y/i) { print "What command do you want to use to invoke your compiler?\n"; - print "[\033[1;32m$config{CC}\033[0m] -> "; + print "[\e[1;32m$config{CC}\e[0m] -> "; chomp($config{CC} = ); if ($config{CC} eq "") { $config{CC} = "g++"; @@ -735,13 +743,13 @@ should NOT be used. You should probably specify a newer compiler.\n\n"; chomp(my $foo = `$config{CC} -dumpversion | cut -c 1`); if ($foo ne "") { chomp($config{GCCVER} = `$config{CC} -dumpversion | cut -c 1`); # we must redo these if we change compilers - print "Queried compiler: \033[1;32m$config{CC}\033[0m (version \033[1;32m$config{GCCVER}.x\033[0m)\n"; + print "Queried compiler: \e[1;32m$config{CC}\e[0m (version \e[1;32m$config{GCCVER}.x\e[0m)\n"; if ($config{GCCVER} < 3) { - print "\033[1;32mGCC 2.x WILL NOT WORK!\033[0m. Let's try that again, shall we?\n"; + print "\e[1;32mGCC 2.x WILL NOT WORK!\e[0m. Let's try that again, shall we?\n"; } } else { - print "\033[1;32mWARNING!\033[0m Could not execute the compiler you specified. You may want to try again.\n"; + print "\e[1;32mWARNING!\e[0m Could not execute the compiler you specified. You may want to try again.\n"; } } } @@ -785,20 +793,20 @@ should NOT be used. You should probably specify a newer compiler.\n\n"; print "\n"; if ($config{IPV6} eq "y") { - print "You have chosen to build an \033[1;32mIPV6-enabled\033[0m server.\nTo accept IPV4 users, you can still use IPV4 addresses\nin your port bindings..\n\n"; + print "You have chosen to build an \e[1;32mIPV6-enabled\e[0m server.\nTo accept IPV4 users, you can still use IPV4 addresses\nin your port bindings..\n\n"; $config{SUPPORT_IP6LINKS} = "y"; } else { - yesno('SUPPORT_IP6LINKS',"You have chosen to build an \033[1;32mIPV4-only\033[0m server.\nWould you like to enable support for linking to IPV6-enabled\nInspIRCd servers?\nIf you are using a recent operating\nsystem and are unsure, answer yes.\nIf you answer 'no' here, your InspIRCd server will be unable\nto parse IPV6 addresses (e.g. for CIDR bans)"); + yesno('SUPPORT_IP6LINKS',"You have chosen to build an \e[1;32mIPV4-only\e[0m server.\nWould you like to enable support for linking to IPV6-enabled\nInspIRCd servers?\nIf you are using a recent operating\nsystem and are unsure, answer yes.\nIf you answer 'no' here, your InspIRCd server will be unable\nto parse IPV6 addresses (e.g. for CIDR bans)"); print "\n"; } if (($config{HAS_GNUTLS} eq "y") && ($config{HAS_OPENSSL} eq "y")) { - print "I have detected both \033[1;32mGnuTLS\033[0m and \033[1;32mOpenSSL\033[0m on your system.\n"; + print "I have detected both \e[1;32mGnuTLS\e[0m and \e[1;32mOpenSSL\e[0m on your system.\n"; print "I will default to GnuTLS. If you wish to use OpenSSL\n"; print "instead, you should enable the OpenSSL module yourself\n"; print "by copying it from src/modules/extra to src/modules.\n\n"; - print "Detected GnuTLS version: \033[1;32m" . $gnutls_ver . "\033[0m\n"; - print "Detected OpenSSL version: \033[1;32m" . $openssl_ver . "\033[0m\n\n"; + print "Detected GnuTLS version: \e[1;32m" . $gnutls_ver . "\e[0m\n"; + print "Detected OpenSSL version: \e[1;32m" . $openssl_ver . "\e[0m\n\n"; } if ($config{HAS_GNUTLS} eq "y") { @@ -855,24 +863,14 @@ if (($config{USE_OPENSSL} eq "y") && ($config{HAS_OPENSSL} ne "y")) our $failed = 0; if ($config{USE_GNUTLS} eq "y") { - $failed = 0; - open(TMP, ".config.cache"); foreach my $key (keys %config) { print FILEHANDLE "$key=\"$config{$key}\"\n"; @@ -1004,7 +993,7 @@ sub dir_check { my $complete = 0; while (!$complete) { print "In what directory $desc?\n"; - print "[\033[1;32m$config{$hash_key}\033[0m] -> "; + print "[\e[1;32m$config{$hash_key}\e[0m] -> "; chomp(my $var = ); if ($var eq "") { $var = $config{$hash_key}; @@ -1021,14 +1010,16 @@ sub dir_check { $var = resolve_directory($var); if (! -e $var) { - print "$var does not exist. Create it?\n[\033[1;32my\033[0m] "; + print "$var does not exist. Create it?\n[\e[1;32my\e[0m] "; chomp(my $tmp = ); if (($tmp eq "") || ($tmp =~ /^y/i)) { # Attempt to Create the Dir.. - - system("mkdir -p \"$var\" >> /dev/null 2>&1"); - my $chk = system("mkdir -p \"$var\" >> /dev/null 2>&1") / 256; - if ($chk != 0) { + my $chk = eval { + use File::Path (); + File::Path::mkpath($var, 0, 0777); + 1; + }; + unless (defined($chk) && -d $var) { print "Unable to create directory. ($var)\n\n"; # Restart Loop.. next; @@ -1128,7 +1119,7 @@ sub writefiles { chomp(my $revision2 = getrevision()); if ($writeheader == 1) { - print "Writing \033[1;32minspircd_config.h\033[0m\n"; + print "Writing \e[1;32minspircd_config.h\e[0m\n"; open(FILEHANDLE, ">include/inspircd_config.h"); my $NL = $config{NICK_LENGT}+1; my $CL = $config{CHAN_LENGT}+1; @@ -1265,7 +1256,7 @@ EOF # We can actually parse any file starting with . and ending with .inc, # but right now we only parse .inspircd.inc to form './inspircd' - print "Writing \033[1;32mMakefiles\033[0m\n"; + print "Writing \e[1;32mMakefiles\e[0m\n"; write_dynamic_modules_makefile(); write_dynamic_makefile(); @@ -1286,7 +1277,7 @@ EOF } close(FILEHANDLE); - print "Writing \033[1;32m$file\033[0m ...\n"; + print "Writing \e[1;32m$file\e[0m ...\n"; $tmp =~ s/\@CC\@/$config{CC}/ if defined $config{CC}; $tmp =~ s/\@MAKEPROG\@/$config{MAKEPROG}/ if defined $config{MAKEPROG}; $tmp =~ s/\@FLAGS\@/$config{FLAGS}/ if defined $config{FLAGS}; @@ -1319,7 +1310,7 @@ EOF sub write_dynamic_modules_makefile { # Modules Makefile.. - print "Writing \033[1;32msrc/modules/Makefile\033[0m\n"; + print "Writing \e[1;32msrc/modules/Makefile\e[0m\n"; open(FILEHANDLE, ">src/modules/Makefile"); ### @@ -1405,7 +1396,7 @@ m_$i.so: m_$i.cpp ../../include/modules.h ../../include/users.h ../../include/ch # A module made of multiple files, in a dir, e.g. src/modules/m_spanningtree/ if (defined(opendir(MDIRHANDLE, "src/modules/$name"))) { read_module_directory("src/modules/$name", $name); - print "Composing Makefile rules for directory \033[1;32m$name\033[0m... (\033[1;32m$mfcount files found\033[0m)\n"; + print "Composing Makefile rules for directory \e[1;32m$name\e[0m... (\e[1;32m$mfcount files found\e[0m)\n"; print FILEHANDLE "$name.so: ../../include/modules.h ../../include/users.h ../../include/channels.h ../../include/base.h ../../include/inspircd_config.h ../../include/inspircd.h ../../include/configreader.h $mobjs\n"; if ($config{IS_DARWIN} eq "YES") { print FILEHANDLE " \$(CC) -pipe -twolevel_namespace -undefined dynamic_lookup \$(FLAGS) $mliflags -bundle -o $name.so $mobjs\n"; @@ -1518,7 +1509,7 @@ sub write_dynamic_makefile foreach my $dir (("src","src/commands","src/modes","src/socketengines","src/modules")) { - print "Scanning \033[1;32m$dir\033[0m for core files "; + print "Scanning \e[1;32m$dir\e[0m for core files "; opendir(DIRHANDLE, $dir); foreach my $name (sort readdir(DIRHANDLE)) { @@ -1835,6 +1826,7 @@ sub enable_extras (@) { my $extrapath = "src/modules/extra/$extra"; if (!-e $extrapath) { print STDERR "Cannot enable \e[32;1m$extra\e[0m : No such file or directory in src/modules/extra\n"; + next; } my $source = "src/modules/$extra"; if (-e $source) {