iFolderPackaging

Page to track the work done @ FreeCode to build iFolder in a sane way under Ubuntu. Later, packaging iFolder for debian/ubuntu should be trivial.

Questions? Contact Rubén Romero or Egil Möller

General info about Mono/.NET

.NET libraries are DRMish signed. To create a keypair or sign a library you're supposed to use the sn.exe utility, that crashes. Libraries can also be signed after compilation using http://www.eggheadcafe.com/community/aspnet/2/10011514/strong-name.aspx but you still need a keypair (somefile.snk) to do that. Go to a windows machien and get it done Sad :(

iFolder 3.7

To build 3.7 by hand

Note: Ruibon has packaged the 3.7 server the cludgy way, with all deps as binary blobs in the source! Ick!

There is a page about compiling iFolder on Ubuntu, which describes a very much simplified process that doesn't really work. However, it's a good starting point: https://help.ubuntu.com/community/iFolderEnterpriseServer

Building the server

Extra build-deps:

apt-get install build-essential autoconf automake libtool
apt-get install libmono-system-data2.0-cil libmono-security2.0-cil libmono-system-web2.0-cil libmono-system-runtime2.0-cil gsoap liblog4net1.2-cil libmono-ldap2.0-cil libflaim-dev uuid-dev libxml2-dev libmono-winforms2.0-cil

Run deps:

apt-get install libapache2-mod-mono mono-apache-server2

About different compiler versions for mono. Environment.OSVersion.Platform values fix according to http://lists.ximian.com/pipermail/mono-list/2005-May/026892.html

svn co https://forgesvn1.novell.com/svn/simias/trunk simias
cd simias
cp src/core/SimiasClient/Makefile.am src/core/SimiasClient/Makefile.am.orig
grep -v "wsdl1 -nologo -out:SimiasService.c" src/core/SimiasClient/Makefile.am.orig | sed -e "s+wsdl -nologo -out:SimiasService2.cs+wsdl2 -nologo -out:SimiasService2.cs+g" > src/core/SimiasClient/Makefile.am
sed -i -e "s+\$(GSOAP_PATH)/wsdl2h+wsdl2h+g" -e "s+\$(GSOAP_PATH)/soapcpp2+soapcpp2+g" -e "s+\$(GSOAP_PATH)/stdsoap2.c+/usr/include/gsoap/stdsoap2.c+g" -e "s+\$(GSOAP_PATH)/stdsoap2.h+/usr/include/stdsoap2.h+g" src/core/libsimias/Makefile.am
sed -i -e "s+MONO_WEBSERVER_PATH = dependencies/external/Mono.WebServer+MONO_WEBSERVER_PATH = /usr/lib/mono/2.0+g" -e "s+Mono.WebServer.dll+Mono.WebServer2.dll+g" src/core/SimiasApp/Makefile.am
grep -l "MONO_PATH=@webbindir@:@bindir@" $(find . -name "*.in") | while read name; do sed -i -e "s+MONO_PATH=@webbindir@:@bindir@+MONO_PATH=@webbindir@:/usr/lib/mono/2.0+g" $name; done
grep -l "MONO_PATH=@_webbindir_@:@_bindir_@" $(find . -name "*.in") | while read name; do sed -i -e "s+MONO_PATH=@_webbindir_@:@_bindir_@+MONO_PATH=@_webbindir_@:/usr/lib/mono/2.0+g" $name; done
sed -i -e "s+AC_CHECK_PROG(RESGEN, resgen, resgen)+AC_CHECK_PROG(RESGEN, resgen, resgen, resgen2)+g" configure.in
sed -i -e "s+webPath =( MachineArch+string webPath =( MachineArch+g" src/server/setup/SimiasServerSetup.cs
sed -i -e "s+((int)Environment.OSVersion.Platform == 128)+(((int)Environment.OSVersion.Platform == 128) || ((int)Environment.OSVersion.Platform == 4))+g" src/core/SimiasClient/MyEnvironment.cs
export CSC_LIBFLAG="/target:library"
export WSDL=wsdl2
export CSC2="gmcs2 /d:MONO /d:MONONATIVE"
export CSC="gmcs2 /d:MONO /d:MONONATIVE"
export MONO=mono
./autogen.sh --prefix=/usr
make
sudo make install

Installing the server

cd /usr/bin; ln -s gmcs2 gmcs # Needed to avoid http://lists.ximian.com/pipermail/mono-bugs/2008-October/080532.html
mkdir -p /var/www/.config/.mono/keystore
chown -R www-data:www-data /var/www/.config
cp /usr/etc/simias/apache/default/ifolder_* /etc/apache2/conf.d
emacs /etc/apache2/conf.d/ifolder* /etc/apache2/conf.d/simias*

Note: IFolder 3.7 only works with HTTPS. Warning: The error message shown in the client if you don't use SSL is very cryptic.

Building the client by hand

Extra build-deps:

simias libgtk2.0-dev

svn co https://forgesvn1.novell.com/svn/ifolder/trunk ifolder
cd ifolder/ifolder
sed -i -e "s+\$(GSOAP_PATH)/wsdl2h+wsdl2h+g" -e "s+\$(GSOAP_PATH)/soapcpp2+soapcpp2+g" -e "s+\$(GSOAP_PATH)/stdsoap2.c+/usr/include/gsoap/stdsoap2.c+g" -e "s+\$(GSOAP_PATH)/stdsoap2.h+/usr/include/stdsoap2.h+g" src/common/libifolder/Makefile.am
sed -i -e "s+mcs+\$(CSC)+g" src/UI/Linux/TrayIcon/Makefile.am
sed -i -e "s+\(# Configure files\)+AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt)\n\1+g" configure.in
msguniq --use-first src/UI/Linux/LinuxClient/po/en.po > src/UI/Linux/LinuxClient/po/en.po.new; mv src/UI/Linux/LinuxClient/po/en.po.new src/UI/Linux/LinuxClient/po/en.po
export CSC_LIBFLAG="/target:library"
export WSDL=wsdl2
export CSC2="gmcs2 /d:MONO /d:MONONATIVE"
export CSC="gmcs2 /d:MONO /d:MONONATIVE"
export MONO=mono
./autogen.sh --prefix=/usr
make
sudo make install

Installing the client

Dependencies:

apt-get install libeel2-2

Building dependencies

Not really needed, as all seems to be packaged already, but this one wasn't in my old Ubuntu, so I compiled it by hand:

Building CsharpLDAP by hand

Building: The URL is snarfed from http://forge.novell.com/modules/xfcontent/file.php/ldapcsharp/ldapcsharp/CsharpLDAP-v2.1.10/CsharpLDAP-v2.1.10.zip

wget http://forge.novell.com/modules/xfcontent/private.php/ldapcsharp/ldapcsharp/CsharpLDAP-v2.1.10/CsharpLDAP-v2.1.10.zip
unzip CsharpLDAP-v2.1.10.zip
cd CsharpLDAP
mv Novell.Directory.LDAP Novell.Directory.Ldap
recode text/crlf..text build.sh 
recode text/crlf..text Novell.Directory.Ldap/Novell.Directory.Ldap.Utilclass/ResultCodeMessages.txt
sed -e 's+\\"+"+g' -i Novell.Directory.Ldap/Novell.Directory.Ldap.Utilclass/ResultCodeMessages.txt
recode text/crlf..text Novell.Directory.Ldap/Novell.Directory.Ldap.Utilclass/ExceptionMessages.txt
sed -e 's+\\"+"+g' -i Novell.Directory.Ldap/Novell.Directory.Ldap.Utilclass/ExceptionMessages.txt
sed -i -e "s+assembly: AssemblyDelaySign(false)+assembly: AssemblyKeyFile("Novell.Directory.Ldap.snk")+g"  Novell.Directory.Ldap/Novell.Directory.Ldap/AssemblyInfo.cs
sed -i -e "s+^mcs+gmcs2+g" -e "s+which mcs+which gmcs2+g" -e "s+resgen+resgen2+g" build.sh
chmod ugo+x ./build.sh

Copy your .snk keypair file into lib/Novell.Directory.Ldap.snk. If you have no other, you can use ifolder.snk. Then continue building

./build.sh

Installing:

sudo cp lib/Novell.Directory.Ldap.dll /usr/lib/mono/2.0/
sudo gacutil /i lib/Novell.Directory.Ldap.dll

iFolder 3.6

Rui Boon made a package for this. Awesome work man!

To install Ruibons 3.6 version

This package and PPA repository works for Ubuntu 8.04 LTS Hardy Heron under x86. No 64 bit support!

  • sources.list:

deb http://ppa.launchpad.net/ruiboon/ubuntu hardy main
deb-src http://ppa.launchpad.net/ruiboon/ubuntu hardy main

Server

apt-get install mono-apache-server libapache2-mod-mono simias ifolder3 libsimias0 libsimias-dev
mkdir /var/www/.config/.mono/keypairs/
chown www-data:www-data /var/www/.config/.mono/keypairs/
simias-server-setup
chown www-data:www-data /home/srv/simias -R

To set up webaccess and admin web:

cd /etc/apache2/conf.d
cat simias.conf
rm simias.conf
cp /etc/simias/apache/default/* .
emacs simias* ifolder*

NOTE: Don't set cn=admin as SIMIAS admin!!! Simias admin and SimiasProxy should be new (previously unexistend) users.

Client

apt-get install ifolder3 mono-xsp

You also need to install the build deps as Ruibon has forgotten some deps somewhere along the path...

apt-get build-dep simias ifolder3

iFolderPackaging (last edited 2011-05-13 13:47:13 by business-89-133-214-82)