[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

how to build the libs for the GTK fe



Hi,
I started working on the documentation we discussed during the meeting
on #debian-boot; here's a minimum set of instructions that you can use
to build everything.  I'm sure this is enough for experienced people,
so it probably makes sense to post this asap so everybody can get
ready to try Frans' script as soon as it's ready. I never used the
wiki page, so when I tried to past this in the DebianInstallerGUIBuild
I created, the result was a disaster. Please review it and poin out
mistakes/things which need to explain better

ciao,
Davide



====================

Goal
----
We basically want to build gtk+-directfb wich is gtk+ with gdk-directfb
backend; once available we'll use it to compile gtk.so.

To determine the set of libraries necessary to build gtk+-directfb and
gtk.so I set up a minimal sid chroot and started grabbing libs until
directfb stopped complaining about missing dependencies: this means
that it might not be necessary to really rebuild everything in case
some of the libs are already installed on your system, but I'll cover
the worst case.

Here are the needed ingredients:

DirectFB
atk
cairodfb
gdk-directfb
glib
gtk+
libic
libpixregion
pango
slim

Since gdk-directfb is not part of the standard gtk+ tree, we'll have
to patch gtk+ with a compatible version of gdk-directfb.
At the time of this writing, the last version of gdk-directfb is declared
compatible with gtk+_2.7.2, so we want to build gtk+_2.7.2-directfb even
if gtk+_2.8.4 is already out.


Downloading the souces
----------------------

The pages containing all the sources are the following:

http://www.gtk.org/
http://www.directfb.org/

Let's check out everything first:

cvs -d:pserver:anonymous@anoncvs.gnome.org:/cvs/gnome login
cvs -d:pserver:anonymous@anoncvs.gnome.org:/cvs/gnome -z3 co -r GLIB_2_7_2 glib
cvs -d:pserver:anonymous@anoncvs.gnome.org:/cvs/gnome -z3 co atk
cvs -d:pserver:anonymous@anoncvs.gnome.org:/cvs/gnome -z3 co -r PANGO_1_9_0 pango
cvs -d:pserver:anonymous@anoncvs.gnome.org:/cvs/gnome -z3 co -r GTK_2_7_2 gtk+

cvs -d :pserver:anoncvs@cvs.cairographics.org:/cvs/cairo login
cvs -d :pserver:anoncvs@cvs.cairographics.org:/cvs/cairo co slim
cvs -d :pserver:anoncvs@cvs.cairographics.org:/cvs/cairo co libpixregion
cvs -d :pserver:anoncvs@cvs.cairographics.org:/cvs/cairo co libic

cvs -d:pserver:anonymous@cvs.directfb.org:/cvs/directfb login
cvs -d:pserver:anonymous@cvs.directfb.org:/cvs/directfb -z3 co DirectFB
cvs -d:pserver:anonymous@cvs.directfb.org:/cvs/directfb -z3 co cairodfb
cvs -d:pserver:anonymous@cvs.directfb.org:/cvs/directfb -z3 co gdk-directfb

Patching gtk+
-------------

Before building, we need to patch gtk+:

mv gdk-directfb gtk+/gdk/directfb
cd gtk+/gdk/directfb
patch -b -p0 < ./gtk-directfb.patch


Building the libs
-----------------

Building the libs is a 2-steps process: 

the firs step will build the libs which will reside on your host and
will be used to build the libs for the target and the gtk.so

the second step will produce libs that can be copied in the target
system

The first pass will install its files into "d-i_build", the second
into "d-i_final", both relative for example to ~/dfb/

1st pass
--------

export BUILDDIR=$(pwd)/d-i_build
export LDFLAGS=-L$BUILDDIR/lib
export LD_LIBRARY_PATH=$BUILDDIR/lib
export PKG_CONFIG_PATH=$BUILDDIR/lib/pkgconfig

HERE=$(pwd)
for DIR in glib atk slim libpixregion libic cairodfb/libpixman cairodfb/cairo pango DirectFB gtk+ ; do
    cd $DIR
    
    echo "Pass1: ${DIR}"

    case $DIR in
	"DirectFB")
	    sh autogen.sh --prefix=${BUILDDIR} --with-inputdrivers=keyboard,linuxinput,ps2mouse,serialmouse  > pass1_autogen.log 2>&1
	    ;;
	"gtk+")
	    sh autogen.sh --prefix=${BUILDDIR} --with-gdktarget=directfb > pass1_autogen.log 2>&1
	    ;;
	*)
	    sh autogen.sh --prefix=${BUILDDIR} > pass1_autogen.log 2>&1
	    ;;
    esac

    make > pass1_make.log 2>&1
    make install > pass1_make_install.log 2>&1

    echo "${DIR} done (Pass1)"
    echo ""
    cd $HERE
done


2nd pass
--------

export BUILDDIR=$(pwd)/d-i_build
export INSTALLDIR=$(pwd)/d-i_final

export PKG_CONFIG_PATH=$BUILDDIR/lib/pkgconfig
export LD_LIBRARY_PATH=$BUILDDIR/lib

HERE=$(pwd)
for DIR in glib atk slim libpixregion libic cairodfb/libpixman cairodfb/cairo pango DirectFB gtk+ ; do
    cd $DIR
    
    echo "Pass2: ${DIR}"

    case $DIR in
	"DirectFB")
            sh autogen.sh --prefix=/usr --sysconfdir=/etc --with-inputdrivers=keyboard,linuxinput,ps2mouse,serialmouse > pass2_autogen.log 2>&1
	    ;;
	"gtk+")
            sh autogen.sh --prefix=/usr --sysconfdir=/etc --with-gdktarget=directfb > pass2_autogen.log 2>&1
	    ;;
	*)
	    sh autogen.sh --prefix=/usr --sysconfdir=/etc > pass2_autogen.log 2>&1	
	    ;;
    esac

    make > pass2_make.log 2>&1
    make install DESTDIR=$INSTALLDIR > pass2_make_install.log 2>&1

    echo "${DIR} done (Pass2)"
    echo ""
    cd $HERE
done

Attachment: signature.asc
Description: Digital signature


Reply to: