Next: , Up: Using Serveez   [Contents][Index]


1.1 Building and installing

1.1.1 Rebuild the package from the sources

You can skip this section if you are familiar with the GNU’ish way of configuring, compiling and installing a GNU package.

1.1.1.1 Getting the source

Serveez can be found on https://ftp.gnu.org/gnu/serveez/, on one of the mirrors (https://www.gnu.org/prep/ftp.html) or at its original location http://www.lkcc.org/~ela/download/.

1.1.1.2 Requirements

Serveez needs GNU Guile (Ubiquitous Intelligent Language for Extensions). The current version of Serveez is known to work with Guile 1.3 and later. Guile can be downloaded at https://ftp.gnu.org/gnu/guile/.

When installing Guile, consider specifying to its configure script options along the lines of:

--enable-static --disable-shared
--disable-debug-freelist
--disable-debug-malloc
--disable-guile-debug
--disable-arrays --disable-posix
--enable-networking --disable-regex
--without-threads --enable-ltdl-convenience

This option set is tuned for Guile 1.4 and may or may not work for your particular installation; you may need to experiment a bit. Most important is that the program ‘guile-config’ be findable in a directory named in the PATH environment variable. If not, configuration will fail with message “Guile not found”.

1.1.1.3 Installation

Unpack the distribution tarball:
sleepless ~> gzip -cd serveez-0.3.1.tar.gz | tar xvf -
Change into the source directory:
sleepless ~> cd serveez-0.3.1
Configure the source package for your system:

Normally, this is done by running the configure script in the top-level directory. GNU Serveez needs a reasonably conformant C99 compiler to build. If the configure script is not able to automatically find and enable such a compiler, you can specify it directly using the ‘CC’ command-line option. For example:

sleepless ~> ./configure --prefix /gnu CC='/gnu/bin/gcc'

Note that in this example you can achieve the same results by making sure /gnu/bin is in the PATH env var.

In previous Serveez releases, the configure script had some builtin compiler flags for warnings and optimizations, conveniently exposed via command-line options. These are no longer available; instead, you can use CFLAGS for such purposes (see below). Here is a complete list of the configure script options. The list of known options can the obtained via ‘./configure --help’.

--enable-debug

All of the debug messages (debug: some annoying crap text) can be suppressed by setting the debug level (-v). If you do not want these messages built in at all then disable this feature.

--enable-control-proto

If you enable this feature the control protocol will be supported by Serveez. This protocol is for remote control of the server.

--enable-irc-proto

Enabling this feature tells the software package to support the IRC (Internet Relay Chat) protocol.

--enable-irc-ts

This feature is only available if you enabled the IRC protocol. If you enabled both of them then Serveez will support the so called TimeStamp protocol, which is an EFNet extension of the original IRC protocol. In order to connect to EFNet you MUST use this option.

--enable-http-proto

When using Serveez as part of the textSure (C) chat system you will will have need of an additional web server. This option makes Serveez support a simple HTTP protocol.

--enable-flood

If you enable this feature Serveez will support a simple built-in flood protection. It is always useful to protect the software from flood clients.

--with-mingw=DIR

When compiling under M$-Windows the DIR argument specifies the path to the extra MinGW32 library and header files. If you want the final executable to use the Cygwin project’s cygwin1.dll instead, you have to disable this option by passing the configure script ‘--without-mingw’ or ‘--with-mingw=no’.

--enable-sntp-proto

This option enables support for a simple network time protocol server.

--enable-poll

If the target system supports poll and this feature is enabled the main file descriptor loop is done via poll. This helps to work around the (g)libc’s file descriptor limit. Otherwise Serveez always falls back to the select system call.

--enable-sendfile

This option enables the use of the sendfile system call. Disabling it using ‘--disable-sendfile’ provides a work-around for bogus implementations of sendfile.

--enable-gnutella

If you do *not* want the Gnutella spider client compiled in you need to *disable* this option.

--enable-crypt

This option tells Serveez to process any passwords as crypted.

--enable-tunnel

If you enable this feature the port forwarder will be included. This is useful if you plan to use Serveez as a gateway or firewall workaround.

--enable-fakeident

By enabling this you will get a fake ident server included in the binary executable.

--enable-guile-server

If you enable this feature the user is able to write servers using Guile.

--enable-passthrough

This includes the program passthrough server in the Serveez binary. The server provides basic inetd functionality.

--enable-iflist

If Serveez is unable to detect the correct list of local network interfaces (‘serveez -i’) you can disable this option and setup them manually in the configuration file.

--enable-heap-count

This option depends on ‘--enable-debug’. With the debugging option disabled there is also no support for heap counters. The heap counters are used to detect memory leaks in Serveez.

--enable-libserveez-install

This causes ‘make install’ to also copy libserveez and its header files to $(libdir) and $(includedir), respectively. While Serveez is in alpha (version less than ‘0.8.0’), this option is disabled by default.

For maximum flexibility and reproducibility, we recommend enabling warnings and optimizations specifying CFLAGS as a command-line option to the configure script. For reference, here is the collected set of flags built into previous Serveez releases:

(warnings)
  -W -fullwarn -pedantic -ansi
  -Wall -Wcast-align -Wstrict-prototypes
  -Wformat -Wno-unused -Wno-long-long

(optimizations)
  -O2 -fomit-frame-pointer -fstrength-reduce
  -funroll-loops -finline-functions
  -fexpensive-optimizations -fcaller-saves
  -frerun-loop-opt -foptimize-register-move
  -ffunction-cse -fpeephole -momit-leaf-frame-pointer
  -fschedule-insns2 -m486 -march=pentiumpro -O3

Note that not all flags may be compatible with your compiler or even each other. That’s one of the reasons we no longer take this approach. See Defining Variables in The Autoconf Manual.

sleepless ~/serveez-0.3.1> ./configure \
  CFLAGS='-g -O3 -Wall -Wextra'
Now compile the package:
sleepless ~/serveez-0.3.1> make
Install serveez:

You must have root privileges if you want to install the package in the standard location /usr/local or in any location that is only writable by root.

sleepless ~/serveez-0.3.1> make install

If you have problems building the package out of the box this is due to GNU libtool’s inability to handle dynamic linking in most cases. That is why we recommend to try to configure the package with ‘--disable-shared’.


Next: Environment variables, Up: Using Serveez   [Contents][Index]