$Id: INSTALL 1017 2012-10-14 14:22:51Z varenet $ If you are upgrading from a previous version, read the UPGRADING file! This module is pure C and works with Apache 1.3 and Apache 2 The autotools will automatically detect what is available on your system, but here is the list of the supported audio codecs so far, with the dependencies to enable them (Debian packages names are given as references) : - For audio codecs: * Ogg Bitstream Library Development (libogg-dev) * Vorbis Library Development (libvorbis-dev) * ID3 tag reading library from the MAD project (libid3tag0-dev) * MPEG audio decoder development library (libmad0-dev) * Free Lossless Audio Codec - C development library (libflac-dev) * Library to read, create, and modify mp4 files (libmp4v2-dev) - For archive support: * The libarchive library (libarchive-dev) - For mysql cache backend support: * MySQL database development files (libmysqlclient-dev) AND - If you build for Apache 1.3: * Apache webserver development kit (apache-dev) - If you build for Apache 2: * Development headers for apache2 (apache2-dev) * The Apache Portable Runtime Library (libapr1-dev) By default, the module will enable support for all codecs and backends, with respect to the libraries installed on your system. You can change that and other settings by using the following configure flags: * --disable-mp3 To disable MP3 support (libmad0-dev, libid3tag0-dev) (*) * --disable-vorbis To disable Ogg Vorbis support (libogg-dev, libvorbis-dev) * --disable-flac To disable FLAC support (libflac-dev) * --disable-mp4 To disable MP4 support (libmp4v2) * --disable-filecache To disable flat file cache system * --disable-mysqlcache To disable mysql cache system (libmysqlclient-dev) By default, the module will be built for the version of Apache hinted by apxs. You can set the apxs tool to be used with the following configure option: --with-apxs=/path/to/apxs A few words about performance: If you are going to use mod_musicindex on a very busy server with lots of music, there are a few things that you can tweak to improve performance: - First, only build the codecs that you /really/ need. This will avoid unnecessary lookups on new files. - PRETTY_FOLDERS: if disabled (using negative MusicDirPerLine), the "stream, shuffle, download" icons located under the directories names in the listing will no longer be displayed (but of course those under the main directory name in the header banner will still remain), as enabling these icons has a major impact on performance. To give you an idea, on a g4@500Mhz, browsing a directory containing 350 subdirectories and 0 file with this option enabled takes ~30s, and only about 3s when it's disabled. That's a 10 to 1 ratio! So if you have directories with a great number of subdirectories, consider disabling it. NB: if you build the module without certain filetype supports, and then rebuild it again with added filetype supports, the cache might become corrupted: while running without e.g. MP4 support, any folder containing MP4 data will be recorded in the cache without the MP4 files and will be marked in cache as "up to date". The module has no way to keep track of which filetypes were or were not supported when the cache was created (at least not for now). To install, 'make install', then edit your apache config and reload the server. The Makefile will install the various web-related files (css file, icons) in /usr/share/mod_musicindex. You should then add an alias or copy this directory to your document root, depending on whether you wish to modify them or not. See the configuration section in the README file. Enjoy! Known supported OSes: * GNU/Linux * FreeBSD (port available) * OpenBSD (port available) * NetBSD * MacOS X * Solaris If you have successfully used mod_musicindex with an OS not mentionned here, please report to musicindex@slashdirt.org, with "mod_musicindex" in the subject field. (*) Note: There's an outstanding bug in libid3tag that will create an infinite loop that will itself eat all available memory. This bug is fixed in the Debian package, using the following patch from Kurt Roeckx : diff -urNad libid3tag-0.15.1b/utf16.c /tmp/dpep.tKvO7a/libid3tag-0.15.1b/utf16.c --- libid3tag-0.15.1b/utf16.c 2006-01-13 15:26:29.000000000 +0100 +++ libid3tag-0.15.1b/utf16.c 2006-01-13 15:27:19.000000000 +0100 @@ -282,5 +282,18 @@ free(utf16); + if (end == *ptr && length % 2 != 0) + { + /* We were called with a bogus length. It should always + * be an even number. We can deal with this in a few ways: + * - Always give an error. + * - Try and parse as much as we can and + * - return an error if we're called again when we + * already tried to parse everything we can. + * - tell that we parsed it, which is what we do here. + */ + (*ptr)++; + } + return ucs4; }