Web blog of yydzero
姚延栋(Yandong Yao)的博客
归档
« 十一月 2009
星期日星期一星期二星期三星期四星期五星期六
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
     
       
今天
Click me to subscribe
Search In My Blog

链接
 

今日点击: 23

Locations of visitors to this page
« Why python minutes | Main | gnome file name URI »
星期四 三月 23, 2006
building gnome cvs using jhbuild on solaris

This document is written when i build gnome cvs using jhbuild, and i write it just for reference by myself, there maybe many information which are not correct. Welcome any suggestion and comments!

1. jhbuildrc file

First copy below contents as your ~/.jhbuildrc

# -*- mode: python -*-

# information about cvs server
cvsroots['gnome.org'] = ':pserver:anonymous@anoncvs.gnome.org:/cvs/gnome'
cvsroots['fontconfig.freedesktop.org'] = ':pserver:anoncvs@cvs.freedesktop.org:/cvs/fontconfig'

# modules to build (deps are also built)
moduleset = 'gnome-2.16'
modules = ['gtk+', 'meta-gnome-desktop', 'meta-gnome-devel-tools' ]

skip = [ 'hal', 'mozilla' ]

skip.append('evolution-exchange')

# the prefix to install things to (user must have write access)
prefix = '/export/home/gnome/install/gnome-cvs'

# where the sources are checked out to
checkoutroot = '/export/home/gnome/src/cvsroot'

# where to put downloaded tarballs.
tarballdir = '/export/home/gnome/src/tarballs'

# arguments to pass to autogen script
autogenargs='--enable-maintainer-mode --disable-static --disable-gtk-doc'

# set CFLAGS:
os.environ['CFLAGS'] = '-g'
os.environ['PYTHON'] = os.path.join(prefix, 'bin/python')
os.environ['PYTHONPATH'] = os.path.join(prefix, 'lib/python2.4/site-packages')

# On SMP systems you may use something like this to improve compilation time:
# be aware that not all modules compile correctly with make -j2
os.environ['MAKE'] = 'make'

os.environ['INSTALL'] = os.path.expanduser('~/bin/install-check')

module_autogenargs['libgcrypt'] = autogenargs + ' --disable-asm'
module_autogenargs['howl'] = autogenargs.replace('--disable-static', '')
module_autogenargs['fontconfig'] = autogenargs + ' --with-expat=/export/home/gnome/install/gnome-cvs/'
module_autogenargs['gtk+'] = autogenargs + ' --with-included-loaders=png'
module_autogenargs['ekiga'] = autogenargs + ' --with-pwlib-dir=/export/home/gnome/install/gnome-cvs/ --with-opal-dir=/export/home/gnome/install/gnome-cvs/ --with-sdl-prefix=/export/home/gnome/install/gnome-cvs/'

module_makeargs['libIDL']= makeargs + ' CPP="/usr/lib/cpp"'
module_makeargs['ORBit2']= makeargs + ' CPP="/usr/lib/cpp"'
module_makeargs['libbonobo']= makeargs + ' CPP="/usr/lib/cpp"'
module_makeargs['dbus']= makeargs + ' CFLAGS="-I/export/home/gnome/install/gnome-cvs/include" LDFLAGS="-lexpat -lintl"'
module_makeargs['cairo']= makeargs + ' LDFLAGS="-lc"'
module_makeargs['gtk+']= makeargs + ' LDFLAGS="-lintl"'
module_makeargs['libgnome']= makeargs + ' LDFLAGS="-lintl"'
module_makeargs['libgnomeprint']= makeargs + ' LDFLAGS="-lintl"'
module_makeargs['bug-buddy']= makeargs + ' LDFLAGS="-lintl"'
module_makeargs['eog']= makeargs + ' LDFLAGS="-lintl"'
module_makeargs['zenity']= makeargs + ' LDFLAGS="-lintl"'
module_makeargs['evolution-webcal']= makeargs + ' LDFLAGS="-lintl"'

addpath('XDG_DATA_DIRS', '/export/home/gnome/src/gnome-cvs/share')
addpath('XDG_CONFIG_DIRS', '/export/home/gnome/src/gnome-cvs/share')

2. Issues met during building

export LC_ALL=C first

1. Install cbe

    look at opensolaris.org

2. Install jhbuild

3. jhbuild bootstrap

4. jhbuild build

4.1fontconfig:

           - need expat: http://nchc.dl.sourceforge.net/sourceforge/expat/expat-2.0.0.tar.gz
           - need freetype: www.freetype.org
           - module_autogenargs['fontconfig'] = autogenargs + ' --with-expat=/export/home/gnome/install/gnome-cvs/', exit jhbuild and rerun jhbuild build.

            ps: build freetype and expat under jhbuild enviroment, otherwise freetype will link
  expat.so.0 under /usr/sfw/lib instead of $prefix/lib

4.2 cairo

cairo will be compiled with the following surface backends:
  image:      yes (always builtin)
  Xlib:       yes
  Quartz:     no
  XCB:        no
  Win32:      no
  PostScript: yes
  PDF:        yes
  SVG:        no
  glitz:      no
  BeOS:       no
  DirectFB:   no

the following font backends:
  FreeType:   yes
  Win32:      no
  ATSUI:      no

the following features:
  PNG functions: yes

and the following debug options:
  gcov support:  no
  test surfaces: no

using CFLAGS:
-DXTHREADS -I/export/home/gnome/install/gnome-cvs/include -I/usr/local/include/libpng12 -I/export/home/gnome/install/gnome-cvs/include -I/export/home/gnome/install/gnome-cvs/include/freetype2


 - libpng: http://prdownloads.sourceforge.net/libpng/
  cp scripts/makefile.solaris makefile
  change prefix
  make && make install

 - cairo:
  module_makeargs['cairo']= makeargs + ' LDFLAGS="-lc"'

4.3 gtk+

 - failed to load "./stock_about_16.png": Couldn't recognize the image file format for file './stock_about_16.png'
  ===> --with-included-loaders=png

  It is true that lt-gdk-pixbuf-csource doesn't seem to have png/tiff/jpeg built
into it, so that's why I believe this seems to be the corrent line of solution.

I'm trying to impliment a similar solution... I'm pretty sure the SHLIB stuff is
hp-ux specific. So I went into gdk-pixbuf/Makefile and added the -L./.libs to
the LINK= line and did a 'gmake clean; gmake' and now I get:

g_module_open() failed for
/auto/src-01/common/usc/gnu/gtk+/gtk+-2.2.3/gdk-pixbuf/libpixbufloader-png.la:
ld.so.1:
/auto/src-01/common/usc/gnu/gtk+/gtk+-2.2.3/gdk-pixbuf/.libs/lt-gdk-pixbuf-query-loaders:
fatal: relocation error: file /usr/usc/png/1.2.5/lib/libpng.so.3: symbol
inflateReset: referenced symbol not found

Which I'm confused about. png 1.2.5 is the latest, and it was compiled with the
same compiler.

I've been playing with this for 3 weeks. I actually had to hard code the
'-L/usr/usc/png/1.2.5/lib' into the configure.in file because the configure
script couldn't find it with --with-libpng= even if I set LDFLAGS... This is the
last of *many* problems I've had trying to get gtk+2 to compile...

Phil

 -  Undefined                       first referenced
   symbol                             in file
  libintl_dgettext                    /export/home/gnome/src/cvsroot/gtk+/gdk/.libs/libgdk-x11-2.0.so
  ld: fatal: Symbol referencing errors. No output written to .libs/gtk-query-immodules-2.0

  ==> -lintl

4.4.0 libIDL

 Use /usr/lib/cpp as c preprocessor, otherwise orbit-idl-2 will cause many problems.

4.4 ORBit2

 - CFLAGS="-Werror-implicit-function-declaration -std=gnu89 $CFLAGS"
  -> comment out this line in configure.in

 - test/inhibit: unknow Foo_..._EPV, this is caused by lack definition.
  add foo.h into baa.h.
  see: http://mail.gnome.org/archives/orbit-list/2001-May/msg00074.html
  ***: if we use /usr/lib/cpp for libIDL, then no such problem.

4.5 bonobo

 need libIDL, ORBit2 use /usr/lib/cpp on solaris as CPP(c preprocessor)

module_makeargs['libIDL']= makeargs + ' CPP="/usr/lib/cpp"'
module_makeargs['ORBit2']= makeargs + ' CPP="/usr/lib/cpp"'
module_makeargs['libbonobo']= makeargs + ' CPP="/usr/lib/cpp"'


 cpp under solaris:
  /usr/lib/cpp
  /usr/sfw/bin/cpp
  /opt/SUNWspro/bin/cc -E
  

4.6 howl

 module_autogenargs['howl'] = autogenargs.replace('--disable-static', '')

4.7 dbus

 - can't find expat.h

  module_makeargs['dbus']= makeargs + ' CFLAGS="-I/export/home/gnome/install/gnome-cvs/include LDFLAGS="-lexpat -lintl"'

 - ImportError: ld.so.1: python2.4: fatal: relocation error: file /usr/lib/python2.4/lib-dynload/array.so: symbol _PyArg_NoKeywords: referenced symbol not found
    export PYTHON and PYTHONPATH

4.8 hal:  still need patch in order to run on solaris correctly

 can't find pci.ids
 Patch hal for solaris: http://lists.freedesktop.org/archives/hal/2006-February/004630.html

 1) Can't find definition for __FUNCTION__, use __func__


 cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/pciids login
 cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/pciids co -P pciids

 can't find 'endian.h', 'byteswap.h'

 skip this module and delete all dependency on this.

4.9 gnome-vfs 

 - __PRETTY_FUNCTION__  undefined:  As noted in the previous subsection, the g++ compiler defines two standard built-in preprocessor macros: __FILE__ and __LINE__. The g++ compiler also defines two non-C standard preprocessor macros called __FUNCTION__ and __PRETTY_FUNCTION__ that return the name of the current function. We can use any of these special pre-defined macros to build our own debug utilities.

   GNU CC predefines two string variables to be the name of the current
function.  The variable `__FUNCTION__' is the name of the function as
it appears in the source.  The variable `__PRETTY_FUNCTION__' is the
name of the function pretty printed in a language specific fashion.

   These names are always the same in a C function, but in a C++
function they may be different.  For example, this program:

     extern "C" {
     extern int printf (char *, ...);
     }
    
     class a {
      public:
       sub (int i)
         {
           printf ("__FUNCTION__ = %s\n", __FUNCTION__);
           printf ("__PRETTY_FUNCTION__ = %s\n", __PRETTY_FUNCTION__);
         }
     };
    
     int
     main (void)
     {
       a ax;
       ax.sub (0);
       return 0;
     }

gives this output:

     __FUNCTION__ = sub
     __PRETTY_FUNCTION__ = int  a::sub (int)

   These names are not macros: they are predefined string variables.
For example, `#ifdef __FUNCTION__' does not have any special meaning
inside a function, since the preprocessor does not do anything special
with the identifier `__FUNCTION__'.

 This symbol are gcc/g++ only, fortunately it is mostly used by debug.
 We can disable debug, so that we don't compile it.

Sulotion:
 rm $(topdir)/CVSVERSION

AC_ARG_ENABLE(http-debug,
[  --enable-http-debug  Enable HTTP method debugging],
set_http_debug="$enableval",[
if test -f $srcdir/CVSVERSION; then
        set_http_debug=yes
else
        set_http_debug=no
fi
])


#ifdef HAVE_UTMP_H
        /* This sets stdin, stdout, stderr to the socket */
        /*if (login && login_tty (fd) == -1) {
                g_printerr ("mount child process login_tty failed: %s\n", strerror (errno));
                return -1;
        }*/
#endif


4.10 startup-notification

 - Undefined symbol: __FUNCTION__
  add one patch: use __func__ for Sun CC compiler instead of __FUNCTION__

4.11 gnome-doc-utils

 - ../../intltool-merge: No such file or directory
  copy from other modules

 - doc/ can't build
  Run under command line manually.

4.12 libgcrypt

 - "mpih-add1.S", line 44 : Syntax error
  --disable-asm

4.13 gnome-terminal

 - No rules to make 'help/bg'
  ignore it: need evaluate on this problem.

4.14 libgtop

  -
"shm_limits.c", line 62: incomplete struct/union/enum shminfo: sinfo
"shm_limits.c", line 73: improper member use: shmmax
"shm_limits.c", line 74: improper member use: shmmni
"shm_limits.c", line 76: improper member use: shmmin
"shm_limits.c", line 77: improper member use: shmseg
 - using libgtop-2.8.3 and one patch from http://www.whacked.net/2005/07/25/libgtop-on-solaris-10/

4.15 libxklaver

 - no doxygen
  modify autogen.sh to don't --enable-doxygen
 - illegal option -Wall
  patch $(topdir)/libxklavier to remove them

4.16 liboil

 - exmaple/Makefile: cantain '-O2' which can't be recognized by Sun cc.


4.18 gnome-cups

 - need install cups
  --need openldap: need berkely DB install to /usr/ diretory
   --berkely DB: http://www.sleepycat.com/
    cd build_unix
    ../dist/configure default prefix
    make
    make clean

 - When build example: can't found symbol definiton for libintl_dgettext
      

4.19 nautilus

 - need libexif: http://kent.dl.sourceforge.net/sourceforge/dropline-gnome/libexif-0.5.12.tar.bz2

4.20 gnome-control-center

 - "/export/home/gnome/install/gnome-cvs/include/libxklavier/xklavier_config.h",  : _XklConfigItem
cc:/opt/SUNWspro/prod/bin/acomp

4.20: yelp

 - fno-rtti can't be recognized by compile
 - liconv

4.21 nautilus-cd-burner

 - Wall illegal option
 - -lc -lintl
 =
Undefined                       first referenced
 symbol                             in file
void __Crun::ex_rethrow_q()       .libs/dvd_plus_rw_utils.o
void*operator new[](unsigned)                       .libs/dvd_plus_rw_utils.o
void operator delete(void*)                       .libs/dvd_plus_rw_utils.o
ld: fatal: Symbol referencing errors. No output written to .libs/libnautilus-burn.so.3.0.0


  add -lCstd -lCrun at proper position


4.22 libmusicbrainz

 - ./examples/:  ld: fatal: library -lstdc++: not found
  -cpp_example_LDADD = $(top_builddir)/lib/libmusicbrainz.la -lstdc++ -lm
  +cpp_example_LDADD = $(top_builddir)/lib/libmusicbrainz.la -lm -lCstd -lCrun

4.23 totem

 -  cannot find include file: <linux/cdrom.h>
  use patch from laca's spec file. 
 - no kill func:
  include <signal.h>
 

4.24 gnome-media

 - Replace '__FUNCTION__' with __func__
 - CDROM_GET_CAPABILITY undefined: #define CDROM... 0x42432

4.27 zenity: -lintl
4.29 gnome-mag:

 - can't found lib Xdamage:
ld: fatal: library -lXdamage: not found
ld: fatal: library -lXfixes: not found
ld: fatal: File processing errors. No output written to .libs/magnifier

  -R/usr/X/sfw/lib -L/usr/X/sfw/lib -lXdamage -lXfixes

4.30 epiphy:

 - need xpcom, skip this

4.31 gnome-system-tools skipped

 undefined symbol: NETSTAT_PROTOCOL_FORMAT

4.32 gnome-volume-manager

 skip because of hal

4.33 sound-juicer: skip

 -Wall
 -lstdc++:

4.34 evolution-webcal: intl


4.35 evolution-exchange: skip


 Package requirements (libsoup-2.2 evolution-shell-2.6 libedataserverui-1.2 libexchange-storage-1.2 libbonobo-2.0 libxml-2.0 gconf-2.0)


4.36 ekiga

 - need SDL
 - need PWlib: http://sourceforge.net/projects/openh323  or cvs
   --with-pwlib-dir
 - need opal: cvs -z9 -d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/openh323 co opal
   PWLIBDIR=/path/to/pwlib
   

 - modify configure file manually
  --with-pwlib-dir=/export/home/gnome/install/gnome-cvs/ --with-opal-dir=/export/home/gnome/install/gnome-cvs/ --with-sdl-prefix=/export/home/gnome/install/gnome-cvs/

4.37 dasher - skip
4.38 gnome-keyring-manager: -Wall -W-Wno-format-y2k

 skip


4.39 sabayon: --with-disto

     Xnest binary not found.

4.40 poper

 --freetype: add include file

 

6. Run jhbuild gnome

6.1: create /usr/bin/jhbuild-session:

 #!/sbin/sh
 exec jhbuild --file=/.jhbuildrc run dbus-launch gnome-session

6.1.1: /usr/share/xsessions

 copy gnome.session jhbuild-gnome.session

6.1.2: /usr/dt/config/Xsession.jds
6.1.3: exec /usr/dt/bin/Xsession:

 SDT_ALT_SESSION="/usr/dt/config/Xsession2.jhbuild"

6.1.4: /usr/dt/config/Xsession2.jds
6.1.5: /usr/dt/config/Xinitrc.jhbuild

 jhbuild-session

6.2: copy /etc/fonts into $prefix/etc

 then execute fc-cache to handle with font issues.

6.3: update-mime-database $prefix/share/mime

   update-desktop-database -v

6.4:   bonobo-slay

    bonobo-activation-sysconf --display-directories
    bonobo-activation-sysconf --config-file-path

    $prefix/etc/bonobo-activation/bonobo-activation-config.xml
   add below: <item>$prefix/lib/bonobo/servers</item>


 we need make bonobo-activation-server be able to find your .sever file, it can be done in three ways:
  1) copy the server file to /usr/lib/bonobo/servers
  2) export BONOBO_ACTIVATION_PATH
  3) activation-client --add-path $(pwd)

  gtk-update-icon

6.5: gconf schema file: where to get?

  $prefix/libexec/gconfd-2: how to run it?

6.6: copy im-iiim.so to $prefix/lib/gtk-2.0/2.4.0/immodules/

7.0 References

 - Jhbuild issues:  http://www.gnomebangalore.org/wiki/index.php/Jhbuild_issues
      http://live.gnome.org/JhbuildIssues_2fpango

 - Build gnome on Ubuntu: http://live.gnome.org/JhbuildOnUbuntu
 - sample jhbuildrc: http://ftp.gnome.org/pub/gnome/teams/releng/2.13.1/sample-tarball.jhbuildrc
 - Python issue: http://mail.gnome.org/archives/garnome-list/2005-July/msg00199.html

Posted at 08:09上午 三月 23, 2006 by Yaodong Zero Yao in gnome  |  评论[0]

评论:

发表一条评论:
  • HTML语法: 禁用