#!/bin/sh

[ `id -u` = 0 ] || { echo "must be root"; exit 1; }

export CFLAGS="-march=i486 -mtune=i686 -Os -pipe"
export CXXFLAGS="-march=i486 -mtune=i686 -Os -pipe -fno-exceptions -fno-rtti"
export CPPFLAGS="-I/usr/local/include"
export LDFLAGS="-L/usr/local/lib"
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

TODAY=`date +%Y/%m/%d`
PACKAGE="pidgin"
SEP="-"
VERSION="2.6.6"
MIRROR="http://downloads.sourceforge.net/project/pidgin/Pidgin/$VERSION/"
DESCRIPTION="A multi-protocol instant messaging (IM) client"
AUTHORS="Sean Egan"
HOMEPAGE="http://pidgin.im/"
LICENSE="GPL"
ME="jls_legalize (unsenepopiu at tin dot it)"
DEPS="atk.tcz \
bzip2-lib.tcz \
cairo.tcz \
dbus-glib.tcz \
dbus.tcz \
expat2.tcz \
faad.tcz \
farsight2.tcz \
flac.tcz \
fontconfig.tcz \
GConf.tcz \
glib2.tcz \
gnutls.tcz \
graphics-libs-1.tcz \
gst-plugins-bad.tcz \
gst-plugins-base.tcz \
gst-plugins-good.tcz \
gstreamer.tcz \
gtk2.tcz \
libasound.tcz \
libcdaudio.tcz \
libcroco.tcz \
libdca.tcz \
libdvdnav.tcz \
libdvdread.tcz \
libgcrypt.tcz \
libglade.tcz \
libgpg-error.tcz \
libgsf.tcz \
libIDL.tcz \
libmad.tcz \
libnice.tcz \
liboil.tcz \
librsvg.tcz \
libsoup.tcz \
libtheora.tcz \
libxml2.tcz \
nss-nspr.tcz \
ogg-vorbis.tcz \
openssl-0.9.8h.tcz \
ORBit2.tcz \
pango.tcz \
pixman.tcz \
SDL.tcz \
shared-mime-info.tcz \
sqlite3.tcz \
taglib.tcz \
Xlibs_support.tcz"
BUILDDEPS="compiletc.tcz squashfs-tools-4.0.tcz intltool-0.40.5.tcz gettext.tcz perl5.tcz perl_xml_parser.tcz libnice-dev.tcz farsight2-dev.tcz expat2.tcz glib2-dev.tcz glib2-dev.tcz Xorg-7.4-dev.tcz atk.tcz atk-dev.tcz cairo.tcz cairo-dev.tcz glib2.tcz fontconfig.tcz fontconfig-dev.tcz expat2.tcz expat2-dev.tcz libxml2.tcz libxml2-dev.tcz graphics-libs-1.tcz graphics-libs-1-dev.tcz gtk2-dev.tcz pixman.tcz pixman-dev.tcz pango.tcz pango-dev.tcz GConf.tcz nss-nspr-dev.tcz libiconv.tcz"
FLAGS="--prefix=/usr/local --disable-startup-notification --disable-gtkspell --disable-idn --disable-meanwhile --disable-avahi --disable-dbus --disable-tcl --disable-perl"
DOCS=""


TCUSER=`cat /etc/sysconfig/tcuser`
SRC="${PACKAGE}${SEP}${VERSION}.tar.bz2"
THISDIR=`pwd`
PKGDIR="${THISDIR}/${PACKAGE}"
SRCDIR="${PKGDIR}/${PACKAGE}${SEP}${VERSION}"

clean(){
	rm -rf ${THISDIR}/${PACKAGE}
}
environment(){
	TCEDIR="$(cat /opt/.tce_dir)"
	for each in ${DEPS} ${BUILDDEPS}; do
		if [ -e ${TCEDIR}/optional/${each} ]; then
			sudo -u ${TCUSER} tce-load -i ${TCEDIR}/optional/${each}
		else
			sudo -u ${TCUSER} tce-load -w -i ${each}
		fi
	done
	[ -d "${PKGDIR}" ] && rm -rf ${PKGDIR}
	mkdir -p ${PKGDIR}/tmp
	cd ${PKGDIR} && wget ${MIRROR}${SRC}
	tar xzf ${SRC}
}

buildit(){
	cd ${SRCDIR}
	./configure ${FLAGS}
	ln -s /usr/local/include/nspr/* /usr/local/include
	ln -s /usr/local/include/nss/* /usr/local/include
	make
	touch /tmp/mark
	make DESTDIR=${PKGDIR}/tmp install
}

workit(){
	if [ "`ls -A ${PKGDIR}/tmp`" ]; then
		rm /tmp/mark
	else
	cd /
	find usr/ -newer /tmp/mark -not -type d > /tmp/${PACKAGE}.list
		tar czO -T /tmp/${PACKAGE}.list | tar xzf - -C ${PKGDIR}/tmp
		rm /tmp/${PACKAGE}.list
	fi

	cd ${PKGDIR}/tmp
	rm -rf ${DOCS}

	mkdir -p usr/local/share/doc/License
	cp ${SRCDIR}/COPYING usr/local/share/doc/License/${PACKAGE}.txt

	find usr/ | xargs file | grep "executable" | grep ELF | grep "not stripped" | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
	find usr/ | xargs file | grep "shared object" | grep ELF | grep "not stripped" | cut -f 1 -d : | xargs strip -g 2> /dev/null

	cat <<EOF> usr/local/bin/${PACKAGE}-start
#!/bin/sh
if [ -e /usr/local/tce.installed/libv4l ]; then
	LD_PRELOAD=/usr/local/lib/libv4l/v4l1compat.so ${PACKAGE} &
else
	${PACKAGE} &
fi
EOF
	chmod 775 usr/local/bin/${PACKAGE}-start
	#mkdir -pm 775 usr/local/tce.installed
	#cat <<EOF> usr/local/tce.install/${PACKAGE}
##!/bin/sh

#EOF
	#   chmod 775 usr/local/tce.installed/${PACKAGE}

	mkdir -pm 775 usr/local/tce.menu
	cat <<EOF> usr/local/tce.menu/${PACKAGE}
<JWM>
  <Program label="$PACKAGE">$PACKAGE-start</Program>
</JWM>
EOF
	chmod 644 usr/local/tce.menu/${PACKAGE}

	mkdir -pm 775 usr/local/tce.icons
	cp ${SRCDIR}/${PACKAGE}/pixmaps/icons/hicolor/48x48/apps/$PACKAGE.png usr/local/tce.icons/
	cat <<EOF> usr/local/tce.icons/${PACKAGE}
i: /usr/local/tce.icons/$PACKAGE.png
t: $PACKAGE
c: $PACKAGE-start
EOF
	chmod 644 usr/local/tce.icons/*

	#dont clobber tc setup
	chown -R root:staff usr/local/tce.*

	#package specific stuff
	#locale
	mkdir -p ../locale/usr/local/share/locale
	mv usr/local/share/locale ../locale/usr/local/share
	
	#dev
	for I in $(find `ls` -name *.h); do 
		export DIR=`dirname "$I"`; 
		[ -d ../dev/"$DIR" ] || mkdir -p ../dev/"$DIR"; 
		mv "$I" ../dev/"$DIR"/; 
	done

	for I in $(find `ls` -name *.a); do 
		export DIR=`dirname "$I"`; 
		[ -d ../dev/"$DIR" ] || mkdir -p ../dev/"$DIR"; 
		mv "$I" ../dev/"$DIR"/; 
	done

	for I in $(find `ls` -name *.la); do 
		export DIR=`dirname "$I"`; 
		[ -d ../dev/"$DIR" ] || mkdir -p ../dev/"$DIR"; 
		mv "$I" ../dev/"$DIR"/; 
	done
	
	for I in $(find `ls` -name *.pc); do 
		export DIR=`dirname "$I"`; 
		[ -d ../dev/"$DIR" ] || mkdir -p ../dev/"$DIR"; 
		mv "$I" ../dev/"$DIR"/; 
	done
}

packageit(){
   cd ${PKGDIR}/tmp
   for dir in `ls -A`; do
      find ${dir} -not -type d | sort >> ../${PACKAGE}.tcz.list
   done

   mksquashfs . ../${PACKAGE}.tcz

   cd ${PKGDIR}
   md5sum ${PACKAGE}.tcz > ${PACKAGE}.tcz.md5.txt

   for each in ${DEPS}; do echo ${each} >> ${PACKAGE}.tcz.dep; done

   size=`du -h ${PACKAGE}.tcz | cut -f 1`

cat <<EOF> ${PACKAGE}.tcz.info
Title:		${PACKAGE}.tcz
Description:	${DESCRIPTION}
Version:	${VERSION}
Author:		${AUTHORS}
Original-site:	${HOMEPAGE}
Copying-policy:	${LICENSE}
Size:		${size}
Extension_by:	${ME}
Comments:	voice & video work but don't use the audio & video call menu item,
			use audio call and video call menu items.
			The program is launched with LDPRELOAD... if libv4l is installed
			
				
		This extension is PPI compatible
Change-log:	2009/04/28 First Version by Róbinson J. Araújo
			2009/11/28 updated to 2.6.3
			2009/11/30 updated to 2.6.4
			2010/01/12 updated to 2.6.5
			2010/02/13 recompiled with voice & video support
Current:	${TODAY} updated to 2.6.6
EOF

   #locale
   cd ${PKGDIR}/locale
   for dir in `ls -A`; do
      find ${dir} -not -type d | sort >> ../${PACKAGE}-locale.tcz.list
   done

   mksquashfs . ../${PACKAGE}-locale.tcz

   cd ${PKGDIR}
   md5sum ${PACKAGE}-locale.tcz > ${PACKAGE}-locale.tcz.md5.txt

   for each in ${DEPS}; do echo ${each} >> ${PACKAGE}-locale.tcz.dep; done
   echo ${PACKAGE}.tcz >> ${PACKAGE}-locale.tcz.dep
   
   size=`du -h ${PACKAGE}-locale.tcz | cut -f 1`

   cat <<EOF> ${PACKAGE}-locale.tcz.info
Title:		${PACKAGE}-locale.tcz
Description:	${DESCRIPTION} locale files
Version:	${VERSION}
Author:		${AUTHORS}
Original-site:	${HOMEPAGE}
Copying-policy:	${LICENSE}
Size:		${size}
Extension_by:	${ME}
Comments:	locale files
				
		This extension is PPI compatible
Change-log:	2009/04/28 First Version by Róbinson J. Araújo
			2009/11/28 updated to 2.6.3
			2009/11/30 updated to 2.6.4
			2010/01/12 updated to 2.6.5
			2010/02/13 recompiled with voice & video support
Current:	${TODAY} updated to 2.6.6
EOF

   #dev
   cd ${PKGDIR}/dev
   for dir in `ls -A`; do
      find ${dir} -not -type d | sort >> ../${PACKAGE}-dev.tcz.list
   done

   mksquashfs . ../${PACKAGE}-dev.tcz

   cd ${PKGDIR}
   md5sum ${PACKAGE}-dev.tcz > ${PACKAGE}-dev.tcz.md5.txt

   size=`du -h ${PACKAGE}-dev.tcz | cut -f 1`

   cat <<EOF> ${PACKAGE}-dev.tcz.info
Title:		${PACKAGE}-dev.tcz
Description:	${DESCRIPTION} dev files
Version:	${VERSION}
Author:		${AUTHORS}
Original-site:	${HOMEPAGE}
Copying-policy:	${LICENSE}
Size:		${size}
Extension_by:	${ME}
Comments:	dev files
				
		This extension is PPI compatible
Change-log:	2009/04/28 First Version by Róbinson J. Araújo
			2009/11/28 updated to 2.6.3
			2009/11/30 updated to 2.6.4
			2010/01/12 updated to 2.6.5
			2010/02/13 recompiled with voice & video support
Current:	${TODAY} updated to 2.6.6
EOF
}
	
#here we go
clean
environment
buildit
workit
packageit
