Chapter 2. Compilation and installing

1. What platforms will it compile on?
2. CVS
3. How do I get debug output
4. Patches
5. Using non-default modules
6. New features/modules

1. What platforms will it compile on?

ProFTPD has been reported as compiling and running on Linux, all BSD variants, Solaris and a number of other similar operating systems.

2. CVS

CVS (Concurrent Versions System), is a version control system which allows multiple developers (scattered across the same room or across the world) to maintain a single codebase and keep a record of all changes to the work.

The CVS repository for ProFTPD is available for non-developers in read-only mode, however this code is right on the bleeding edge and is not guaranteed to even compile let alone work. Access to CVS is given to allow important security patches out into the wild and to allow users and interested users to test out the latest changes on real systems.

Nightly tarballs of the current CVS are available on ftp.proftpd.org, these are built at approx 1am UK time.

Recommended ~/.cvsrc settings

cvs -z 3
update -Pd
diff -u
            

Where can I get information on cvs?

CVS is produced by Cyclic Software (http://www.cyclic.com/) and details on CVS can be found on their website. The CVS documentation is clear, detailed and above all heavy when printed. I'd recommend reading it if you're planning on using CVS a lot.

3. How do I get debug output

The easiest way is to fire up proftpd manually from the command line with the debug level cranked up.

/usr/local/sbin/proftpd -d9 -n
            

This will result in maximal debug output direct to the console. Warning, this can get messy on a busy server, for testing I would suggest copying the config and altering the port the server binds to and then testing.

4. Patches

Any patches should be submitted in Universal format, this makes integrating them into the main cvs source a lot easier. When generating a diff against the current cvs source use "cvs diff -uw" to generate the patch.

cvs diff -u filename > filename.patch

  or

cvs diff -u > bigger.patch
            

Patches that add configuration directives without proper documentation. Will be rejected. New features without documentation are less than useless to the community at large.

5. Using non-default modules

Simply configure ProFTPD with

./configure --with-modules=mod_module1:mod_module2:mod_module3
make
make install
            

6. New features/modules

While anything new is welcomed it's probably better to at least float the idea first on the devel mailing list to ensure that someone else isn't already hacking on it. Also when submitting the patch or module for inclusion into the ProFTPD source full documentation is needed.