HowTo:Build the iFolder Client
From iFolder
| Table of contents |
Linux Client Prerequisites
Mono 1.1.7 - http://www.go-mono.com
gtk-sharp 1.0.8 - http://www.go-mono.com
You also need a uuid package. On SuSE and Fedora distros it's located in the e2fsprogs and e2fsprogs-devel packages.
Macintosh Client Prerequisites
Macintosh OS X 10.4 (Tiger)
Xcode 2.1 - http://developer.apple.com
Mono 1.1.7 - http://www.go-mono.com
Windows Client Prerequisites
Microsoft Visual Studio .NET 2003 - msdn.microsoft.com/vstudio
Cygwin - HOWTO:Set up cygwin
Getting the Source Code
You can get the source code one of two ways. You can checkout the source directly from our CVS repository on the Novell Forge site. For information on using CVS with Forge, look here:
http://forge.novell.com/modules/xfmod/cvs/cvspage.php/ifolder/
You can also download snapshots of the code from the iFolder website. This is a link directly to the location of our daily builds:
http://ftp.novell.com/pub/forge/ifolder/client/daily/
Click the date of the snapshot you want to build, then click on source and you will be presented with a list of cvs module snapshots that make up the iFolder Client.
Update: CVS repositories has been migrated to SVN. Complete instructions are availabe here.
CVS Modules
iFolder consists of two major modules, "simias" and "ifolder". At a minimum, you will need to checkout both the simias and ifolder modules in order to build and run iFolder.
The "simias" module is what provides about 90% of the iFolder functionality. Things like sync, sharing, encryption, notification, and the overall data store for iFolder are all implemented in Simias. Simias is all written in C# with the exception of a couple of support libraries. Simias was built to be a generic collaboration platform on which many collaborative solutions could be built.
The "ifolder" module contains all of the Client GUI code plus some SOAP interfaces into Simias and is what distinguishes iFolder from the rest of the information contained in Simias. In fact, Simias doesn't know anything about iFolders. To Simias, an iFolder is a "Collection" of data and is treated just like any other collection of data. It's the iFolder module that distinguishes iFolders from other Collections in Simias and presents the product view that is iFolder.
To get Bonjour support in the client and enable Peer-to-Peer functionality, you will also need to get the "bonjour" module.
The "bonjour" module will add p2p (peer-to-peer) abilities to the iFolder client. Using the bonjour module, the client can operate and sync with other clients without the need of a server. This module is not included in the standard iFolder Client builds. See the HowTo:Enable P2P using Bonjour or the Adding-Bonjour-HOWTO.txt for more information on Bonjour.
Dependencies and the configure process
The iFolder build system uses the auto-tools (autogen, automake, libtool, etc.) to setup the build environment for the platform you are building on. It also uses pkgconfig (Package Config) to determine if your machine contains the needed libraries and tools to properly build iFolder on the current platform. Part of the dependencies is a dependency between the ifolder module and the simias module. The simias module must be configured, compiled, and installed before you can build the ifolder module. The easiest way to do this is to configure simias and ifolder the same way. A standard way to build the entire iFolder client is checkout both simias and ifolder in the same folder. The result should be a folder that contains two subfolders named simias and ifolder. To build the simias module, change folders into the simias folder and type:
./configure --prefix=<the full path where you want to install iFolder>
If you do not specify the prefix, iFolder will default to /usr/local which is NOT recommended. If my home directory were located in /home/calvin and I wanted to install iFolder into the folder "testifolder" in my home directory I would use the command:
./configure --prefix=/home/calvin/testifolder
If you are working with files directly from CVS and not from the tarball, you'll need to run autogen.sh instead of configure. That will generate a configure script and run it like this:
./autogen.sh --prefix=/home/calvin/testifolder
The recommended build pattern is to configure both ifolder and simias to the same prefix. If for some reason (that we don't want to hear about) you want or need to use a different prefix, you'll need to set your PKG_CONFIG_PATH environment variable to be able to resolve the simias dependency in iFolder. For the example used above where the prefix was set to /home/calvin/testifolder, the PKG_CONFIG_PATH would be set as follows:
export PKG_CONFIG_PATH=/home/calvin/testifolder/lib/pkgconfig
NOTE: Our make install target is a little strange right now so pick your prefix wisely. Read the next session to learn about how and where ifolder and simias are going to copy files.
Make and install
The iFolder build system includes an "install" target that will install the ifolder and simias modules into the prefix you have specified. The ifolder and simias modules will create and use the following directories when the install make target is used:
$prefix/etc $prefix/lib $prefix/web $prefix/bin $prefix/include $prefix/share $prefix/Applications (Macintosh Only)
As you can see, selecting a prefix of /usr could cause some serious contamination of your system. We realize this is a problem and will be changing the build system to address this some time soon.
To build simias and install simias, go to the root of the simias module and type:
make install
To build and install ifolder, go to the root of the ifolder module and type:
make install
Linux Client Notes
To start the iFolder client, run the following with your configured $prefix substituted:
$prefix/bin/ifolder
The Linux client also has a Gnome Nautilus plugin that can be built and installed. That is not covered here but will be added to another document sometime in the future and a link placed here.
Macintosh Client Notes
After you have run configure and make install, there will be an "iFolder 3.app" bundle in your $prefix/Applications folder. Running this executable will start iFolder and you are ready to start using iFolder.
Windows Client Notes
-- To be added
