Building garnome-2.10.0.1 on a PPC running YDL-4.0.1 [Long]

Joseph E. Sacco, Ph.D. joseph_sacco at comcast.net
Mon Mar 21 10:35:31 MST 2005


(1) Go fetch the software

        http://cipherfunk.org/garnome/

(2) Unpack the software and *study* the README.

(3) Modify gar.conf.mk decide where you would like the compiled software
installed.

I chose /opt and set 

                main_prefix ?= /opt/garnome

* decide if you would like to use ccache. 
  If so, uncomment the two lines for ccache support [see line 176].

(4) Build the required bootstrap packages in ./bootstrap
* ccache [if you decided to use it.]
*  dbus & hal

(5) Build the desktop
cd desktop
make paranoid-install

(6) Set up for a test run
* create a separate user account to experiment with your new desktop.
* create a .xinitrc file for this new user per the README.
* log in as the new user.

(7) Assess
Try it out. See what you like, see what you don't like. Share your
opinions with the GNOME folks.

(8) Next steps
Try building the applications in the other directories. "Most
everything" builds with the exception of mono.

=================================================================
Discussion

Preface
---------
GARNOME is a wonder. It fetches and builds in the proper order whatever
is needed to run GNOME. GARNOME uses GAR, a GNUmake based framework
written by Nick Moffett,

	http://www.lnx-bbc.org/garchitecture.html


The bootstrap step preps your GARNOME environment, adding required
non-GNOME packages [see the README]. 

The "make paranoid-install" process fetches and builds everything with
the proviso that it will stop on the first error encountered.  This is a
good thing.


bootstrap issues
----------------
As  of version 2.8.x, GNOME requires both DBUS and HAL:

	http://www.freedesktop.org/wiki/Software_2fdbus

	http://www.freedesktop.org/Software/hal

YDL-4 comes with a working version of dbus-0.22 which is sufficient to
build a working hal-0.4.7. As a prudent measure I would recommend
building separate versions of dbus & hal and installing them in your
GARNOME tree. Once you are comfortable with HAL, you may wish to
reinstall HAL under /usr.

The bootstrap directory contains a version of firefox-1.0.1. Firefox is
used by epiphany and some of the mono applications. If you do not wish
to have GARNOME automatically build firefox, edit the epiphany Makefile
so epiphany will build using mozilla:

* comment out the second LIBDEPS line
* modify CONFIGURE_ARGS line: --with-mozilla=mozilla

NOTE: 
The version of firefox-1.0.1 currently available from YDL/extras is
missing its package configuration files. As a consequence, the second
LIBDEPS line in the epiphany Makefile will *not* find a YDL installed
version of firefox and will automatically build ./bootstrap/firefox.


desktop issues
--------------
* There is a linker issue with the build of libwnck that will come back
and bite you later. Before building the desktop, edit

	./desktop/libwnck/Makefile


        --- Makefile-   2005-03-21 10:51:47.567627524 -0500
        +++ Makefile    2005-03-21 10:57:26.706514932 -0500
        @@ -10,6 +10,7 @@
          #FIXME: blurb goes here
         endef
          
        +LDFLAGS = "-Wl,--export-dynamic"
         CONFIGURE_SCRIPTS = $(WORKSRC)/configure
         BUILD_SCRIPTS = $(WORKSRC)/Makefile
         INSTALL_SCRIPTS = $(WORKSRC)/Makefile


So what does this linker flag do?

[from "info ld"]

`--export-dynamic'
     When creating a dynamically linked executable, add all symbols to
     the dynamic symbol table.  The dynamic symbol table is the set of
     symbols which are visible from dynamic objects at run time.
                                                                              
     If you do not use this option, the dynamic symbol table will
     normally contain only those symbols which are referenced by some[?]
                                                                                
     If you use `dlopen' to load a dynamic object which needs to refer
     back to the symbols defined by the program, rather than some other
     dynamic object, then you will probably need to use this option when
     linking the program itself.
                                                                                
     You can also use the version script to control what symbols should
     be added to the dynamic symbol table if the output format supports
     it.  See the description of `--version-script' in *Note VERSION::.


The "issue" arises from an attempt to make some GNOME applications
smaller. "-Wl,--export-dynamic" used to be the default for building the
glib, atk, pango, and gdk-pixbuf shared libraries. See 

	/opt/garnome/lib/pkgconfig/gmodule-no-export-2.0.pc


* librsvg is missing a dependency. 
Edit the Makefile[ignore any line wrap]:

        --- Makefile-   2005-03-18 13:53:35.000000000 -0500
        +++ Makefile    2005-03-18 13:53:51.000000000 -0500
        @@ -4,7 +4,7 @@
         DISTFILES = $(GARNAME)-$(GARVERSION).tar.bz2
         PATCHFILES = gar-base.diff
          
        -LIBDEPS = platform/gtk+ platform/libart_lgpl desktop/libcroco office/libgsf
        +LIBDEPS = platform/gtk+ platform/libart_lgpl platform/libgnomeprint desktop/libcroco office/libgsf
          
         DESCRIPTION = librsvg
         define BLURB

office issues
-------------
There is a newer version of "planner", 0.13. To build the new version:

* edit the Makefile

	GARVERSION = 0.13

* make clean
* make fetch
* md5sum download/planner-0.13.tar.bz2 >> checksums
* make install


binding issues
---------------
None


matchbook issues
----------------
None


geektoys issues
---------------
* gksu
The MASTER_SITES line in the Makefile is incorrect. It should be:

	MASTER_SITES = http://people.debian.org/~kov/$(GARNAME)/1.0/
  

* gworldclock
The GARVERSION line in the Makefile is incorrect.  It should be:

	GARVERSION = 1.4.2


* gwget
Two files need editing in order to get gwget to build and install. 

Do the following:

- edit the Makefile

	CONFIGURE_ARGS = $(DIRPATHS) -with-epiphany-version=1.6

- download and unpack the application

	make extract

- cd ./work/main.d/gwget-0.93

- edit the configure file

        --- configure-  2005-03-19 16:37:54.000000000 -0500
        +++ configure   2005-03-19 16:39:07.000000000 -0500
        @@ -21679,9 +21679,11 @@
         EPHY_AUTODETECT="(autodetect)"
         if pkg-config --exists epiphany-1.2; then
                 EPHY_VER=1.2
        -elif pkg-config --exists epiphany-1.4; then
        +fi
        +if pkg-config --exists epiphany-1.4; then
                EPHY_VER=1.4
        -elif pkg-config --exists epiphany-1.6; then
        +fi
        +if pkg-config --exists epiphany-1.6; then
                 EPHY_VER=1.6
         fi


* gnomemeeting
Building gnomemeeting-1.2.1 requires current versions of pwlib and
openh323

	http://www.gnomemeeting.org/index.php?rub=5&path=sources/sources

which in turn require some additional codecs that can be found at Fresh
RPMS:

	http://ftp.freshrpms.net/pub/freshrpms/yellowdog/

The simplest approach is to
- create a work directory
- download the pwlib and openh323 tarballs
- unpack both of tarballs in the same work directory
- configure pwlib to install under /opt/garnome, or wherever you chose 
to install garnome
- build pwlib
- build openh323, adding whatever missing codecs configure complains
about.

For the adventurous, who read and understood the GAR architecture
document, try adding entries for pwlib and openh323 to ./bootstrap


* thoggen
Update to version 0.3.

- edit the Makefile

	GARVERSION = 0.3

- fetch the tarball

	make fetch

- fix the checksum

	md5sum download/thoggen-0.3.tar.gz >> checksums

- build and install

	make install


hacker-tools issues
-------------------
Some of the hacker tools are i386 specific. Others require valgrind,
which has no complete, working implementation for PPC.

* alleyoop
alleyoop requires a working valgrind, which does not really exist for a
PPC.  There is a work-in-progress, released by Paul Mackerras

        http://valgrind.kde.org/related.html


that allows alleyoop to be compiled and launched on a PPC.  Whether or
not it "does the right thing" is unknown to me.


* memprof
memprof will not build on a PPC for two reasons:

- segments of code that are i386 specific
- coding error from changes in libbfd made since 2002.

I have hacked at this a bit, creating "something" that runs.  But...,
it's nothing I would bet the farm on.


mono issues
------------
MONO is currently broken for PPC's.  I have made some progress building
the 1.06 branch, getting most things to run [including beagle, which
requires a kernel patch].

So what's the problem? Consider the following C# code sample gleaned
from the mono-dev bugzilla:

        using System;
                                                                                                                  class T {
                static void Main (string[] args) {
                        throw new Exception ();
                }
        }
        

Compile and run:

        % mcs -g test.cs
        Compilation succeeded
        
        % mono test.exe
         
        Unhandled Exception: System.ExecutionEngineException: SIGILL

The MONO folks are aware of this problem and are working to resolve it.

=======================================================================
Colophon

GNOME-2.10.0.1 represents a big advance over GNOME-2.6. Read the PR:

	http://www.gnome.org/


Consideration should be given to upgrading YDL-4 to GNOME-2.10 in the
near future.


-Joseph

-- 
joseph_sacco[at]comcast[dot]net



More information about the yellowdog-general mailing list