                           ShadowIRCd INSTALL Document

   $Id: INSTALL 3384 2007-04-03 22:45:04Z jilles $

   Copyright (c) 2001 by ircd-hybrid team
   Copyright (c) 2002-2004 ircd-ratbox development team
   Copyright (c) 2005-2008 charybdis development team
   Copyright (c) 2010 by ShadowIRCd development team

     ----------------------------------------------------------------------

                                  HOW TO BUILD

   As of hybrid-4, the distribution uses GNU autoconf instead of the old
   Config script. The Makefile has also been updated to include CFLAGS
   defines for popular modern OSes.

   1. 

       Read the NEWS file to find out about the exciting new features in
       this version. Other good reads are doc/example.conf, and
       README.FIRST.

   2. 

       Run the configure script. It will create include/setup.h and the
       Makefiles to match your system. In ircd-ratbox, the paths are now handled
       with the --prefix option to configure, not in config.h.
       $HOME/ircd is the default if no prefix is specified.

       ./configure --prefix="/usr/local/ircd"

         Note: There are some special optional parameters to the configure
         script that some admins may wish to use.

          * 

            --enable-kqueue - Use the superior kqueue(2) system call as
            opposed to the default poll(2). This is currently only available
            on FreeBSD 4.1 or higher.

          * 

            --enable-devpoll - Enable the superior /dev/poll support on
            Solaris. Linux /dev/poll is broken and will not work with this
            option.

          * 

            --enable-epoll - Enable the superior Linux Edge-Triggered Polling
            system. This is currently only available on 2.5 Linux kernel
            versions or later.

          * 

            --enable-openssl - Enable the openssl dependent crypto functions.
            This will allow CHALLENGE to work and encrypted links. On systems
            where the configure script can automatically detect OpenSSL, this
            option is not necessary. If configure cannot find OpenSSL, you
            must specify a path with this option
            (--enable-openssl=/path/to/openssl)

          * 

            --enable-ipv6 - Enable IPv6 support.

          * 

            --disable-assert - Disable some of the debugging code. This
            should be used on all production servers for maximum speed and to
            prevent cores from things that shouldn't normally happen.

          * 

            --enable-small-net - Tunes the server for smaller networks by
            reducing the startup memory footprint. This should really only be
            used for *small* networks, as this tends to be a performance hit
            on larger networks.

          * 

            --with-nicklen=LENGTH - Sets the maximum NICK length. Note that
            this must be consistent across your entire network.
   3. 

       make should build ircd.

   4. 

       make install will install the server, modules, and tools in the
       the prefix specified when configure was run.

   5. 

       If you wish to enable the user log, oper log, and failed oper log,
       issue these commands at the shell prompt (in the prefix directory)

 $ touch logs/userlog
 $ touch logs/operlog
 $ touch logs/foperlog

         Note: If you use different names in ircd.conf, you must 'touch' the
         specific names.

   6. 

       If you are upgrading from Hybrid 5 or Hybrid 6, the config file has
       changed drastically...

       There is a utility to convert your old config file to the new format.
       In prefix/bin there is something called "convertconf". Its usage is:
       ./convertconf (old config file to convert) (converted file name)

       Convertconf will NOT convert I: lines.  You must use "convertilines"
       for this which contains a much superior method of conversion and
       will group I: together under one auth {};.

       Once this is done, move your new config to prefix/etc/ircd.conf and
       EDIT IT! There are still things that need changing in the config,
       including the fact that classes MUST be above auth/connect blocks!

   7. 

       If you are upgrading from Hybrid 5 or Hybrid 6, the kline file has
       also changed...

       There is a utility to convert the old kline configuration file to the
       new format. In prefix/bin there is a program called "convertklines".
       Its usage is: ./convertklines (old kline.conf filename) (new
       kline.conf filename) (dline.conf filename).

       Once this is done, move the new files into the prefix/etc/ directory
       under their proper names. By default, the kline file is named
       kline.conf and the dline file is named dline.conf.

     ----------------------------------------------------------------------

                                HOW TO GET HELP

	The best way to get help regarding bugs and such is by asking on our
	IRC channel which is at irc.thinstack.net #shadowircd . Bugs can also
	be filed on our bugtracker at: 
	
	http://bitbucket.org/uranium/shadowircd/issues/?status=new&status=open

       
     ----------------------------------------------------------------------

                                     NOTES

   The best way to get a backtrace of the core is to follow this sequence of
   instructions:

   1. 

       Change to the directory containing the core file

   2. 

       Run gdb on the binary and the core file. With an unmodified ircd-ratbox
       installation, an example command line is below (in the /usr/local/ircd
       directory)

 $ gdb bin/ircd ircd.core

   3. 

       At the "(gdb)" prompt, enter the command "bt"

   4. 

       Save the output of the backtrace command and send it to
       ircd-ratbox@lists.ratbox.org

   5. 

       Be sure to save the ircd binary, the modules, and the core file in a
       safe place in case the developers need to look deeper than a backtrace
       provides.

     ----------------------------------------------------------------------

                                 OPENSSL NOTES

   Older FreeBSD machines sometimes have the obsolete ports version of
   OpenSSL libcrypto in /usr/local/lib. When configure is used with
   --enable-openssl, and libintl is detected in /usr/local/lib, the
   /usr/local/lib directory will be searched BEFORE the system /usr/lib for
   libraries by the linker. The linker may try to link to the old
   /usr/local/lib libcrypto instead of the system /usr/lib libcrypto. Some
   older versions may cause error messages similar to the following:

 gcc -g -O2 -DIRCD_PREFIX=\"/home/wcampbel/ircd\" -Wl,-export-dynamic
 -L/usr/local/lib -o ircd blalloc.o channel.o vchannel.o class.o client.o
 dline_conf.o event.o fdlist.o fileio.o hash.o irc_string.o ircd.o ircdauth.o
 ircd_signal.o linebuf.o list.o listener.o m_error.o match.o memdebug.o
 modules.o motd.o mtrie_conf.o oldparse.o numeric.o packet.o parse.o res.o rsa.o
 restart.o s_auth.o s_bsd.o s_bsd_kqueue.o s_conf.o s_debug.o s_gline.o s_log.o
 s_misc.o s_serv.o s_stats.o s_user.o scache.o send.o sprintf_irc.o tools.o
 whowas.o lex.yy.o y.tab.o version.o -lintl -ldescrypt  -lcrypto -lfl
 rsa.o: In function `get_randomness':
 /home/wcampbel/dev/ircd-ratbox/src/rsa.c(.text+0x60): undefined reference to
 `RAND_pseudo_bytes'
 /usr/local/lib/libcrypto.so: undefined reference to `ERR_load_RSAREF_strings'
 /usr/local/lib/libcrypto.so: undefined reference to `RSA_PKCS1_RSAref'
 *** Error code 1

   If this is the case, you may need to rerun configure without the
   --enable-openssl option, manually edit src/Makefile and modules/Makefile
   to put -L/usr/lib before the -L/usr/local/lib in LDFLAGS, or remove the
   old OpenSSL from /usr/local, and recompile all applications that use
   libcrypto to use the system one.
