Typo
[linux_from_scratch_hints.git] / OLD / gnome_o.txt
blobbc8e716095967b2c54d8d6e32be39415f89016d9
1 GENERAL OUTLINE
2 ===============
4 TITLE:          GNOME
5 LFS VERSION:    Latest 3.0-preX (gcc 3.0 will NOT work)
6 AUTHOR:         roryo and mca <gnomeATlinuxfromscratchDOTorg>
8 SYNOPSIS:
9         From LFS to gnucash.
11 HINT:
13 First things first
14 ==================
16 The developers of the assorted gnome applications are churning new releases 
17 out at a rate for about 10 per week, it is therefore recommended that you get
18 the latest version of this hint and the new patches.  These are available via
19 anonymous CVS at roryo.dynup.net.
21 cvs -d:pserver:anonymous@roryo.dynup.net:/home/cvsroot login
23 Press <return> at the password prompt.
25 cvs -d:pserver:anonymous@roryo.dynup.net:/home/cvsroot co gnome-hint
27 This hint has proven quite stable for us, but your mileage will vary.  Consider
28 this hint somewhat pre-alpha for now.  By using this hint, you agree to
29 provide us with any and all information concerning build failures, runtime
30 failures, and/or any other "feedback" you feel we need.  We want to know.  You
31 can either email us at the address above or find us on irc.linuxfromscratch.org,
32 whichever you prefer.
34 We have created a wget list for all of the packages covered in this hint.  It
35 is available at http://www2.linuxfromscratch.org/gnome/wget.list and is quite
36 current (well, usually).  Save this list wherever you want, cd into the
37 directory you'd like to save these packages, and run the following:
39     wget -ci /path/to/wget.list
41 Now sit and wait.  ;)
43 The URLs are listed in the order they appear in this hint, so you should be
44 able to start compiling as soon as the first file finishes.
47 Pre-build instructions
48 **********************
50     The build instructions (and a few of the patches) in this hint rely on the
51     following procedures.  This is not optional.
53     $GNOME_ROOT, the prefix in which gnome will be installed, is completely up
54     to you.
56       (this assumes you are using bash/sh)
58       export GNOME_ROOT=/opt/GNOME
59       export PATH=$PATH:$GNOME_ROOT/bin
60       echo $GNOME_ROOT/lib >> /etc/ld.so.conf
62       export GNOME_OPTS="--prefix=$GNOME_ROOT --with-gnu-ld --disable-static"
63       alias gcfg='./configure $GNOME_OPTS'
65     If you wish, you can add --disable-nls to the above $GNOME_OPTS.  This will
66     prevent the international messages (.po files) from being installed, and will
67     save quite a bit of space.  Some packages' configure script will fail with an
68     error about not finding intl/libgettext.h.  If so, apply the intl.diff
69     included in the patch tarball.
71     Assuming you used the wget list, you should have a patches-GNOME.tar.bz2.
72     If not, grab it from:
73         http://www2.linuxfromscratch.org/gnome/patches-GNOME.tar.bz2
75     Unpack (tar yxvf) this file and it will create a patches/ directory.  In
76     this directory, the patches are named <package>-<version>.diff.  They are
77     probably quite version specific.  The *.wtf files are brief explanations
78     of what and why the patch was needed.
80     To apply:
81         unpack <package>-<version>.tar.gz
82         patch -p0 -i /path/to/<package>-<version>.diff
84     These patches are created from outside the source tree, so you may have to
85     play with -p options depending on where you are.
89 Miscellaneous Notes
90 ===================
92     * New packages
94         If a new version of any package in this hint is available, please use
95         it.  We will attempt to keep this hint as current as possible, but we
96         may fail.  If a new package is available and is causing problems, we
97         will make a note of it.  Also, if you don't mind, drop us an email
98         about the new package, and whether or not our build instructions were
99         ok with it.
101         WARNING:  They are leaking a few pre-2.0-alpha packages, most notably
102                   control-center.  We are not using these yet as they rely on
103                   unstable glib/gtk+ versions.  Anything requiring pkg-config
104                   should be ignored for now.
106     * FHS Compliance
108         This hint is entirely (?) FHS (www.pathname.com/fhs/) compliant.
109         You are by no means bound to these instructions, but we cannot
110         guarantee the same results if you do stray.
112         GNOME is quite large and scattered.  Choosing /usr as the
113         $GNOME_PREFIX above will be a very messy decision.
115     * Compiler Optimizations
117         If you don't know what these are, you'll be better off ignoring this.
118         The large majority of these packages will honor the $CFLAGS variable.
119         Those that don't (off the top of my head) are libpng, openssl, libdb,
120         and python.  There were some others, but they had to be patched for
121         other reasons so that 'feature' was added.  If you have problems with
122         any packages at runtime, please recompile it without *any*
123         optimizations before telling us about it.
125     * Symlinks
127         These symlinks are here to provide other applications easy access to
128         the package's libraries and headers.  This saves us (and you) much
129         time and effort in hacking Makefiles and such in an attempt to find
130         them.  If you don't follow the symlinking instructions, you are on
131         your own with the detection of these packages by others.
133     * Objective C
135         Several GNOME packages/applications can make use of the objective C
136         compiler, if available.  Some packages will fail if you don't install
137         the proper packages to make use of it, others will fail because you
138         don't have it.  It is not required in any way.
140         To install the objc compiler, follow the directions for GCC in the
141         shared section of the LFS book (chapter 6, as of 3.0).  Make the
142         following change:
143             Instead of:  --enable-languages=c,c++
144             Use:  --enable-languages=c,c++,objc
146         Install gcc per the instructions and continue your quest.
148     * TODO - Known bugs/issues
150         *  Add dependency notes.  GnuCash is a good example.  If you wish to
151            skip it, you can skip at least three other packages too.
153         *  The default session is ugly.  We (or someone) need to replace it
154            with something better.
156         *  We need to create a list of what you miss out on by not having an
157            objc compiler.
159         *  Rid of the MISSING's.
161         *  Esound is a piece of crap and needs rewritten/replaced.
165 Software installation
166 =====================
169 Prerequisites not covered here
170 ******************************
172     In addition to a base LFS system, you will need the following:
174         X11:  http://www.xfree86.org/
175         zlib: ftp://ftp.uu.net/graphics/png/src
177     See the X11 hint for their installation.
180 Pre-GNOME packages
181 ******************
183 Berzerkeley DB: (3.3.11 specific)
184     UCB's database library.
185         cd build_unix/
186         ../dist/configure \
187           --prefix=/usr \
188           --enable-compat185 \
189           --enable-static \
190           --enable-shared
191         make docdir=/usr/doc/Berkeley-DB all install
192         cd /usr/lib/ && ln -s libdb-3.3.a libdb.a
193         sed 's/^DB185/DB/' /usr/include/db_185.h > /usr/include/db_185.h.new
194         mv /usr/include/db_185.h.new /usr/include/db_185.h
196 readline:
197     GNU readline.  Command line history and editing.
198         ./configure \
199           --prefix=/usr
200         make all install
201         cd shlib/
202         make all install
205     GNU calculator.
206         ./configure \
207           --prefix=/usr \
208           --with-readline
209         sed 's|\(^_PR.*readline.*$\)|/* \1 */|' bc/scan.l > new-scan.l &&
210         mv new-scan.l bc/scan.l
211         make all install
213 openssl:
214     Open source SSL library.
216     *** See FHS note!
217     *** See symlink note!
219         export OPENSSL_ROOT=/opt/OpenSSL
220         ./config \
221           --prefix=$OPENSSL_ROOT \
222           --openssldir=$OPENSSL_ROOT \
223           shared
224         make && make install
225         cd /usr/lib
226         for file in lib{crypto,ssl}.{a,so.0.9.6}
227         do
228             ln -s $OPENSSL_ROOT/lib/$file
229         done
230         ln -s libcrypto.so.0.9.6 libcrypto.so.0
231         ln -s libssl.so.0.9.6 libssl.so.0
232         ln -s libcrypto.so.0 libcrypto.so
233         ln -s libssl.so.0 libssl.so
234         cd /usr/include &&
235         ln -s $OPENSSL_ROOT/include/openssl
236         unset OPENSSL_ROOT
238 Python: (optional)
239     The Python interpreted programming language.
241         ./configure \
242           --prefix=/usr \
243           --with-threads
244         make all install
246     *** FHS note - if installed anywhere else a symlink must be made from
247         the python binary to /usr/bin/python eg
248         ln -s <path-to-python> /usr/bin/python
250 PostGreSQL: (optional)
251     The most advanced open source SQL server.
252     You should probably read the documentation, but this is how I like it.
254     *** See FHS note!
255     *** See symlink note!
257         export PGSQL_ROOT=/opt/PostGreSQL
258         ./configure \
259           --prefix=$PGSQL_ROOT \
260           --with-ssl=/usr \
261           --disable-static
262         make all install
263         cd /usr/lib
264         for file in lib{pq,pgeasy}.so.2.1; do
265             ln -s $PGSQL_ROOT/lib/$file
266         done
267         ln -s libpq.so.2.1 libpq.so.2
268         ln -s libpgeasy.so.2.1 libpgeasy.so.2
269         ln -s libpq.so.2 libpq.so
270         ln -s libpgeasy.so.2 libpgeasy.so
271         cd /usr/include &&
272         ln -s $PGSQL_ROOT/include/postgresql
273         unset PGSQL_ROOT
275 MySQL: (optional)
276     A fast open source SQL server.
277     You should probably read the documentation, but this is how I like it.
279     *** See FHS note!
280     *** See symlink note!
282         export MYSQL_ROOT=/opt/MySQL
283         ./configure \
284           --prefix=$MYSQL_ROOT \
285           --disable-static \
286           --enable-thread-safe-client \
287           --without-debug \
288           --without-docs \
289           --without-bench \
290           --without-readline \
291           --with-berkeley-db=./bdb
292         make all install
293         cd /usr/lib &&
294         ln -s $MYSQL_ROOT/lib/libmysqlclient.so.10.0.0 &&
295         ln -s libmysqlclient.so.10.0.0 libmysqlclient.so.10 &&
296         ln -s libmysqlclient.so.10 libmysqlclient.so
297         cd /usr/include &&
298         ln -s $MYSQL_ROOT/include/mysql
299         unset MYSQL_ROOT
301 libjpeg:
302     Library for accessing jpeg images.
303         ./configure \
304           --prefix=/usr \
305           --enable-shared
306         make && make install
308 libpng:
309     Library for accessing png images.
310         cp scripts/makefile.linux Makefile
311         make ZLIBINC=/usr ZLIBLIB=/usr prefix=/usr all install
313 libungif:
314     Library for accessing gif images.
315         ./configure \
316           --prefix=/usr
317         make all install
319 libtiff:
320     Library for accessing tiff images.
321         ./configure --prefix=/usr --noninteractive
322         make all install
323         (optionally) make install.man
325 lcms:
326     Color correction/management library. 
327         Apply the patch
328         cd src/
329         make all install
331 libmng:
332     Library for accessing mng (animated) images.
333     mng is the Open Source alternative to animated gifs
334         ./configure \
335           --prefix=/usr \
336           --with-zlib=/usr \
337           --with-jpeg=/usr \
338           --with-lcms=/usr
339         make all install
341 libiconv:
342     An iconv() implementation that properly supports UTF-*.
343         ./configure \
344           --prefix=/usr \
345           --enable-static \
346           --enable-shared
347         make all install
349 glib:
350     An extension library to glibc.
351         ./configure \
352           --prefix=/usr/X11R6 \
353           --enable-threads \
354           --enable-debug=no
355         make all install
357     NOTE:  If you don't like the above prefix, feel free to change it.  glib
358            has nothing to do with X, and probably doesn't belong where we put
359            it.  Everything that depends upon it will have no trouble locating
360            it as long as it's prefix/bin is in your $PATH, and the prefix/lib
361            is in your /etc/ld.so.conf.
363 GTK+:
364     The Gimp Toolkit.. an X11 widget library.
365         ./configure \
366           --prefix=/usr/X11R6 \
367           --enable-debug=no
368         make all install
370 ORBit:
371     A CORBA implementation.
372         ./configure \
373           --prefix=/usr/X11R6
374         make all install
376 libxml:
377     The gnome-xml library.
378         ./configure \
379           --prefix=/usr/X11R6 \
380           --with-zlib=/usr \
381           --with-buffers
382         make all install
384 libxml2:
385     The xml library.
386         ./configure \
387           --prefix=/usr/X11R6 \
388           --with-zlib=/usr \
389           --with-readline=/usr \
390           --with-buffers
391         make all install
393 GhostScript:
394     The GhostScript package.  Used for post-script and network printing.
396         Apply the patch
397         cd ghostscript-6.51
398         tar zxvf <path-to-jpeg6bsrc.tar.gz>
399         mv jpeg-6b jpeg
400         ln -s src/unix-gcc.mak Makefile
401         make 
402         make install
404     If you are using glibc 2.2.2 or higher, this build will fail.  Edit
405     src/time_.h, insert #include <time.h> on line 35.
407 GhostScript Fonts:
408     GhostScript Fonts.
409         cd /usr/X11R6/share/ghostscript
410         tar zxvf <path-to-gnu-gs-fonts.std-6.0.tar.gz>
412     This will create the fonts directory, there are other GhostScript fonts available if
413     you feel so inclined.
415 ImageMagick:
416     Provides many useful image manipulation functions, plus a few handy
417     executables.
418         sed \
419           's/-lxml2/-lxml2 -liconv/g' \
420           configure > configure~
421         sed \
422           's|<lcms.h>|<lcms/lcms.h>|g' \
423           configure~ > configure
424         ./configure \
425           --prefix=/usr/X11R6 \
426           --enable-shared \
427           --disable-static \
428           --without-perl \
429           --with-ttf-fontpath=/usr/X11R6/lib/X11/fonts/TrueType
430         make all install
432     NOTE: if you have the TrueType fonts installed in a different
433               path you will have to changes the --with--ttf-fontpath.
435 imlib:
436     Library providing access to all of the above image formats.
437         ./configure \
438           --prefix=/usr/X11R6 \
439           --disable-static
440         make all install
442 audiofile:
443     Library providing access to several different audio formats.
444         ./configure \
445           --prefix=/usr/X11R6 \
446           --disable-static
447         make all install
449 esound:
450     The enlightened sound daemon.
451         Apply the patch
452         ./configure \
453           --prefix=/usr/X11R6 \
454           --disable-static 
455         make all install
457 gtk-engines:
458     GTK+ themes and theme libraries.
459         ./configure --prefix=/usr/X11R6
460         make all install
463 GNOME core packages
464 *******************
465     MISSING:  mc/nautilus
467 popt:
468     Red hat's getopt()-ish replacement.
469         gcfg --enable-static
470         make all install
472 libunicode:
473     Gnome's Unicode interface.
474         gcfg
475         make all install
477 gnome-libs:
478     The core GNOME libraries.
479         Apply the patch
480         gcfg
481         make all install
483 gdk-pixbuf:
484     The gtk+ pixbuf library.
485         gcfg
486         make all install
488 oaf:
489     Object Activation Framework for GNOME.
490         Apply the patch
491         gcfg --enable-oaf-debug=no
492         make all install
494 libghttp:
495     Library for speaking the http protocol.
496         gcfg
497         make all install
499 scrollkeeper:
500     Scrollkeeper Open Documentation Cataloging System.
501         sed 's|=lib/scrollkeeper|=scrollkeeper|g' configure > configure~
502         cp configure~ configure
503         gcfg
504         make all install
506 gnome-print:
507     GNOME print library.
508         gcfg --with-zlib=/usr
509         make all install
511 bonobo:
512     GNOME component and compound document system.
513         gcfg
514         make all install
516 guile:
517     GNU scheme implementation.
518         Apply the patch
519         gcfg --with-threads
520         make all install
522 slib:
523     Scheme library extension.
524         make prefix=$GNOME_ROOT
525         make prefix=$GNOME_ROOT install
526         GUILE_LOAD_PATH=$GNOME_ROOT/share/guile/slib \
527         guile -c "(use-modules (ice-9 slib)) (require 'new-catalog)"
529 GConf:
530     A configuration database system.
531         Apply the patch
532         gcfg --enable-debug=no
533         make all install
534         mv $GNOME_ROOT/etc/gconf/1/path.example $GNOME_ROOT/etc/gconf/1/path
536 gnome-vfs:
537     GNOME virtual file system.
538         Apply the patch
539         gcfg
540         make all install
542 control-center:
543     GNOME configuration tool.
544         gcfg
545         make all install
547 libglade:
548     Library for loading glade interface files at runtime.
549         gcfg --enable-bonobo --disable-bonobotest
550         make all install
552 bug-buddy:
553     Gnome front-end to bugzilla for submitting bug reports.
554         gcfg
555         make all install
557 pygtk:
558     GTK+ python bindings.
559         ./configure --prefix=/usr
560         make all install
562 gal:
563     GNOME Application library.
564         gcfg
565         make all install
567 w3c-libwww:
568     w3c's www-ish libraries.
569         Apply the patch
570         gcfg \
571           --with-zlib \
572           --with-md5 \
573           --with-ssl
574         make all install
576 glibwww:
577     Glib extension for access to w3c-libwww
578         gcfg
579         make all install
581 gtkhtml:
582     An html parsing library.
583         Apply the patch
584         gcfg \
585           --with-bonobo \
586           --without-gconf
587         make all install
589 libgtop:
590     Library for accessing /proc.
592     (If build fails because of ISDN_MAX_CHANNELS, add #define
593     ISDN_MAX_CHANNELS 64 to the .c file that failed and recompile.
594     This is a kernel issue.  2.4.6 has fixed it.)
596         gcfg
597         make all install
599 gmp:
600     GNU's precision math library.
601          gcfg
602          make all install
604 gdbm:
605     GNU's dbm replacement library.
606         gcfg
607         make BINOWN=root BINGRP=root all install
609 librep:
610     Lisp implementation.
611         Apply the patch.
612         gcfg --with-readline
613         make all install
615 rep-gtk:
616     Lisp bindings for GTK+.
617         gcfg \
618           --with-libglade \
619           --with-gdk-pixbuf \
620           --with-gnome-canvas-pixbuf
621         make all install
623 gob:
624     GTK+ Object Builder.
625         gcfg
626         make all install
628 libxslt:
629     XSLT support for libxml.
630         gcfg
631         make all install
633 libgda:
634     Library to interface SQL servers.
635         sed 's/libmysqlclient.a/libmysqlclient.so/g' configure > conf.new
636         sed 's/\(ORB.*\)which\(.*\)/\1type -p\2/' conf.new > configure
637         gcfg \
638           --with-mysql=/opt/MySQL \
639           --with-postgres=/opt/PostGreSQL
640         make all install
642 sawfish:
643     The Sawfish window manager.
644         gcfg \
645           --with-gdk-pixbuf \
646           --disable-linguas
647         make all install
648         cp Sawfish.desktop $GNOME_ROOT/share/gnome/wm-properties/
650 gnome-core:
651     Core GNOME applications.
652         Apply the patch
653         gcfg \
654           --with-window-manager=sawfish \
655           --enable-gtkhtml-help
656         make all install
658 gnome-common:
659     Autoconf/make files for GNOME.
660         gcfg
661         make all install
663 gnome-objc: (optional)
665     *** See the OBJC note
667     Objective C bindings for GNOME.
668         gcfg
669         make all install
671 gnome-admin:
672     Administration utilities.
673         gcfg --with-messages=/var/log/sys.log
674         make all install
676 gnome-applets:
677     Many different GNOME applets.
678         gcfg
679         make all install
681 gnome-audio:
682     Sounds.
683         make install
685 gnome-python: (optional)
686     Python binding for GNOME
687         gcfg --with-gtkhtml
688         make all install
690 gnome-games:
691     Games!
692         gcfg
693         make all install
695 gnome-media:
696     Multimedia applications.
697         gcfg
698         make all install
700 gnome-network:
701     Network applications/utilities.
702         If you don't have objc (see note), apply the patch.
703         gcfg
704         make all install
706 gnome-pim:
707     Personal information manager for GNOME.
708         gcfg
709         make all install
711 gnome-utils:
712     Several miscellaneous utilities.
713         Apply the patch
714         gcfg --with-messages=/var/log/sys.log
715         make all install
717 xscreensaver:
718     Screensavers!
719         gcfg \
720           --with-gtk \
721           --with-gnome \
722           --enable-subdir=xdemos
723         make all install
725 gnome-user-docs:
726     GNOME Documentation.
727         gcfg
728         make all install
730 users-guide:
731     More GNOME documentation.
732         gcfg
733         make all install
736 GNOME applications
737 ******************
738   MISSING:  Evolution, Galeon
739         
740 dia:
741     Diagram creation application.
742         gcfg \
743           --enable-gnome \
744           --enable-bonobo \
745           --enable-debug=no \
746           --with-python
747         make all install
749 g-wrap:
750     Glib scheme bindings.
751         gcfg
752         make all install
754 libole2:
755     MS OLE library.
756         gcfg
757         make all install
760     GNOME-basic.  (Yes, kinda like visual-basic).
761         Apply the patch
762         gcfg --without-runtime-debug
763         make all install
765 gnumeric:
766     GNU Spreadsheet application.
767         Apply the patch
768         gcfg \
769           --with-bonobo \
770           --with-guile \
771           --with-gb \
772           --with-python
773         make all install
775 Guppi:
776     Library for creating/drawing graphs and charts.
777         gcfg --enable-gnumeric
778         make all install
780 glade:
781     A quick GUI IDE.
782         gcfg \
783           --with-gnome \
784           --with-bonobo \
785           --disable-gnome-db
786         make all install
788 gnucash:
789     GNU money management program.. quite similar to quickbooks and such.
790         Apply the patch
791         gcfg (add --enable-sql if you have postgres)
792         make all install    
794 abiword:
795     GNU Word processor. 
796         Apply the patch
797         cd abiword/abi/src/
798         make \
799           prefix=$GNOME_ROOT \
800           ABI_OPT_GNOME=1 \
801           ABI_OPT_BONOBO=1 \
802           OPTIMIZER="$CFLAGS \
803             -L/usr/X11R6/lib -I/usr/X11R6/include \
804             -L$GNOME_ROOT/lib -I$GNOME_ROOT/include \
805             -L/usr/local/lib -I/usr/local/include"
806         make install \
807           prefix=$GNOME_ROOT \
808           ABI_OPT_GNOME=1 \
809           ABI_OPT_BONOBO=1 \
810           OPTIMIZER="$CFLAGS \
811             -L/usr/X11R6/lib -I/usr/X11R6/include \
812             -L$GNOME_ROOT/lib -I$GNOME_ROOT/include \
813             -L/usr/local/lib -I/usr/local/include"
816 Other apps
817 **********
819   There are many more gnome applications out there, but most are a fairly
820 simple build and aren't (yet) covered in this hint.  A few you may wish to
821 check out are:
823     * GTM - Gnome Transfer Manager (a nice little download manager)
824     * PAN - Pimp Ass Newsreader
825     * Encompass - gtkhtml based browser
826     * xChat - the best GUI irc client, 'nuff said
827     * gnotepad - gvim owns, but nice for mutilple docs at once
828     * Balsa - nice stable GUI mail app, based on Pine
829     * xmms - if you dont know what it is, when we give up ;)
830     * Pharmacy - Gnome CVS front end
831     * Gimp - the root of it all, graphics app, total ownage
832     * EOG - Eye of Gnome.. an image viewer
833     * GQView - a better gtk+ based image viewer
837 Frequently Asked Questions
838 ==========================
840     Q:  How do I properly start gnome?
841     A:  You do one of the following:
842             echo gnome-session > ~/.xinitrc
843         or, if you wish to enable those annoying little sounds,
844             echo gnome-session --enable-sound > ~/.xinitrc
846     Q:  I'm trying to build packageXXX from CVS sources, or just regenerate
847         its configure script from configure.in, but autoconf bitches about not
848         having some other gnome package installed.  WTF?
849     A:  Autoconf is dumb and can/will only use one search directory for the
850         .m4 files these packages install.  You should probably do the
851         following:
853             mv $GNOME_PREFIX/share/aclocal/* /usr/share/aclocal/ &&
854             rm -r $GNOME_PREFIX/share/aclocal && cd $GNOME_PREFIX/share &&
855             ln -s /usr/share/aclocal
857     Q:  Am I stupid?
858     A:  Obviously, yes.
860 ============
861 End of hint.