]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - configure
1.2.0a2+TexasLonghorn
[user/henk/code/inspircd.git] / configure
index 0050aed9b4d89f04e9cf4494174f7f5e3aa38be4..c228e33119f805ce9c0904447c4877e8d6d50eaf 100755 (executable)
--- a/configure
+++ b/configure
@@ -98,7 +98,7 @@ our %extraobjects = ();
 our %extrasources = ();
 
 our ($opt_use_gnutls, $opt_rebuild, $opt_use_openssl, $opt_nointeractive, $opt_nick_length,
-    $opt_chan_length, $opt_maxclients, $opt_ports, $opt_epoll, $opt_kqueue, $opt_noports,
+    $opt_chan_length, $opt_ports, $opt_epoll, $opt_kqueue, $opt_noports,
     $opt_noepoll, $opt_nokqueue, $opt_disablerpath, $opt_ipv6, $opt_ipv6links,
     $opt_noipv6links, $opt_ident, $opt_quit, $opt_topic, $opt_maxbuf, $opt_kick,
     $opt_gecos, $opt_away, $opt_modes, $opt_disable_debug, $opt_maxchans,
@@ -123,7 +123,6 @@ GetOptions (
        'disable-interactive' => \$opt_nointeractive,
        'with-nick-length=i' => \$opt_nick_length,
        'with-channel-length=i' => \$opt_chan_length,
-       'with-max-clients=i' => \$opt_maxclients,
        'enable-ports' => \$opt_ports,
        'enable-epoll' => \$opt_epoll,
        'enable-kqueue' => \$opt_kqueue,
@@ -181,7 +180,6 @@ our $non_interactive = (
        (defined $opt_away) ||
        (defined $opt_gecos) ||
        (defined $opt_kick) ||
-       (defined $opt_maxclients) ||
        (defined $opt_modes) ||
        (defined $opt_topic) ||
        (defined $opt_quit) ||
@@ -324,8 +322,6 @@ if (defined $opt_noipv6links)
 {
        $config{SUPPORT_IP6LINKS} = "n";
 }
-chomp($config{MAX_CLIENT_T} = `sh -c \"ulimit -n\"`);                  # FD Limit
-chomp($config{MAX_DESCRIPTORS} = `sh -c \"ulimit -n\"`);               # Hard FD Limit
 chomp($config{GCCVER}       = `g++ -dumpversion | cut -c 1`);          # Major GCC Version
 $config{_SOMAXCONN} = SOMAXCONN;                                       # Max connections in accept queue
 $config{OSNAME}            = $^O;                                      # Operating System Name
@@ -391,12 +387,6 @@ if ($config{GCCVER} eq "") {
        exit;
 }
 
-our $fd_scan_fail = "";
-if (!$config{MAX_CLIENT_T}) { 
-       $config{MAX_CLIENT_T} = 1024;                            # Set a reasonable 'Default'
-       $fd_scan_fail = "true";                                # Used Later
-}
-
 # Get and Set some important vars..
 getmodules();
 
@@ -483,14 +473,98 @@ sub svnupdate
        open(FH,"<.svn/entries") or $fail = 1;
        if ($fail) {
                print "This is not an SVN copy of InspIRCd.\n";
-               exit;
+               exit 1;
        }
        else
        {
                close(FH);
        }
-       system("svn update");
-       system("perl configure -update");
+       open my $fd, "-|", "svn update";
+       my $configurechanged = 0; # Needs ./configure -update
+       my $coredirchanged = 0; # Needs ./configure -update
+       my $moduledirchanged = 0; # Needs ./configure -modupdate
+       my $rootincchanged = 0;
+       my @conflicted = ();
+       while (defined(my $line = <$fd>))
+       {
+               my ($action, $file);
+               print $line;
+               $line =~ m/^([ADUCG])\s+(.*)$/ or next;
+               ($action, $file) = ($1, $2);
+               if ($action eq "C")
+               {
+                       push @conflicted, $file;
+                       if ($file eq "configure")
+                       {
+                               $configurechanged = 1;
+                       }
+                       elsif ($file =~ m#^src/modules#)
+                       {
+                               $moduledirchanged = 1;
+                       }
+                       elsif ($file =~ m#^src/#)
+                       {
+                               $coredirchanged = 1;
+                       }
+                       elsif ($file =~ m/^\..*\.inc$/)
+                       {
+                               $rootincchanged = 1;
+                       }
+               }
+               elsif ($action eq "U" || $action eq "G")
+               {
+                       if ($file eq "configure")
+                       {
+                               $configurechanged = 1;
+                       }
+                       elsif ($file =~ m/^\..*\.inc$/)
+                       {
+                               $rootincchanged = 1;
+                       }
+               }
+               elsif ($action eq "A" || $action eq "D")
+               {
+                       if ($file =~ m#^src/modules#)
+                       {
+                               $moduledirchanged = 1;
+                       }
+                       elsif ($file =~ m#^src/#)
+                       {
+                               $coredirchanged = 1;
+                       }
+               }
+       }
+       unless (close $fd) # close() waits for exit and returns false if the command failed
+       {
+               if ($! == 0)
+               {
+                       print STDERR "Problem updating from SVN, please check above for errors\n";
+               }
+               else
+               {
+                       print STDERR "Failed to run SVN: $!\n";
+               }
+               exit 1;
+       }
+       if (scalar(@conflicted) > 0)
+       {
+               print STDERR "\e[0;33;1mERROR:\e[0m You have local modifications which conflicted with the updates from SVN\n";
+               printf STDERR "Configure is not able to complete the update. Please resolve these conflicts, then run ./configure -%supdate\n", (($coredirchanged || $configurechanged) ? "" : "mod");
+               print "Conflicted files: " . join ", ", @conflicted . "\n";
+               exit 1;
+       }
+       if ($configurechanged || $coredirchanged)
+       {
+               system("perl configure -update");
+       }
+       elsif ($moduledirchanged || $rootincchanged)
+       {
+               system("perl configure -modupdate");
+       }
+       else
+       {
+               print "No need to update Makefiles.\n";
+       }
        if (defined $opt_rebuild) {
                system("make install");
        }
@@ -503,18 +577,6 @@ print ((!getcache()) ? "not found\n" : "found\n");
 print "Checking operating system version... ";
 print getosflags() . "\n";
 
-if (defined $opt_maxclients)
-{
-       $config{MAX_CLIENT} = $opt_maxclients;
-}
-
-if (!$config{MAX_CLIENT}) { 
-       # If the cache hasn't set the max clients, copy the variable of MAX_CLIENT_T, this
-       # allows us to keep _T for testing purposes. (ie. "Are you sure you want to go
-       # higher than the found value" :))
-       $config{MAX_CLIENT} = $config{MAX_CLIENT_T};
-}
-
 printf "Checking if stdint.h exists... ";
 $config{HAS_STDINT} = "true";
 our $fail = 0;
@@ -718,7 +780,6 @@ 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: \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") {
@@ -832,11 +893,6 @@ should NOT be used. You should probably specify a newer compiler.\n\n";
        print "of the 'maximum number of clients' setting which may be different on\n";
        print "different servers on the network.\n\n";
 
-       # File Descriptor Settings..
-       promptnumeric("number of clients at any one time", "MAX_CLIENT_T");
-       $config{MAX_CLIENT} = $config{MAX_CLIENT_T};
-       $config{MAX_DESCRIPTORS} = $config{MAX_CLIENT_T};
-
        promptnumeric("length of nicknames", "NICK_LENGT");
        promptnumeric("length of channel names", "CHAN_LENGT");
        promptnumeric("number of mode changes in one line", "MAXI_MODES");
@@ -1049,8 +1105,8 @@ sub getosflags {
 
        # Beware: Linux sets it's own cflags below for some retarded reason
        $config{LDLIBS} = "-pthread -lstdc++";
-       $config{FLAGS}  = "-fPIC -Woverloaded-virtual -Wshadow -Wall $config{OPTIMISATI}";
-       $config{DEVELOPER} = "-fPIC -Woverloaded-virtual -Wshadow -Wall -g";
+       $config{FLAGS}  = "-fPIC -Woverloaded-virtual -Wshadow -Wformat=2 -Wmissing-format-attribute -Wall $config{OPTIMISATI}";
+       $config{DEVELOPER} = "-fPIC -Woverloaded-virtual -Wshadow -Wall -Wformat=2 -Wmissing-format-attribute -g";
        $SHARED = "-Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared" unless defined $opt_disablerpath;
        $config{MAKEPROG} = "make";
 
@@ -1076,7 +1132,7 @@ sub getosflags {
 
        if ($config{OSNAME} =~ /Linux/i) {
                $config{LDLIBS} = "-ldl -lstdc++ -pthread";
-               $config{FLAGS}  = "-fPIC -Woverloaded-virtual -Wshadow -Wall $config{OPTIMISATI}";
+#              $config{FLAGS}  = "-fPIC -Woverloaded-virtual -Wshadow -Wall $config{OPTIMISATI}";
                $config{FLAGS}  .= " " . $ENV{CXXFLAGS} if exists($ENV{CXXFLAGS});
                $config{LDLIBS} .= " " . $ENV{LDLIBS} if exists($ENV{LDLIBS});
                $config{MAKEPROG} = "make";
@@ -1137,10 +1193,7 @@ sub writefiles {
 #define MOD_PATH "$config{MODULE_DIR}"
 #define VERSION "$version"
 #define REVISION "$revision2"
-#define MAXCLIENTS $config{MAX_CLIENT}
-#define MAXCLIENTS_S "$config{MAX_CLIENT}"
 #define SOMAXCONN_S "$config{_SOMAXCONN}"
-#define MAX_DESCRIPTORS $config{MAX_DESCRIPTORS}
 #define NICKMAX $NL
 #define CHANMAX $CL
 #define MAXMODES $config{MAXI_MODES}
@@ -1594,7 +1647,6 @@ sub write_dynamic_makefile
 
        my $all = "all: ";
        my $all_libsonly = "";
-
        my $libraryext = "";
        my $othercrap = "";
        my $RPATH = "";
@@ -1715,17 +1767,10 @@ ITEM
        foreach my $cmd (@cmdlist) {
                print FH <<ITEM;
 cmd_$cmd.so: cmd_$cmd.cpp ../../include/base.h ../../include/modules.h ../../include/inspircd.h ../../include/channels.h ../../include/users.h ../../include/globals.h ../../include/inspircd_config.h ../../include/commands/cmd_$cmd.h
-       \@../../make/run-cc.pl \$(CC) -pipe -I../../include \$(FLAGS) -export-dynamic -c cmd_$cmd.cpp
-       \@../../make/run-cc.pl \$(CC) -pipe $SHARED -o cmd_$cmd.so cmd_$cmd.o
+       \@../../make/run-cc.pl \$(CC) -pipe -I../../include \$(FLAGS) -export-dynamic $SHARED -o cmd_$cmd.so cmd_$cmd.cpp
 
 ITEM
        }
-#try build a .so, no intermediate .o
-#      @../../make/run-cc.pl \$(CC) -pipe -I../../include \$(FLAGS) -export-dynamic $SHARED -o cmd_$cmd.so
-
-#this works for sure
-#      @../../make/run-cc.pl \$(CC) -pipe -I../../include \$(FLAGS) -export-dynamic -c cmd_$cmd.cpp
-#      @../../make/run-cc.pl \$(CC) -pipe $SHARED -o cmd_$cmd.so cmd_$cmd.o
 }
 
 # Routine to list out the extra/ modules that have been enabled.