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. Getting the source

Serveez can be found on, on one of the mirrors ( or at its original location 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

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

--enable-static --disable-shared
--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”. Installation

Unpack the distribution tarball:
sleepless ~> gzip -cd serveez-0.2.2.tar.gz | tar xvf -
Change into the source directory:
sleepless ~> cd serveez-0.2.2
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’.


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.


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


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


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.


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.


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.


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’.


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


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.


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


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


This option tells Serveez to process any passwords as crypted.


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.


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


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


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


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.


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.


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:

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

  -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.2.2> ./configure \
  CFLAGS='-g -O3 -Wall -Wextra'
Now compile the package:
sleepless ~/serveez-0.2.2> 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.2.2> 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: , Up: Using Serveez   [Contents][Index]