]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - configure
Move the init scripts out of the prefix into the new script dir.
[user/henk/code/inspircd.git] / configure
index d2da2a9ef23b0ace12d8d9b6353a1499c0ae42c7..c1052dff94da1f5d84487211536880e53876bbc2 100755 (executable)
--- a/configure
+++ b/configure
@@ -59,6 +59,7 @@ my ($opt_binary_dir,
     $opt_manual_dir,
     $opt_module_dir,
     $opt_prefix,
+    $opt_script_dir,
     $opt_socketengine,
     $opt_system,
     $opt_uid);
@@ -88,6 +89,7 @@ GetOptions(
        'manual-dir=s'         => \$opt_manual_dir,
        'module-dir=s'         => \$opt_module_dir,
        'prefix=s'             => \$opt_prefix,
+       'script-dir=s'         => \$opt_script_dir,
        'socketengine=s'       => \$opt_socketengine,
        'system'               => \$opt_system,
        'uid=s'                => \$opt_uid,
@@ -122,6 +124,7 @@ our $interactive = !(
        defined $opt_manual_dir ||
        defined $opt_module_dir ||
        defined $opt_prefix ||
+       defined $opt_script_dir ||
        defined $opt_socketengine ||
        defined $opt_system ||
        defined $opt_uid
@@ -130,7 +133,7 @@ our $interactive = !(
 my %version = get_version $opt_distribution_label;
 print_format "<|BOLD Configuring InspIRCd $version{FULL} on $^O.|>\n";
 
-our %config;
+my %config;
 if ($interactive) {
        %config = read_config_file(CONFIGURE_CACHE_FILE);
        run_test CONFIGURE_CACHE_FILE, %config;
@@ -159,41 +162,22 @@ my %compiler = get_compiler_info($config{CXX});
 $config{HAS_CLOCK_GETTIME} = run_test 'clock_gettime()', test_file($config{CXX}, 'clock_gettime.cpp', $^O eq 'darwin' ? undef : '-lrt');
 $config{HAS_EVENTFD} = run_test 'eventfd()', test_file($config{CXX}, 'eventfd.cpp');
 
-if ($config{HAS_EPOLL} = run_test 'epoll', test_header($config{CXX}, 'sys/epoll.h')) {
-       $config{SOCKETENGINE} //= 'epoll';
-}
-
-if ($config{HAS_KQUEUE} = run_test 'kqueue', test_file($config{CXX}, 'kqueue.cpp')) {
-       $config{SOCKETENGINE} //= 'kqueue';
-}
-
-if ($config{HAS_PORTS} = run_test 'Solaris IOCP', test_header($config{CXX}, 'port.h')) {
-       $config{SOCKETENGINE} //= 'ports';
-}
-
-if ($config{HAS_POLL} = run_test 'poll', test_header($config{CXX}, 'poll.h')) {
-       $config{SOCKETENGINE} //= 'poll';
-}
-
-# Select is available on all platforms
-$config{HAS_SELECT} = 1;
-$config{SOCKETENGINE} //= 'select';
+my @socketengines;
+push @socketengines, 'epoll'  if run_test 'epoll', test_header $config{CXX}, 'sys/epoll.h';
+push @socketengines, 'kqueue' if run_test 'kqueue', test_file $config{CXX}, 'kqueue.cpp';
+push @socketengines, 'ports'  if run_test 'Solaris IOCP', test_header $config{CXX}, 'port.h';
+push @socketengines, 'poll'   if run_test 'poll', test_header $config{CXX}, 'poll.h';
+push @socketengines, 'select';
 
 if (defined $opt_socketengine) {
-       my $cfgkey = 'HAS_' . uc $opt_socketengine;
-       if ($config{$cfgkey} && -f "src/socketengines/socketengine_$opt_socketengine.cpp") {
-               $config{SOCKETENGINE} = $opt_socketengine;
-       } else {
-               print "Unable to use a socket engine which is not supported on this platform ($opt_socketengine)!\n";
-               print "Available socket engines are:";
-               foreach (<src/socketengines/socketengine_*.cpp>) {
-                       s/src\/socketengines\/socketengine_(\w+)\.cpp/$1/;
-                       print " $1" if $config{'HAS_' . uc $1};
-               }
-               print "\n";     
-               exit 1;
+       unless (grep { $_ eq $opt_socketengine } @socketengines) {
+               my $reason = -f "src/socketengines/socketengine_$opt_socketengine.cpp" ? 'is not available on this platform' : 'does not exist';
+               print_error "The socket engine you requested ($opt_socketengine) $reason!",
+                       'Available socket engines are:',
+                       map { "  * $_" } @socketengines;
        }
 }
+$config{SOCKETENGINE} = $opt_socketengine // $socketengines[0];
 
 if (defined $opt_system) {
        $config{BASE_DIR}   = $opt_prefix     // '/var/lib/inspircd';
@@ -203,6 +187,7 @@ if (defined $opt_system) {
        $config{LOG_DIR}    = $opt_module_dir // '/var/log/inspircd';
        $config{MANUAL_DIR} = $opt_manual_dir // '/usr/share/man/man1';
        $config{MODULE_DIR} = $opt_module_dir // '/usr/lib/inspircd';
+       $config{SCRIPT_DIR} = $opt_script_dir // '/usr/share/inspircd'
 } else {
        $config{BASE_DIR}   = $opt_prefix     // $config{BASE_DIR}   // rel2abs 'run';
        $config{BINARY_DIR} = $opt_binary_dir // $config{BINARY_DIR} // rel2abs $config{BASE_DIR} . '/bin';
@@ -211,6 +196,7 @@ if (defined $opt_system) {
        $config{LOG_DIR}    = $opt_log_dir    // $config{LOG_DIR}    // rel2abs $config{BASE_DIR} . '/logs';
        $config{MANUAL_DIR} = $opt_manual_dir // $config{MANUAL_DIR} // rel2abs $config{BASE_DIR} . '/manuals';
        $config{MODULE_DIR} = $opt_module_dir // $config{MODULE_DIR} // rel2abs $config{BASE_DIR} . '/modules';
+       $config{SCRIPT_DIR} = $opt_script_dir // $config{SCRIPT_DIR} // $config{BASE_DIR};
 }
 
 # Parse --gid=123 or --gid=foo and extract the group id.
@@ -240,6 +226,15 @@ $config{UID}  = $user[2];
 # Clear the screen.
 system 'tput', 'clear' if $interactive;
 
+# Warn the user about clock drifting when running on OpenVZ.
+if (-e '/proc/user_beancounters' || -e '/proc/vz/vzaquota') {
+       print_warning <<'EOW';
+You are building InspIRCd inside of an an OpenVZ container. If you
+plan to use InspIRCd in this container then you should make sure that NTP is
+configured on the Hardware Node. Failure to do so may result in clock drifting!
+EOW
+}
+
 # Check that the user actually wants this version.
 if ($version{LABEL} ne 'release') {
        print_warning <<'EOW';
@@ -344,6 +339,7 @@ print_format <<"EOM";
   <|GREEN Log:|>    $config{LOG_DIR}
   <|GREEN Manual:|> $config{MANUAL_DIR}
   <|GREEN Module:|> $config{MODULE_DIR}
+  <|GREEN Script:|> $config{SCRIPT_DIR}
 
 <|GREEN Execution Group:|> $config{GROUP} ($config{GID})
 <|GREEN Execution User:|>  $config{USER} ($config{UID})