GnuCash Compiler Dependency
---------------------------

The GnuCash developers use gcc (http://gcc.gnu.org) for developing and
testing GnuCash.  For convenience, we have relied on certain features
of gcc that are not part of any official standard and may not be
available with other standard-compliant compilers.  Anyone desiring to
compile GnuCash with some other compiler may have to remove these
"gcc-isms", some of which are documented here.

  Pointer-typed NULL sentinel values
  ----------------------------------

  Gcc provides an implementation of `stddef.h' that defines NULL to
always expand to a pointer-typed null constant.  This is precisely
what is needed in order to make sentinel value arguments to variadic
functions correct for both 32 and 64 bit platforms.  However, another
implementation may define NULL to expand to `0'.  In that case, all
sentinel value arguments must have an explicit `(void *)' cast.

  C++ style comments
  ------------------

  C++ style comments (`// comment to end of line') are discouraged but
not actively eradicated.

  Variadic Macros
  ---------------

  GnuCash uses variadic macros for debugging and logging support (via
qof).

  Declarations after Code
  -----------------------

  The use of declarations after code (`int i; i = 0; char *foo;') is
strongly discouraged and actively removed whenever it's caught.


GnuCash Library Dependency Policy
---------------------------------

GnuCash desires to only depend on library versions and packages that are
practically available.  Specifically, we choose to depend only on versions
that have been in the major distributions for 6 months. This is motivated in
part by the 1.6 release, which required a large set of relatively-recent
dependencies.  Specifically, as most user's (distributions) did not have the
required versions packaged, it was exceedingly painful for end users to
upgrade to the anticipated release, leading to a reputation that gnucash
still has.

This document serves to keep track of the major distributions, the date of
their major release[s], and the relevant library versions as part of that
release (or an official package-upgrade path)

Libraries/Deps
--------------
aqbanking
gconf2
glib2
gtk+2
guile
libart2
libglade2
libgnomeprint2.2
libgnomeui2
[lib]goffice
libgsf1
[lib]gtkhtml3
libofx
libxml2
pango
swig

(Note: gwrap has been replaced by swig and dropped completely in
SVN-trunk on 2006-10-20 and for gnucash-2.2.0.)

Interesting libraries
---------------------

swig
glib
gtk
cairo
goffice, libgsf
gtkprint
gtkhtml

libgoffice/libgsf details
-------------------------

- libgoffice-0.1.0
  - glib-2.0 >= 2.6.3
  - libgsf-1 >= 1.13.1
    - libgsf-1.13.1
      - glib-2.0 >= 2.6.0
      - libxml-2.0 >= 2.4.16
      - libbonobo-2.0 >= 2.0.0
      - gnome-vfs-2.0 >= 2.2.0
      - gnome-vfs-module-2.0 >= 2.2.0
  - libxml-2.0 >= 2.4.12
  - pango  >= 1.8.1
  - pangoft2 >= 1.8.1
  - cairo >= 0.5.0 [optional]
  - gtk+-2.0 >= 2.6.0
  - libglade-2.0 >= 2.3.6
  - libgnomeprint-2.2 >= 2.8.2
  - libart-2.0 >= 2.3.11
  - gconf-2.0
  - libgnomeui-2.0 >= 2.0.0
  - libgsf-gnome-1 >= 1.12.2

- libgoffice-0.4.0
  - glib-2.0		>= 2.6.4
  - gobject-2.0		>= 2.6.4
  - gmodule-2.0		>= 2.6.4
  - libgsf-1		>= 1.12.2
    - gobject-2.0 >= 2.6.0
    - glib-2.0 >= 2.6.0
    - libxml-2.0 >= 2.4.16
    - libbonobo-2.0 >= 2.0.0
    - gnome-vfs-2.0 >= 2.2.0
    - gnome-vfs-module-2.0 >= 2.2.0
  - libxml-2.0		>= 2.4.12
  - pango		>= 1.8.1
  - pangoft2		>= 1.8.1
  - cairo		>= 0.5.0 [optional]
  - gtk+-2.0		>= 2.6.0
  - libglade-2.0	>= 2.3.6
  - libgnomeprint-2.2	>= 2.8.2
  - libart-2.0		>= 2.3.11
  - gconf-2.0
  - libgnomeui-2.0	>= 2.0.0
  - libgsf-gnome-1	>= 1.12.2


Partial update, 2007-06-09; RHEL-only
-------------------------------------
- RHEL
  - *RHEL 4 = 2005-02-15		RHEL 5

    - aqbanking: not included		aqbanking-2.2.9 from Fedora Core 7
    - cairo: not included		cairo-1.4.4     from Fedora Core 7
    - gconf2-2.8.1			GConf2-2.14.0-9.el5
    - glib2-2.4.7			glib2-2.12.3-2.fc6
    - gtk2-2.4.13			gtk2-2.10.4-16.el5
    - guile-1.6.4			guile-1.8.0--8.20060831cvs
    - gwrap: not included		g-wrap-1.9.6    from Fedora Core 7
    - libart_lgpl-2.3.16		libart-lgpl-2.3.17-4
    - libglade2-2.4.0			libglade2-2.6.0-2
    - libgnomeprint22-2.8.0		libgnomeprint22-2.12.1-6
    - libgnomeui-2.8.0			libgnomeui-2.16.0-5.el5
    - libgsf-1.10.1			libgsf-1.14.1-6.1
    - libofx: not included		libofx-0.8.3    from Fedora Core 7
    - libxml2-2.6.16			libxml2-2.6.26-2.1.2	
    - pango-1.6.0			pango-1.14.9    from Fedora Core 7


Status, 2007-01-17
------------------

1. Ubuntu
   - 2006.10 [2006/10/26]
     - gtk+ 2.10.6
     - swig 1.3.28-1.1ubuntu1
   - 2006.06 [2006/06/01]
     - gtk+ 2.8.17
2. Mandriva Linux
   - 2007 [2006/10/03]
     - gtk+ 2.10.3
   - 2006 [2005/10/06]
     - gtk+ 2.8.3
3. Suse
   - 10.2 [2006/12/07]
     - gtk+ 2.10.6
   - 10.1 [2006/05/11]
     - gtk+ 2.8.10
4. Fedora Core
   - FC6 [2006/10/24]
     - gtk+ 2.10.4
   - FC5 [2006/03/20]
     - gtk+ 2.8.15
5. Debian GNU/Linux
   - unstable
     - gtk+ 2.8.20
   - testing
     - gtk+ 2.8.20
   - sarge [2005/06/06]
     - gtk+ 2.6.4

Status, 2005-11-06
------------------
The major distributions, as defined by http://distrowatch.com/dwres.php?resource=major, are:

- Ubuntu - http://www.ubuntu.com/
  -  5.10 = 2005-10-13 - http://www.ubuntu.com/newsitems/release510
    [from the {main,multiverse,universe}/binary-i386/Packages.gz files at
     http://archive.ubuntu.com/ubuntu/dists/breezy/]
    - aqbanking: libaqbanking0c2-1.5.99+1.6.0beta-1ubuntu1
    - libcairo-1.0.2-0ubuntu1
    - gconf2-2.12.0-0ubuntu1
    - glib2-2.8.3-0ubuntu1
    - gtk+2-2.8.6-0ubuntu2
    - guile-1.6.7-1ubuntu3
    - g-wrap-1.9.6-2ubuntu2
    - libart2-2.3.17-1
    - libglade2-2.5.1-2ubuntu1
    - libgnomeprint2.2-2.12.1-0ubuntu1
    - libgnomeui2-2.12.0-0ubuntu1
    - libgtkhtml3
      - libgtkhtml3.6-18-3.6.2-1
      - gtkhtml3.8-15-3.8.1-0ubuntu1
    - libgsf1-1.12.3-3ubuntu3
    - libofx2-0.8.0-3ubuntu8
    - libxml2-2.6.21-0ubuntu1
    - pango-1.10.1-0ubuntu1
  - *5.04 = 2005-04-08 - http://www.ubuntu.com/504Released
    [from the {main,multiverse,universe}/binary-i386/Packages.gz files at
     http://archive.ubuntu.com/ubuntu/dists/hoary/]
    - aqbanking ??
    - cairo 0.3.0-1
    - gconf-2 gconf2_2.10.0-0ubuntu1_i386.deb
    - glib-2 libglib2.0-0_2.6.3-1_i386.deb
    - gtk+-2 libgtk2.0-0_2.6.4-0ubuntu3_i386.deb
    - guile guile-1.6-libs_1.6.7-1ubuntu1_i386.deb
    - gwrap
      - gwrapguile-1.3.4
      - g-wrap-1.9.6
    - libart-2 libart-2.0-2_2.3.17-1_i386.deb
    - libglade-2 libglade2-0_2.5.1-0ubuntu1_i386.deb
    - libgnomeprint-2.2 libgnomeprint2.2-0_2.10.3-0ubuntu1_i386.deb
    - libgnomeui-2  libgnomeui-0_2.10.0-0ubuntu1_i386.deb
    - libgsf-1 libgsf-1_1.11.1-1ubuntu1_i386.deb
    - libofx: none
    - libxml-2 libxml2_2.6.17-0ubuntu1_i386.deb
    - pango libpango1.0-0_1.8.1-0ubuntu2
- Mandriva
  -  2007.0 = 2007-01-03
    [from ftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/official/2007.0/i586/media/main/]
    - aqbanking-2.2.1
    - libcairo2-1.2.4
    - gconf-2.14.0
    - glib-2.12.3
    - gtk+-2.10.3
    - guile-1.6.8
    - g-wrap-1.9.6
    - libart-2.3.17
    - libglade-2.6.0
    - libgnomeprint-2.2-2.12.1
    - libgnomeui-2.16.0
    - libgsf-1.14.1
    - libofx-0.8.0
    - libxml-2.6.26
    - pango-1.14.3
    - libgtkhtml-3.8-3.12.0
    Note: -devel packages for the libraries above must also be installed.
  -  2006 = 2005-10-06
    [from ftp://ftp.rutgers.edu/pub/Mandrakelinux/devel/2006.0/i586/media/main/]
    - aqbanking-1.2.0
    - libcairo2-1.0.0
    - gconf-2.10.1
    - glib-2.8.1
    - gtk+-2.8.3
    - guile-1.6.7
    - g-wrap-1.3.4
    - libart-2.3.17
    - libglade-2.5.1
    - libgnomeprint-2.2-2.10.3
    - libgnomeui-2.10.2
    - libgsf-1.12.2
    - libofx-0.7.0
    - libxml-2.6.21
    - pango-1.10.0
    - libgtkhtml-3.1-3.2.5
    - libgtkhtml-3.6-3.6.2
  - *2005 = 2005-04-14
    [from ftp://ftp.rutgers.edu/pub/Mandrakelinux/devel/2005/i586/media/main/]
    - aqbanking-1.0.7
    - libcairo-0.3.0
    - gconf-2.8.1
    - glib-2.6.3
    - gtk+-2.6.4
    - guile-1.6.7
    - g-wrap-1.3.4
    - libart-2.3.17
    - libglade-2.4.2
    - libgnomeprint-2.2-2.8.2
    - libgnomeui-2.8.2
    - libgsf-1.11.1
    - libofx-0.7.0
    - libxml-2.6.17
    - pango-1.8.1
    - libgtkhtml-3.1.11
- SUSE / opensuse
  -  10.2 = 2006-12-07
    - aqbanking-2.2.3
    - cairo-1.2.4
    - gconf2-2.14.0
    - glib2-2.12.4
    - goffice-0.2.1
    - gtk2-2.10.6
    - gtkhtml2-3.12.2
    - guile-1.8.1
    - g-wrap: not included
    - libart_lgpl-2.3.17
    - libglade2-2.6.0
    - libgnomeprint-2.12.1
    - libgnomeui-2.16.1
    - libgsf-1.14.2
    - libofx-0.8.2
    - libxml2-2.6.26
    - pango-1.14.5
    - swig-1.3.29
  -  10.1 = 2006-05-11
    - aqbanking-1.2.0 (but package is broken; needs to be replaced by >=1.3.0)
    - cairo-1.0.2
    - gconf2-2.12.1
    - glib2-2.8.5
    - goffice-0.1.2
    - gtk2-2.8.10
    - gtkhtml2-3.10.0
    - guile-1.6.7
    - g-wrap: not included
    - libart_lgpl-2.3.17
    - libglade2-2.5.1
    - libgnomeprint-2.12.1
    - libgnomeui-2.12.0
    - libgsf-1.13.99
    - libofx-0.8.0
    - libxml2-2.6.23
    - pango-1.10.2
    - swig-1.3.27
  -  10.0 = 2005-10-06
    - aqbanking: not included; binary aqbanking-1.6.0 available at ftp://ftp.gwdg.de/linux/misc/suser-crauch/10.0/
    - cairo-1.0.0
    - gconf2-2.12.0
    - glib2-2.8.1
    - gtk2-2.8.3
    - guile-1.6.7
    - g-wrap: not included
    - libart_lgpl-2.3.17
    - libglade2-2.5.1
    - libgnomeprint-2.12.0
    - libgnomeui-2.12.0
    - libgsf-1.12.1
    - libofx-0.7.0
    - libxml2-2.6.20
    - pango-1.10.0
    - swig-1.3.24
  - *9.3  = 2005-04-15
    - aqbanking: not included, but binary aqbanking-1.6.0 provided by upstream
    - cairo-0.3.0
    - gconf2-2.10.0
    - glib2-2.6.3
    - gtk2-2.6.4
    - gtkhtml2-3.6.1
    - guile-1.6.7
    - gwrap: not included
    - libart_lgpl-2.3.17
    - libglade2-2.5.1
    - libgnomeprint-2.10.1
    - libgnomeui-2.10.0
    - libgsf-1.11.1
    - libofx-0.7.0
    - libxml2-2.6.17
    - pango-1.8.1
    - swig-1.3.21
- Fedora Core
  - *FC4 = 2005-06-13
    - aqbanking-1.0.4beta
    - cairo: not included
    - g-wrap-1.3.4
    - gconf2-2.10.0
    - glib2-2.6.6
    - gtk2-2.6.10
    - guile-1.6.7
    - libart_lgpl-2.3.17
    - libglade2-2.5.1
    - libgnomeprint22-2.10.3
    - libgnomeui-2.10.0
    - libgsf-1.11.1
    - libofx-0.7.0
    - libxml2-2.6.20
    - pango-1.8.1
  -  FC3 = 2004-11-08
    - aqbanking: not included
    - cairo: not included
    - g-wrap-1.3.4
    - gconf2-2.8.1
    - glib2-2.4.8
    - gtk2-2.4.14
    - guile-1.6.4
    - libart_lgpl-2.3.16
    - libglade2-2.4.0
    - libgnomeprint22-2.8.0
    - libgnomeui-2.8.0
    - libgsf-1.10.1
    - libofx-0.7.0
    - libxml2-2.6.16
    - pango-1.6.0
- Debian GNU/Linux
  - 4.x unstable
    (already includes goffice and will include libqof1)
    - aqbanking-1.5.99
    - cairo-1.0.0
    - gconf2-2.10.1
    - glib2-2.8.3
    - gtk2-2.6.10
    - guile-1.6.7
    - libart2-2.3.17
    - libglade2-??
    - libgnomeprint2.2-2.10.3
    - libgnomeui2-2.10.1
    - libgsf1-1.12.3
    - libofx-0.8.0
    - libxml2-2.6.22
    - pango-1.8.2
    - gwrapguile-1.3.4
    - g-wrap-1.9.6
  - *3.1 sarge = 2005-06-06  
    - aqbanking: no
    - cairo: no
    - gconf2-2.8.1
    - glib2-2.6.4
    - gtk2-2.6.4
    - guile-1.6.7
    - libart2-2.3.17
    - libglade2-??
    - libgnomeprint2.2-2.8.2
    - libgnomeui2-2.8.1
    - libgsf1-1.11.1
    - libofx-0.7.0
    - libxml2-2.6.16
    - pango-1.8.1
    - gwrapguile-1.3.4
    - g-wrap-1.9.5
- Knoppix
  -  4.0.2 = 2005-09-24
  - *3.9   = 2005-06-01
  -  3.8.2 = 2005-05-12
- MEPIS
  - *3.3.1 = 2005-05-12
- Gentoo
  -  2005.1 = 2005-08-08
    [from http://distro.ibiblio.org/pub/linux/distributions/gentoo/releases/snapshots/2005.1/portage-20050709.tar.bz2]
    - aqbanking-1.0.8
    - cairo-0.4.0
    - g-wrap-1.3.4
    - gconf-2.10.0
    - glib-2.6.5
    - gtk+-2.6.8
    - guile-1.6.7
    - libart_lgpl-2.3.17
    - libglade-2.5.1
    - libgnomeprint-2.10.3
    - libgnomeui-2.10.0
    - libgsf-1.12.1
    - libofx-0.7.0
    - libxml2-2.6.19
    - pango-1.8.1-r1
  -  2005.0 = 2005-03-28
    [from http://gentoo.osuosl.org/releases/x86/2005.0/packagecd/CONTENTS
     and http://gentoo.osuosl.org/releases/snapshots/2005.0/portage-20050303.tar.bz2]
    - aqbanking-1.0.4_beta, -0.9.9
    - cairo-0.3.0-r1
    - g-wrap-1.3.4-r1
    - gconf-2.8.1-r1
    - glib-2.6.2
    - guile-1.6.7
    - libart_gpl-2.3.16
    - libglade-2.4.0
    - libgnomeprint-2.8.1
    - libgnomeui-2.8.1-r1
    - libgsf-1.10.0
    - libxml2-2.6.16
    - pango-1.8.0
- Slackware
  [Need to check for gnome packages at...
   - http://dropline-gnome.sourceforge.net/
   - http://gsb.freerock.org/
   - http://www.gware.org/]
  -  10.2 = 2005-09-14
    [from http://slackware.it/en/pb/]
    - aqbanking: no
    - cairo: no
    - gconf2: no
    - glib2-2.6.6
    - gtk+2-2.6.10
    - guile-1.6.7
    - gwrap: no
    - libart2-2.3.17
    - libglade2-2.4.2
    - libgnomeprint2.2: no
    - libgnomeui2: no
    - libgsf1-1.12.1
    - [lib]gtkhtml3: no
    - libofx: no
    - libxml2-2.6.22
    - pango-1.8.2
  - *10.1 = 2005-02-07
    [from http://slackware.it/en/pb/]
    - aqbanking: no
    - cairo: no
    - gconf2-2.6.2
    - glib2-2.6.4
    - gtk+2-2.6.7
    - guile-1.6.5
    - gwrap: no
    - libart2-2.3.16
    - libglade2-2.6.0
    - libgnomeprint2.2-2.6.1
    - libgnomeui2-2.6.1
    - libgsf1-1.9.1
    - [lib]gtkhtml3: no
      - libgtkhtml-2.6.2
    - libofx: no
    - libxml2-2.6.16
    - pango-1.8.1
- Xandros Desktop
  - *3.0 = 2004-12
  -  2.5 = 2004-07
  - ftp://ftp2.xandros.com/src/dists/
- FreeBSD
  - *5.4  = 2005-05-09 - http://www.freebsd.org/releases/5.4R/announce.html
    [from ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/5.4-RELEASE/packages/INDEX]
    - aqbanking: not included
    - cairo-0.4.0
    - gconf2-2.10.0
    - glib-2.6.3_1
    - gtk-2.6.4_1
    - guile-1.6.5
    - g-wrap-1.3.4_6
    - libart_lgpl2-2.3.17
    - libglade2-2.5.1_2
    - libgnomeprint-2.10.1
    - libgnomeui-2.10.0_1
    - libgsf-1.11.1
    - [lib]gtkhtml3-3.6.1
    - libofx-0.7.0
    - libxml2-2.6.18
    - pango-1.8.1
  -  4.11 = 2005-01-25 - http://www.freebsd.org/releases/4.11R/announce.html
- Fink/OSX
  - ??
- RHEL
  - *RHEL 4 = 2005-02-15
    [from http://ftp.redhat.com/pub/redhat/linux/enterprise/4/en/]
    - aqbanking: not included
    - cairo: not included
    - gconf2-2.8.1
    - glib2-2.4.7
    - gtk2-2.4.13
    - guile-1.6.4
    - gwrap: not included
    - libart_lgpl-2.3.16
    - libglade2-2.4.0
    - libgnomeprint22-2.8.0
    - libgnomeui-2.8.0
    - libgsf-1.10.1
    - libofx: not included
    - libxml2-2.6.16
    - pango-1.6.0
  -  RHEL 3 = 2003-10-22
    - aqbanking: not included
    - cairo: not included
    - gconf2-2.2.1
    - glib2-2.2.3
    - gtk2-2.2.4
    - guile-1.6.4
    - g-wrap: not included
    - libart_lgpl-2.3.11
    - libglade2-2.0.1
    - libgnomeprint22-2.2.1.3
    - libgnomeui-2.2.1
    - libgsf-1.6.0
    - libofx: not included
    - libxml2-2.5.10
    - pango-1.2.5
- CentOS
  [from http://vault.centos.org/]
  -  4.2 = 2005-10-12
    - aqbanking: no
    - cairo: no 
    - gconf2-2.8.1
    - glib2-2.4.7
    - gtk2-2.4.13
    - guile-1.6.4
    - gwrap: no
    - libart2-2.3.16
    - libglade2-2.4.0
    - libgnomeprint2.2-2.8.0
    - libgnomeui2-2.8.0
    - libgsf1-1.10.1
    - [lib]gtkhtml3-3.3.2
    - libofx: no 
    - libxml2-2.6.16
    - pango-1.6.0
  - *4.1 = 2005-06-12
    - aqbanking: no
    - cairo: no
    - gconf2-2.8.1
    - glib2-2.4.7
    - gtk2-2.4.13
    - guile-1.6.4
    - gwrap: no
    - libart2-2.3.16
    - libglade2-2.4.0
    - libgnomeprint2.2-2.8.0
    - libgnomeui2-2.8.0
    - libgsf1-1.10.1
    - [lib]gtkhtml3-3.3.2
    - libofx: no
    - libxml2-2.6.16
    - pango-1.6.0
