[SCM] root-system: CERN's ROOT Data Analysis Framework branch, master, updated. upstream/5.34.00_rc1-1-g034bfbb
Lifeng Sun
lifongsun at gmail.com
Sun Jun 3 13:20:33 UTC 2012
The following commit has been merged in the master branch:
commit 034bfbb7d05865da36edeb2c871be769ba53f1d7
Author: Lifeng Sun <lifongsun at gmail.com>
Date: Sun Jun 3 17:53:34 2012 +0800
Debianize.
diff --git a/build/package/debian/README.Debian b/debian/README.Debian
similarity index 100%
copy from build/package/debian/README.Debian
copy to debian/README.Debian
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..1df78bf
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,827 @@
+root-system (5.34.00~rc1-1) unstable; urgency=low
+
+ * New upstream version.
+ * New maintainer. Thanks Christian Holm Christensen for his huge
+ contribution to the HEP free software community. (Closes: #636974)
+
+ -- Lifeng Sun <lifongsun at gmail.com> Sat, 03 Jun 2012 17:26:05 +0800
+
+root-system (5.28.00-2) UNRELEASED; urgency=low
+
+ * New upstream version
+ * Upgraded the patches (5.28.00b)
+
+ -- Antonio Salvucci <s4lb04 at gmail.com> Thu, 17 Mar 2011 02:02:50 +0100
+
+root-system (5.28.00-1) UNRELEASED; urgency=low
+
+ * New upstream version (5.28.00a)
+
+ -- Antonio Salvucci <s4lb04 at gmail.com> Thu, 17 Mar 2011 02:00:14 +0100
+
+root-system (5.24.00-1) unstable; urgency=low
+
+ * New upstream version
+ * Fix "no hashsum checks of downloaded content, thus allowing
+ downloading and installation of malicious content" Implemented check
+ against static sha256sums distributed with package (Closes: #545240)
+ * Fix "generates incorrect package with python-support from
+ experimental" Packages now make sym-links in /usr/lib, so
+ pythons' loader should be able to find it. Hence, the sym-link is
+ gone. (Closes: #517320)
+ * Fix "bashism in debian/rules" replaced echo -e with printf
+ (Closes: #535421)
+ * Fix "libroot5.18 has circular Depends on root-plugin-proof" Fixed by
+ new library structure (Closes: #524991)
+ * Fix "root-system-rootd fails to install" Do not modify rootd user
+ in pre-installation. (Closes: #498398)
+ * Fix "should this package be orphaned?" New upload w/bug fixes
+ (Closes: #543737)
+ * Fix "root-system new version available" New version (Closes: #515568)
+ * Fix "[INTL:ja] please add Japanese po-debconf template translation
+ (ja.po)" Added translation (Closes: #546187)
+ * Fix "Package is missing most of its files" Fixed by rebuilt
+ (Closes: #515091)
+ * Fixed by rebuilt
+ * Fix "h2root crashes on amd64" Fixed by upstream's introduction of
+ libminicern (Closes: #518926)
+ * Fix "No symlink into /usr/lib/root" Fixed by new directory structure
+ - libraries in /usr/lib - and libQt is a plug-in and should not be linked
+ to directly by developer. (Closes: #525142)
+ * Fix "include Math/ProbFuncMathCore.h fails with CINT" Removed relative
+ path components, since CINT should know where to look.(Closes: #534202)
+ * root-system-rootd does it's set-up of the user and group in postinst,
+ thereby removing the need to pre-depend on adduser, etc.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Fri, 18 Sep 2009 13:51:15 -0400
+
+root-system (5.23.05-1) unstable; urgency=low
+
+ * New upstream version
+ * Fix "root-system - FTBFS: error: unrecognized command line option "-
+ m32"" Removed the -m32 flag for s390 builds (Closes: #517575)
+ * Fix "root-system_5.18.00-2.3+b1(mips/unstable): FTFBS on mips.
+ Undefined symbol." Use krb5_c_valid_cksumtype instead of private
+ valid_cksumtype (Closes: #529998)
+ * Fix "FTBFS: krb5auth/src/Krb5Auth.cxx:424: error: 'valid_cksumtype'
+ was not declared in this scope" See above. (Closes: #533964)
+ * Fix "root-system - FTBFS: Attempts at guessing your architecture
+ failed." Put stuff into relevant files - still need to see that it
+ actuall works on s390 (Closes: #487935)
+ * Fix "root-system_5.18.00-2(sparc/unstable): FTBFS,
+ `debian/tmp/usr/bin/olbd': No such file or directory" Re-enabled built of
+ XRootD stuff on sparc. Hopefully it will work. (Closes: #493345)
+ * Fix "[debconf_rewrite] Debconf templates and debian/control review"
+ Adopted all recommendations - thanks. (Closes: #514827)
+ * Fix "root-system new version available" Build newer version
+ (Closes: #515568)
+ * Fix "returns errors when using graphics" Fixed by proper rebuild
+ (Closes: #515632)
+ * Added new package libroot-net-bonjour that contains zeroconf service
+ declaration and discovery classes.
+ * Build-depend on libglew instead of using built-in code.
+ * Moved TFileMerger back to proofplayer and made proofplayer a callable
+ extension rather than a plug-in.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 25 Jun 2009 15:55:08 +0200
+
+root-system (5.23.01-1) unstable; urgency=low
+
+ * New upstream version
+ * Moved TFileMerger from proof/proofplayer to tree/treeplayer.
+ * Moved TXMLEngine from io/xml to io/io
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 18 Dec 2008 13:12:04 +0100
+
+root-system (5.21.07-4) unstable; urgency=low
+
+ * Made virtual base class TVirtualGeoOverlap and use that where
+ appropriate. This makes the libGeomPainter a true plug-in.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 17 Dec 2008 11:40:54 +0100
+
+root-system (5.21.07-3) unstable; urgency=low
+
+ * New upstream
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Mon, 15 Dec 2008 12:51:08 +0100
+
+root-system (5.21.07-2) unstable; urgency=low
+
+ * Discovery of s390x implemented - should check if this works also in
+ terms of code (Closes: #487935)
+ * Do not modify rootd user after creation. Perhaps this fixes
+ #498398
+ * FTBFS with GCC 4.4: wrong #elif - fixed upstream (Closes: #505015)
+ * can FTBFS due to incomplete calls to open - fixed upstream
+ (Closes: #502873)
+ * incomplete ftgl-dev => libftgl-dev transition fixed
+ (Closes: #498677)
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 03 Dec 2008 10:45:16 +0100
+
+root-system (5.21.07-1) unstable; urgency=low
+
+ * New upstream version
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Fri, 28 Nov 2008 19:28:17 +0100
+
+root-system (5.21.05-1) unstable; urgency=low
+
+ * New upstream version
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Tue, 07 Oct 2008 09:26:04 +0200
+
+root-system (5.19.05-1) unstable; urgency=low
+
+ * New upstream version
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 14 May 2008 23:16:12 +0200
+
+root-system (5.19.03-2) unstable; urgency=low
+
+ * Moved root-plugin-graf3d-gl to libroot-graf3d-gl and
+ libroot-graf3d-dev, since the code needs to be callable for custom
+ EVE implementations of quads, etc.
+ * Fixed problem with startup URL - points to
+ http://localhost/doc/root/html - implies recommendation of a
+ web-server. Aparently, the TGHtml gui element does not really know
+ how to resolve relative links from a "file:///" URL.
+ * Added "--etcdir" option to root-config script - should be useful
+ for VMC and the like implementations.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 08 May 2008 08:09:44 +0200
+
+root-system (5.19.03-1) unstable; urgency=low
+
+ * New upstream version (Closes: #478956)
+ * Added prober build dependencies on fortran compiler on all
+ platforms (Closes: #429186)
+ * With the kind help of Thiemo Seufer <ths at networkno.de>,
+ Dirk Van Hertem <dirk.vanhertem at ieee.org>, and Boris <boris at mogwitz.eu>
+ we managed to get ROOT to compile on mips/mipsel. This is a new ROOT
+ platform too. (Closes: #434855, #425257)
+ * Fixed GSL version recognision. (Closes: #450507, #450508)
+ * ROOT now builds against Qt 4. (Closes: #476324)
+ * Fixed download URL of TTF files (Closes: #451510)
+ * Split package root-system-xrootd into 2 packages: root-system-xrootd and
+ root-plugin-net-xrootd.
+ * Follow new source directory structure in package structure. Several new
+ packages that split older libroot<version> package.
+ * libroot-proof replaces root-plugin-proof
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Fri, 02 May 2008 08:21:48 +0200
+
+root-system (5.18.00-2.2) UNRELEASED; urgency=low
+
+ * Debconf templates and debian/control reviewed by the debian-l10n-
+ english team as part of the Smith review project. Closes: #514827
+ * [Debconf translation updates]
+ - Galician. Closes: #515481
+ - Vietnamese. Closes: #515596
+ - Swedish. Closes: #515939
+ - Basque. Closes: #516013
+ - Italian. Closes: #516445
+ - Spanish. Closes: #517177
+ - Portuguese. Closes: #517185
+ - German. Closes: #517381
+ - Russian. Closes: #517492
+ - Czech. Closes: #517536
+ - Finnish. Closes: #518187
+ - French. Closes: #517806
+
+ -- Christian Perrier <bubulle at debian.org> Wed, 11 Feb 2009 10:18:46 +0100
+
+root-system (5.18.00-2.1) unstable; urgency=low
+
+ * Non-maintainer upload to fix pending l10n issues.
+ * Remove extra space in debconf templates. Closes: #488136
+ * Debconf translations:
+ - German. Closes: #488135
+ - Portuguese. Closes: #488582
+ - Russian. Closes: #489490
+ - Danish translation file renamed to da.po
+ - Finnish. Closes: #491740
+ - Czech. Closes: #492494
+ - Basque. Closes: #492528
+ - Galician. Closes: #492612
+ - Brazilian Portuguese. Closes: #492720
+ - Italian. Closes: #493960
+
+ -- Christian Perrier <bubulle at debian.org> Fri, 18 Jul 2008 09:58:03 +0200
+
+root-system (5.17.07-1) unstable; urgency=low
+
+ * New upstream version
+ * Fixed problem with libroot-python-dev being uninstallable on
+ ubuntu.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Sun, 09 Dec 2007 14:17:30 +0100
+
+root-system (5.17.05-6) unstable; urgency=low
+
+ * Fix configure to allow GSL > 1.9 (Closes: #450507)
+ * Builds on hppa, mips, mipsel (Closes: #434855, 425257)
+ * All linux platforms will use gfortran by default (Closes: #429186)
+ * Use proper GCC 4 I/O bits fixed upstream (Closes: #441333)
+ * ttf-root-installer: Suggest proper URL for font downloading
+ (Closes: #451510)
+ * Add missing libRooFitCore to libroot-roofit package.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Fri, 23 Nov 2007 17:15:52 +0100
+
+root-system (5.17.05-5) unstable; urgency=low
+
+ * Fixes to Qt discovery and code in qtgsi.
+ * Better support for MIPS (thanks to Thiemo Seufer
+ <ths at networkno.de> of Debian)
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 07 Nov 2007 09:40:11 +0100
+
+root-system (5.17.05-4) unstable; urgency=low
+
+ * Upstream fix to TGX11::DrawPolyMarker.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Tue, 06 Nov 2007 14:17:06 +0000
+
+root-system (5.17.05-3) unstable; urgency=low
+
+ * Do not try to make libFTGL nor put it in the libRGL.rootmap file,
+ since we use the system libftgl_pic.a to link in the functionality.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 01 Nov 2007 23:05:53 +0000
+
+root-system (5.17.05-2) unstable; urgency=low
+
+ * Forgot top copy over the changes in makelist script, so that
+ standard library container dictionaries was missing.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 31 Oct 2007 00:21:41 +0000
+
+root-system (5.17.05-1) unstable; urgency=low
+
+ * New development release.
+ * Add proper fortran dependencies and discovery code (Closes: #429186).
+ * Add archicture discovery for mips (Closes: #434855).
+ * Add archicture discovery for hppa (Closes: #425257).
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Tue, 23 Oct 2007 15:06:37 +0200
+
+root-system (5.16.00-2) unstable; urgency=low
+
+ * Fix missing lib*Dict.so for precompiled dictionaries of standard
+ library containers, like vector, map, etc.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Tue, 23 Oct 2007 12:28:42 +0200
+
+root-system (5.16.00-1) unstable; urgency=low
+
+ * New upstream version. This is a production version, so it's
+ targeted at unstable.
+ * Fix some stuff on dependencies and the like.
+ * Updated README.Debian for new package names.
+ * Added gfortran switch for amd64 et al (Closes: #429186).
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 26 Jul 2007 23:34:19 +0200
+
+root-system (5.15.07-4) experimental; urgency=low
+
+ * Attempt to fix broken Python dependencies on Ubuntu.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Mon, 14 May 2007 17:17:50 +0200
+
+root-system (5.15.07-3) experimental; urgency=low
+
+ * [Kevin] Corrected some english in the control file
+ * [Kevin] Removed root-system dependency on libroot.
+ * [Kevin] Removed postinst stubs for root-system-{rootd,proofd}
+ * [Kevin] Removed various directories from root-system.
+ * [Kevin] Fixed script name in /etc/init.d/root-system-{rootd,proofd}.
+ Perhaps it's time to look into 'upstart' scripts?
+ * Fixed package names in README.Debian.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Sat, 12 May 2007 10:43:24 +0200
+
+root-system (5.15.07-2) experimental; urgency=low
+
+ * Previous source package broken due to tar-balls not unpacked.
+ * Fixes for new lib*.rootmap instead of global system.rootmap.
+ * Fixes for new ld.so.conf.d/ scheme of configuring ld.so's search path.
+ * Split off unuran into it's own package libroot-unuran, since it is
+ GPL'ed.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Fri, 11 May 2007 02:04:02 +0200
+
+root-system (5.15.07-1) experimental; urgency=low
+
+ * New version.
+ * New source package name to please FTP-masters.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Tue, 01 May 2007 22:18:01 +0200
+
+root (5.13.05-7) experimental; urgency=low
+
+ * New release. take out /usr/lib/root/<version> from
+ /etc/root/system.rootrc as it may cause problems. Should have no
+ consequence to the users.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 2 Nov 2006 10:19:18 +0100
+
+root (5.13.05-6) experimental; urgency=low
+
+ * Fix to Qt plug-in to allow fixed directory builds.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Mon, 30 Oct 2006 12:19:24 +0100
+
+root (5.13.05-5) experimental; urgency=low
+
+ * Added man page for xrd.
+ * [Kevin] Fixed some broken dependencies in the [X]Proofd packages. I moved
+ the libXrdProofd library into the root-plugin-xproof package as it seems
+ to be used by the client only.
+ * [Kevin] Fixed up some man pages.
+ * [Kevin] Fixed some spelling errors in descriptions.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Sat, 28 Oct 2006 12:16:50 +0200
+
+root (5.13.05-4) experimental; urgency=low
+
+ * [Kevin] Fixed up the README.Debian file for an imminent upload to
+ experimental.
+ * [Kevin] Removed some autotools generated files from the libAfterImage
+ directory in the source package.
+ * [Kevin] Corrected a typo in the debian/rules clean target.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Fri, 27 Oct 2006 10:15:25 +0200
+
+root (5.13.05-3) experimental; urgency=low
+
+ * [Kevin] Use system libungif if possible.
+ * [Kevin] Removed some files left after clean in libAfterImage.
+ * [Kevin] Fixed up the initd scripts with Required-{start,stop}
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 26 Oct 2006 11:17:44 +0200
+
+root (5.13.05-2) experimental; urgency=low
+
+ * [Kevin] Fix missing install of libSpectrum and libFitPanel.
+ * [Kevin] Fix duplicate build-depends
+ * [Kevin] Fix missing install of PyCintex.py
+ * [Kevin] Fix unpacking of tar-balls for asimage and xrootd.
+ * [Kevin] Fix init missing info.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Tue, 24 Oct 2006 12:43:14 +0200
+
+root (5.13.05-1) experimental; urgency=low
+
+ * New upstream development version.
+ * [Kevin] Remove cruft left behind after removing ttf-root-installer
+ * [Kevin] Install RadioNuclides.txt
+ * [Kevin] Fix build dependency on python-support.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Mon, 23 Oct 2006 12:13:11 +0200
+
+root (5.13.03-1) experimental; urgency=low
+
+ * New upstream version
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 31 Aug 2006 00:45:21 +0200
+
+root (5.13.02-1) experimental; urgency=low
+
+ * New upstream version
+ * [Kevin] First attempt at complying with the Python policy.
+ * Python seems ok. We install for one version only - the one we were
+ compiled against.
+ * Made init.d scripts use LSB functions (except start-stop-daemon is still
+ used, since the normal one isn't OK). daemons depend on lsb-base.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 31 Aug 2006 00:33:04 +0200
+
+root (5.13.01-4) experimental; urgency=low
+
+ * copyrights fixed by Fons.
+ * Try to fix TBrowser option.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 24 Aug 2006 19:44:28 +0200
+
+root (5.13.01-3) experimental; urgency=low
+
+ * Fixed reference to CINT copyright statement and license.
+ * Fixed some problems in the xrootd build.
+ * Fixed a bug in some reflex code.
+ * Added 32x32 xpm icon.
+ * Make sure python scripts do not contain a she-bang.
+ * RSA and ALICE license issues have been solved, but Fons hasn't
+ uploaded the new files yet. The Krb5 export restriction is still
+ unresolved. The old Zip license issue should have been solved,
+ but the change to the license statement has been put in CVS yet.
+ Hence, the copyright file contains the old license and coppyright
+ statements.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 23 Aug 2006 16:45:47 +0200
+
+root (5.13.01-2) experimental; urgency=low
+
+ * Added the package `libroot-tmva', to avoid bad dependencies.
+ * Fixed problem with PostGreSQL plugin missing
+ * Permanently fixed man page problems in RPMs (added glob star to all
+ man pages in the file lists).
+ * Some other minor fixes.
+ * Better desktop integration for both RPMs and DEBs.
+ * Added `-fail-on-missing' to make the building fail if a dependency
+ isn't found.
+ * Added third-party copyrights and licenses to the copyright file.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Mon, 21 Aug 2006 17:00:57 +0200
+
+root (5.13.01-1) experimental; urgency=low
+
+ * New upstream version
+ * Added TMVA to the libroot package.
+ * Also put GDML files into the libroot-python package.
+ * Upstream should have fixed a number of copyright statements.
+ * It seems that the RSA problem persists - sigh!
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Mon, 31 Jul 2006 15:42:12 +0200
+
+root (5.11.03-6) experimental; urgency=low
+
+ * Fixes to allow compilation with prefix != /usr for RPMs
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 11 May 2006 09:02:43 +0200
+
+root (5.11.03-5) experimental; urgency=low
+
+ * Fixed to RPM building. Make sure SYSV init scripts is installed.
+ * Make sure we use the same configure arguments when we make the spec file,
+ as are used by the spec file.
+ * Add this changelog to the spec file.
+ * Build-depend on GSL.
+ * Build more packages by default.
+ * Fixes to RPM SYSV init scripts
+ * Fixed to ttf-root-installer RPM post install and pre remove scripts.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Mon, 8 May 2006 16:48:47 +0200
+
+root (5.11.03-4) experimental; urgency=low
+
+ * Fixes to RPM creation.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Sun, 7 May 2006 14:18:37 +0200
+
+root (5.11.03-3) experimental; urgency=low
+
+ * Added libraries libReflex and libCintex to libroot, and the
+ corresponding headers and development libraries to libroot-dev.
+ The Python scripts are added to libroot-dev. This means, that
+ ROOT now always build-depends and depends on Python.
+ * Added gccxml as a Suggests to libroot-dev for `rootcint -gccxml'.
+ * The library libCintex is temporary.
+ * Added krb5-user | heimdal-clients as build-dependency for
+ root-plugin-krb5. The configure script need to know where kinit is.
+ The same packages are also added as run-time dependency.
+ * Fixed root-rootd and root-xrootd and root-proofd to not bark when
+ upgrading and the servers are not running. Thanks to Kevin.
+ * Fixed some minor mistakes in `ttf-root-installer.copyright'. Again,
+ Thanks to Kevin.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Tue, 25 Apr 2006 02:19:39 +0200
+
+root (5.11.03-2) experimental; urgency=low
+
+ * Minor fixes. Typos in the font generation script, lingering temp file,
+ remove build code, lingering source directory, better copyright file,
+ and so on.
+ * Fixes to ODBC interface to use SQL{U}LEN consistently where specified
+ by the ODBC prototypes. This should remove any problems with
+ i386/ia64/amd64/windows.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Sat, 22 Apr 2006 03:15:21 +0200
+
+root (5.11.03-1) experimental; urgency=low
+
+ * fixes to Proof library loading. Missing `#include "config.h"' added.
+ * Fix to ODBC plugin.
+ * Added print-out to s050000l.pe.
+ * Fixed symbol.ttf font in TImageDump.
+ * Fixed FSF address in root-common.copyright
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 20 Apr 2006 22:17:08 +0200
+
+root (5.11.02-1) experimental; urgency=low
+
+ * New upstream version.
+ * New scheme to make package file lists.
+ * Using new GPL'ed `symbol.tff'
+ * Fix it so that the font installer package doesn't overwrite and delete
+ the already installed `symbol.ttf'.
+ * Fixed free font table in TTF.cxx to include the GPL'ed symbol.ttf.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 20 Apr 2006 02:20:08 +0200
+
+root (5.11.01-9) unstable; urgency=low
+
+ * Added plugin package root-plugin-odbc - ODBC database connectivty.
+ * [Kevin] Fixed spelling errors in description of libroot-mathmore
+ * [Kevin] Fixed call to dh_makeshlibs
+ * [Kevin] Fixed maxdb build on amd64
+ * [Kevin] Fixed some dependencies of root-plugin-peac and root-proofd
+ * [Kevin] Fixed some code problems in SapDB code (again!)
+ * Leave in `symbol.ttf' in the root-common package, because it will soon
+ be replaced by a GPL'ed one.
+ * Added a specific copyright file for root-common due to the new
+ symbol.ttf font.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 19 Apr 2006 02:25:10 +0200
+
+root (5.11.01-8) unstable; urgency=low
+
+ * Various fixes from Kevin
+ * Added overrides for various extension packages
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Sat, 15 Apr 2006 12:25:12 +0200
+
+root (5.11.01-7) unstable; urgency=low
+
+ * Fixed a problem with transition of libroot-fftw to root-plugin-fftw3
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 13 Apr 2006 15:26:10 +0200
+
+root (5.11.01-6) unstable; urgency=low
+
+ * Package libroot-fftw made a plugin by Fons. Now it's called
+ root-plugin-fftw.
+ * Small fixes from Kevin.
+ * Default ZipMode is now 1 (checked in debian/rules).
+ * Implemented a configure switch to use system Zlib.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 12 Apr 2006 15:39:11 +0200
+
+root (5.11.01-5) unstable; urgency=low
+
+ * Added new package libroot-fftw, and libroot-fftw-dev. Extension
+ packages with libraries to interface FFTw.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Tue, 11 Apr 2006 18:01:26 +0200
+
+root (5.11.01-4) unstable; urgency=low
+
+ * Added packages libroot-mathmore5.11 and libroot-mathmore-dev.
+ * Also build libMathCore. This is put in libroot5.11 and libroot-dev.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Sun, 2 Apr 2006 15:15:16 +0200
+
+root (5.11.01-3) unstable; urgency=low
+
+ * Fixed installation of PROOF configuration examples to new location.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Fri, 31 Mar 2006 12:12:56 +0200
+
+root (5.11.01-2) unstable; urgency=low
+
+ * Some fixes upstream
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 22 Mar 2006 15:11:49 +0100
+
+root (5.11.01-1) unstable; urgency=low
+
+ * New upstream version. No changes to the debian part.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Tue, 21 Mar 2006 01:59:33 +0100
+
+root (5.10.00-1) unstable; urgency=low
+
+ * New upstream version
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 2 Mar 2006 10:09:35 +0100
+
+root (5.09.01-10) unstable; urgency=low
+
+ * Removed dangling code directory in `minuit2/src'
+ * Set `Root.Zlib=1' in `/etc/root/system.rootrc' per default.
+ * Fixed some minor bugs in wrapper scripts and SYSV init scripts.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Fri, 24 Feb 2006 11:47:18 +0100
+
+root (5.09.01-9) unstable; urgency=low
+
+ * Initial release. (Closes: #325306: RFP: root -- An object oriented
+ data analysis framework - Debian Bug report logs)
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 23 Feb 2006 15:25:22 +0100
+
+root (5.09.01-8) unstable; urgency=low
+
+ * Added some lintian overrides.
+ * Moved some shared configuration files to root-common.
+ * Fixed problems in init scripts.
+ * Fixed problem with wrappers using `root-config'.
+ * Removed some unused configuation scripts.
+ * Install xinetd files as examples.
+ * Removed /usr/share/root/proof/etc/*.sample and install them as
+ examples instead.
+ * Made `Replaces' and `Conflicts' dependencies on older packages
+ be version specific to static version numbers. We don't want
+ libroot-roofit to conflict with root-plugin-rootfit for all time.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 15 Feb 2006 23:11:28 +0100
+
+root (5.09.01-7) unstable; urgency=low
+
+ * [Kevin] Fixed a problem with libXrdProof.so symlinks in root-xrootd.
+ * [Kevin] Made a wrapper script that calls proofserv with LD_LIBRARY_PATH
+ set to the plugin directory. This should be fixed upstream.
+ * [Kevin] Made wrapper scripts that calls xrdpwdadmin and xrdgsiproxy with
+ LD_LIBRARY_PATH set to plugin-script.
+ * [Kevin] Fixed problem in man page of xrdcp.
+ * Corrected kfreebsd-gnu to kfreebsd-i386.
+ * [Kevin] Fixed problem in proofserv man page.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 15 Feb 2006 04:33:07 +0100
+
+root (5.09.01-6) unstable; urgency=low
+
+ * Fixed a problem in the rules file with a errornous backslash.
+ * Make configure output config.log for debugging.
+ * [Kevin] Build depend on libmysqlclient15-dev instead of older 12 or 14.
+ * [Kevin] Fix typo's in description of libroot-minuit.
+ * [Kevin] Use `-s' instead of `-a'.
+ * [Kevin] Fix a logic error in ttf-root-installer.
+ * [Kevin] Moved dependency of fonts from libroot to root-common.
+ * [Kevin] Removed all mention of root-cint
+ * [Kevin] Fixed problem with `set -e' in root-rootd.postrm.
+ * [Kevin] Set sticky bit on `/var/cache/rootd/{tmp,pub}' so users can
+ not overwrite each others files (root-rootd.preinst).
+ * Make sure that libHbook is linked against libg2c.so and not libg2c.a
+ which made `lintian' complain about `shlib-with-non-pic-code'.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Tue, 14 Feb 2006 01:10:54 +0100
+
+root (5.09.01-5) unstable; urgency=low
+
+ * root-plugin-minuit moved to libroot-minut{,-dev}
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Tue, 7 Feb 2006 18:21:50 +0100
+
+root (5.09.01-4) unstable; urgency=low
+
+ * Fixed some build-dependencies. In partiucular, libsqlod75-dev is only
+ available on certain platforms, and libpacklib1-dev is not available on
+ GNU/kFreeBSD.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Sun, 15 Jan 2006 12:43:38 +0100
+
+root (5.09.01-3) unstable; urgency=low
+
+ * Fixed some build dependencies.
+ * Fixed some non-POSIX /bin/sh code
+ * Fixed Python module location
+ * Added libafterimage-dev build-dependencies - eventually we'll use the
+ normal libafterimage-dev, but currently that's disabled up-stream.
+ * Added the executable xproofd to the root-proofd package, along with
+ it's man(1) page.
+ * Removed build-depends on libxpm4-dev, as that pulls in libxaw7-dev,
+ which is not really what we need. Instead the build-depends is now
+ libxpm.
+ * The TTF installer package now depends on msttcorefonts, and makes
+ mostly symbolic links to files in that package. Hence, we only need
+ to get and install `symbol.ttf' and `windings.ttf'.
+ * Revived the package root-plugin-sapdb as root-plugin-maxdb. Thanks to
+ Ricardo Yanez for pointing out libsqlod to me.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Fri, 13 Jan 2006 09:27:52 +0100
+
+root (5.09.01-2) unstable; urgency=low
+
+ * Added the package root-common to hold common files
+ * Replaced root-plugin-clarens, root-plugin-ldap, root-plugin-mlp
+ root-plugin-python, root-plugin-quadp, root-plugin-roofit,
+ root-plugin-ruby with two packages, a run-time library package
+ (libroot-<...><version>) and a development package (libroot-<...>-dev).
+ This is because developers may want to link against these libraries.
+ * Removed the package root-cint, and moved libraries to libroot, headers
+ and the like to libroot-dev, and programs to root-bin. The
+ alternatives still exists for cint and makecint.
+ * Applied a patch that allows ROOT to use DFSG free TTF's rather than
+ the MS Core Fonts.
+ * Put a symlink to ruby extension library in ruby load directory.
+ These are in the _development_ package.
+ * Put a symlink to Python script and extension library in Python
+ load directory. These are in the _development_ package.
+ * Fixed some dependency issues, and similar - thanks to Kevin McCarty
+ for all his help on this.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 11 Jan 2006 01:16:25 +0100
+
+root (5.09.01-1) unstable; urgency=low
+
+ * New upstream version
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Mon, 9 Jan 2006 21:49:48 +0100
+
+root (5.08.00-1) unstable; urgency=low
+
+ * New upstream version
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Thu, 15 Dec 2005 14:59:41 +0100
+
+root (5.06.01-1) unstable; urgency=low
+
+ * New upstream version
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 16 Nov 2005 10:46:04 +0100
+
+root (5.05.01-1) unstable; urgency=low
+
+ * New upstream version
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 12 Oct 2005 00:41:44 +0200
+
+root (5.04.00-2) unstable; urgency=low
+
+ * Some new stuff to handle the libraries and plugins installed by the
+ packages. For the plugin packages, we do not install the link
+ libraries in /usr/lib/root, but in /usr/lib/root/<version>, as these
+ libraries are really plugins and should not be linked against.
+ However, we do need to install the `lib<Name>.so.<version>' in
+ /usr/lib/root, as some may incrementally link against these.
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Wed, 21 Sep 2005 22:07:12 +0200
+
+root (5.04.00-1) unstable; urgency=low
+
+ * New upstream version
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Tue, 20 Sep 2005 22:34:53 +0200
+
+root (5.03.01-2) unstable; urgency=low
+
+ * New upstream version
+ * Make links in /usr/lib/root/<version> to shared libraries, so that
+ we can have many versions of the libraries installed, and we do not
+ need libroot-dev
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Mon, 15 Aug 2005 00:46:18 +0200
+
+root (5.01.01-1) unstable; urgency=low
+
+ * New upstream
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Mon, 23 May 2005 13:42:03 +0200
+
+root (4.03.03-1) unstable; urgency=low
+
+ * New upstream ROOT version
+ * New package root-plugin-oracle
+ * Package root-plugin-xml now contains an XML parser, not the XML I/O
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Sun, 20 Mar 2005 16:28:37 +0100
+
+root (4.03.02-1) unstable; urgency=low
+
+ * New packaging scripts
+
+ -- Christian Holm Christensen <cholm at nbi.dk> Mon, 21 Feb 2005 16:28:37 +0100
+
+root (3.03.05-1) unstable; urgency=low
+
+ * Bumped Debian GNU/Linux version with ROOT
+
+ -- Christian Holm <cholm at nbi.dk> Mon, 13 May 2002 13:32:54 +0200
+
+root (3.02.06-1) unstable; urgency=low
+
+ * Bumped Debian GNU/Linux version with ROOT
+
+ -- Christian Holm <cholm at nbi.dk> Wed, 9 Jan 2002 04:08:19 +0100
+
+root (3.02.04-1) unstable; urgency=low
+
+ * Bumped Debian GNU/Linux version with ROOT
+
+ -- Christian Holm <cholm at nbi.dk> Tue, 8 Jan 2002 03:16:39 +0100
+
+root (3.02.00-1) unstable; urgency=low
+
+ * Bumped Debian GNU/Linux version with ROOT
+
+ -- Christian Holm <cholm at nbi.dk> Thu, 15 Nov 2001 21:34:26 +0100
+
+root (3.00.06-1) unstable; urgency=low
+
+ * Bumped Debian GNU/Linux version with ROOT
+
+ -- Christian Holm <cholm at nbi.dk> Sat, 24 Mar 2001 16:12:08 +0100
+
+root (3.00.04-1) unstable; urgency=low
+
+ * Bump version to 3.00/04
+
+ -- Christian Holm <cholm at nbi.dk> Fri, 16 Feb 2001 23:59:40 +0100
+
+root (2.26.00-1) unstable; urgency=low
+
+ * Initial Release.
+
+ -- Christian Holm <cholm at nbi.dk> Fri, 16 Feb 2001 23:59:04 +0100
diff --git a/build/package/debian/compat b/debian/compat
similarity index 100%
copy from build/package/debian/compat
copy to debian/compat
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..716f53f
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,1864 @@
+Source: root-system
+Section: science
+Priority: optional
+Maintainer: Debian Science Maintainers <debian-science-maintainers at lists.alioth.debian.org>
+Uploaders: Lifeng Sun <lifongsun at gmail.com>
+DM-Upload-Allowed: yes
+Homepage: http://root.cern.ch
+Build-Depends: debhelper (>= 5.0.37.2), lsb-release, autotools-dev, po-debconf, libssl-dev, comerr-dev, libxpm-dev, libltdl-dev, x11proto-xext-dev, libxext-dev, libfreetype6-dev, libpcre3-dev, zlib1g-dev | libz-dev, python-dev (>= 2.1), graphviz, ttf-freefont, libncurses5-dev | libcurses-dev, libgraphviz-dev, libavahi-core-dev, libxft-dev, python-support (>= 0.3), ruby (>= 1.8), ruby1.8-dev | ruby-dev (>= 1.8), libglu1-mesa-dev| xlibmesa-glu-dev | libglu-dev, libglew1.5-dev | libglew-dev, libftgl-dev | ftgl-dev, libgl2ps-dev, libxml2-dev, libgsl0-dev, libavahi-compat-libdnssd-dev, libldap2-dev | libldap-dev, libxmlrpc-c3-dev | libxmlrpc-c-dev | libxmlrpc-core-c3-dev, libcurl4-gnutls-dev | libcurl4-openssl-dev | libcurl-dev, libjpeg-dev, libpng12-dev, libtiff4-dev, libgif-dev, libxinerama-dev, libfftw3-dev | fftw3-dev, libpythia8-dev, libglobus-gss-assist-dev, libglobus-gssapi-gsi-dev, libglobus-gsi-credential-dev, libglobus-common-dev, libglobus-gsi-callback-dev, libglobus-gsi-sysconfig-dev, libglobus-gssapi-gsi-dev, libglobus-gsi-callback-dev, libglobus-gsi-cert-utils-dev, libglobus-openssl-dev, libglobus-gsi-proxy-core-dev, libglobus-callout-dev, globus-proxy-utils,krb5-user|heimdal-clients, libmysqlclient15-dev | libmysqlclient14-dev| libmysqlclient12-dev| libmysqlclient-dev, libiodbc2-dev | unixodbc-dev, libpq-dev | postgresql-dev, gfortran|fortran-compiler, libqt4-dev (>= 4.3.0) | libqt3-mt-dev (>= 3.3.0), qt4-dev-tools (>= 4.3.0) | qt3-dev-tools (>= 3.3.0), libqt4-opengl-dev, libkrb5-dev|heimdal-dev
+Standards-Version: 3.9.3
+
+Package: root-system
+Architecture: all
+Depends: root-system-bin, libroot-core-dev, ${misc:Depends}
+Recommends: libroot-graf3d-gl-dev (>= ${binary:Version}), libroot-io-xmlparser-dev (>= ${binary:Version}), libroot-math-mathmore-dev (>= ${binary:Version}), libroot-math-unuran-dev (>= ${binary:Version}), libroot-misc-memstat-dev (>= ${binary:Version}), libroot-misc-table-dev (>= ${binary:Version}), libroot-net-bonjour-dev (>= ${binary:Version}), libroot-net-ldap-dev (>= ${binary:Version}), root-plugin-graf2d-asimage (>= ${binary:Version}), root-plugin-gui-qt (>= ${binary:Version}), root-plugin-graf2d-qt (>= ${binary:Version}), root-plugin-math-fftw3 (>= ${binary:Version}), root-plugin-graf2d-gviz (>= ${binary:Version}), root-plugin-math-minuit2 (>= ${binary:Version}), root-plugin-net-krb5 (>= ${binary:Version}), root-plugin-sql-odbc (>= ${binary:Version}), libroot-geom-dev (>= ${binary:Version}), libroot-graf2d-gpad-dev (>= ${binary:Version}), libroot-graf2d-graf-dev (>= ${binary:Version}), libroot-graf2d-postscript-dev (>= ${binary:Version}), libroot-graf3d-eve-dev (>= ${binary:Version}), libroot-graf3d-g3d-dev (>= ${binary:Version}), libroot-gui-dev (>= ${binary:Version}), libroot-gui-ged-dev (>= ${binary:Version}), libroot-hist-dev (>= ${binary:Version}), libroot-hist-spectrum-dev (>= ${binary:Version}), libroot-html-dev (>= ${binary:Version}), libroot-io-dev (>= ${binary:Version}), libroot-math-foam-dev (>= ${binary:Version}), libroot-math-genvector-dev (>= ${binary:Version}), libroot-math-mathcore-dev (>= ${binary:Version}), libroot-math-matrix-dev (>= ${binary:Version}), libroot-math-minuit-dev (>= ${binary:Version}), libroot-math-mlp-dev (>= ${binary:Version}), libroot-math-physics-dev (>= ${binary:Version}), libroot-math-quadp-dev (>= ${binary:Version}), libroot-math-smatrix-dev (>= ${binary:Version}), libroot-math-splot-dev (>= ${binary:Version}), libroot-misc-minicern-dev (>= ${binary:Version}), libroot-montecarlo-eg-dev (>= ${binary:Version}), libroot-montecarlo-vmc-dev (>= ${binary:Version}), libroot-net-dev (>= ${binary:Version}), libroot-net-auth-dev (>= ${binary:Version}), libroot-proof-dev (>= ${binary:Version}), libroot-proof-proofplayer-dev (>= ${binary:Version}), libroot-tmva-dev (>= ${binary:Version}), libroot-tree-dev (>= ${binary:Version}), libroot-tree-treeplayer-dev (>= ${binary:Version}), root-plugin-geom-geombuilder (>= ${binary:Version}), root-plugin-geom-geompainter (>= ${binary:Version}), root-plugin-graf2d-x11 (>= ${binary:Version}), root-plugin-graf3d-x3d (>= ${binary:Version}), root-plugin-gui-fitpanel (>= ${binary:Version}), root-plugin-gui-guibuilder (>= ${binary:Version}), root-plugin-gui-sessionviewer (>= ${binary:Version}), root-plugin-hist-hbook (>= ${binary:Version}), root-plugin-hist-histpainter (>= ${binary:Version}), root-plugin-hist-spectrumpainter (>= ${binary:Version}), root-plugin-io-sql (>= ${binary:Version}), root-plugin-io-xml (>= ${binary:Version}), root-plugin-math-fumili (>= ${binary:Version}), root-plugin-tree-treeviewer (>= ${binary:Version}), root-system-proofd (>= ${binary:Version}), root-system-rootd (>= ${binary:Version}), root-system-doc (>= ${binary:Version})
+Suggests: libroot-bindings-python-dev (>= ${binary:Version}), libroot-bindings-ruby-dev (>= ${binary:Version}), libroot-proof-clarens-dev (>= ${binary:Version}), libroot-roofit-dev (>= ${binary:Version}), root-plugin-geom-gdml (>= ${binary:Version}), root-plugin-montecarlo-pythia8 (>= ${binary:Version}), root-plugin-net-globus (>= ${binary:Version}), root-plugin-proof-peac (>= ${binary:Version}), root-plugin-sql-mysql (>= ${binary:Version}), root-plugin-sql-pgsql (>= ${binary:Version})
+Description: metapackage to install all ROOT packages
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ With the data defined as a set of objects, specialized storage methods
+ can give direct access to the separate attributes of the selected
+ objects, without having to touch the bulk of the data. Included are
+ histogramming methods in 1, 2 and 3 dimensions, curve fitting, function
+ evaluation, minimization, graphics and visualization classes to allow the
+ easy creation of an analysis system that can query and process the data
+ interactively or in batch mode.
+ .
+ The command language, the scripting (or macro) language, and the
+ programming language are all C++, thanks to the built-in CINT C++
+ interpreter. This interpreter removes the time consuming compile/link
+ cycle, allowing for fast prototyping of the macros, and providing a
+ good environment to learn C++. If more performance is needed, the
+ interactively developed macros can be compiled using a C++ compiler.
+ .
+ The system has been designed in such a way that it can query its
+ databases in parallel on MPP machines or on clusters of workstations
+ or high-end PCs. ROOT is an open system that can be dynamically
+ extended by linking external libraries. This makes ROOT a premier
+ platform on which to build data acquisition, simulation and data
+ analysis systems.
+ .
+ This package is a metapackage to ensure the installation of all
+ possible ROOT packages on a system.
+
+
+Package: libroot-bindings-python5.34
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, ${python:Depends}, ${misc:Depends}
+Replaces: root-plugin-python (<< 5.09.01-1)
+Description: Python extension for ROOT - runtime libraries
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Python plug-in for ROOT. This package
+ provide a Python interface to ROOT, and a ROOT interface to Python.
+
+Package: libroot-bindings-python-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-bindings-python5.34 (= ${binary:Version}), libroot-core-dev, python-dev (>= 2.1), ${python:Depends}, ${misc:Depends}
+Provides: ${python:Provides}
+Replaces: libroot-python-dev
+Breaks: libroot-python-dev (<< 5.19.01-1)
+Description: Python extension for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the development files of Python plug-in for ROOT.
+
+Package: libroot-bindings-ruby5.34
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Replaces: root-plugin-ruby (<< 5.09.01-1)
+Description: Ruby extension for ROOT - run-time library
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Ruby extension for ROOT. The interface
+ goes both ways - that is, you can call ROOT functions from Ruby, and
+ invoke the Ruby interpreter from ROOT.
+
+Package: libroot-bindings-ruby-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-bindings-ruby5.34 (= ${binary:Version}), libroot-core-dev, ruby1.8-dev | ruby-dev (>= 1.8), ${misc:Depends}
+Breaks: libroot-ruby (<< 5.19.01-1)
+Replaces: libroot-ruby
+Description: Ruby extension for ROOT - development headers
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Ruby extension for ROOT.
+
+Package: libroot-graf3d-gl5.34
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: root-plugin-graf3d-gl (<< 5.19.00-1)
+Replaces: root-plugin-graf3d-gl (<< 5.19.00-1)
+Provides: root-plugin-graf3d-gl
+Description: GL plugin for ROOT - runtime library
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the GL plug-in for ROOT. This plugin provides
+ 3D rendering of volumes and shapes defined in ROOT, as well as 3D
+ rendering of histograms, and similar. Included is also a high quality
+ 3D viewer for ROOT defined geometries.
+
+Package: libroot-graf3d-gl-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-graf3d-gl5.34 (= ${binary:Version}), libgl2ps-dev, ${misc:Depends}
+Breaks: root-plugin-graf3d-gl (<< 5.19.00-1)
+Replaces: root-plugin-graf3d-gl
+Description: GL plugin for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the GL plug-in for ROOT. This plugin provides
+ 3D rendering of volumes and shapes defined in ROOT. Included is also
+ a high quality 3D viewer for ROOT defined geometries.
+
+Package: libroot-io-xmlparser5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: XML parser of ROOT objects - runtime library
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package provides XML parser routines for ROOT objects.
+
+Package: libroot-io-xmlparser-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-io-xmlparser5.34 (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+Replaces: libroot-dev, root-plugin-xml
+Breaks: libroot-dev (<< 5.19.01-1), root-plugin-xml (<< 5.19.01-1)
+Description: XML parser of ROOT objects - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package provides development files of XML parser routines for ROOT
+ objects.
+
+Package: libroot-math-mathmore5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: GSL interface library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the MathMore library for ROOT, a partial GNU
+ Scientific Library interface.
+
+Package: libroot-math-mathmore-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-math-mathmore5.34 (= ${binary:Version}), libroot-core-dev, libgsl0-dev, ${misc:Depends}
+Breaks: libroot-mathmore-dev (<< 5.19.01-1)
+Replaces: libroot-mathmore-dev
+Description: GSL interface library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the MathMore library for ROOT,
+ a partial GNU Scientific Library interface.
+
+Package: libroot-math-unuran5.34
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Homepage: http://statistik.wu-wien.ac.at/unuran/
+Description: Random number generator library
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ It contains universal (also called automatic or black-box) algorithms
+ that can generate random numbers from large classes of continuous or
+ discrete distributions, and also from practically all standard
+ distributions.
+ .
+ To generate random numbers the user must supply some information
+ about the desired distribution, especially a C-function that computes
+ the density and - depending on the chosen methods - some additional
+ information (like the borders of the domain, the mode, the derivative
+ of the density ...). After a user has given this information an
+ init-program computes all tables and constants necessary for the
+ random variate generation. The sample program can then generate
+ variates from the desired distribution.
+ .
+ This package contains the runtime library.
+
+Package: libroot-math-unuran-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-math-unuran5.34 (= ${binary:Version}), libroot-hist-dev, ${misc:Depends}
+Replaces: libroot-unuran-dev
+Breaks: libroot-unuran-dev (<< 5.19.01-1)
+Homepage: http://statistik.wu-wien.ac.at/unuran/
+Description: Random number generator library - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ It contains universal (also called automatic or black-box) algorithms
+ that can generate random numbers from large classes of continuous or
+ discrete distributions, and also from practically all standard
+ distributions.
+ .
+ To generate random numbers the user must supply some information
+ about the desired distribution, especially a C-function that computes
+ the density and - depending on the chosen methods - some additional
+ information (like the borders of the domain, the mode, the derivative
+ of the density ...). After a user has given this information an
+ init-program computes all tables and constants necessary for the
+ random variate generation. The sample program can then generate
+ variates from the desired distribution.
+ .
+ This package contains the development files
+
+Package: libroot-misc-memstat5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Memory statistics tool for use with ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the memory statistics tool for debugging memory
+ leaks and such.
+
+Package: libroot-misc-memstat-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-misc-memstat5.34 (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Memory statistics tool for use with ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the development files of memory statistics tool for
+ debugging memory leaks and such.
+
+Package: libroot-misc-table5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Table library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Table library for ROOT.
+
+Package: libroot-misc-table-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-misc-table5.34 (= ${binary:Version}), libroot-graf3d-g3d-dev, libroot-graf2d-gpad-dev, libroot-tree-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Table library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the development files of Table library for ROOT.
+
+Package: libroot-net-bonjour5.34
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Zeroconf extension for ROOT - run-time libraries
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains classes for declaring zeroconf services, as well
+ as browsing for such services. This package contains the run-time
+ libraries
+
+Package: libroot-net-bonjour-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-net-bonjour5.34 (= ${binary:Version}), libroot-core-dev, libavahi-compat-libdnssd-dev , ${misc:Depends}
+Description: Zeroconf extension for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains classes for declaring zeroconf services, as well
+ as browsing for such services. This package contains the development
+ libraries and headers.
+
+
+Package: libroot-net-ldap5.34
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Replaces: root-plugin-ldap (<< 5.09.01-1)
+Description: LDAP extension for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the LDAP plugin for ROOT. This gives you
+ access to LDAP directories via ROOT.
+
+Package: libroot-net-ldap-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-net-ldap5.34 (= ${binary:Version}), libroot-core-dev, libldap2-dev | libldap-dev, ${misc:Depends}
+Breaks: libroot-ldap-dev (<< 5.19.01-1)
+Replaces: libroot-ldap-dev (<< 5.19.01-1)
+Description: LDAP extension for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the development files of LDAP plugin for ROOT.
+
+Package: libroot-proof-clarens5.34
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Replaces: root-plugin-clarens (<< 5.09.01-1)
+Homepage: http://clarens.sourceforge.net
+Description: Clarens extension for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Clarens plugin for ROOT, for use in a GRID
+ enabled analysis environment.
+ .
+ The Clarens Grid-Enabled Web Services Framework is an open source,
+ secure, high-performance "portal" for ubiquitous access to data and
+ computational resources provided by computing grids.
+
+Package: libroot-proof-clarens-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-proof-clarens5.34 (= ${binary:Version}), libroot-core-dev, libxmlrpc-c3-dev | libxmlrpc-c-dev, ${misc:Depends}
+Breaks: libroot-clarens-dev (<< 5.19.01-1)
+Replaces: libroot-clarens-dev
+Homepage: http://clarens.sourceforge.net
+Description: Clarens extension for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the development files of Clarens plugin for ROOT, for
+ use in a GRID enabled analysis environment.
+ .
+ The Clarens Grid-Enabled Web Services Framework is an open source,
+ secure, high-performance "portal" for ubiquitous access to data and
+ computational resources provided by computing grids.
+
+Package: libroot-roofit5.34
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, libroot-math-minuit5.34 | root-fitter, ${misc:Depends}
+Homepage: http://roofit.sourceforge.net/
+Replaces: root-plugin-roofit (<< 5.09.01-1)
+Description: ROOT extension for modeling expected distribtions - libraries
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ The RooFit packages provide a toolkit for modeling the expected
+ distribution of events in a physics analysis. Models can be used to
+ perform likelihood fits, produce plots, and generate "toy Monte
+ Carlo" samples for various studies. The RooFit tools are integrated
+ with the object-oriented and interactive ROOT graphical environment.
+ .
+ RooFit has been developed for the BaBar collaboration, a high energy
+ physics experiment at the Stanford Linear Accelerator Center, and is
+ primarily targeted to the high-energy physicists using the ROOT
+ analysis environment, but the general nature of the package make it
+ suitable for adoption in different disciplines as well.
+
+Package: libroot-roofit-dev
+Architecture: any
+Section: libdevel
+Homepage: http://roofit.sourceforge.net/
+Depends: libroot-roofit5.34 (= ${binary:Version}), libroot-graf2d-graf-dev, libroot-tree-dev, ${misc:Depends}
+Description: ROOT extension for modeling expected distribtions - development
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ The RooFit packages provide a toolkit for modeling the expected
+ distribution of events in a physics analysis. Models can be used to
+ perform likelihood fits, produce plots, and generate "toy Monte
+ Carlo" samples for various studies. The RooFit tools are integrated
+ with the object-oriented and interactive ROOT graphical environment.
+ .
+ RooFit has been developed for the BaBar collaboration, a high energy
+ physics experiment at the Stanford Linear Accelerator Center, and is
+ primarily targeted to the high-energy physicists using the ROOT
+ analysis environment, but the general nature of the package make it
+ suitable for adoption in different disciplines as well.
+ .
+ This package provides development files of RooFit.
+
+Package: root-plugin-graf2d-asimage
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: AfterImage plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the AfterImage plug-in for ROOT, which allows
+ you to store output graphics in many formats, including JPEG, PNG,
+ SVG, etc.
+
+
+Package: root-plugin-geom-gdml
+Architecture: any
+Breaks: libroot-dev (<< 5.19.01-1)
+Replaces: libroot-dev
+Depends: ${shlibs:Depends}, python-support, ${python:Depends}, libroot-geom-dev, ${misc:Depends}
+Description: GDML import/export module for ROOT geometries
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains an import/export module for the ROOT geometry.
+
+Package: root-plugin-gui-qt
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Qt plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Qt plug-in for ROOT. This plugin
+ provides an abstraction over a display. Windows are created via Qt.
+
+Package: root-plugin-graf2d-qt
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Graf2d Qt plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Graf2d Qt plug-in for ROOT. This plugin
+ provides Qt interfaces of Graf2d library.
+
+Package: root-plugin-math-fftw3
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Homepage: http://fftw.org/
+Description: FFTw plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Fast Fourier Transform extension for ROOT.
+ It uses the very fast fftw (version 3) library.
+
+Package: root-plugin-math-minuit2
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Provides: root-fitter
+Description: Minuit version 2 plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the MINUIT version 2 plug-in for ROOT. This
+ provides an fitting algorithm for ROOT.
+
+
+Package: root-plugin-montecarlo-pythia8
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Pythia version 8 plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Pythia version 8 plug-in for ROOT. This
+ package provide the ROOT user with transparent interface to the
+ Pythia (version 8) event generators for hadronic interactions. If the
+ term "hadronic" does not ring any bells, this package is not for you.
+
+Package: root-plugin-net-globus
+Architecture: any
+Depends: globus-proxy-utils, ${shlibs:Depends}, ${misc:Depends}
+Homepage: http://www.globus.org
+Description: Globus plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Globus plug-in for ROOT, that allows
+ authentication and authorization against globus.
+
+Package: root-plugin-net-krb5
+Architecture: any
+Depends: ${shlibs:Depends}, krb5-user | heimdal-clients, ${misc:Depends}
+Description: Kerberos (version 5) plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Kerberos (version 5) plug-in for ROOT, that
+ allows authentication and authorisation using Kerberos tokens.
+
+
+Package: root-plugin-proof-peac
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Homepage: http://physics.ucsd.edu/~schsu/project/peac.html
+Description: PEAC plugin for ROOT - run-time libraries
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the PEAC (Proof Enabled Analysis Center)
+ plug-in for ROOT.
+ .
+ PEAC is an interactive distributed analysis framework that uses
+ Clarens as a "glue" protocol to advertise and communicate amongst
+ SAM, Global Manager (GM), Local Manager (LM), DCache, and PROOF
+ services.
+
+Package: root-plugin-sql-mysql
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Provides: root-db-client
+Description: MySQL client plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the MySQL plug-in for ROOT. This plugin
+ provides a thin client (interface) to MySQL servers. Using this
+ client, one can obtain information from a MySQL database into the
+ ROOT environment.
+
+
+Package: root-plugin-sql-odbc
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Provides: root-db-client
+Homepage: http://unixodbc.org or http://iodbc.org
+Description: ODBC plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the ODBC (Open DataBase Connectivity) plug-in
+ for ROOT, that allows transparent access to any kind of database that
+ supports the ODBC protocol.
+
+Package: root-plugin-sql-pgsql
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Provides: root-db-client
+Description: PostgreSQL client plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the PostGreSQL plug-in for ROOT. This plugin
+ provides a thin client (interface) to PostGreSQL servers. Using this
+ client, one can obtain information from a PostGreSQL database into the
+ ROOT environment.
+
+
+Package: libroot-geom5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Recommends: libroot-graf3d-gl5.34 (>= ${binary:Version}), root-plugin-geom-gdml, root-plugin-geom-geombuilder, root-plugin-geom-geompainter
+Description: Geometry library for ROOT - run-time library
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains a library for defining geometries in ROOT.
+
+Package: libroot-geom-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-geom5.34 (= ${binary:Version}), libroot-math-mathcore-dev, ${misc:Depends}
+Recommends: libroot-graf3d-gl-dev
+Replaces: libroot-dev
+Breaks: libroot-dev (<= 5.19.01-1)
+Description: Geometry library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of a library for defining geometries
+ in ROOT.
+
+Package: libroot-graf2d-gpad5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Canvas and pad library for ROOT - run-time library
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains a library for canvas and pad manipulations.
+
+Package: libroot-graf2d-gpad-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-graf2d-gpad5.34 (= ${binary:Version}), libroot-graf2d-graf-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<= 5.19.01-1)
+Description: Canvas and pad library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of a library for canvas and pad
+ manipulations.
+
+Package: libroot-graf2d-graf5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Graph library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Graf library for ROOT.
+
+Package: libroot-graf2d-graf-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-graf2d-graf5.34 (= ${binary:Version}), libroot-hist-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Graph library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the Graf library for ROOT.
+
+Package: libroot-graf2d-postscript5.34
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Postscript/PDF renderer library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains a library for ROOT, which allows rendering
+ postscript and PDF output.
+
+Package: libroot-graf2d-postscript-dev
+Architecture: any
+Section: libdevel
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Depends: libroot-graf2d-postscript5.34 (= ${binary:Version}), libroot-graf2d-graf-dev, ${shlibs:Depends}, ${misc:Depends}
+Description: Postscript/PDF renderer library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains developemnt files of a library for ROOT, which allows
+ rendering postscript and PDF output.
+
+Package: libroot-graf3d-eve5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: root-plugin-gl (<= 5.19.01-1)
+Replaces: root-plugin-gl (<= 5.19.01-1)
+Description: Event display library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains a library for defining event displays in ROOT.
+
+Package: libroot-graf3d-eve-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-graf3d-eve5.34 (= ${binary:Version}), libroot-geom-dev, libroot-gui-ged-dev, libroot-montecarlo-eg-dev, libroot-tree-treeplayer-dev, ${misc:Depends}
+Replaces: root-plugin-gl
+Breaks: root-plugin-gl (<= 5.19.01-1)
+Description: Event display library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of a library for defining event
+ displays in ROOT.
+
+Package: libroot-graf3d-g3d5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Recommends: libroot-graf3d-gl5.34 (>= ${binary:Version})
+Suggests: libroot-geom5.34
+Description: Basic 3D shapes for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This library contains the basic 3D shapes and classes for ROOT. For
+ a more full-blown geometry library, see libroot-geom.
+
+Package: libroot-graf3d-g3d-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-graf3d-g3d5.34 (= ${binary:Version}), libroot-graf2d-gpad-dev, ${misc:Depends}
+Recommends: libroot-graf3d-gl-dev
+Replaces: libroot-dev
+Breaks: libroot-dev (<= 5.19.01-1)
+Suggests: libroot-geom-dev
+Description: Basic 3D shapes for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This library contains development files of the basic 3D shapes and classes
+ for ROOT. For a more full-blown geometry library, see libroot-geom-dev.
+
+Package: libroot-gui5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: libroot (<< 5.19.01-1)
+Recommends: root-plugin-gui-guibuilder
+Description: GUI library for ROOT - run-time library
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains a library for defining graphical user interfaces.
+
+Package: libroot-gui-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-gui5.34 (= ${binary:Version}), libroot-graf2d-gpad-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: GUI library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of a library for defining graphical
+ user interfaces.
+
+Package: libroot-gui-ged5.34
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: GUI element for editing various ROOT objecs
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains a library to show a pop-up window for editing
+ various ROOT objects.
+
+Package: libroot-gui-ged-dev
+Architecture: any
+Section: libdevel
+Breaks: libroot-dev (<< 5.19.01-1)
+Replaces: libroot-dev
+Depends: libroot-gui-ged5.34 (= ${binary:Version}), libroot-gui-dev, libroot-tree-treeplayer-dev, ${misc:Depends}
+Description: GUI element for editing various ROOT objecs - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of a library to show a pop-up window
+ for editing various ROOT objects.
+
+Package: libroot-hist5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Recommends: root-plugin-hist-histpainter
+Description: Histogram library for ROOT - run-time library
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains a library for histogramming.
+
+Package: libroot-hist-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-hist5.34 (= ${binary:Version}), libroot-core-dev, libroot-math-matrix-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Histogram library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of a library for histogramming.
+
+Package: libroot-hist-spectrum5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Spectra analysis library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Spectrum library for ROOT.
+
+Package: libroot-hist-spectrum-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-hist-spectrum5.34 (= ${binary:Version}), libroot-hist-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Spectra analysis library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the Spectrum library for ROOT.
+
+Package: libroot-html5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Html documentation generator for ROOT - runtime library
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains classes to automatically extract documentation
+ from marked up sources.
+
+Package: libroot-html-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-html5.34 (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Html documentation generator for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of classes to automatically extract
+ documentation from marked up sources.
+
+Package: libroot-io5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Input/output of ROOT objects - runtime library
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package provides I/O routines for ROOT objects.
+
+Package: libroot-io-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-io5.34 (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+Replaces: libroot-dev, root-plugin-proof
+Breaks: libroot-dev (<< 5.19.01-1), root-plugin-proof (<< 5.19.01-1)
+Description: Input/output of ROOT objects - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package provides development files of I/O routines for ROOT objects.
+
+Package: libroot-math-foam5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Compact Version of Cellular Event Generator
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ The general-purpose self-adapting Monte Carlo (MC) event
+ generator/simulator mFOAM (standing for mini-FOAM) is a new compact
+ version of the FOAM program, with a slightly limited functionality
+ with respect to its parent version. On the other hand, mFOAM is
+ easier to use for the average user.
+
+Package: libroot-math-foam-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-math-foam5.34 (= ${binary:Version}), libroot-hist-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<= 5.19.01-1)
+Description: Compact Version of Cellular Event Generator - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ The general-purpose self-adapting Monte Carlo (MC) event
+ generator/simulator mFOAM (standing for mini-FOAM) is a new compact
+ version of the FOAM program, with a slightly limited functionality
+ with respect to its parent version. On the other hand, mFOAM is
+ easier to use for the average user.
+ .
+ This package provides development files of the compact version of Cellular
+ Event Generator.
+
+Package: libroot-math-genvector5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Generalized vector library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Genvector library for ROOT. This provides
+ a generalized vector library.
+
+Package: libroot-math-genvector-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-math-genvector5.34 (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<= 5.19.01-1)
+Description: Generalized vector library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the Genvector library for ROOT,
+ provides a generalized vector library.
+
+Package: libroot-math-mathcore5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Core mathemathics library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the MathCore library for ROOT.
+
+Package: libroot-math-mathcore-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-math-mathcore5.34 (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Core mathemathics library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the MathCore library for ROOT.
+
+Package: libroot-math-matrix5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Matrix library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Matrix library for ROOT.
+
+Package: libroot-math-matrix-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-math-matrix5.34 (= ${binary:Version}), libroot-core-dev, libroot-math-mathcore-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Matrix library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the Matrix library for ROOT.
+
+Package: libroot-math-minuit5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Replaces: root-plugin-minuit (<< 5.09.01-7)
+Provides: libroot-math-minuit
+Description: Minuit plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the MINUIT plug-in for ROOT. This provides a
+ fitting algorithm for ROOT.
+
+Package: libroot-math-minuit-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-math-minuit5.34 (= ${binary:Version}), libroot-graf2d-graf-dev, ${misc:Depends}
+Provides: root-fitter
+Replaces: root-plugin-minuit (<< 5.09.01-7), libroot-minuit-dev
+Breaks: libroot-minuit-dev (<< 5.19.01-1)
+Description: Minuit plugin for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the MINUIT plug-in for ROOT,
+ provides a fitting algorithm for ROOT.
+
+Package: libroot-math-mlp5.34
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Replaces: root-plugin-mlp (<< 5.09.01-1)
+Description: Multi layer perceptron extension for ROOT - run-time libraries
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the mlp plug-in for ROOT. This plugin provides
+ a Multi Layer Perceptron Neural Network package for ROOT.
+
+Package: libroot-math-mlp-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-math-mlp5.34 (= ${binary:Version}), libroot-graf2d-gpad-dev, libroot-tree-treeplayer-dev, ${misc:Depends}
+Conflicts: libroot-mlp-dev
+Replaces: libroot-mlp-dev (<< 5.19.01-1)
+Description: Multi layer perceptron extension for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the mlp plug-in for ROOT, provides
+ a Multi Layer Perceptron Neural Network package for ROOT.
+
+Package: libroot-math-physics5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Physics library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Physics library for ROOT.
+
+Package: libroot-math-physics-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-math-physics5.34 (= ${binary:Version}), libroot-math-matrix-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Physics library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the Physics library for ROOT.
+
+Package: libroot-math-quadp5.34
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Replaces: root-plugin-quadp (<< 5.09.01-1)
+Description: QuadP extension for ROOT - run-time libraries
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the QuadP plug-in for ROOT. This provides the
+ user a framework in which to do Quadratic Programming. The quadratic
+ programming problem involves minimization of a quadratic function
+ subject to linear constraints.
+
+Package: libroot-math-quadp-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-math-quadp5.34 (= ${binary:Version}), libroot-math-matrix-dev, ${misc:Depends}
+Replaces: libroot-quadp
+Breaks: libroot-quadp (<< 5.19.01-1)
+Description: QuadP extension for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the QuadP plug-in for ROOT. This
+ provides the user a framework in which to do Quadratic Programming.
+ The quadratic programming problem involves minimization of a quadratic
+ function subject to linear constraints.
+
+Package: libroot-math-smatrix5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Sparse matrix library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Smatrix library for ROOT.
+
+Package: libroot-math-smatrix-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-math-smatrix5.34 (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Sparse matrix library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the Smatrix library for ROOT.
+
+Package: libroot-math-splot5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Splot library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ A common method used in High Energy Physics to perform measurements
+ is the maximum Likelihood method, exploiting discriminating variables
+ to disentangle signal from background. The crucial point for such an
+ analysis to be reliable is to use an exhaustive list of sources of
+ events combined with an accurate description of all the Probability
+ Density Functions (PDF).
+ .
+ To assess the validity of the fit, a convincing quality check is to
+ explore further the data sample by examining the distributions of
+ control variables. A control variable can be obtained for instance by
+ removing one of the discriminating variables before performing again
+ the maximum Likelihood fit: this removed variable is a control
+ variable. The expected distribution of this control variable, for
+ signal, is to be compared to the one extracted, for signal, from the
+ data sample. In order to be able to do so, one must be able to unfold
+ from the distribution of the whole data sample.
+ .
+ The SPlot method allows one to reconstruct the distributions for the
+ control variable, independently for each of the various sources of
+ events, without making use of any a priori knowledge on this
+ variable. The aim is thus to use the knowledge available for the
+ discriminating variables to infer the behaviour of the individual
+ sources of events with respect to the control variable.
+ .
+ SPlot is optimal if the control variable is uncorrelated with the
+ discriminating variables.
+
+Package: libroot-math-splot-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-math-splot5.34 (= ${binary:Version}), libroot-graf2d-graf-dev, libroot-graf3d-g3d-dev, libroot-tree-treeplayer-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Splot library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ A common method used in High Energy Physics to perform measurements
+ is the maximum Likelihood method, exploiting discriminating variables
+ to disentangle signal from background. The crucial point for such an
+ analysis to be reliable is to use an exhaustive list of sources of
+ events combined with an accurate description of all the Probability
+ Density Functions (PDF).
+ .
+ To assess the validity of the fit, a convincing quality check is to
+ explore further the data sample by examining the distributions of
+ control variables. A control variable can be obtained for instance by
+ removing one of the discriminating variables before performing again
+ the maximum Likelihood fit: this removed variable is a control
+ variable. The expected distribution of this control variable, for
+ signal, is to be compared to the one extracted, for signal, from the
+ data sample. In order to be able to do so, one must be able to unfold
+ from the distribution of the whole data sample.
+ .
+ The SPlot method allows one to reconstruct the distributions for the
+ control variable, independently for each of the various sources of
+ events, without making use of any a priori knowledge on this
+ variable. The aim is thus to use the knowledge available for the
+ discriminating variables to infer the behaviour of the individual
+ sources of events with respect to the control variable.
+ .
+ SPlot is optimal if the control variable is uncorrelated with the
+ discriminating variables.
+ .
+ This package provides development files of Splot library for ROOT.
+
+Package: libroot-misc-minicern5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Small version of CERNLIB for use with ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the mini CERNLIB library for ROOT.
+
+Package: libroot-misc-minicern-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-misc-minicern5.34 (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Small version of CERNLIB for use with ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the mini CERNLIB library for ROOT.
+
+Package: libroot-montecarlo-eg5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Event generator library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Eg library for ROOT.
+
+Package: libroot-montecarlo-eg-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-montecarlo-eg5.34 (= ${binary:Version}), libroot-graf2d-gpad-dev, libroot-graf3d-g3d-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Event generator library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the Eg library for ROOT.
+
+Package: libroot-montecarlo-vmc5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Recommends: root-vmc
+Description: Virtual Monte-Carlo library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Vmc library for ROOT.
+
+Package: libroot-montecarlo-vmc-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-montecarlo-vmc5.34 (= ${binary:Version}), libroot-geom-dev, libroot-montecarlo-eg-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Virtual Monte-Carlo library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the Vmc library for ROOT.
+
+Package: libroot-net5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Net library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Net library for ROOT.
+
+Package: libroot-net-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-net5.34 (= ${binary:Version}), libroot-math-mathcore-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Net library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the Net library for ROOT.
+
+Package: libroot-net-auth5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Provides: root-authentication
+Description: Authentication extension for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the basic authentication algorithms used by ROOT.
+
+Package: libroot-net-auth-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-net-auth5.34 (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<= 5.19.01-1), libroot-core-dev (<< 5.30.00-1)
+Description: Authentication extension for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the basic authentication algorithms
+ used by ROOT.
+
+Package: libroot-proof5.34
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Suggests: root-plugin-net-netx, root-plugin-proof-xproof
+Description: PROOF library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the PROOF library for ROOT. This provides a
+ client to use in a PROOF environment.
+
+Package: libroot-proof-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-proof5.34 (= ${binary:Version}), libroot-math-mathcore-dev, libroot-tree-dev, ${misc:Depends}
+Replaces: root-plugin-proof
+Breaks: root-plugin-proof (<< 5.19.01-1)
+Description: PROOF library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the PROOF library for ROOT. This
+ provides a client to use in a PROOF environment.
+
+Package: libroot-proof-proofplayer5.34
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Suggests: root-plugin-net-netx, root-plugin-proof-xproof
+Replaces: root-plugin-proof-proofplayer (<< 5.23.05-1)
+Breaks: root-plugin-proof-proofplayer (<< 5.23.05-1)
+Description: PROOF plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the PROOF extension for ROOT. This provides a
+ client to use in a PROOF environment.
+
+
+Package: libroot-proof-proofplayer-dev
+Section: libdevel
+Architecture: any
+Depends: libroot-proof-proofplayer5.34 (= ${binary:Version}), libroot-proof-dev, ${misc:Depends}
+Suggests: root-plugin-net-netx, root-plugin-proof-xproof
+Replaces: root-plugin-proof-proofplayer (<< 5.23.05-1)
+Breaks: root-plugin-proof-proofplayer (<< 5.23.05-1)
+Description: PROOF plugin for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the PROOF extension for ROOT. This
+ provides a client to use in a PROOF environment.
+
+
+Package: libroot-tmva5.34
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Homepage: http://tmva.sourceforge.net
+Description: Toolkit for multivariate data analysis
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ The Toolkit for Multivariate Analysis (TMVA) provides a
+ ROOT-integrated environment for the parallel processing and
+ evaluation of MVA techniques to discriminate signal from background
+ samples. It presently includes (ranked by complexity):
+ .
+ * Rectangular cut optimisation
+ * Correlated likelihood estimator (PDE approach)
+ * Multi-dimensional likelihood estimator (PDE - range-search approach)
+ * Fisher (and Mahalanobis) discriminant
+ * H-Matrix (chi-squared) estimator
+ * Artificial Neural Network (two different implementations)
+ * Boosted Decision Trees
+ .
+ The TMVA package includes an implementation for each of these
+ discrimination techniques, their training and testing (performance
+ evaluation). In addition all these methods can be tested in parallel,
+ and hence their performance on a particular data set may easily be
+ compared.
+
+
+Package: libroot-tmva-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-tmva5.34 (= ${binary:Version}), libroot-math-mlp-dev, ${misc:Depends}
+Homepage: http://tmva.sourceforge.net
+Description: Toolkit for multivariate data analysis - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ The Toolkit for Multivariate Analysis (TMVA) provides a
+ ROOT-integrated environment for the parallel processing and
+ evaluation of MVA techniques to discriminate signal from background
+ samples. It presently includes (ranked by complexity):
+ .
+ * Rectangular cut optimisation
+ * Correlated likelihood estimator (PDE approach)
+ * Multi-dimensional likelihood estimator (PDE - range-search approach)
+ * Fisher (and Mahalanobis) discriminant
+ * H-Matrix (chi-squared) estimator
+ * Artificial Neural Network (two different implementations)
+ * Boosted Decision Trees
+ .
+ The TMVA package includes an implementation for each of these
+ discrimination techniques, their training and testing (performance
+ evaluation). In addition all these methods can be tested in parallel,
+ and hence their performance on a particular data set may easily be
+ compared.
+ .
+ This package provides development files of TMVA package for ROOT.
+
+Package: libroot-tree5.34
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Recommends: libroot-tree-treeplayer5.34 | root-plugin-tree-treeviewer
+Description: Tree library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Tree library for ROOT.
+
+Package: libroot-tree-dev
+Architecture: any
+Section: libdevel
+Depends: libroot-tree5.34 (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Tree library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains development files of the Tree library for ROOT.
+
+Package: libroot-tree-treeplayer5.34
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Library to loop over a ROOT tree
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ Plug-in to loop over a ROOT tree.
+
+Package: libroot-tree-treeplayer-dev
+Architecture: any
+Section: libdevel
+Breaks: libroot-dev (<< 5.19.01-1)
+Replaces: libroot-dev
+Depends: libroot-tree-treeplayer5.34 (= ${binary:Version}), libroot-tree-dev, libroot-graf2d-gpad-dev, libroot-graf3d-g3d-dev, ${misc:Depends}
+Description: Library to loop over a ROOT tree - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package provides development files to loop over a ROOT tree.
+
+Package: root-plugin-geom-geombuilder
+Architecture: any
+Breaks: libroot-dev (<< 5.19.01-1)
+Replaces: libroot-dev
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Geometry builder plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains a geometry builder plugin for ROOT.
+
+Package: root-plugin-geom-geompainter
+Architecture: any
+Breaks: libroot-dev (<< 5.19.01-1)
+Replaces: libroot-dev
+Depends: ${shlibs:Depends}, ${misc:Depends} , ${misc:Depends}
+Description: Geometry painter plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains a geometry painter plugin for ROOT.
+
+Package: root-plugin-graf2d-x11
+Architecture: any
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Provides: root-system-display
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: X window system plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the X11 plug-in for ROOT, which allows using an
+ X display for showing graphics.
+
+Package: root-plugin-graf3d-x3d
+Architecture: any
+Breaks: libroot-dev (<< 5.19.01-1)
+Replaces: libroot-dev
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Recommends: root-plugin-graf3d-gl
+Description: X 3D plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the X 3D plug-in for ROOT. This plugin provides
+ 3D rendering of volumes and shapes defined in ROOT. Included is also
+ a low quality 3D viewer for ROOT defined geometries.
+
+Package: root-plugin-gui-fitpanel
+Architecture: any
+Breaks: libroot-dev (<< 5.19.01-1)
+Replaces: libroot-dev
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: GUI element for fits plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains a plug-in to show a pop-up dialog when fitting
+ various kinds of data.
+
+Package: root-plugin-gui-guibuilder
+Architecture: any
+Breaks: libroot-dev (<< 5.19.01-1)
+Replaces: libroot-dev
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: GUI editor plug-in for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains a plug-in for editing graphical user interfaces
+ in ROOT.
+
+Package: root-plugin-gui-sessionviewer
+Architecture: any
+Breaks: libroot-dev (<< 5.19.01-1)
+Replaces: libroot-dev
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: GUI to browse an interactive PROOF session
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains a plug-in browsing an interactive PROOF session
+ in ROOT.
+
+Package: root-plugin-hist-hbook
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Conflicts: root-plugin-hbook
+Replaces: root-plugin-hbook (<< 5.19.01-1)
+Description: Hbook plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the Hbook plug-in for ROOT, allowing you to
+ access legacy Hbook files (NTuples and Histograms from PAW).
+
+Package: root-plugin-hist-histpainter
+Architecture: any
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Histogram painter plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package a painter of histograms for ROOT.
+
+Package: root-plugin-hist-spectrumpainter
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Replaces: libroot-dev
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Spectrum painter plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package a painter of spectra for ROOT.
+
+Package: root-plugin-io-sql
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Recommends: root-db-client | root-plugin-io-mysql
+Description: SQL plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the SQL plug-in for ROOT, that allows
+ transparent access to files data via an SQL database, using ROOT's
+ TFile interface.
+
+Package: root-plugin-io-xml
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: XML reader plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the XML reader plug-in for ROOT. This package
+ provide a plug-in to parse XML files with ROOT.
+
+Package: root-plugin-math-fumili
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Provides: root-fitter
+Description: Fumili plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the fumili plug-in for ROOT. This provides an
+ alternative fitting algorithm for ROOT.
+
+
+Package: root-plugin-tree-treeviewer
+Architecture: any
+Breaks: libroot-dev (<< 5.19.01-1)
+Replaces: libroot-dev
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: GUI to browse an a ROOT tree
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains a plug-in for browsing a ROOT tree.
+ in ROOT.
+
+Package: root-system-proofd
+Architecture: any
+Depends: root-system-common, lsb-base (>= 3.0-6), openbsd-inetd | inet-superserver, ${shlibs:Depends}, ${misc:Depends}
+Recommends: root-system-bin, libroot-dev, root-file-server | root-system-rootd
+Description: Parallel ROOt Facility - distributed, parallel computing
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the PROOF server. proofd is the core daemon of
+ the PROOF (Parallel ROOt Facility) system for distributed parallel
+ computing. Installing this package on a machine, makes it possible
+ for the machine to participate in a parallel computing farm (cluster
+ or via the Internet), either as a master or a slave, using a
+ transparent interface.
+
+
+Package: root-system-rootd
+Architecture: any
+Depends: root-system-common, lsb-base (>= 3.0-6), adduser, openbsd-inetd | inet-superserver, ${shlibs:Depends}, ${misc:Depends}
+Recommends: root-system-bin, libroot-dev
+Provides: root-file-server
+Description: ROOT remote file server
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains ROOT file server. rootd is a server for ROOT
+ files, serving files over the Internet. Using this daemon, you can
+ access files on the machine from anywhere on the Internet, using a
+ transparent interface.
+
+
+Package: root-system-doc
+Section: doc
+Architecture: all
+Suggests: root-system-bin
+Depends: ${misc:Depends}
+Description: Tutorial and test suit for the ROOT system
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the tutorial scripts and test suit for the ROOT
+ system, as well as the automatically generated HTML class documentation.
+
+
+Package: root-system-bin
+Architecture: any
+Depends: ${shlibs:Depends}, root-plugin-graf2d-asimage, ${misc:Depends}
+Recommends: root-plugin-graf3d-gl, libroot-math-minuit | root-fitter, libroot-core-dev, root-plugin-graf2d-x11 | root-system-display
+Description: Numerical data analysis framework - general applications
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ With the data defined as a set of objects, specialized storage methods
+ can give direct access to the separate attributes of the selected
+ objects, without having to touch the bulk of the data. Included are
+ histogramming methods in 1, 2 and 3 dimensions, curve fitting, function
+ evaluation, minimization, graphics and visualization classes to allow the
+ easy creation of an analysis system that can query and process the data
+ interactively or in batch mode.
+ .
+ The command language, the scripting (or macro) language, and the
+ programming language are all C++, thanks to the built-in CINT C++
+ interpreter. This interpreter removes the time consuming compile/link
+ cycle, allowing for fast prototyping of the macros, and providing a
+ good environment to learn C++. If more performance is needed, the
+ interactively developed macros can be compiled using a C++ compiler.
+ .
+ The system has been designed in such a way that it can query its
+ databases in parallel on MPP machines or on clusters of workstations
+ or high-end PCs. ROOT is an open system that can be dynamically
+ extended by linking external libraries. This makes ROOT a premier
+ platform on which to build data acquisition, simulation and data
+ analysis systems.
+
+Package: libroot-core5.34
+Section: libs
+Architecture: any
+Depends: root-system-common, ${shlibs:Depends}, ${misc:Depends}
+Recommends: root-system-bin, libroot-core-dev
+Provides: libroot-core
+Description: Numerical data analysis framework - shared runtime libraries
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains the shared libraries used by the ROOT
+ system. The libraries contain numerous C++ class definitions for
+ various purposes, some of which are:
+ * System abstraction
+ * Thin Thread API
+ * Histograming
+ * Persistent objects
+ * GUI API
+ and many others. Refer also to the package description of
+ root-bin.
+
+Package: libroot-core-dev
+Section: libdevel
+Architecture: any
+Depends: ${shlibs:Depends}, zlib1g-dev, libssl-dev, comerr-dev, libkrb5-dev, libx11-dev, libfreetype6-dev, libpcre3-dev, libxpm-dev, g++ | c++-compiler, ${python:Depends}, cfortran, ${misc:Depends}
+Suggests: root-system-bin, gccxml
+Recommends: libroot-geom-dev, libroot-gui-dev, libroot-hist-dev, libroot-proof-dev, libroot-tree-dev, libroot-io-dev, libroot-net-dev
+Provides: libroot-dev
+Replaces: libroot-dev (<< 5.19.01-1)
+Breaks: libroot-dev (<< 5.19.01-1)
+Description: Header files for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains header files (Class declarations) for the ROOT
+ class libraries. Please refer the package documentation for libroot
+ and root-bin.
+
+Package: libroot-static
+Section: libdevel
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Recommends: libroot-core-dev
+Description: Static archive of ROOT libraries
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains static archive of the ROOT classes.
+
+Package: root-system-common
+Architecture: all
+Depends: ttf-freefont | root-ttf, ttf-opensymbol | root-ttf, ${misc:Depends}
+Description: Common files for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package contains some common infrastructure files for ROOT.
+
+
+Package: ttf-root-installer
+Architecture: all
+Section: contrib/fonts
+Depends: ${misc:Depends}, wget (>= 1.9.1-4), xfonts-utils, debconf (>= 1.2.0), ${misc:Depends}
+Provides: root-ttf
+Conflicts: ttf-root
+Description: True type fonts for ROOT - installer package
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ This package will install the True Type Fonts (TTF) used by ROOT.
+ These fonts are provided by Microsoft. Note, that you may not
+ redistribute this font files. This package will download the fonts
+ from the ROOT FTP server, or alternatively use an already downloaded
+ tar-file.
diff --git a/debian/control.in b/debian/control.in
new file mode 100644
index 0000000..9b68ef7
--- /dev/null
+++ b/debian/control.in
@@ -0,0 +1,44 @@
+Source: root-system
+Section: science
+Priority: optional
+Maintainer: Lifeng Sun <lifongsun at gmail.com>
+Homepage: http://root.cern.ch
+Build-Depends: debhelper (>= 5.0.37.2), lsb-release, autotools-dev, po-debconf, libssl-dev, comerr-dev, libxpm-dev, libltdl-dev, x11proto-xext-dev, libxext-dev, libfreetype6-dev, libpcre3-dev, zlib1g-dev | libz-dev, python-dev (>= 2.1), graphviz, ttf-freefont, libncurses5-dev | libcurses-dev, libgraphviz-dev, libavahi-core-dev, libxft-dev at builddepends@
+Standards-Version: 3.9.3
+
+Package: root-system
+Architecture: all
+Depends: root-system-bin, libroot-core-dev, ${misc:Depends}
+Recommends: @plugins@
+Suggests: @extras@
+Description: metapackage to install all ROOT packages
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+ With the data defined as a set of objects, specialized storage methods
+ can give direct access to the separate attributes of the selected
+ objects, without having to touch the bulk of the data. Included are
+ histogramming methods in 1, 2 and 3 dimensions, curve fitting, function
+ evaluation, minimization, graphics and visualization classes to allow the
+ easy creation of an analysis system that can query and process the data
+ interactively or in batch mode.
+ .
+ The command language, the scripting (or macro) language, and the
+ programming language are all C++, thanks to the built-in CINT C++
+ interpreter. This interpreter removes the time consuming compile/link
+ cycle, allowing for fast prototyping of the macros, and providing a
+ good environment to learn C++. If more performance is needed, the
+ interactively developed macros can be compiled using a C++ compiler.
+ .
+ The system has been designed in such a way that it can query its
+ databases in parallel on MPP machines or on clusters of workstations
+ or high-end PCs. ROOT is an open system that can be dynamically
+ extended by linking external libraries. This makes ROOT a premier
+ platform on which to build data acquisition, simulation and data
+ analysis systems.
+ .
+ This package is a metapackage to ensure the installation of all
+ possible ROOT packages on a system.
+
+
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..e69ab2e
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,614 @@
+This package was debianized by Christian Holm Christensen <cholm at nbi.dk> on
+Mon, 21 Feb 2005 16:28:37 +0100.
+The current maintainer is Lifeng Sun <lifongsun at gmail.com>.
+
+It was downloaded from :pserver:cvs at root.cern.ch:/user/cvs
+(anonymous CVS access to main repository - password is "cvs")
+
+Upstream Authors: The ROOT Team consisting of Rene Brun
+<Rene.Brun at cern.ch> and Fons Rademakers <Fons.Rademakers at cern.ch>
+
+License:
+
+Copyright: 1994, 1995, 1996, 1997, 1998, 1999 ROOT Team
+ 2000, 2001, 2002, 2003, 2004, 2005 ROOT Team
+ 2006 ROOT Team
+
+ This library is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
+ USA
+
+On Debian systems, the complete text of the GNU Lesser General Public
+License, version 2.1, can be found in
+/usr/share/common-licenses/LGPL-2.1.
+
+Note, that the sources and the packages have been purged of the
+non-free MS TTF Core fonts.
+
+The above license applies also to the following files and directories,
+but they have different copyright holders, as listed below:
+
+ asimage/src/libAfterImage.tar.gz
+ (and unpacked sources in asimage/src/libAfterImage/)
+ libAfterBase
+ Copyright (C) 1999-2004 Sasha Vasko <sasha at aftercode.net>
+ Copyright (c) 2000,2001 Andrew Ferguson <andrew at owsla.cjb.net>
+ Copyright (C) 1999 Ethan Fischer <allanon at crystaltokyo.com>
+ Copyright (C) 1998 Pierre Clerissi <clerissi at pratique.fr>
+
+ libAfterImage
+ Copyright (C) 1999-2004 Sasha Vasko <sasha at aftercode.net>
+ Copyright (c) 2004 Valeriy Onuchin <Valeri dot Onoutchine at cern dot ch>
+ Copyright (c) 2001 Eric Kowalski <eric at beancrock.net>
+ Copyright (c) 1999,2001 Ethan Fisher <allanon at crystaltokyo.com>
+ Copyright (C) 1999-2001 Free Software Foundation, Inc.
+ Copyright (c) 2004 Maxim Nikulin <nikulin at gorodok.net>
+
+ asimage/src/TASImage.cxx
+ parts are
+ Copyright (c) 2002 Sasha Vasko <sasha at aftercode.net>
+ Copyright (c) 1998, 1999 Ethan Fischer <allanon at crystaltokyo.com>
+
+ auth/inc/rsaaux.h
+ auth/inc/rsadef.h
+ auth/inc/rsafun.h
+ auth/inc/rsalib.h
+ auth/src/rsaaux.cxx
+ auth/src/rsafun.cxx
+ auth/src/rsalib.cxx:
+ Copyright (C) 2006 Martin Nicolay <m.nicolay at osm-gmbh.de>
+
+ base/inc/Byteswap.h
+ Copyright (C) 1997 Free Software Foundation, Inc.
+
+ base/src/TRandom3.cxx
+ Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura.
+
+ cint/lib/vcstream/fstrm.h
+ cint/lib/vcstream/strstrm.h
+ Copyright (c) 1996 Osamu Kotanigawa
+
+ cint/tool/ifdef/get.c
+ Copyright (c) Yokogawa-Hewlett-Packard, HSTD R&D
+
+ clib/inc/Demangle.h
+ Copyright 1992 Free Software Foundation, Inc.
+
+ clib/inc/mmprivate.h
+ Copyright 1990, 1991, 1992 Free Software Foundation
+
+ eg/inc/TVirtualMCDecayer.h
+ Copyright (C) 2006, Rene Brun and Fons Rademakers. *
+ Copyright (C) 1998-1999, ALICE Experiment at CERN.
+
+ gl/inc/gl2ps.h
+ Copyright (C) 1999-2005 Christophe Geuzaine <geuz at geuz.org>
+
+ gl/src/CsgOps.cxx
+ Copyright (C) 2003-2004 Laurence Bourn
+ Copyright (C) 1997-1998 Gino van den Bergen
+
+ graf/inc/TGraphSmooth.h
+ graf/src/TGraphSmooth.cxx
+ Copyright(c) 2001, Dr. Christian Stratowa, Vienna, Austria.
+
+ gui/inc/TGApplication.h
+ gui/src/TGApplication.cxx
+ Copyright (C) 2001, Guy Barrand.
+
+ gui/inc/TGMdi.h
+ gui/inc/TGMdiFrame.h
+ gui/inc/TGMdiMainFrame.h
+ gui/inc/TGMdiMenu.h
+ Copyright (C) 1998-2002 by Harald Radke, Hector Peraza.
+
+ gui/inc/TGTableLayout.h
+ gui/src/TGTableLayout.cxx
+ Copyright (C) 2001, Brett Viren
+
+ gui/
+ Except as noted above, the code in this directory is based on
+ Xclass95, which as the following copyright notice.
+ Copyright (C) 1996, 1997 David Barth, Ricky Ralston, Hector
+ Peraza.
+
+ mathcore/inc/Math/GenVector/etaMax.h
+ Copyright (c) 2005, FNAL MathLib Team
+
+ physics/inc/TFeldmanCousins.h
+ physics/inc/TFeldmanCousins.h
+ physics/src/TFeldmanCousins.cxx
+ Copyright (C) 2001, Liverpool University.
+
+ physics/src/TRolke.cxx
+ Copyright CERN 2004 Jan.Conrad at cern.ch
+
+ qt/
+ Copyright (C) 2002 by Valeri Fine.
+
+ table/inc/TDsKey.h
+ table/inc/TFileIter.h
+ table/inc/TIndexTable.h
+ table/inc/TTableMap.h
+ table/src/TDsKey.cxx
+ table/src/TFileIter.cxx
+ table/src/TIndexTable.cx
+ table/src/TTableMap.cxx
+ Copyright (C) 1995-2001, Rene Brun and Fons Rademakers.
+ Copyright (C) 2001 [BNL] Brookhaven National Laboratory.
+
+ eg/inc/TVirtualMCDecayer.h
+ eg/inc/TVirtualMCDecayer.cxx
+ vmc/
+ Copyright (C) 2006, Rene Brun and Fons Rademakers.
+ Copyright(c) 1998-1999, 2002, 2003, ALICE Experiment at CERN, All
+ rights reserved.
+
+ win32gdk/gdk
+ Various files are copyright of different parties. The copyright
+ statements is summarised below.
+ Copyright (c) 1995-1999 Peter Mattis, Spencer Kimball and Josh MacDonald
+ Copyright (c) 1998-2000 Tor Lillqvist
+ Copyright (c) 1998-2000 Red Hat, Inc.
+ Copyright (c) 1997 by Federico Mena (port to Gtk/Gdk)
+ Copyright (c) 1997 by Ripley Software Development
+ Copyright (c) 1994,1995 John L. Cwikla
+ Copyright (c) 2000 Ali Abdin <aliabdin at aucegypt.edu>
+ Copyright (c) 1998, 1999, 2000 Tim Janik and Red Hat, Inc.
+ Copyright (c) 1999, 2000 Tom Tromey
+
+ winnt/src/TWinNTSystem.cxx
+ This file contains code that is
+ Copyright (C) 2000-2004 Computer Graphics Systems Group at the
+ Hasso-Plattner-Institute (HPI), Potsdam, Germany.
+
+ xmlparser/src/TSAXParser.cxx
+ xmlparser/src/TXMLParser.cxx
+ Code is based on libxml++, which is Copyright (C) 2000 by Ari
+ Johnson
+
+The following files and directories are not licensed under the GNU
+Lesser General Public License, but carry their own license and
+copyright statements. These are reproduced below.
+
+ build/rmkdepend/def.h
+ build/rmkdepend/imakemdep.h
+ Copyright (c) 1993, 1994 X Consortium
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use, copy,
+ modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR
+ ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of the X Consortium
+ shall not be used in advertising or otherwise to promote the sale,
+ use or other dealings in this Software without prior written
+ authorization from the X Consortium.
+
+ build/rmkdepend/ifparser.h
+ Copyright 1992 Network Computing Devices, Inc.
+
+ Permission to use, copy, modify, and distribute this software and
+ its documentation for any purpose and without fee is hereby
+ granted, provided that the above copyright notice appear in all
+ copies and that both that copyright notice and this permission
+ notice appear in supporting documentation, and that the name of
+ Network Computing Devices may not be used in advertising or
+ publicity pertaining to distribution of the software without
+ specific, written prior permission. Network Computing Devices
+ makes no representations about the suitability of this software
+ for any purpose. It is provided ``as is'' without express or
+ implied warranty.
+
+ NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO
+ THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE
+ FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ THIS SOFTWARE.
+
+ cint/
+ Copyright (c) 2006 Masaharu Goto (gotom at hanno.jp)
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use, copy,
+ modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ except where otherwise noted in this file.
+
+ cint/stl/bstring.h
+ Copyright(c) 1995~2006 Masaharu Goto (cint at pcroot.cern.ch)
+
+ Same license as the rest of the cint directory.
+
+ Copyright (c) 1994-1995 Modena Software Inc.,
+
+ Permission to use, copy, modify, distribute and sell this software
+ and its documentation for any purpose is hereby granted without
+ fee, provided that the above copyright notice appear in all copies
+ and that both that copyright notice and this permission notice
+ appear in supporting documentation. Modena Software, Inc. makes
+ no representations about the suitability of this software for any
+ purpose. It is provided "as is" without express or implied
+ warranty.
+
+ cintex
+ Copyright CERN, CH-1211 Geneva 23, 2004-2005, All rights reserved.
+
+ Permission to use, copy, modify, and distribute this software for
+ any purpose is hereby granted without fee, provided that this
+ copyright and permissions notice appear in all copies and
+ derivatives.
+
+ This software is provided "as is" without express or implied
+ warranty.
+
+ ftgl
+ [Apparently, ftql is dual licensed on the LGPL and a much more
+ liberal license. I have reproduced the non-LGPL license below.]
+
+ Copyright (C) 2001-3 Henry Maddocks
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use, copy,
+ modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ krb5auth/inc/Krb5Auth.h
+ krb5auth/src/Krb5Auth.cxx
+ Parts of these file are copied from the MIT krb5 distribution and
+ are subject to the following license:
+
+ Copyright 1990,1991 by the Massachusetts Institute of Technology.
+ All Rights Reserved.
+
+ Export of this software from the United States of America may
+ require a specific license from the United States Government. It
+ is the responsibility of any person or organization contemplating
+ export to obtain such a license before exporting.
+
+ WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
+ distribute this software and its documentation for any purpose and
+ without fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright notice and
+ this permission notice appear in supporting documentation, and that
+ the name of M.I.T. not be used in advertising or publicity
+ pertaining to distribution of the software without specific,
+ written prior permission. Furthermore if you modify this software
+ you must label your software as modified software and not
+ distribute it in such a fashion that it might be confused with the
+ original M.I.T. software. M.I.T. makes no representations about
+ the suitability of this software for any purpose. It is provided
+ "as is" without express or implied warranty.
+
+
+ mathmore/src/complex_quartic.h
+ Copyright (C) 2003 CERN and K.S. K\"{o}lbig
+ Licensed under the GNU GPL version 2
+
+ pcre/src/pcre-6.4.tar.gz
+ Copyright (c) 1997-2000 University of Cambridge
+
+ Permission is granted to anyone to use this software for any
+ purpose on any computer system, and to redistribute it freely,
+ subject to the following restrictions:
+
+ 1. This software is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE.
+
+ 2. The origin of this software must not be misrepresented, either
+ by explicit claim or by omission. In practice, this means that
+ if you use PCRE in software which you distribute to others,
+ commercially or otherwise, you must put a sentence like this
+
+ Regular expression support is provided by the PCRE library
+ package, which is open source software, written by Philip
+ Hazel, and copyright by the University of Cambridge, England.
+
+ somewhere reasonably visible in your documentation and in any
+ relevant files or online help data or similar. A reference to
+ the ftp site for the source, that is, to
+
+ ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
+
+ should also be given in the documentation.
+
+ 3. Altered versions must be plainly marked as such, and must not
+ be misrepresented as being the original software.
+
+ 4. If PCRE is embedded in any software that is released under the
+ GNU General Purpose Licence (GPL), then the terms of that
+ licence shall supersede any condition above with which it is
+ incompatible.
+
+ quadp
+ Parts of this file are copied from the OOQP distribution and are
+ subject to the following license:
+
+ COPYRIGHT 2001 UNIVERSITY OF CHICAGO
+
+ The copyright holder hereby grants you royalty-free rights to use,
+ reproduce, prepare derivative works, and to redistribute this
+ software to others, provided that any changes are clearly
+ documented.
+
+ reflex
+ Copyright CERN, CH-1211 Geneva 23, 2004-2006, All rights
+ reserved.
+
+ Permission to use, copy, modify, and distribute this software for
+ any purpose is hereby granted without fee, provided that this
+ copyright and permissions notice appear in all copies and
+ derivatives.
+
+ This software is provided "as is" without express or implied
+ warranty.
+
+ Except:
+
+ reflex/inc/Reflex/Any.h
+ Copyright Kevlin Henney, 2000, 2001, 2002. All rights reserved.
+
+ Permission to use, copy, modify, and distribute this software for
+ any purpose is hereby granted without fee, provided that this
+ copyright and permissions notice appear in all copies and
+ derivatives.
+
+ This software is provided "as is" without express or implied
+ warranty.
+
+ roofit
+ Copyright (c) 2000-2005, Regents of the University of California
+ and Stanford University. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ Except (same license):
+
+ roofit/inc/RooEffGenContext.h
+ roofit/src/RooEffGenContext.cxx
+ Copyright (c) 2005, NIKHEF. All rights reserved.
+
+ roofit/inc/RooParametricStepFunction.h
+ roofit/src/RooParametricStepFunction.cxx
+ Copyright (c) 2000-2005, Stanford University. All rights reserved.
+
+ roofit/src/RooGaussKronrodIntegrator1D.cxx
+ Copyright (c) 2000-2005, Regents of the University of California and
+ Stanford University. All rights reserved.
+
+
+ smatrix/inc/Math/StaticCheck.h
+ Copyright (c) 2001 by Andrei Alexandrescu
+
+ This code accompanies the book: Alexandrescu, Andrei. "Modern C++
+ Design: Generic Programming and Design Patterns
+ Applied". Copyright (c) 2001. Addison-Wesley.
+
+ Permission to use, copy, modify, distribute and sell this software
+ for any purpose is hereby granted without fee, provided that the
+ above copyright notice appear in all copies and that both that
+ copyright notice and this permission notice appear in supporting
+ documentation.
+
+ The author or Addison-Wesley Longman make no representations about
+ the suitability of this software for any purpose. It is provided
+ "as is" without express or implied warranty.
+
+ table/inc/TDataSetIter.h
+ Copyright(c) 1997~2001 [BNL] Brookhaven National Laboratory
+ Copyright(c) 1997~2001 Valery Fine (fine.gov)
+ License unclear.
+
+ tmva
+ Copyright (c) 2005-2006, Regents of CERN (Switzerland), the
+ University of Victoria (Canada), the University of Heidelberg
+ (Germany), and LAPP (France)
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+
+ * Neither the name of the above mentioned organizations nor the
+ names of its contributors may be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ unuran/src/unuran-*-root
+ Copyright (c) 2000-2007 Wolfgang Hoermann and Josef Leydold
+ Licensed under the GNU GPL version 2
+
+ x11/inc/Xpm.h
+ Copyright (C) 1989-95 GROUPE BULL
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use, copy,
+ modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL GROUPE BULL BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of GROUPE BULL shall
+ not be used in advertising or otherwise to promote the sale, use
+ or other dealings in this Software without prior written
+ authorization from GROUPE BULL.
+
+ x11/src/Rotated.cxx
+ Copyright (c) 1993 Alan Richardson (mppa3 at uk.ac.sussex.syma)
+
+ Permission to use, copy, modify, and distribute this software and
+ its documentation for any purpose and without fee is hereby
+ granted, provided that the above copyright notice appear in all
+ copies and that both the copyright notice and this permission
+ notice appear in supporting documentation. All work developed as
+ a consequence of the use of this program should duly acknowledge
+ such use. No representations are made about the suitability of
+ this software for any purpose. It is provided "as is" without
+ express or implied warranty.
+
+ x3d/inc/x3d.h
+ Copyright 1992 Mark Spychalla
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that copyright notice and this permission
+ notice appear in supporting documentation, and that the name of
+ Mark Spychalla not be used in advertising or publicity pertaining
+ to distribution of the software without specific, written prior
+ permission. Mark Spychalla makes no representations about the
+ suitability of this software for any purpose. It is provided "as
+ is" without express or implied warranty.
+
+ Mark Spychalla disclaims all warranties with regard to this
+ software, including all implied warranties of merchantability and
+ fitness, in no event shall Mark Spychalla be liable for any
+ special, indirect or consequential damages or any damages
+ whatsoever resulting from loss of use, data or profits, whether in
+ an action of contract, negligence or other tortious action,
+ arising out of or in connection with the use or performance of
+ this software. Local Variables: mode: text End:
+
+ zip/
+ Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any
+ damages arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any
+ purpose, including commercial applications, and to alter it and
+ redistribute it freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must
+ not claim that you wrote the original software. If you use this
+ software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source
+ distribution.
+
+Local Variables:
+ mode: text
+End:
diff --git a/debian/get-orig-source b/debian/get-orig-source
new file mode 100755
index 0000000..de17afb
--- /dev/null
+++ b/debian/get-orig-source
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+set -e
+
+[ $# == 3 ]
+
+url="ftp://root.cern.ch/root/"
+ver="$2"
+
+pkgdir="root-system-$ver.orig"
+pkg="root-system_$ver.orig.tar.gz"
+
+upver=$(echo $ver | tr '~' '-')
+uppkg="root_v$upver.source.tar.gz"
+
+[ ! -f "../$uppkg" ] && wget "$url/$uppkg" -O "../$uppkg"
+
+[ -d root ] && rm -rf root
+tar xf "../$uppkg"
+
+[ -d "$pkgdir" ] && rm -rf "$pkgdir"
+
+mv root "$pkgdir"
+rm -f "../$pkg"
+tar -zcf "../$pkg" "$pkgdir"
+
+rm -rf "$pkgdir"
diff --git a/build/package/debian/libroot-bindings-python-dev.links.in b/debian/libroot-bindings-python-dev.links.in
similarity index 100%
copy from build/package/debian/libroot-bindings-python-dev.links.in
copy to debian/libroot-bindings-python-dev.links.in
diff --git a/build/package/debian/libroot-bindings-ruby-dev.links.in b/debian/libroot-bindings-ruby-dev.links.in
similarity index 100%
copy from build/package/debian/libroot-bindings-ruby-dev.links.in
copy to debian/libroot-bindings-ruby-dev.links.in
diff --git a/build/package/debian/libroot-core.postinst b/debian/libroot-core.postinst
similarity index 100%
copy from build/package/debian/libroot-core.postinst
copy to debian/libroot-core.postinst
diff --git a/build/package/debian/libroot-python-dev.links.in b/debian/libroot-python-dev.links.in
similarity index 100%
copy from build/package/debian/libroot-python-dev.links.in
copy to debian/libroot-python-dev.links.in
diff --git a/debian/libroot-roofit.copyright b/debian/libroot-roofit.copyright
new file mode 100644
index 0000000..3546f11
--- /dev/null
+++ b/debian/libroot-roofit.copyright
@@ -0,0 +1,40 @@
+This package was debianized by Christian Holm Christensen <cholm at nbi.dk> on
+Mon, 21 Feb 2005 16:28:37 +0100.
+The current maintainer is Lifeng Sun <lifongsun at gmail.com>.
+
+It was downloaded from :pserver:cvs at root.cern.ch:/user/cvs
+(anonymous CVS access to main repository - password is "cvs")
+
+Copyright: 2005 Wouter Verkerke and David Kirkby
+
+Upstream Authors: Wouter Verkerke <verkerke at slac.stanford.edu> and
+David Kirkby <dkirkby at uci.edu>
+
+License:
+
+RooFit --- Copyright (c) 2000-2005, Regents of the University of
+California and Stanford University All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/build/package/debian/libroot-ruby-dev.links.in b/debian/libroot-ruby-dev.links.in
similarity index 100%
copy from build/package/debian/libroot-ruby-dev.links.in
copy to debian/libroot-ruby-dev.links.in
diff --git a/debian/patches/01-remove-afterbase-h.patch b/debian/patches/01-remove-afterbase-h.patch
new file mode 100644
index 0000000..b1659ec
--- /dev/null
+++ b/debian/patches/01-remove-afterbase-h.patch
@@ -0,0 +1,47 @@
+diff --git a/graf2d/asimage/src/libAfterImage/afterbase.h b/graf2d/asimage/src/libAfterImage/afterbase.h
+deleted file mode 100644
+index 37a2314..0000000
+--- a/graf2d/asimage/src/libAfterImage/afterbase.h
++++ /dev/null
+@@ -1,41 +0,0 @@
+-#ifndef AFTERBASE_H_HEADER_INCLUDED
+-#define AFTERBASE_H_HEADER_INCLUDED
+-
+-#define HAVE_AFTERBASE_FLAG 0
+-
+-#if 0
+-# if 0
+-#include <libAfterBase/astypes.h>
+-#include <libAfterBase/audit.h>
+-#include <libAfterBase/output.h>
+-#include <libAfterBase/safemalloc.h>
+-#include <libAfterBase/mystring.h>
+-#include <libAfterBase/fs.h>
+-#include <libAfterBase/parse.h>
+-#include <libAfterBase/selfdiag.h>
+-#include <libAfterBase/sleep.h>
+-#include <libAfterBase/socket.h>
+-#include <libAfterBase/trace.h>
+-#include <libAfterBase/xml.h>
+-# else
+-#include "libAfterBase/astypes.h"
+-#include "libAfterBase/audit.h"
+-#include "libAfterBase/output.h"
+-#include "libAfterBase/safemalloc.h"
+-#include "libAfterBase/mystring.h"
+-#include "libAfterBase/fs.h"
+-#include "libAfterBase/parse.h"
+-#include "libAfterBase/selfdiag.h"
+-#include "libAfterBase/sleep.h"
+-#include "libAfterBase/socket.h"
+-#include "libAfterBase/trace.h"
+-#include "libAfterBase/xml.h"
+-# endif
+-#else
+-
+-# include "asim_afterbase.h"
+-
+-#endif /* HAVE_AFTERBASE */
+-
+-#endif /* AFTERBASE_H_HEADER_INCLUDED */
+-
diff --git a/debian/patches/02-build-libroot-misc-memstat-package.patch b/debian/patches/02-build-libroot-misc-memstat-package.patch
new file mode 100644
index 0000000..8c126d2
--- /dev/null
+++ b/debian/patches/02-build-libroot-misc-memstat-package.patch
@@ -0,0 +1,10 @@
+--- a/configure
++++ b/configure
+@@ -6075,6 +6075,7 @@
+ test "x$enable_xml" = "xyes" && pl="$pl libroot-io-xmlparser"
+ test "x$enable_mathmore" = "xyes" && pl="$pl libroot-math-mathmore"
+ test "x$enable_unuran" = "xyes" && pl="$pl libroot-math-unuran"
++ test "x$enable_memstat" = "xyes" && pl="$pl libroot-misc-memstat"
+ test "x$enable_table" = "xyes" && pl="$pl libroot-misc-table"
+ test "x$enable_ldap" = "xyes" && pl="$pl libroot-net-ldap"
+ test "x$enable_clarens" = "xyes" && pl="$pl libroot-proof-clarens"
diff --git a/debian/patches/03-build-libroot-bonjour-package.patch b/debian/patches/03-build-libroot-bonjour-package.patch
new file mode 100644
index 0000000..f872ed2
--- /dev/null
+++ b/debian/patches/03-build-libroot-bonjour-package.patch
@@ -0,0 +1,29 @@
+--- a/build/package/lib/makelists.sh
++++ b/build/package/lib/makelists.sh
+@@ -133,7 +133,7 @@
+ net/rootd) lib=root-system-$sub ; dev=$lib ; bin=$lib ;;
+ net/xrootd) set_plugin_names $base $sub ;;
+ net/globusauth) set_plugin_names $base globus ;;
+- net/bonjour) set_plugin_names $base $sub ;;
++ net/bonjour) set_lib_names $base $sub ;;
+ net/krb5auth) set_plugin_names $base krb5 ;;
+ net/srputils) set_plugin_names $base srp ;;
+ net/rpdutils) set_lib_names core "" root-system-bin ;;
+--- a/configure
++++ b/configure
+@@ -6077,6 +6077,7 @@
+ test "x$enable_unuran" = "xyes" && pl="$pl libroot-math-unuran"
+ test "x$enable_memstat" = "xyes" && pl="$pl libroot-misc-memstat"
+ test "x$enable_table" = "xyes" && pl="$pl libroot-misc-table"
++ test "x$enable_bonjour" = "xyes" && pl="$pl libroot-net-bonjour"
+ test "x$enable_ldap" = "xyes" && pl="$pl libroot-net-ldap"
+ test "x$enable_clarens" = "xyes" && pl="$pl libroot-proof-clarens"
+ test "x$enable_roofit" = "xyes" && pl="$pl libroot-roofit"
+@@ -6095,7 +6096,6 @@
+ test "x$enable_minuit2" = "xyes" && pl="$pl root-plugin-math-minuit2"
+ test "x$enable_pythia6" = "xyes" && pl="$pl root-plugin-montecarlo-pythia6"
+ test "x$enable_alien" = "xyes" && pl="$pl root-plugin-net-alien"
+- test "x$enable_bonjour" = "xyes" && pl="$pl root-plugin-net-bonjour"
+ test "x$enable_globus" = "xyes" && pl="$pl root-plugin-net-globus"
+ test "x$enable_krb5" = "xyes" && pl="$pl root-plugin-net-krb5"
+ test "x$enable_monalisa" = "xyes" && pl="$pl root-plugin-net-monalisa"
diff --git a/debian/patches/04-build-libroot-html-package.patch b/debian/patches/04-build-libroot-html-package.patch
new file mode 100644
index 0000000..8defc10
--- /dev/null
+++ b/debian/patches/04-build-libroot-html-package.patch
@@ -0,0 +1,10 @@
+--- a/configure
++++ b/configure
+@@ -6119,6 +6119,7 @@
+ libroot-gui-ged \
+ libroot-hist \
+ libroot-hist-spectrum \
++ libroot-html \
+ libroot-io \
+ libroot-math-foam \
+ libroot-math-genvector \
diff --git a/debian/patches/05-rename-package-libroot-proof-proofplayer.patch b/debian/patches/05-rename-package-libroot-proof-proofplayer.patch
new file mode 100644
index 0000000..539ee20
--- /dev/null
+++ b/debian/patches/05-rename-package-libroot-proof-proofplayer.patch
@@ -0,0 +1,28 @@
+--- a/build/package/lib/makelists.sh
++++ b/build/package/lib/makelists.sh
+@@ -142,6 +142,7 @@
+ proof/proofx) set_plugin_names $base xproof ;;
+ proof/clarens) set_lib_names $base $sub ;;
+ proof/proof) set_lib_names $base "" ;;
++ proof/proofplayer) set_lib_names $base $sub ;;
+ proof/*) set_plugin_names $base $sub ;;
+ roofit/*) set_lib_names $base "" ;;
+ rootx) set_lib_names core "" root-system-bin ;;
+--- a/configure
++++ b/configure
+@@ -6137,6 +6137,7 @@
+ libroot-net \
+ libroot-net-auth \
+ libroot-proof \
++ libroot-proof-proofplayer \
+ libroot-tmva \
+ libroot-tree \
+ libroot-tree-treeplayer \
+@@ -6153,7 +6154,6 @@
+ root-plugin-io-sql \
+ root-plugin-io-xml \
+ root-plugin-math-fumili \
+- root-plugin-proof-proofplayer \
+ root-plugin-proof-xproof \
+ root-plugin-tree-treeviewer \
+ root-system-proofd \
diff --git a/debian/patches/06-fix-configre-and-controls.patch b/debian/patches/06-fix-configre-and-controls.patch
new file mode 100644
index 0000000..23575d0
--- /dev/null
+++ b/debian/patches/06-fix-configre-and-controls.patch
@@ -0,0 +1,44 @@
+--- a/build/package/common/libroot-math-foam.control
++++ b/build/package/common/libroot-math-foam.control
+@@ -2,7 +2,7 @@
+ Section: libs
+ Architecture: any
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+-Description: A Compact Version of the Cellular Event Generator
++Description: Compact Version of the Cellular Event Generator
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+@@ -19,7 +19,7 @@
+ Depends: libroot-math-foam at libvers@ (= ${binary:Version}), libroot-hist-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Conflicts: libroot-dev (<= 5.19.01-1)
+-Description: A Compact Version of the Cellular Event Generator
++Description: Compact Version of the Cellular Event Generator
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+--- a/build/package/common/libroot-proof-proofplayer.control
++++ b/build/package/common/libroot-proof-proofplayer.control
+@@ -2,8 +2,8 @@
+ Architecture: any
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Suggests: root-plugin-net-netx, root-plugin-proof-xproof
+-Replaces: root-plugin-proof-proofplayer (< 5.23.05-1)
+-Conflicts: root-plugin-proof-proofplayer (< 5.23.05-1)
++Replaces: root-plugin-proof-proofplayer (<< 5.23.05-1)
++Conflicts: root-plugin-proof-proofplayer (<< 5.23.05-1)
+ Description: PROOF plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+@@ -18,8 +18,8 @@
+ Architecture: any
+ Depends: libroot-proof-proofplayer at libvers@ (= ${binary:Version}), libroot-proof-dev, ${misc:Depends}
+ Suggests: root-plugin-net-netx, root-plugin-proof-xproof
+-Replaces: root-plugin-proof-proofplayer (< 5.23.05-1)
+-Conflicts: root-plugin-proof-proofplayer (< 5.23.05-1)
++Replaces: root-plugin-proof-proofplayer (<< 5.23.05-1)
++Conflicts: root-plugin-proof-proofplayer (<< 5.23.05-1)
+ Description: PROOF plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
diff --git a/debian/patches/07-add-python-support.patch b/debian/patches/07-add-python-support.patch
new file mode 100644
index 0000000..c0ae984
--- /dev/null
+++ b/debian/patches/07-add-python-support.patch
@@ -0,0 +1,13 @@
+diff --git a/build/package/common/root-plugin-geom-gdml.control b/build/package/common/root-plugin-geom-gdml.control
+index 2956648..e3e6fe2 100644
+--- a/build/package/common/root-plugin-geom-gdml.control
++++ b/build/package/common/root-plugin-geom-gdml.control
+@@ -2,7 +2,7 @@ Package: root-plugin-geom-gdml
+ Architecture: any
+ Conflicts: libroot-dev (<< 5.19.01-1)
+ Replaces: libroot-dev
+-Depends: ${shlibs:Depends}, ${python:Depends}, libroot-geom-dev, ${misc:Depends}
++Depends: ${shlibs:Depends}, python-support, ${python:Depends}, libroot-geom-dev, ${misc:Depends}
+ Description: GDML import/export module for ROOT geometries
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
diff --git a/debian/patches/08-fix-conflicts.patch b/debian/patches/08-fix-conflicts.patch
new file mode 100644
index 0000000..dca3927
--- /dev/null
+++ b/debian/patches/08-fix-conflicts.patch
@@ -0,0 +1,663 @@
+--- a/build/package/common/libroot-bindings-python.control
++++ b/build/package/common/libroot-bindings-python.control
+@@ -17,7 +17,7 @@
+ Depends: libroot-bindings-python at libvers@ (= ${binary:Version}), libroot-core-dev, python-dev (>= 2.1), ${python:Depends}, ${misc:Depends}
+ Provides: ${python:Provides}
+ Replaces: libroot-python-dev
+-Conflicts: libroot-python-dev (<< 5.19.01-1)
++Breaks: libroot-python-dev (<< 5.19.01-1)
+ Description: Python extension for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-bindings-ruby.control
++++ b/build/package/common/libroot-bindings-ruby.control
+@@ -16,7 +16,7 @@
+ Architecture: any
+ Section: libdevel
+ Depends: libroot-bindings-ruby at libvers@ (= ${binary:Version}), libroot-core-dev, ruby1.8-dev | ruby-dev (>= 1.8), ${misc:Depends}
+-Conflicts: libroot-ruby (<< 5.19.01-1)
++Breaks: libroot-ruby (<< 5.19.01-1)
+ Replaces: libroot-ruby
+ Description: Ruby extension for ROOT - development headers
+ The ROOT system provides a set of OO frameworks with all the
+--- a/build/package/common/libroot-core.control
++++ b/build/package/common/libroot-core.control
+@@ -28,7 +28,7 @@
+ Recommends: libroot-geom-dev, libroot-gui-dev, libroot-hist-dev, libroot-proof-dev, libroot-tree-dev
+ Provides: libroot-dev
+ Replaces: libroot-dev (<< 5.19.01-1)
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Header files for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-geom.control
++++ b/build/package/common/libroot-geom.control
+@@ -16,7 +16,7 @@
+ Depends: libroot-geom at libvers@ (= ${binary:Version}), libroot-math-mathcore-dev, ${misc:Depends}
+ Recommends: libroot-graf3d-gl-dev
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<= 5.19.01-1)
++Breaks: libroot-dev (<= 5.19.01-1)
+ Description: Geometry library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-graf2d-gpad.control
++++ b/build/package/common/libroot-graf2d-gpad.control
+@@ -18,7 +18,7 @@
+ Section: libdevel
+ Depends: libroot-graf2d-gpad at libvers@ (= ${binary:Version}), libroot-graf2d-graf-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<= 5.19.01-1)
++Breaks: libroot-dev (<= 5.19.01-1)
+ Description: Canvas and pad library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-graf2d-graf.control
++++ b/build/package/common/libroot-graf2d-graf.control
+@@ -18,7 +18,7 @@
+ Section: libdevel
+ Depends: libroot-graf2d-graf at libvers@ (= ${binary:Version}), libroot-hist-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Graph library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-graf2d-postscript.control
++++ b/build/package/common/libroot-graf2d-postscript.control
+@@ -13,7 +13,7 @@
+ Architecture: any
+ Section: libdevel
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Depends: libroot-graf2d-postscript at libvers@ (= ${binary:Version}), libroot-graf2d-graf-dev, ${shlibs:Depends}, ${misc:Depends}
+ Description: Postscript/PDF renderer library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+--- a/build/package/common/libroot-graf3d-eve.control
++++ b/build/package/common/libroot-graf3d-eve.control
+@@ -2,7 +2,7 @@
+ Section: libs
+ Architecture: any
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+-Conflicts: root-plugin-gl (<= 5.19.01-1)
++Breaks: root-plugin-gl (<= 5.19.01-1)
+ Replaces: root-plugin-gl (<= 5.19.01-1)
+ Description: Event display library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+@@ -16,7 +16,7 @@
+ Section: libdevel
+ Depends: libroot-graf3d-eve at libvers@ (= ${binary:Version}), libroot-geom-dev, libroot-gui-ged-dev, libroot-montecarlo-eg-dev, libroot-tree-treeplayer-dev, ${misc:Depends}
+ Replaces: root-plugin-gl
+-Conflicts: root-plugin-gl (<= 5.19.01-1)
++Breaks: root-plugin-gl (<= 5.19.01-1)
+ Description: Event display library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-graf3d-g3d.control
++++ b/build/package/common/libroot-graf3d-g3d.control
+@@ -22,7 +22,7 @@
+ Depends: libroot-graf3d-g3d at libvers@ (= ${binary:Version}), libroot-graf2d-gpad-dev, ${misc:Depends}
+ Recommends: libroot-graf3d-gl-dev
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<= 5.19.01-1)
++Breaks: libroot-dev (<= 5.19.01-1)
+ Suggests: libroot-geom-dev
+ Description: Basic 3D shapes for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+--- a/build/package/common/libroot-graf3d-gl.control
++++ b/build/package/common/libroot-graf3d-gl.control
+@@ -2,7 +2,7 @@
+ Architecture: any
+ Section: libs
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+-Conflicts: root-plugin-graf3d-gl (<< 5.19.00-1)
++Breaks: root-plugin-graf3d-gl (<< 5.19.00-1)
+ Replaces: root-plugin-graf3d-gl (<< 5.19.00-1)
+ Provides: root-plugin-graf3d-gl
+ Description: GL plugin for ROOT - runtime library
+@@ -23,7 +23,7 @@
+ Architecture: any
+ Section: libdevel
+ Depends: libroot-graf3d-gl at libvers@ (= ${binary:Version}), ${misc:Depends}
+-Conflicts: root-plugin-graf3d-gl (<< 5.19.00-1)
++Breaks: root-plugin-graf3d-gl (<< 5.19.00-1)
+ Replaces: root-plugin-graf3d-gl
+ Description: GL plugin for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+--- a/build/package/common/libroot-gui-ged.control
++++ b/build/package/common/libroot-gui-ged.control
+@@ -12,7 +12,7 @@
+ Package: libroot-gui-ged-dev
+ Architecture: any
+ Section: libdevel
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Replaces: libroot-dev
+ Depends: libroot-gui-ged at libvers@ (= ${binary:Version}), libroot-gui-dev, libroot-tree-treeplayer-dev, ${misc:Depends}
+ Description: GUI element for editing various ROOT objecs
+--- a/build/package/common/libroot-gui.control
++++ b/build/package/common/libroot-gui.control
+@@ -2,7 +2,7 @@
+ Section: libs
+ Architecture: any
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+-Conflicts: libroot (<< 5.19.01-1)
++Breaks: libroot (<< 5.19.01-1)
+ Recommends: root-plugin-gui-guibuilder
+ Description: GUI library for ROOT - run-time library
+ The ROOT system provides a set of OO frameworks with all the
+@@ -20,7 +20,7 @@
+ Section: libdevel
+ Depends: libroot-gui at libvers@ (= ${binary:Version}), libroot-graf2d-gpad-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: GUI library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-hist-spectrum.control
++++ b/build/package/common/libroot-hist-spectrum.control
+@@ -18,7 +18,7 @@
+ Section: libdevel
+ Depends: libroot-hist-spectrum at libvers@ (= ${binary:Version}), libroot-hist-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Spectra analysis library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-hist.control
++++ b/build/package/common/libroot-hist.control
+@@ -15,7 +15,7 @@
+ Section: libdevel
+ Depends: libroot-hist at libvers@ (= ${binary:Version}), libroot-core-dev, libroot-math-matrix-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Histogram library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-html.control
++++ b/build/package/common/libroot-html.control
+@@ -19,7 +19,7 @@
+ Section: libdevel
+ Depends: libroot-html at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Html documentation generator for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-io-xmlparser.control
++++ b/build/package/common/libroot-io-xmlparser.control
+@@ -14,7 +14,7 @@
+ Section: libdevel
+ Depends: libroot-io-xmlparser at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev, root-plugin-xml
+-Conflicts: libroot-dev (<< 5.19.01-1), root-plugin-xml (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1), root-plugin-xml (<< 5.19.01-1)
+ Description: Input/output of ROOT objects - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-io.control
++++ b/build/package/common/libroot-io.control
+@@ -14,7 +14,7 @@
+ Section: libdevel
+ Depends: libroot-io at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev, root-plugin-proof
+-Conflicts: libroot-dev (<< 5.19.01-1), root-plugin-proof (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1), root-plugin-proof (<< 5.19.01-1)
+ Description: Input/output of ROOT objects - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-math-foam.control
++++ b/build/package/common/libroot-math-foam.control
+@@ -18,7 +18,7 @@
+ Section: libdevel
+ Depends: libroot-math-foam at libvers@ (= ${binary:Version}), libroot-hist-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<= 5.19.01-1)
++Breaks: libroot-dev (<= 5.19.01-1)
+ Description: Compact Version of the Cellular Event Generator
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-math-genvector.control
++++ b/build/package/common/libroot-math-genvector.control
+@@ -15,7 +15,7 @@
+ Section: libdevel
+ Depends: libroot-math-genvector at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<= 5.19.01-1)
++Breaks: libroot-dev (<= 5.19.01-1)
+ Description: Generalized vector library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-math-mathcore.control
++++ b/build/package/common/libroot-math-mathcore.control
+@@ -14,7 +14,7 @@
+ Section: libdevel
+ Depends: libroot-math-mathcore at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Core mathemathics library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-math-mathmore.control
++++ b/build/package/common/libroot-math-mathmore.control
+@@ -14,7 +14,7 @@
+ Architecture: any
+ Section: libdevel
+ Depends: libroot-math-mathmore at libvers@ (= ${binary:Version}), libroot-core-dev, libgsl0-dev, ${misc:Depends}
+-Conflicts: libroot-mathmore-dev (<< 5.19.01-1)
++Breaks: libroot-mathmore-dev (<< 5.19.01-1)
+ Replaces: libroot-mathmore-dev
+ Description: Mathmore plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+--- a/build/package/common/libroot-math-matrix.control
++++ b/build/package/common/libroot-math-matrix.control
+@@ -14,7 +14,7 @@
+ Section: libdevel
+ Depends: libroot-math-matrix at libvers@ (= ${binary:Version}), libroot-core-dev, libroot-math-mathcore-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Matrix library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-math-minuit.control
++++ b/build/package/common/libroot-math-minuit.control
+@@ -18,7 +18,7 @@
+ Depends: libroot-math-minuit at libvers@ (= ${binary:Version}), libroot-graf2d-graf-dev, ${misc:Depends}
+ Provides: root-fitter
+ Replaces: root-plugin-minuit (<< 5.09.01-7), libroot-minuit-dev
+-Conflicts: libroot-minuit-dev (<< 5.19.01-1)
++Breaks: libroot-minuit-dev (<< 5.19.01-1)
+ Description: Minuit plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-math-physics.control
++++ b/build/package/common/libroot-math-physics.control
+@@ -14,7 +14,7 @@
+ Section: libdevel
+ Depends: libroot-math-physics at libvers@ (= ${binary:Version}), libroot-math-matrix-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Physics library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-math-quadp.control
++++ b/build/package/common/libroot-math-quadp.control
+@@ -18,7 +18,7 @@
+ Section: libdevel
+ Depends: libroot-math-quadp at libvers@ (= ${binary:Version}), libroot-math-matrix-dev, ${misc:Depends}
+ Replaces: libroot-quadp
+-Conflicts: libroot-quadp (<< 5.19.01-1)
++Breaks: libroot-quadp (<< 5.19.01-1)
+ Description: QuadP extension for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-math-smatrix.control
++++ b/build/package/common/libroot-math-smatrix.control
+@@ -14,7 +14,7 @@
+ Section: libdevel
+ Depends: libroot-math-smatrix at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Sparse matrix library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-math-splot.control
++++ b/build/package/common/libroot-math-splot.control
+@@ -39,7 +39,7 @@
+ Section: libdevel
+ Depends: libroot-math-splot at libvers@ (= ${binary:Version}), libroot-graf2d-graf-dev, libroot-graf3d-g3d-dev, libroot-tree-treeplayer-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Splot library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-math-unuran.control
++++ b/build/package/common/libroot-math-unuran.control
+@@ -29,7 +29,7 @@
+ Section: libdevel
+ Depends: libroot-math-unuran at libvers@ (= ${binary:Version}), libroot-hist-dev, ${misc:Depends}
+ Replaces: libroot-unuran-dev
+-Conflicts: libroot-unuran-dev (<< 5.19.01-1)
++Breaks: libroot-unuran-dev (<< 5.19.01-1)
+ Homepage: http://statistik.wu-wien.ac.at/unuran/
+ Description: Random number generator library - development files
+ The ROOT system provides a set of OO frameworks with all the
+--- a/build/package/common/libroot-misc-memstat.control
++++ b/build/package/common/libroot-misc-memstat.control
+@@ -15,7 +15,7 @@
+ Section: libdevel
+ Depends: libroot-misc-memstat at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Memory statistics tool for use with ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-misc-minicern.control
++++ b/build/package/common/libroot-misc-minicern.control
+@@ -14,7 +14,7 @@
+ Section: libdevel
+ Depends: libroot-misc-minicern at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Small version of CERNLIB for use with ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-misc-table.control
++++ b/build/package/common/libroot-misc-table.control
+@@ -14,7 +14,7 @@
+ Section: libdevel
+ Depends: libroot-misc-table at libvers@ (= ${binary:Version}), libroot-graf3d-g3d-dev, libroot-graf2d-gpad-dev, libroot-tree-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Table library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-montecarlo-eg.control
++++ b/build/package/common/libroot-montecarlo-eg.control
+@@ -14,7 +14,7 @@
+ Section: libdevel
+ Depends: libroot-montecarlo-eg at libvers@ (= ${binary:Version}), libroot-graf2d-gpad-dev, libroot-graf3d-g3d-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Event generator library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-montecarlo-g4root.control
++++ b/build/package/common/libroot-montecarlo-g4root.control
+@@ -14,7 +14,7 @@
+ Section: libdevel
+ Depends: libroot-montecarlo-g4root at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Geant4 interface library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-montecarlo-vmc.control
++++ b/build/package/common/libroot-montecarlo-vmc.control
+@@ -15,7 +15,7 @@
+ Section: libdevel
+ Depends: libroot-montecarlo-vmc at libvers@ (= ${binary:Version}), libroot-geom-dev, libroot-montecarlo-eg-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Virtual Monte-Carlo (simulation) library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-net-auth.control
++++ b/build/package/common/libroot-net-auth.control
+@@ -15,7 +15,7 @@
+ Section: libdevel
+ Depends: libroot-net-auth at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<= 5.19.01-1)
++Breaks: libroot-dev (<= 5.19.01-1)
+ Description: Authentication extension for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-net-ldap.control
++++ b/build/package/common/libroot-net-ldap.control
+@@ -15,7 +15,7 @@
+ Architecture: any
+ Section: libdevel
+ Depends: libroot-net-ldap at libvers@ (= ${binary:Version}), libroot-core-dev, libldap2-dev | libldap-dev, ${misc:Depends}
+-Conflicts: libroot-ldap-dev (<< 5.19.01-1)
++Breaks: libroot-ldap-dev (<< 5.19.01-1)
+ Replaces: libroot-ldap-dev (<< 5.19.01-1)
+ Description: Ldap extension for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+--- a/build/package/common/libroot-net.control
++++ b/build/package/common/libroot-net.control
+@@ -14,7 +14,7 @@
+ Section: libdevel
+ Depends: libroot-net at libvers@ (= ${binary:Version}), libroot-math-mathcore-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Net library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-proof-clarens.control
++++ b/build/package/common/libroot-proof-clarens.control
+@@ -20,7 +20,7 @@
+ Architecture: any
+ Section: libdevel
+ Depends: libroot-proof-clarens at libvers@ (= ${binary:Version}), libroot-core-dev, libxmlrpc-c3-dev | libxmlrpc-c-dev, ${misc:Depends}
+-Conflicts: libroot-clarens-dev (<< 5.19.01-1)
++Breaks: libroot-clarens-dev (<< 5.19.01-1)
+ Replaces: libroot-clarens-dev
+ Homepage: http://clarens.sourceforge.net
+ Description: Clarens extension for ROOT - development files
+--- a/build/package/common/libroot-proof-proofplayer.control
++++ b/build/package/common/libroot-proof-proofplayer.control
+@@ -3,7 +3,7 @@
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Suggests: root-plugin-net-netx, root-plugin-proof-xproof
+ Replaces: root-plugin-proof-proofplayer (<< 5.23.05-1)
+-Conflicts: root-plugin-proof-proofplayer (<< 5.23.05-1)
++Breaks: root-plugin-proof-proofplayer (<< 5.23.05-1)
+ Description: PROOF plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+@@ -19,7 +19,7 @@
+ Depends: libroot-proof-proofplayer at libvers@ (= ${binary:Version}), libroot-proof-dev, ${misc:Depends}
+ Suggests: root-plugin-net-netx, root-plugin-proof-xproof
+ Replaces: root-plugin-proof-proofplayer (<< 5.23.05-1)
+-Conflicts: root-plugin-proof-proofplayer (<< 5.23.05-1)
++Breaks: root-plugin-proof-proofplayer (<< 5.23.05-1)
+ Description: PROOF plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-proof.control
++++ b/build/package/common/libroot-proof.control
+@@ -15,7 +15,7 @@
+ Section: libdevel
+ Depends: libroot-proof at libvers@ (= ${binary:Version}), libroot-math-mathcore-dev, libroot-tree-dev, ${misc:Depends}
+ Replaces: root-plugin-proof
+-Conflicts: root-plugin-proof (<< 5.19.01-1)
++Breaks: root-plugin-proof (<< 5.19.01-1)
+ Description: PROOF library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/libroot-tree-treeplayer.control
++++ b/build/package/common/libroot-tree-treeplayer.control
+@@ -11,7 +11,7 @@
+ Package: libroot-tree-treeplayer-dev
+ Architecture: any
+ Section: libdevel
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Replaces: libroot-dev
+ Depends: libroot-tree-treeplayer at libvers@ (= ${binary:Version}), libroot-tree-dev, libroot-graf2d-gpad-dev, libroot-graf3d-g3d-dev, ${misc:Depends}
+ Description: Library to loop over a ROOT tree
+--- a/build/package/common/libroot-tree.control
++++ b/build/package/common/libroot-tree.control
+@@ -15,7 +15,7 @@
+ Section: libdevel
+ Depends: libroot-tree at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Tree library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/root-plugin-geom-gdml.control
++++ b/build/package/common/root-plugin-geom-gdml.control
+@@ -1,6 +1,6 @@
+ Package: root-plugin-geom-gdml
+ Architecture: any
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Replaces: libroot-dev
+ Depends: ${shlibs:Depends}, python-support, ${python:Depends}, libroot-geom-dev, ${misc:Depends}
+ Description: GDML import/export module for ROOT geometries
+--- a/build/package/common/root-plugin-geom-geombuilder.control
++++ b/build/package/common/root-plugin-geom-geombuilder.control
+@@ -1,6 +1,6 @@
+ Package: root-plugin-geom-geombuilder
+ Architecture: any
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Replaces: libroot-dev
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Description: Geometry builder plugin for ROOT
+--- a/build/package/common/root-plugin-geom-geompainter.control
++++ b/build/package/common/root-plugin-geom-geompainter.control
+@@ -1,6 +1,6 @@
+ Package: root-plugin-geom-geompainter
+ Architecture: any
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Replaces: libroot-dev
+ Depends: ${shlibs:Depends}, ${misc:Depends} , ${misc:Depends}
+ Description: Geometry painter plugin for ROOT
+--- a/build/package/common/root-plugin-graf2d-x11.control
++++ b/build/package/common/root-plugin-graf2d-x11.control
+@@ -1,7 +1,7 @@
+ Package: root-plugin-graf2d-x11
+ Architecture: any
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Provides: root-system-display
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Description: X window system plugin for ROOT
+--- a/build/package/common/root-plugin-graf3d-x3d.control
++++ b/build/package/common/root-plugin-graf3d-x3d.control
+@@ -1,6 +1,6 @@
+ Package: root-plugin-graf3d-x3d
+ Architecture: any
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Replaces: libroot-dev
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Recommends: root-plugin-graf3d-gl
+--- a/build/package/common/root-plugin-gui-fitpanel.control
++++ b/build/package/common/root-plugin-gui-fitpanel.control
+@@ -1,6 +1,6 @@
+ Package: root-plugin-gui-fitpanel
+ Architecture: any
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Replaces: libroot-dev
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Description: GUI element for fits plugin for ROOT
+--- a/build/package/common/root-plugin-gui-guibuilder.control
++++ b/build/package/common/root-plugin-gui-guibuilder.control
+@@ -1,6 +1,6 @@
+ Package: root-plugin-gui-guibuilder
+ Architecture: any
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Replaces: libroot-dev
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Description: GUI editor plug-in for ROOT
+--- a/build/package/common/root-plugin-gui-sessionviewer.control
++++ b/build/package/common/root-plugin-gui-sessionviewer.control
+@@ -1,6 +1,6 @@
+ Package: root-plugin-gui-sessionviewer
+ Architecture: any
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Replaces: libroot-dev
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Description: GUI to browse an interactive PROOF session
+--- a/build/package/common/root-plugin-hist-histpainter.control
++++ b/build/package/common/root-plugin-hist-histpainter.control
+@@ -1,7 +1,7 @@
+ Package: root-plugin-hist-histpainter
+ Architecture: any
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Description: Histogram painter plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+--- a/build/package/common/root-plugin-hist-spectrumpainter.control
++++ b/build/package/common/root-plugin-hist-spectrumpainter.control
+@@ -2,7 +2,7 @@
+ Architecture: any
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Replaces: libroot-dev
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Description: Spectrum painter plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/root-plugin-proof-proofplayer.control
++++ b/build/package/common/root-plugin-proof-proofplayer.control
+@@ -3,7 +3,7 @@
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Suggests: root-plugin-net-netx, root-plugin-proof-xproof
+ Replaces: root-plugin-proof-proofplayer (< 5.23.05-1)
+-Conflicts: root-plugin-proof-proofplayer (< 5.23.05-1)
++Breaks: root-plugin-proof-proofplayer (< 5.23.05-1)
+ Description: PROOF plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+@@ -18,7 +18,7 @@
+ Depends: libroot-proof-proofplayer at libvers@ (= ${binary:Version}), libroot-proof-dev, ${misc:Depends}
+ Suggests: root-plugin-net-netx, root-plugin-proof-xproof
+ Replaces: root-plugin-proof-proofplayer (< 5.23.05-1)
+-Conflicts: root-plugin-proof-proofplayer (< 5.23.05-1)
++Breaks: root-plugin-proof-proofplayer (< 5.23.05-1)
+ Description: PROOF plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/root-plugin-proof-xproof.control
++++ b/build/package/common/root-plugin-proof-xproof.control
+@@ -3,7 +3,7 @@
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Suggests: root-plugin-net-netx
+ Replaces: root-proofd
+-Conflicts: root-proofd (<= 5.13.05-4)
++Breaks: root-proofd (<= 5.13.05-4)
+ Description: XPROOF plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+--- a/build/package/common/root-plugin-tree-treeplayer.control
++++ b/build/package/common/root-plugin-tree-treeplayer.control
+@@ -1,6 +1,6 @@
+ Package: root-plugin-tree-treeplayer
+ Architecture: any
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Replaces: libroot-dev
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Description: Plug-in to loop over a ROOT tree
+--- a/build/package/common/root-plugin-tree-treeviewer.control
++++ b/build/package/common/root-plugin-tree-treeviewer.control
+@@ -1,6 +1,6 @@
+ Package: root-plugin-tree-treeviewer
+ Architecture: any
+-Conflicts: libroot-dev (<< 5.19.01-1)
++Breaks: libroot-dev (<< 5.19.01-1)
+ Replaces: libroot-dev
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Description: GUI to browse an a ROOT tree
+--- a/build/package/common/root-system-xrootd.control
++++ b/build/package/common/root-system-xrootd.control
+@@ -3,7 +3,7 @@
+ Architecture: any
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Replaces: root-system-xrootd
+-Conflicts: root-system-xrootd (<< 5.19.03-1)
++Breaks: root-system-xrootd (<< 5.19.03-1)
+ Homepage: http://xrootd.slac.stanford.edu
+ Description: Plugins for xrootd protocol
+ The ROOT system provides a set of OO frameworks with all the
diff --git a/debian/patches/09-fix-spelling-allows-one-to.patch b/debian/patches/09-fix-spelling-allows-one-to.patch
new file mode 100644
index 0000000..dbbc511
--- /dev/null
+++ b/debian/patches/09-fix-spelling-allows-one-to.patch
@@ -0,0 +1,20 @@
+--- a/build/package/common/libroot-math-splot.control
++++ b/build/package/common/libroot-math-splot.control
+@@ -24,7 +24,7 @@
+ data sample. In order to be able to do so, one must be able to unfold
+ from the distribution of the whole data sample.
+ .
+- The SPlot method allows to reconstruct the distributions for the
++ The SPlot method allows one to reconstruct the distributions for the
+ control variable, independently for each of the various sources of
+ events, without making use of any a priori knowledge on this
+ variable. The aim is thus to use the knowledge available for the
+@@ -62,7 +62,7 @@
+ data sample. In order to be able to do so, one must be able to unfold
+ from the distribution of the whole data sample.
+ .
+- The SPlot method allows to reconstruct the distributions for the
++ The SPlot method allows one to reconstruct the distributions for the
+ control variable, independently for each of the various sources of
+ events, without making use of any a priori knowledge on this
+ variable. The aim is thus to use the knowledge available for the
diff --git a/debian/patches/10-remove-obsolete-build-dep.patch b/debian/patches/10-remove-obsolete-build-dep.patch
new file mode 100644
index 0000000..1e038d6
--- /dev/null
+++ b/debian/patches/10-remove-obsolete-build-dep.patch
@@ -0,0 +1,20 @@
+--- a/build/package/lib/makebuilddepend.sh
++++ b/build/package/lib/makebuilddepend.sh
+@@ -196,7 +196,7 @@
+ libroot-graf3d-eve) ;;
+ libroot-graf3d-g3d) ;;
+ libroot-graf3d-gl)
+- echo -n ", libglu1-mesa-dev | libglu1-xorg-dev "
++ echo -n ", libglu1-mesa-dev"
+ echo -n "| xlibmesa-glu-dev | libglu-dev"
+ echo -n ", libglew1.5-dev | libglew-dev"
+ echo -n ", libftgl-dev | ftgl-dev" ;;
+@@ -250,7 +250,7 @@
+ # Input the build dependencies of the libafterimage-dev package
+ root-plugin-graf2d-asimage)
+ echo -n ", libjpeg62-dev, libpng12-dev, libtiff4-dev"
+- echo -n ", libgif-dev | libungif4-dev, libxinerama-dev";;
++ echo -n ", libgif-dev, libxinerama-dev";;
+ root-plugin-graf2d-qt) need_qt=1 ;;
+ root-plugin-graf2d-gviz) ;;
+ root-plugin-graf3d-x3d) ;;
diff --git a/debian/patches/11-fix-circular-dep.patch b/debian/patches/11-fix-circular-dep.patch
new file mode 100644
index 0000000..628e20f
--- /dev/null
+++ b/debian/patches/11-fix-circular-dep.patch
@@ -0,0 +1,11 @@
+--- a/build/package/lib/makelists.sh
++++ b/build/package/lib/makelists.sh
+@@ -136,7 +136,7 @@
+ net/bonjour) set_lib_names $base $sub ;;
+ net/krb5auth) set_plugin_names $base krb5 ;;
+ net/srputils) set_plugin_names $base srp ;;
+- net/rpdutils) set_lib_names core "" root-system-bin ;;
++ net/rpdutils) set_lib_names $base auth root-system-bin ;;
+ net/*) set_plugin_names $base $sub ;;
+ proof/proofd) set_plugin_names $base xproof root-system-${base}d ;;
+ proof/proofx) set_plugin_names $base xproof ;;
diff --git a/debian/patches/12-fix-net-auth-control.patch b/debian/patches/12-fix-net-auth-control.patch
new file mode 100644
index 0000000..651c9d3
--- /dev/null
+++ b/debian/patches/12-fix-net-auth-control.patch
@@ -0,0 +1,11 @@
+--- a/build/package/common/libroot-net-auth.control
++++ b/build/package/common/libroot-net-auth.control
+@@ -15,7 +15,7 @@
+ Section: libdevel
+ Depends: libroot-net-auth at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+-Breaks: libroot-dev (<= 5.19.01-1)
++Breaks: libroot-dev (<= 5.19.01-1), libroot-core-dev (<< 5.30.00-1)
+ Description: Authentication extension for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
diff --git a/debian/patches/13-fix-circular-dep.patch b/debian/patches/13-fix-circular-dep.patch
new file mode 100644
index 0000000..3312d9e
--- /dev/null
+++ b/debian/patches/13-fix-circular-dep.patch
@@ -0,0 +1,14 @@
+--- a/build/package/common/libroot-core.control
++++ b/build/package/common/libroot-core.control
+@@ -23,9 +23,9 @@
+ Package: libroot-core-dev
+ Section: libdevel
+ Architecture: any
+-Depends: ${shlibs:Depends}, zlib1g-dev, libssl-dev, comerr-dev, libkrb5-dev, libx11-dev, libfreetype6-dev, libpcre3-dev, libxpm-dev, g++ | c++-compiler, ${python:Depends}, cfortran, libroot-io-dev, libroot-net-dev, ${misc:Depends}
++Depends: ${shlibs:Depends}, zlib1g-dev, libssl-dev, comerr-dev, libkrb5-dev, libx11-dev, libfreetype6-dev, libpcre3-dev, libxpm-dev, g++ | c++-compiler, ${python:Depends}, cfortran, ${misc:Depends}
+ Suggests: root-system-bin, gccxml
+-Recommends: libroot-geom-dev, libroot-gui-dev, libroot-hist-dev, libroot-proof-dev, libroot-tree-dev
++Recommends: libroot-geom-dev, libroot-gui-dev, libroot-hist-dev, libroot-proof-dev, libroot-tree-dev, libroot-io-dev, libroot-net-dev
+ Provides: libroot-dev
+ Replaces: libroot-dev (<< 5.19.01-1)
+ Breaks: libroot-dev (<< 5.19.01-1)
diff --git a/debian/patches/15-enable-extra-ldflags.patch b/debian/patches/15-enable-extra-ldflags.patch
new file mode 100644
index 0000000..8656ab1
--- /dev/null
+++ b/debian/patches/15-enable-extra-ldflags.patch
@@ -0,0 +1,20 @@
+--- a/configure
++++ b/configure
+@@ -6444,7 +6444,7 @@
+
+ sed -e "s|@useconfig@|FALSE|" \
+ -e "s|@cflags@||" \
+- -e "s|@ldflags@||" \
++ -e "s|@ldflags@|$EXTRA_LDFLAGS|" \
+ < Makefile.tmp > Makefile.tmpp
+ mv Makefile.tmpp Makefile.tmp
+ fi
+@@ -6578,7 +6578,7 @@
+ -e "s|@ldapincdir@|$ldapincdir|" \
+ -e "s|@ldaplib@|$ldaplib|" \
+ -e "s|@ldaplibdir@|$ldaplibdir|" \
+- -e "s|@ldflags@||" \
++ -e "s|@ldflags@|$EXTRA_LDFLAGS|" \
+ -e "s|@libdir@|$libdir|" \
+ -e "s|@llvmconfig@|$llvmconfig|" \
+ -e "s|@macrodir@|$macrodir|" \
diff --git a/debian/patches/16-fix-libroot-html-control.patch b/debian/patches/16-fix-libroot-html-control.patch
new file mode 100644
index 0000000..2537062
--- /dev/null
+++ b/debian/patches/16-fix-libroot-html-control.patch
@@ -0,0 +1,24 @@
+--- a/build/package/common/libroot-html.control
++++ b/build/package/common/libroot-html.control
+@@ -7,10 +7,6 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- The ROOT system provides a set of OO frameworks with all the
+- functionality needed to handle and analyze large amounts of data
+- efficiently.
+- .
+ This package contains classes to automatically extract documentation
+ from marked up sources.
+
+@@ -24,10 +20,6 @@
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+- .
+- The ROOT system provides a set of OO frameworks with all the
+- functionality needed to handle and analyze large amounts of data
+- efficiently.
+ .
+ This package contains classes to automatically extract documentation
+ from marked up sources.
diff --git a/debian/patches/17-remove-ld.so.conf.d-in-install-file.patch b/debian/patches/17-remove-ld.so.conf.d-in-install-file.patch
new file mode 100644
index 0000000..5290ba3
--- /dev/null
+++ b/debian/patches/17-remove-ld.so.conf.d-in-install-file.patch
@@ -0,0 +1,5 @@
+--- a/build/package/common/libroot-core.install.in
++++ b/build/package/common/libroot-core.install.in
+@@ -1,2 +1 @@
+ @prefix@/lib/root/@version@/cint
+-/etc/ld.so.conf.d
diff --git a/debian/patches/18-create-so-symlinks-for-plugins.patch b/debian/patches/18-create-so-symlinks-for-plugins.patch
new file mode 100644
index 0000000..6504e97
--- /dev/null
+++ b/debian/patches/18-create-so-symlinks-for-plugins.patch
@@ -0,0 +1,37 @@
+--- a/build/package/lib/makelist
++++ b/build/package/lib/makelist
+@@ -71,11 +71,13 @@
+ # If the development and library package is the same (plugins), then we need
+ # only add the soversion to the library directory
+ ifeq ($(DIRS), net/xrootd)
+-PKGLIBS := $(ALLLIBS:$(RLIBD)/%=$(RLIBD)/$(SOVER)/%)
++PKGLIBS := $(ALLLIBS:$(RLIBD)/%=$(RLIBD)/$(SOVER)/%) \
++ $(ALLLIBS:$(RLIBD)/%=$(RLIBD)/%)
+ else
+ PKGLIBS := $(ALLLIBS:$(RLIBD)/%=$(RLIBD)/$(SOVER)/%.$(SOVER)) \
+ $(ALLLIBS:$(RLIBD)/%=$(RLIBD)/$(SOVER)/%.$(MAJOR)) \
+- $(ALLLIBS:$(RLIBD)/%=$(RLIBD)/$(SOVER)/%)
++ $(ALLLIBS:$(RLIBD)/%=$(RLIBD)/$(SOVER)/%) \
++ $(ALLLIBS:$(RLIBD)/%=$(RLIBD)/%.$(SOVER))
+ endif # $(DIRS) = net/xrootd
+ endif # $(LIB) = $(DEV)
+ endif # $(LIB)
+@@ -95,6 +97,18 @@
+ b=`basename $$i` ; \
+ ln -fs $(SOVER)/$$b . ; \
+ ln -fs $(SOVER)/$$b.$(SOVER) . ; done)
++else # $(LIB) = $(DEV)
++ifeq ($(DIRS), net/xrootd)
++ @(cd $(BUILD)/$(RLIBD) && \
++ for i in $(ALLLIBS) ; do \
++ b=`basename $$i` ; \
++ ln -fs $(SOVER)/$$b . ; done)
++else # $(DIRS) != net/xrootd
++ @(cd $(BUILD)/$(RLIBD) && \
++ for i in $(ALLLIBS) ; do \
++ b=`basename $$i` ; \
++ ln -fs $(SOVER)/$$b.$(SOVER) . ; done)
++endif # $(DIRS) = net/xrootd
+ endif # $(LIB) = $(DEV)
+ endif # $(LIB)
+
diff --git a/debian/patches/19-remove-embedded-library-gl2ps.patch b/debian/patches/19-remove-embedded-library-gl2ps.patch
new file mode 100644
index 0000000..eeddc89
--- /dev/null
+++ b/debian/patches/19-remove-embedded-library-gl2ps.patch
@@ -0,0 +1,6234 @@
+--- a/graf3d/gl/Module.mk
++++ b/graf3d/gl/Module.mk
+@@ -28,7 +28,7 @@
+ endif
+
+ # Excluded from rootcint
+-GLH1 := $(MODDIRI)/gl2ps.h $(MODDIRI)/CsgOps.h \
++GLH1 := $(MODDIRI)/CsgOps.h \
+ $(MODDIRI)/TGLIncludes.h $(MODDIRI)/TGLWSIncludes.h \
+ $(MODDIRI)/TGLContextPrivate.h $(MODDIRI)/TGLMarchingCubes.h \
+ $(MODDIRI)/TKDEAdapter.h $(MODDIRI)/TGL5DPainter.h \
+@@ -70,7 +70,7 @@
+ @$(MAKELIB) $(PLATFORM) $(LD) "$(LDFLAGS)" \
+ "$(SOFLAGS)" libRGL.$(SOEXT) $@ "$(GLO) $(GLO1) $(GLDO)" \
+ "$(GLLIBEXTRA) $(FTGLLIBDIR) $(FTGLLIBS) \
+- $(GLEWLIBDIR) $(GLEWLIBS) $(GLLIBS)"
++ $(GLEWLIBDIR) $(GLEWLIBS) -lgl2ps $(GLLIBS)"
+
+ $(GLDS): $(GLH2) $(GLL) $(ROOTCINTTMPDEP)
+ $(MAKEDIR)
+--- a/graf3d/gl/inc/gl2ps.h
++++ /dev/null
+@@ -1,175 +0,0 @@
+-// @(#)root/gl:$Id: gl2ps.h 33578 2010-05-19 12:35:58Z rdm $
+-/*
+- * GL2PS, an OpenGL to PostScript Printing Library
+- * Copyright (C) 1999-2009 C. Geuzaine
+- *
+- * This program is free software; you can redistribute it and/or
+- * modify it under the terms of either:
+- *
+- * a) the GNU Library General Public License as published by the Free
+- * Software Foundation, either version 2 of the License, or (at your
+- * option) any later version; or
+- *
+- * b) the GL2PS License as published by Christophe Geuzaine, either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either
+- * the GNU Library General Public License or the GL2PS License for
+- * more details.
+- *
+- * You should have received a copy of the GNU Library General Public
+- * License along with this library in the file named "COPYING.LGPL";
+- * if not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+- * Cambridge, MA 02139, USA.
+- *
+- * You should have received a copy of the GL2PS License with this
+- * library in the file named "COPYING.GL2PS"; if not, I will be glad
+- * to provide one.
+- *
+- * For the latest info about gl2ps, see http://www.geuz.org/gl2ps/.
+- * Please report all bugs and problems to <gl2ps at geuz.org>.
+- */
+-
+-#ifndef __GL2PS_H__
+-#define __GL2PS_H__
+-
+-#include <stdio.h>
+-#include <stdlib.h>
+-
+-#include <TGLIncludes.h>
+-
+-#define GL2PSDLL_API
+-
+-/* Support for compressed PostScript/PDF/SVG and for embedded PNG
+- images in SVG */
+-
+-#if defined(HAVE_ZLIB) || defined(HAVE_LIBZ)
+-# define GL2PS_HAVE_ZLIB
+-# if defined(HAVE_LIBPNG) || defined(HAVE_PNG)
+-# define GL2PS_HAVE_LIBPNG
+-# endif
+-#endif
+-
+-/* Version number */
+-
+-#define GL2PS_MAJOR_VERSION 1
+-#define GL2PS_MINOR_VERSION 3
+-#define GL2PS_PATCH_VERSION 3
+-#define GL2PS_EXTRA_VERSION ""
+-
+-#define GL2PS_VERSION (GL2PS_MAJOR_VERSION + \
+- 0.01 * GL2PS_MINOR_VERSION + \
+- 0.0001 * GL2PS_PATCH_VERSION)
+-
+-#define GL2PS_COPYRIGHT "(C) 1999-2009 C. Geuzaine"
+-
+-/* Output file formats (the values and the ordering are important!) */
+-
+-#define GL2PS_PS 0
+-#define GL2PS_EPS 1
+-#define GL2PS_TEX 2
+-#define GL2PS_PDF 3
+-#define GL2PS_SVG 4
+-#define GL2PS_PGF 5
+-
+-/* Sorting algorithms */
+-
+-#define GL2PS_NO_SORT 1
+-#define GL2PS_SIMPLE_SORT 2
+-#define GL2PS_BSP_SORT 3
+-
+-/* Message levels and error codes */
+-
+-#define GL2PS_SUCCESS 0
+-#define GL2PS_INFO 1
+-#define GL2PS_WARNING 2
+-#define GL2PS_ERROR 3
+-#define GL2PS_NO_FEEDBACK 4
+-#define GL2PS_OVERFLOW 5
+-#define GL2PS_UNINITIALIZED 6
+-
+-/* Options for gl2psBeginPage */
+-
+-#define GL2PS_NONE 0
+-#define GL2PS_DRAW_BACKGROUND (1<<0)
+-#define GL2PS_SIMPLE_LINE_OFFSET (1<<1)
+-#define GL2PS_SILENT (1<<2)
+-#define GL2PS_BEST_ROOT (1<<3)
+-#define GL2PS_OCCLUSION_CULL (1<<4)
+-#define GL2PS_NO_TEXT (1<<5)
+-#define GL2PS_LANDSCAPE (1<<6)
+-#define GL2PS_NO_PS3_SHADING (1<<7)
+-#define GL2PS_NO_PIXMAP (1<<8)
+-#define GL2PS_USE_CURRENT_VIEWPORT (1<<9)
+-#define GL2PS_COMPRESS (1<<10)
+-#define GL2PS_NO_BLENDING (1<<11)
+-#define GL2PS_TIGHT_BOUNDING_BOX (1<<12)
+-
+-/* Arguments for gl2psEnable/gl2psDisable */
+-
+-#define GL2PS_POLYGON_OFFSET_FILL 1
+-#define GL2PS_POLYGON_BOUNDARY 2
+-#define GL2PS_LINE_STIPPLE 3
+-#define GL2PS_BLEND 4
+-
+-/* Text alignment (o=raster position; default mode is BL):
+- +---+ +---+ +---+ +---+ +---+ +---+ +-o-+ o---+ +---o
+- | o | o | | o | | | | | | | | | | | |
+- +---+ +---+ +---+ +-o-+ o---+ +---o +---+ +---+ +---+
+- C CL CR B BL BR T TL TR */
+-
+-#define GL2PS_TEXT_C 1
+-#define GL2PS_TEXT_CL 2
+-#define GL2PS_TEXT_CR 3
+-#define GL2PS_TEXT_B 4
+-#define GL2PS_TEXT_BL 5
+-#define GL2PS_TEXT_BR 6
+-#define GL2PS_TEXT_T 7
+-#define GL2PS_TEXT_TL 8
+-#define GL2PS_TEXT_TR 9
+-
+-typedef GLfloat GL2PSrgba[4];
+-
+-#if defined(__cplusplus)
+-extern "C" {
+-#endif
+-
+-GL2PSDLL_API GLint gl2psBeginPage(const char *title, const char *producer,
+- GLint viewport[4], GLint format, GLint sort,
+- GLint options, GLint colormode,
+- GLint colorsize, GL2PSrgba *colormap,
+- GLint nr, GLint ng, GLint nb, GLint buffersize,
+- FILE *stream, const char *filename);
+-GL2PSDLL_API GLint gl2psEndPage(void);
+-GL2PSDLL_API GLint gl2psSetOptions(GLint options);
+-GL2PSDLL_API GLint gl2psGetOptions(GLint *options);
+-GL2PSDLL_API GLint gl2psBeginViewport(GLint viewport[4]);
+-GL2PSDLL_API GLint gl2psEndViewport(void);
+-GL2PSDLL_API GLint gl2psText(const char *str, const char *fontname,
+- GLshort fontsize);
+-GL2PSDLL_API GLint gl2psTextOpt(const char *str, const char *fontname,
+- GLshort fontsize, GLint align, GLfloat angle);
+-GL2PSDLL_API GLint gl2psSpecial(GLint format, const char *str);
+-GL2PSDLL_API GLint gl2psDrawPixels(GLsizei width, GLsizei height,
+- GLint xorig, GLint yorig,
+- GLenum format, GLenum type, const void *pixels);
+-GL2PSDLL_API GLint gl2psEnable(GLint mode);
+-GL2PSDLL_API GLint gl2psDisable(GLint mode);
+-GL2PSDLL_API GLint gl2psPointSize(GLfloat value);
+-GL2PSDLL_API GLint gl2psLineWidth(GLfloat value);
+-GL2PSDLL_API GLint gl2psBlendFunc(GLenum sfactor, GLenum dfactor);
+-
+-/* undocumented */
+-GL2PSDLL_API GLint gl2psDrawImageMap(GLsizei width, GLsizei height,
+- const GLfloat position[3],
+- const unsigned char *imagemap);
+-GL2PSDLL_API const char *gl2psGetFileExtension(GLint format);
+-GL2PSDLL_API const char *gl2psGetFormatDescription(GLint format);
+-
+-#if defined(__cplusplus)
+-}
+-#endif
+-
+-#endif /* __GL2PS_H__ */
+--- a/graf3d/gl/src/gl2ps.cxx
++++ /dev/null
+@@ -1,6033 +0,0 @@
+-// @(#)root/gl:$Id$
+-/*
+- * GL2PS, an OpenGL to PostScript Printing Library
+- * Copyright (C) 1999-2009 C. Geuzaine
+- *
+- * This program is free software; you can redistribute it and/or
+- * modify it under the terms of either:
+- *
+- * a) the GNU Library General Public License as published by the Free
+- * Software Foundation, either version 2 of the License, or (at your
+- * option) any later version; or
+- *
+- * b) the GL2PS License as published by Christophe Geuzaine, either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either
+- * the GNU Library General Public License or the GL2PS License for
+- * more details.
+- *
+- * You should have received a copy of the GNU Library General Public
+- * License along with this library in the file named "COPYING.LGPL";
+- * if not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+- * Cambridge, MA 02139, USA.
+- *
+- * You should have received a copy of the GL2PS License with this
+- * library in the file named "COPYING.GL2PS"; if not, I will be glad
+- * to provide one.
+- *
+- * Contributors:
+- * Michael Sweet <mike at easysw.com>
+- * Marc Ume <marc.ume at digitalgraphics.be>
+- * Jean-Francois Remacle <remacle at gce.ucl.ac.be>
+- * Bart Kaptein <B.L.Kaptein at lumc.nl>
+- * Quy Nguyen-Dai <quy at nguyendai.org>
+- * Sam Buss <sbuss at ucsd.edu>
+- * Shane Hill <Shane.Hill at dsto.defence.gov.au>
+- * Romain Boman <r_boman at yahoo.fr>
+- * Rouben Rostamian <rostamian at umbc.edu>
+- * Diego Santa Cruz <Diego.SantaCruz at epfl.ch>
+- * Shahzad Muzaffar <Shahzad.Muzaffar at cern.ch>
+- * Lassi Tuura <lassi.tuura at cern.ch>
+- * Guy Barrand <barrand at lal.in2p3.fr>
+- * Prabhu Ramachandran <prabhu at aero.iitm.ernet.in>
+- * Micha Bieber <bieber at traits.de>
+- * Olivier Couet <couet at mail.cern.ch>
+- * Shai Ayal <shaiay at gmail.com>
+- * Fabian Wenzel <wenzel at tu-harburg.de>
+- * Ian D. Gay <gay at sfu.ca>
+- * Cosmin Truta <cosmin at cs.toronto.edu>
+- * Baiju Devani <b.devani at gmail.com>
+- * Alexander Danilov <danilov at lanl.gov>
+- *
+- * For the latest info about gl2ps, see http://www.geuz.org/gl2ps/.
+- * Please report all bugs and problems to <gl2ps at geuz.org>.
+- */
+-
+-#include "gl2ps.h"
+-
+-#include <math.h>
+-#include <string.h>
+-#include <sys/types.h>
+-#include <stdarg.h>
+-#include <time.h>
+-#include <float.h>
+-
+-#if defined(GL2PS_HAVE_ZLIB)
+-#include <zlib.h>
+-#endif
+-
+-#if defined(GL2PS_HAVE_LIBPNG)
+-#include <png.h>
+-#endif
+-
+-/*********************************************************************
+- *
+- * Private definitions, data structures and prototypes
+- *
+- *********************************************************************/
+-
+-/* Magic numbers (assuming that the order of magnitude of window
+- coordinates is 10^3) */
+-
+-#define GL2PS_EPSILON 5.0e-3F
+-#define GL2PS_ZSCALE 1000.0F
+-#define GL2PS_ZOFFSET 5.0e-2F
+-#define GL2PS_ZOFFSET_LARGE 20.0F
+-#define GL2PS_ZERO(arg) (fabs(arg) < 1.e-20)
+-
+-/* Primitive types */
+-
+-#define GL2PS_NO_TYPE -1
+-#define GL2PS_TEXT 1
+-#define GL2PS_POINT 2
+-#define GL2PS_LINE 3
+-#define GL2PS_QUADRANGLE 4
+-#define GL2PS_TRIANGLE 5
+-#define GL2PS_PIXMAP 6
+-#define GL2PS_IMAGEMAP 7
+-#define GL2PS_IMAGEMAP_WRITTEN 8
+-#define GL2PS_IMAGEMAP_VISIBLE 9
+-#define GL2PS_SPECIAL 10
+-
+-/* BSP tree primitive comparison */
+-
+-#define GL2PS_COINCIDENT 1
+-#define GL2PS_IN_FRONT_OF 2
+-#define GL2PS_IN_BACK_OF 3
+-#define GL2PS_SPANNING 4
+-
+-/* 2D BSP tree primitive comparison */
+-
+-#define GL2PS_POINT_COINCIDENT 0
+-#define GL2PS_POINT_INFRONT 1
+-#define GL2PS_POINT_BACK 2
+-
+-/* Internal feedback buffer pass-through tokens */
+-
+-#define GL2PS_BEGIN_OFFSET_TOKEN 1
+-#define GL2PS_END_OFFSET_TOKEN 2
+-#define GL2PS_BEGIN_BOUNDARY_TOKEN 3
+-#define GL2PS_END_BOUNDARY_TOKEN 4
+-#define GL2PS_BEGIN_STIPPLE_TOKEN 5
+-#define GL2PS_END_STIPPLE_TOKEN 6
+-#define GL2PS_POINT_SIZE_TOKEN 7
+-#define GL2PS_LINE_WIDTH_TOKEN 8
+-#define GL2PS_BEGIN_BLEND_TOKEN 9
+-#define GL2PS_END_BLEND_TOKEN 10
+-#define GL2PS_SRC_BLEND_TOKEN 11
+-#define GL2PS_DST_BLEND_TOKEN 12
+-#define GL2PS_IMAGEMAP_TOKEN 13
+-#define GL2PS_DRAW_PIXELS_TOKEN 14
+-#define GL2PS_TEXT_TOKEN 15
+-
+-typedef enum {
+- T_UNDEFINED = -1,
+- T_CONST_COLOR = 1,
+- T_VAR_COLOR = 1<<1,
+- T_ALPHA_1 = 1<<2,
+- T_ALPHA_LESS_1 = 1<<3,
+- T_VAR_ALPHA = 1<<4
+-} GL2PS_TRIANGLE_PROPERTY;
+-
+-typedef GLfloat GL2PSxyz[3];
+-typedef GLfloat GL2PSplane[4];
+-
+-typedef struct _GL2PSbsptree2d GL2PSbsptree2d;
+-
+-struct _GL2PSbsptree2d {
+- GL2PSplane plane;
+- GL2PSbsptree2d *front, *back;
+-};
+-
+-typedef struct {
+- GLint nmax, size, incr, n;
+- char *array;
+-} GL2PSlist;
+-
+-typedef struct _GL2PSbsptree GL2PSbsptree;
+-
+-struct _GL2PSbsptree {
+- GL2PSplane plane;
+- GL2PSlist *primitives;
+- GL2PSbsptree *front, *back;
+-};
+-
+-typedef struct {
+- GL2PSxyz xyz;
+- GL2PSrgba rgba;
+-} GL2PSvertex;
+-
+-typedef struct {
+- GL2PSvertex vertex[3];
+- int prop;
+-} GL2PStriangle;
+-
+-typedef struct {
+- GLshort fontsize;
+- char *str, *fontname;
+- /* Note: for a 'special' string, 'alignment' holds the format
+- (PostScript, PDF, etc.) of the special string */
+- GLint alignment;
+- GLfloat angle;
+-} GL2PSstring;
+-
+-typedef struct {
+- GLsizei width, height;
+- /* Note: for an imagemap, 'type' indicates if it has already been
+- written to the file or not, and 'format' indicates if it is
+- visible or not */
+- GLenum format, type;
+- GLfloat *pixels;
+-} GL2PSimage;
+-
+-typedef struct _GL2PSimagemap GL2PSimagemap;
+-
+-struct _GL2PSimagemap {
+- GL2PSimage *image;
+- GL2PSimagemap *next;
+-};
+-
+-typedef struct {
+- GLshort type, numverts;
+- GLushort pattern;
+- char boundary, offset, culled;
+- GLint factor;
+- GLfloat width;
+- GL2PSvertex *verts;
+- union {
+- GL2PSstring *text;
+- GL2PSimage *image;
+- } data;
+-} GL2PSprimitive;
+-
+-typedef struct {
+-#if defined(GL2PS_HAVE_ZLIB)
+- Bytef *dest, *src, *start;
+- uLongf destLen, srcLen;
+-#else
+- int dummy;
+-#endif
+-} GL2PScompress;
+-
+-typedef struct{
+- GL2PSlist* ptrlist;
+- int gsno, fontno, imno, shno, maskshno, trgroupno;
+- int gsobjno, fontobjno, imobjno, shobjno, maskshobjno, trgroupobjno;
+-} GL2PSpdfgroup;
+-
+-typedef struct {
+- /* General */
+- GLint format, sort, options, colorsize, colormode, buffersize;
+- char *title, *producer, *filename;
+- GLboolean boundary, blending;
+- GLfloat *feedback, offset[2], lastlinewidth;
+- GLint viewport[4], blendfunc[2], lastfactor;
+- GL2PSrgba *colormap, lastrgba, threshold, bgcolor;
+- GLushort lastpattern;
+- GL2PSvertex lastvertex;
+- GL2PSlist *primitives, *auxprimitives;
+- FILE *stream;
+- GL2PScompress *compress;
+- GLboolean header;
+-
+- /* BSP-specific */
+- GLint maxbestroot;
+-
+- /* Occlusion culling-specific */
+- GLboolean zerosurfacearea;
+- GL2PSbsptree2d *imagetree;
+- GL2PSprimitive *primitivetoadd;
+-
+- /* PDF-specific */
+- int streamlength;
+- GL2PSlist *pdfprimlist, *pdfgrouplist;
+- int *xreflist;
+- int objects_stack; /* available objects */
+- int extgs_stack; /* graphics state object number */
+- int font_stack; /* font object number */
+- int im_stack; /* image object number */
+- int trgroupobjects_stack; /* xobject numbers */
+- int shader_stack; /* shader object numbers */
+- int mshader_stack; /* mask shader object numbers */
+-
+- /* for image map list */
+- GL2PSimagemap *imagemap_head;
+- GL2PSimagemap *imagemap_tail;
+-} GL2PScontext;
+-
+-typedef struct {
+- void (*printHeader)(void);
+- void (*printFooter)(void);
+- void (*beginViewport)(GLint viewport[4]);
+- GLint (*endViewport)(void);
+- void (*printPrimitive)(void *data);
+- void (*printFinalPrimitive)(void);
+- const char *file_extension;
+- const char *description;
+-} GL2PSbackend;
+-
+-/* The gl2ps context. gl2ps is not thread safe (we should create a
+- local GL2PScontext during gl2psBeginPage) */
+-
+-static GL2PScontext *gl2ps = NULL;
+-
+-/* Need to forward-declare this one */
+-
+-static GLint gl2psPrintPrimitives(void);
+-
+-/*********************************************************************
+- *
+- * Utility routines
+- *
+- *********************************************************************/
+-
+-static void gl2psMsg(GLint level, const char *fmt, ...)
+-{
+- va_list args;
+-
+- if(!(gl2ps->options & GL2PS_SILENT)){
+- switch(level){
+- case GL2PS_INFO : fprintf(stderr, "GL2PS info: "); break;
+- case GL2PS_WARNING : fprintf(stderr, "GL2PS warning: "); break;
+- case GL2PS_ERROR : fprintf(stderr, "GL2PS error: "); break;
+- }
+- va_start(args, fmt);
+- vfprintf(stderr, fmt, args);
+- va_end(args);
+- fprintf(stderr, "\n");
+- }
+- /* if(level == GL2PS_ERROR) exit(1); */
+-}
+-
+-static void *gl2psMalloc(size_t size)
+-{
+- void *ptr;
+-
+- if(!size) return(NULL);
+- ptr = malloc(size);
+- if(!ptr){
+- gl2psMsg(GL2PS_ERROR, "Couldn't allocate requested memory");
+- exit(1);
+- }
+- return(ptr);
+-}
+-
+-static void *gl2psRealloc(void *ptr, size_t size)
+-{
+- if(!size) return(NULL);
+- ptr = realloc(ptr, size);
+- if(!ptr){
+- gl2psMsg(GL2PS_ERROR, "Couldn't reallocate requested memory");
+- exit(1);
+- }
+- return(ptr);
+-}
+-
+-static void gl2psFree(void *ptr)
+-{
+- if(!ptr) return;
+- free(ptr);
+-}
+-
+-static size_t gl2psWriteBigEndian(unsigned long data, size_t bytes)
+-{
+- size_t i;
+- size_t size = sizeof(unsigned long);
+- for(i = 1; i <= bytes; ++i){
+- fputc(0xff & (data >> (size-i) * 8), gl2ps->stream);
+- }
+- return bytes;
+-}
+-
+-/* zlib compression helper routines */
+-
+-#if defined(GL2PS_HAVE_ZLIB)
+-
+-static void gl2psSetupCompress(void)
+-{
+- gl2ps->compress = (GL2PScompress*)gl2psMalloc(sizeof(GL2PScompress));
+- gl2ps->compress->src = NULL;
+- gl2ps->compress->start = NULL;
+- gl2ps->compress->dest = NULL;
+- gl2ps->compress->srcLen = 0;
+- gl2ps->compress->destLen = 0;
+-}
+-
+-static void gl2psFreeCompress(void)
+-{
+- if(!gl2ps->compress)
+- return;
+- gl2psFree(gl2ps->compress->start);
+- gl2psFree(gl2ps->compress->dest);
+- gl2ps->compress->src = NULL;
+- gl2ps->compress->start = NULL;
+- gl2ps->compress->dest = NULL;
+- gl2ps->compress->srcLen = 0;
+- gl2ps->compress->destLen = 0;
+-}
+-
+-static int gl2psAllocCompress(unsigned int srcsize)
+-{
+- gl2psFreeCompress();
+-
+- if(!gl2ps->compress || !srcsize)
+- return GL2PS_ERROR;
+-
+- gl2ps->compress->srcLen = srcsize;
+- gl2ps->compress->destLen = (int)ceil(1.001 * gl2ps->compress->srcLen + 12);
+- gl2ps->compress->src = (Bytef*)gl2psMalloc(gl2ps->compress->srcLen);
+- gl2ps->compress->start = gl2ps->compress->src;
+- gl2ps->compress->dest = (Bytef*)gl2psMalloc(gl2ps->compress->destLen);
+-
+- return GL2PS_SUCCESS;
+-}
+-
+-static void *gl2psReallocCompress(unsigned int srcsize)
+-{
+- if(!gl2ps->compress || !srcsize)
+- return NULL;
+-
+- if(srcsize < gl2ps->compress->srcLen)
+- return gl2ps->compress->start;
+-
+- gl2ps->compress->srcLen = srcsize;
+- gl2ps->compress->destLen = (int)ceil(1.001 * gl2ps->compress->srcLen + 12);
+- gl2ps->compress->src = (Bytef*)gl2psRealloc(gl2ps->compress->src,
+- gl2ps->compress->srcLen);
+- gl2ps->compress->start = gl2ps->compress->src;
+- gl2ps->compress->dest = (Bytef*)gl2psRealloc(gl2ps->compress->dest,
+- gl2ps->compress->destLen);
+-
+- return gl2ps->compress->start;
+-}
+-
+-static size_t gl2psWriteBigEndianCompress(unsigned long data, size_t bytes)
+-{
+- size_t i;
+- size_t size = sizeof(unsigned long);
+- for(i = 1; i <= bytes; ++i){
+- *gl2ps->compress->src = (Bytef)(0xff & (data >> (size-i) * 8));
+- ++gl2ps->compress->src;
+- }
+- return bytes;
+-}
+-
+-static int gl2psDeflate(void)
+-{
+- /* For compatibility with older zlib versions, we use compress(...)
+- instead of compress2(..., Z_BEST_COMPRESSION) */
+- return compress(gl2ps->compress->dest, &gl2ps->compress->destLen,
+- gl2ps->compress->start, gl2ps->compress->srcLen);
+-}
+-
+-#endif
+-
+-static int gl2psPrintf(const char* fmt, ...)
+-{
+- int ret;
+- va_list args;
+-
+-#if defined(GL2PS_HAVE_ZLIB)
+- unsigned int oldsize = 0;
+- static char buf[1000];
+- if(gl2ps->options & GL2PS_COMPRESS){
+- va_start(args, fmt);
+- ret = vsprintf(buf, fmt, args);
+- va_end(args);
+- oldsize = gl2ps->compress->srcLen;
+- gl2ps->compress->start = (Bytef*)gl2psReallocCompress(oldsize + ret);
+- memcpy(gl2ps->compress->start+oldsize, buf, ret);
+- ret = 0;
+- }
+- else{
+-#endif
+- va_start(args, fmt);
+- ret = vfprintf(gl2ps->stream, fmt, args);
+- va_end(args);
+-#if defined(GL2PS_HAVE_ZLIB)
+- }
+-#endif
+- return ret;
+-}
+-
+-static void gl2psPrintGzipHeader()
+-{
+-#if defined(GL2PS_HAVE_ZLIB)
+- char tmp[10] = {'\x1f', '\x8b', /* magic numbers: 0x1f, 0x8b */
+- 8, /* compression method: Z_DEFLATED */
+- 0, /* flags */
+- 0, 0, 0, 0, /* time */
+- 2, /* extra flags: max compression */
+- '\x03'}; /* OS code: 0x03 (Unix) */
+-
+- if(gl2ps->options & GL2PS_COMPRESS){
+- gl2psSetupCompress();
+- /* add the gzip file header */
+- fwrite(tmp, 10, 1, gl2ps->stream);
+- }
+-#endif
+-}
+-
+-static void gl2psPrintGzipFooter()
+-{
+-#if defined(GL2PS_HAVE_ZLIB)
+- int n;
+- uLong crc, len;
+- char tmp[8];
+-
+- if(gl2ps->options & GL2PS_COMPRESS){
+- if(Z_OK != gl2psDeflate()){
+- gl2psMsg(GL2PS_ERROR, "Zlib deflate error");
+- }
+- else{
+- /* determine the length of the header in the zlib stream */
+- n = 2; /* CMF+FLG */
+- if(gl2ps->compress->dest[1] & (1<<5)){
+- n += 4; /* DICTID */
+- }
+- /* write the data, without the zlib header and footer */
+- fwrite(gl2ps->compress->dest+n, gl2ps->compress->destLen-(n+4),
+- 1, gl2ps->stream);
+- /* add the gzip file footer */
+- crc = crc32(0L, gl2ps->compress->start, gl2ps->compress->srcLen);
+- for(n = 0; n < 4; ++n){
+- tmp[n] = (char)(crc & 0xff);
+- crc >>= 8;
+- }
+- len = gl2ps->compress->srcLen;
+- for(n = 4; n < 8; ++n){
+- tmp[n] = (char)(len & 0xff);
+- len >>= 8;
+- }
+- fwrite(tmp, 8, 1, gl2ps->stream);
+- }
+- gl2psFreeCompress();
+- gl2psFree(gl2ps->compress);
+- gl2ps->compress = NULL;
+- }
+-#endif
+-}
+-
+-/* The list handling routines */
+-
+-static void gl2psListRealloc(GL2PSlist *list, GLint n)
+-{
+- if(!list){
+- gl2psMsg(GL2PS_ERROR, "Cannot reallocate NULL list");
+- return;
+- }
+- if(n <= 0) return;
+- if(!list->array){
+- list->nmax = n;
+- list->array = (char*)gl2psMalloc(list->nmax * list->size);
+- }
+- else{
+- if(n > list->nmax){
+- list->nmax = ((n - 1) / list->incr + 1) * list->incr;
+- list->array = (char*)gl2psRealloc(list->array,
+- list->nmax * list->size);
+- }
+- }
+-}
+-
+-static GL2PSlist *gl2psListCreate(GLint n, GLint incr, GLint size)
+-{
+- GL2PSlist *list;
+-
+- if(n < 0) n = 0;
+- if(incr <= 0) incr = 1;
+- list = (GL2PSlist*)gl2psMalloc(sizeof(GL2PSlist));
+- list->nmax = 0;
+- list->incr = incr;
+- list->size = size;
+- list->n = 0;
+- list->array = NULL;
+- gl2psListRealloc(list, n);
+- return(list);
+-}
+-
+-static void gl2psListReset(GL2PSlist *list)
+-{
+- if(!list) return;
+- list->n = 0;
+-}
+-
+-static void gl2psListDelete(GL2PSlist *list)
+-{
+- if(!list) return;
+- gl2psFree(list->array);
+- gl2psFree(list);
+-}
+-
+-static void gl2psListAdd(GL2PSlist *list, void *data)
+-{
+- if(!list){
+- gl2psMsg(GL2PS_ERROR, "Cannot add into unallocated list");
+- return;
+- }
+- list->n++;
+- gl2psListRealloc(list, list->n);
+- memcpy(&list->array[(list->n - 1) * list->size], data, list->size);
+-}
+-
+-static int gl2psListNbr(GL2PSlist *list)
+-{
+- if(!list)
+- return 0;
+- return(list->n);
+-}
+-
+-static void *gl2psListPointer(GL2PSlist *list, GLint index)
+-{
+- if(!list){
+- gl2psMsg(GL2PS_ERROR, "Cannot point into unallocated list");
+- return NULL;
+- }
+- if((index < 0) || (index >= list->n)){
+- gl2psMsg(GL2PS_ERROR, "Wrong list index in gl2psListPointer");
+- return NULL;
+- }
+- return(&list->array[index * list->size]);
+-}
+-
+-static void gl2psListSort(GL2PSlist *list,
+- int (*fcmp)(const void *a, const void *b))
+-{
+- if(!list)
+- return;
+- qsort(list->array, list->n, list->size, fcmp);
+-}
+-
+-static void gl2psListAction(GL2PSlist *list, void (*action)(void *data))
+-{
+- GLint i;
+-
+- for(i = 0; i < gl2psListNbr(list); i++){
+- (*action)(gl2psListPointer(list, i));
+- }
+-}
+-
+-static void gl2psListActionInverse(GL2PSlist *list, void (*action)(void *data))
+-{
+- GLint i;
+-
+- for(i = gl2psListNbr(list); i > 0; i--){
+- (*action)(gl2psListPointer(list, i-1));
+- }
+-}
+-
+-#if defined(GL2PS_HAVE_LIBPNG)
+-
+-static void gl2psListRead(GL2PSlist *list, int index, void *data)
+-{
+- if((index < 0) || (index >= list->n))
+- gl2psMsg(GL2PS_ERROR, "Wrong list index in gl2psListRead");
+- memcpy(data, &list->array[index * list->size], list->size);
+-}
+-
+-static void gl2psEncodeBase64Block(unsigned char in[3], unsigned char out[4], int len)
+-{
+- static const char cb64[] =
+- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+-
+- out[0] = cb64[ in[0] >> 2 ];
+- out[1] = cb64[ ((in[0] & 0x03) << 4) | ((in[1] & 0xf0) >> 4) ];
+- out[2] = (len > 1) ? cb64[ ((in[1] & 0x0f) << 2) | ((in[2] & 0xc0) >> 6) ] : '=';
+- out[3] = (len > 2) ? cb64[ in[2] & 0x3f ] : '=';
+-}
+-
+-static void gl2psListEncodeBase64(GL2PSlist *list)
+-{
+- unsigned char *buffer, in[3], out[4];
+- int i, n, index, len;
+-
+- n = list->n * list->size;
+- buffer = (unsigned char*)gl2psMalloc(n * sizeof(unsigned char));
+- memcpy(buffer, list->array, n * sizeof(unsigned char));
+- gl2psListReset(list);
+-
+- index = 0;
+- while(index < n) {
+- len = 0;
+- for(i = 0; i < 3; i++) {
+- if(index < n){
+- in[i] = buffer[index];
+- len++;
+- }
+- else{
+- in[i] = 0;
+- }
+- index++;
+- }
+- if(len) {
+- gl2psEncodeBase64Block(in, out, len);
+- for(i = 0; i < 4; i++)
+- gl2psListAdd(list, &out[i]);
+- }
+- }
+- gl2psFree(buffer);
+-}
+-
+-#endif
+-
+-/* Helpers for rgba colors */
+-
+-static GLboolean gl2psSameColor(GL2PSrgba rgba1, GL2PSrgba rgba2)
+-{
+- if(!GL2PS_ZERO(rgba1[0] - rgba2[0]) ||
+- !GL2PS_ZERO(rgba1[1] - rgba2[1]) ||
+- !GL2PS_ZERO(rgba1[2] - rgba2[2]))
+- return GL_FALSE;
+- return GL_TRUE;
+-}
+-
+-static GLboolean gl2psVertsSameColor(const GL2PSprimitive *prim)
+-{
+- int i;
+-
+- for(i = 1; i < prim->numverts; i++){
+- if(!gl2psSameColor(prim->verts[0].rgba, prim->verts[i].rgba)){
+- return GL_FALSE;
+- }
+- }
+- return GL_TRUE;
+-}
+-
+-static GLboolean gl2psSameColorThreshold(int n, GL2PSrgba rgba[],
+- GL2PSrgba threshold)
+-{
+- int i;
+-
+- if(n < 2) return GL_TRUE;
+-
+- for(i = 1; i < n; i++){
+- if(fabs(rgba[0][0] - rgba[i][0]) > threshold[0] ||
+- fabs(rgba[0][1] - rgba[i][1]) > threshold[1] ||
+- fabs(rgba[0][2] - rgba[i][2]) > threshold[2])
+- return GL_FALSE;
+- }
+-
+- return GL_TRUE;
+-}
+-
+-static void gl2psSetLastColor(GL2PSrgba rgba)
+-{
+- int i;
+- for(i = 0; i < 3; ++i){
+- gl2ps->lastrgba[i] = rgba[i];
+- }
+-}
+-
+-static GLfloat gl2psGetRGB(GL2PSimage *im, GLuint x, GLuint y,
+- GLfloat *red, GLfloat *green, GLfloat *blue)
+-{
+-
+- GLsizei width = im->width;
+- GLsizei height = im->height;
+- GLfloat *pixels = im->pixels;
+- GLfloat *pimag;
+-
+- /* OpenGL image is from down to up, PS image is up to down */
+- switch(im->format){
+- case GL_RGBA:
+- pimag = pixels + 4 * (width * (height - 1 - y) + x);
+- break;
+- case GL_RGB:
+- default:
+- pimag = pixels + 3 * (width * (height - 1 - y) + x);
+- break;
+- }
+- *red = *pimag; pimag++;
+- *green = *pimag; pimag++;
+- *blue = *pimag; pimag++;
+-
+- return (im->format == GL_RGBA) ? *pimag : 1.0F;
+-}
+-
+-/* Helper routines for pixmaps */
+-
+-static GL2PSimage *gl2psCopyPixmap(GL2PSimage *im)
+-{
+- int size;
+- GL2PSimage *image = (GL2PSimage*)gl2psMalloc(sizeof(GL2PSimage));
+-
+- image->width = im->width;
+- image->height = im->height;
+- image->format = im->format;
+- image->type = im->type;
+-
+- switch(image->format){
+- case GL_RGBA:
+- size = image->height * image->width * 4 * sizeof(GLfloat);
+- break;
+- case GL_RGB:
+- default:
+- size = image->height * image->width * 3 * sizeof(GLfloat);
+- break;
+- }
+-
+- image->pixels = (GLfloat*)gl2psMalloc(size);
+- memcpy(image->pixels, im->pixels, size);
+-
+- return image;
+-}
+-
+-static void gl2psFreePixmap(GL2PSimage *im)
+-{
+- if(!im)
+- return;
+- gl2psFree(im->pixels);
+- gl2psFree(im);
+-}
+-
+-#if defined(GL2PS_HAVE_LIBPNG)
+-
+-#if !defined(png_jmpbuf)
+-# define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf)
+-#endif
+-
+-static void gl2psUserWritePNG(png_structp png_ptr, png_bytep data, png_size_t length)
+-{
+- unsigned int i;
+- GL2PSlist *png = (GL2PSlist*)png_get_io_ptr(png_ptr);
+- for(i = 0; i < length; i++)
+- gl2psListAdd(png, &data[i]);
+-}
+-
+-static void gl2psUserFlushPNG(png_structp png_ptr)
+-{
+-}
+-
+-static void gl2psConvertPixmapToPNG(GL2PSimage *pixmap, GL2PSlist *png)
+-{
+- png_structp png_ptr;
+- png_infop info_ptr;
+- unsigned char *row_data;
+- GLfloat dr, dg, db;
+- int row, col;
+-
+- if(!(png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL)))
+- return;
+-
+- if(!(info_ptr = png_create_info_struct(png_ptr))){
+- png_destroy_write_struct(&png_ptr, NULL);
+- return;
+- }
+-
+- if(setjmp(png_jmpbuf(png_ptr))) {
+- png_destroy_write_struct(&png_ptr, &info_ptr);
+- return;
+- }
+-
+- png_set_write_fn(png_ptr, (void *)png, gl2psUserWritePNG, gl2psUserFlushPNG);
+- png_set_compression_level(png_ptr, Z_DEFAULT_COMPRESSION);
+- png_set_IHDR(png_ptr, info_ptr, pixmap->width, pixmap->height, 8,
+- PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE,
+- PNG_FILTER_TYPE_BASE);
+- png_write_info(png_ptr, info_ptr);
+-
+- row_data = (unsigned char*)gl2psMalloc(3 * pixmap->width * sizeof(unsigned char));
+- for(row = 0; row < pixmap->height; row++){
+- for(col = 0; col < pixmap->width; col++){
+- gl2psGetRGB(pixmap, col, row, &dr, &dg, &db);
+- row_data[3*col] = (unsigned char)(255. * dr);
+- row_data[3*col+1] = (unsigned char)(255. * dg);
+- row_data[3*col+2] = (unsigned char)(255. * db);
+- }
+- png_write_row(png_ptr, (png_bytep)row_data);
+- }
+- gl2psFree(row_data);
+-
+- png_write_end(png_ptr, info_ptr);
+- png_destroy_write_struct(&png_ptr, &info_ptr);
+-}
+-
+-#endif
+-
+-/* Helper routines for text strings */
+-
+-static GLint gl2psAddText(GLint type, const char *str, const char *fontname,
+- GLshort fontsize, GLint alignment, GLfloat angle)
+-{
+- GLfloat pos[4];
+- GL2PSprimitive *prim;
+- GLboolean valid;
+-
+- if(!gl2ps || !str || !fontname) return GL2PS_UNINITIALIZED;
+-
+- if(gl2ps->options & GL2PS_NO_TEXT) return GL2PS_SUCCESS;
+-
+- glGetBooleanv(GL_CURRENT_RASTER_POSITION_VALID, &valid);
+- if(GL_FALSE == valid) return GL2PS_SUCCESS; /* the primitive is culled */
+-
+- glGetFloatv(GL_CURRENT_RASTER_POSITION, pos);
+-
+- prim = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
+- prim->type = type;
+- prim->boundary = 0;
+- prim->numverts = 1;
+- prim->verts = (GL2PSvertex*)gl2psMalloc(sizeof(GL2PSvertex));
+- prim->verts[0].xyz[0] = pos[0];
+- prim->verts[0].xyz[1] = pos[1];
+- prim->verts[0].xyz[2] = pos[2];
+- prim->culled = 0;
+- prim->offset = 0;
+- prim->pattern = 0;
+- prim->factor = 0;
+- prim->width = 1;
+- glGetFloatv(GL_CURRENT_RASTER_COLOR, prim->verts[0].rgba);
+- prim->data.text = (GL2PSstring*)gl2psMalloc(sizeof(GL2PSstring));
+- prim->data.text->str = (char*)gl2psMalloc((strlen(str)+1)*sizeof(char));
+- strcpy(prim->data.text->str, str);
+- prim->data.text->fontname = (char*)gl2psMalloc((strlen(fontname)+1)*sizeof(char));
+- strcpy(prim->data.text->fontname, fontname);
+- prim->data.text->fontsize = fontsize;
+- prim->data.text->alignment = alignment;
+- prim->data.text->angle = angle;
+-
+- gl2psListAdd(gl2ps->auxprimitives, &prim);
+- glPassThrough(GL2PS_TEXT_TOKEN);
+-
+- return GL2PS_SUCCESS;
+-}
+-
+-static GL2PSstring *gl2psCopyText(GL2PSstring *t)
+-{
+- GL2PSstring *text = (GL2PSstring*)gl2psMalloc(sizeof(GL2PSstring));
+- text->str = (char*)gl2psMalloc((strlen(t->str)+1)*sizeof(char));
+- strcpy(text->str, t->str);
+- text->fontname = (char*)gl2psMalloc((strlen(t->fontname)+1)*sizeof(char));
+- strcpy(text->fontname, t->fontname);
+- text->fontsize = t->fontsize;
+- text->alignment = t->alignment;
+- text->angle = t->angle;
+-
+- return text;
+-}
+-
+-static void gl2psFreeText(GL2PSstring *text)
+-{
+- if(!text)
+- return;
+- gl2psFree(text->str);
+- gl2psFree(text->fontname);
+- gl2psFree(text);
+-}
+-
+-/* Helpers for blending modes */
+-
+-static GLboolean gl2psSupportedBlendMode(GLenum sfactor, GLenum dfactor)
+-{
+- /* returns TRUE if gl2ps supports the argument combination: only two
+- blending modes have been implemented so far */
+-
+- if( (sfactor == GL_SRC_ALPHA && dfactor == GL_ONE_MINUS_SRC_ALPHA) ||
+- (sfactor == GL_ONE && dfactor == GL_ZERO) )
+- return GL_TRUE;
+- return GL_FALSE;
+-}
+-
+-static void gl2psAdaptVertexForBlending(GL2PSvertex *v)
+-{
+- /* Transforms vertex depending on the actual blending function -
+- currently the vertex v is considered as source vertex and his
+- alpha value is changed to 1.0 if source blending GL_ONE is
+- active. This might be extended in the future */
+-
+- if(!v || !gl2ps)
+- return;
+-
+- if(gl2ps->options & GL2PS_NO_BLENDING || !gl2ps->blending){
+- v->rgba[3] = 1.0F;
+- return;
+- }
+-
+- switch(gl2ps->blendfunc[0]){
+- case GL_ONE:
+- v->rgba[3] = 1.0F;
+- break;
+- default:
+- break;
+- }
+-}
+-
+-static void gl2psAssignTriangleProperties(GL2PStriangle *t)
+-{
+- /* int i; */
+-
+- t->prop = T_VAR_COLOR;
+-
+- /* Uncommenting the following lines activates an even more fine
+- grained distinction between triangle types - please don't delete,
+- a remarkable amount of PDF handling code inside this file depends
+- on it if activated */
+- /*
+- t->prop = T_CONST_COLOR;
+- for(i = 0; i < 3; ++i){
+- if(!GL2PS_ZERO(t->vertex[0].rgba[i] - t->vertex[1].rgba[i]) ||
+- !GL2PS_ZERO(t->vertex[1].rgba[i] - t->vertex[2].rgba[i])){
+- t->prop = T_VAR_COLOR;
+- break;
+- }
+- }
+- */
+-
+- if(!GL2PS_ZERO(t->vertex[0].rgba[3] - t->vertex[1].rgba[3]) ||
+- !GL2PS_ZERO(t->vertex[1].rgba[3] - t->vertex[2].rgba[3])){
+- t->prop |= T_VAR_ALPHA;
+- }
+- else{
+- if(t->vertex[0].rgba[3] < 1)
+- t->prop |= T_ALPHA_LESS_1;
+- else
+- t->prop |= T_ALPHA_1;
+- }
+-}
+-
+-static void gl2psFillTriangleFromPrimitive(GL2PStriangle *t, GL2PSprimitive *p,
+- GLboolean assignprops)
+-{
+- t->vertex[0] = p->verts[0];
+- t->vertex[1] = p->verts[1];
+- t->vertex[2] = p->verts[2];
+- if(GL_TRUE == assignprops)
+- gl2psAssignTriangleProperties(t);
+-}
+-
+-static void gl2psInitTriangle(GL2PStriangle *t)
+-{
+- int i;
+- GL2PSvertex vertex = { {-1.0F, -1.0F, -1.0F}, {-1.0F, -1.0F, -1.0F, -1.0F} };
+- for(i = 0; i < 3; i++)
+- t->vertex[i] = vertex;
+- t->prop = T_UNDEFINED;
+-}
+-
+-/* Miscellaneous helper routines */
+-
+-static GL2PSprimitive *gl2psCopyPrimitive(GL2PSprimitive *p)
+-{
+- GL2PSprimitive *prim;
+-
+- if(!p){
+- gl2psMsg(GL2PS_ERROR, "Trying to copy an empty primitive");
+- return NULL;
+- }
+-
+- prim = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
+-
+- prim->type = p->type;
+- prim->numverts = p->numverts;
+- prim->boundary = p->boundary;
+- prim->offset = p->offset;
+- prim->pattern = p->pattern;
+- prim->factor = p->factor;
+- prim->culled = p->culled;
+- prim->width = p->width;
+- prim->verts = (GL2PSvertex*)gl2psMalloc(p->numverts*sizeof(GL2PSvertex));
+- memcpy(prim->verts, p->verts, p->numverts * sizeof(GL2PSvertex));
+-
+- switch(prim->type){
+- case GL2PS_PIXMAP :
+- prim->data.image = gl2psCopyPixmap(p->data.image);
+- break;
+- case GL2PS_TEXT :
+- case GL2PS_SPECIAL :
+- prim->data.text = gl2psCopyText(p->data.text);
+- break;
+- default:
+- break;
+- }
+-
+- return prim;
+-}
+-
+-static GLboolean gl2psSamePosition(GL2PSxyz p1, GL2PSxyz p2)
+-{
+- if(!GL2PS_ZERO(p1[0] - p2[0]) ||
+- !GL2PS_ZERO(p1[1] - p2[1]) ||
+- !GL2PS_ZERO(p1[2] - p2[2]))
+- return GL_FALSE;
+- return GL_TRUE;
+-}
+-
+-/*********************************************************************
+- *
+- * 3D sorting routines
+- *
+- *********************************************************************/
+-
+-static GLfloat gl2psComparePointPlane(GL2PSxyz point, GL2PSplane plane)
+-{
+- return(plane[0] * point[0] +
+- plane[1] * point[1] +
+- plane[2] * point[2] +
+- plane[3]);
+-}
+-
+-static GLfloat gl2psPsca(GLfloat *a, GLfloat *b)
+-{
+- return(a[0]*b[0] + a[1]*b[1] + a[2]*b[2]);
+-}
+-
+-static void gl2psPvec(GLfloat *a, GLfloat *b, GLfloat *c)
+-{
+- c[0] = a[1]*b[2] - a[2]*b[1];
+- c[1] = a[2]*b[0] - a[0]*b[2];
+- c[2] = a[0]*b[1] - a[1]*b[0];
+-}
+-
+-static GLfloat gl2psNorm(GLfloat *a)
+-{
+- return (GLfloat)sqrt(a[0]*a[0] + a[1]*a[1] + a[2]*a[2]);
+-}
+-
+-static void gl2psGetNormal(GLfloat *a, GLfloat *b, GLfloat *c)
+-{
+- GLfloat norm;
+-
+- gl2psPvec(a, b, c);
+- if(!GL2PS_ZERO(norm = gl2psNorm(c))){
+- c[0] = c[0] / norm;
+- c[1] = c[1] / norm;
+- c[2] = c[2] / norm;
+- }
+- else{
+- /* The plane is still wrong despite our tests in gl2psGetPlane.
+- Let's return a dummy value for now (this is a hack: we should
+- do more intelligent tests in GetPlane) */
+- c[0] = c[1] = 0.0F;
+- c[2] = 1.0F;
+- }
+-}
+-
+-static void gl2psGetPlane(GL2PSprimitive *prim, GL2PSplane plane)
+-{
+- GL2PSxyz v = {0.0F, 0.0F, 0.0F}, w = {0.0F, 0.0F, 0.0F};
+-
+- switch(prim->type){
+- case GL2PS_TRIANGLE :
+- case GL2PS_QUADRANGLE :
+- v[0] = prim->verts[1].xyz[0] - prim->verts[0].xyz[0];
+- v[1] = prim->verts[1].xyz[1] - prim->verts[0].xyz[1];
+- v[2] = prim->verts[1].xyz[2] - prim->verts[0].xyz[2];
+- w[0] = prim->verts[2].xyz[0] - prim->verts[0].xyz[0];
+- w[1] = prim->verts[2].xyz[1] - prim->verts[0].xyz[1];
+- w[2] = prim->verts[2].xyz[2] - prim->verts[0].xyz[2];
+- if((GL2PS_ZERO(v[0]) && GL2PS_ZERO(v[1]) && GL2PS_ZERO(v[2])) ||
+- (GL2PS_ZERO(w[0]) && GL2PS_ZERO(w[1]) && GL2PS_ZERO(w[2]))){
+- plane[0] = plane[1] = 0.0F;
+- plane[2] = 1.0F;
+- plane[3] = -prim->verts[0].xyz[2];
+- }
+- else{
+- gl2psGetNormal(v, w, plane);
+- plane[3] =
+- - plane[0] * prim->verts[0].xyz[0]
+- - plane[1] * prim->verts[0].xyz[1]
+- - plane[2] * prim->verts[0].xyz[2];
+- }
+- break;
+- case GL2PS_LINE :
+- v[0] = prim->verts[1].xyz[0] - prim->verts[0].xyz[0];
+- v[1] = prim->verts[1].xyz[1] - prim->verts[0].xyz[1];
+- v[2] = prim->verts[1].xyz[2] - prim->verts[0].xyz[2];
+- if(GL2PS_ZERO(v[0]) && GL2PS_ZERO(v[1]) && GL2PS_ZERO(v[2])){
+- plane[0] = plane[1] = 0.0F;
+- plane[2] = 1.0F;
+- plane[3] = -prim->verts[0].xyz[2];
+- }
+- else{
+- if(GL2PS_ZERO(v[0])) w[0] = 1.0F;
+- else if(GL2PS_ZERO(v[1])) w[1] = 1.0F;
+- else w[2] = 1.0F;
+- gl2psGetNormal(v, w, plane);
+- plane[3] =
+- - plane[0] * prim->verts[0].xyz[0]
+- - plane[1] * prim->verts[0].xyz[1]
+- - plane[2] * prim->verts[0].xyz[2];
+- }
+- break;
+- case GL2PS_POINT :
+- case GL2PS_PIXMAP :
+- case GL2PS_TEXT :
+- case GL2PS_SPECIAL :
+- case GL2PS_IMAGEMAP:
+- plane[0] = plane[1] = 0.0F;
+- plane[2] = 1.0F;
+- plane[3] = -prim->verts[0].xyz[2];
+- break;
+- default :
+- gl2psMsg(GL2PS_ERROR, "Unknown primitive type in BSP tree");
+- plane[0] = plane[1] = plane[3] = 0.0F;
+- plane[2] = 1.0F;
+- break;
+- }
+-}
+-
+-static void gl2psCutEdge(GL2PSvertex *a, GL2PSvertex *b, GL2PSplane plane,
+- GL2PSvertex *c)
+-{
+- GL2PSxyz v;
+- GLfloat sect, psca;
+-
+- v[0] = b->xyz[0] - a->xyz[0];
+- v[1] = b->xyz[1] - a->xyz[1];
+- v[2] = b->xyz[2] - a->xyz[2];
+-
+- if(!GL2PS_ZERO(psca = gl2psPsca(plane, v)))
+- sect = -gl2psComparePointPlane(a->xyz, plane) / psca;
+- else
+- sect = 0.0F;
+-
+- c->xyz[0] = a->xyz[0] + v[0] * sect;
+- c->xyz[1] = a->xyz[1] + v[1] * sect;
+- c->xyz[2] = a->xyz[2] + v[2] * sect;
+-
+- c->rgba[0] = (1 - sect) * a->rgba[0] + sect * b->rgba[0];
+- c->rgba[1] = (1 - sect) * a->rgba[1] + sect * b->rgba[1];
+- c->rgba[2] = (1 - sect) * a->rgba[2] + sect * b->rgba[2];
+- c->rgba[3] = (1 - sect) * a->rgba[3] + sect * b->rgba[3];
+-}
+-
+-static void gl2psCreateSplitPrimitive(GL2PSprimitive *parent, GL2PSplane plane,
+- GL2PSprimitive *child, GLshort numverts,
+- GLshort *index0, GLshort *index1)
+-{
+- GLshort i;
+-
+- if(parent->type == GL2PS_IMAGEMAP){
+- child->type = GL2PS_IMAGEMAP;
+- child->data.image = parent->data.image;
+- }
+- else{
+- if(numverts > 4){
+- gl2psMsg(GL2PS_WARNING, "%d vertices in polygon", numverts);
+- numverts = 4;
+- }
+- switch(numverts){
+- case 1 : child->type = GL2PS_POINT; break;
+- case 2 : child->type = GL2PS_LINE; break;
+- case 3 : child->type = GL2PS_TRIANGLE; break;
+- case 4 : child->type = GL2PS_QUADRANGLE; break;
+- default: child->type = GL2PS_NO_TYPE; break;
+- }
+- }
+-
+- child->boundary = 0; /* FIXME: not done! */
+- child->culled = parent->culled;
+- child->offset = parent->offset;
+- child->pattern = parent->pattern;
+- child->factor = parent->factor;
+- child->width = parent->width;
+- child->numverts = numverts;
+- child->verts = (GL2PSvertex*)gl2psMalloc(numverts * sizeof(GL2PSvertex));
+-
+- for(i = 0; i < numverts; i++){
+- if(index1[i] < 0){
+- child->verts[i] = parent->verts[index0[i]];
+- }
+- else{
+- gl2psCutEdge(&parent->verts[index0[i]], &parent->verts[index1[i]],
+- plane, &child->verts[i]);
+- }
+- }
+-}
+-
+-static void gl2psAddIndex(GLshort *index0, GLshort *index1, GLshort *nb,
+- GLshort i, GLshort j)
+-{
+- GLint k;
+-
+- for(k = 0; k < *nb; k++){
+- if((index0[k] == i && index1[k] == j) ||
+- (index1[k] == i && index0[k] == j)) return;
+- }
+- index0[*nb] = i;
+- index1[*nb] = j;
+- (*nb)++;
+-}
+-
+-static GLshort gl2psGetIndex(GLshort i, GLshort num)
+-{
+- return (i < num - 1) ? i + 1 : 0;
+-}
+-
+-static GLint gl2psTestSplitPrimitive(GL2PSprimitive *prim, GL2PSplane plane)
+-{
+- GLint type = GL2PS_COINCIDENT;
+- GLshort i, j;
+- GLfloat d[5];
+-
+- for(i = 0; i < prim->numverts; i++){
+- d[i] = gl2psComparePointPlane(prim->verts[i].xyz, plane);
+- }
+-
+- if(prim->numverts < 2){
+- return 0;
+- }
+- else{
+- for(i = 0; i < prim->numverts; i++){
+- j = gl2psGetIndex(i, prim->numverts);
+- if(d[j] > GL2PS_EPSILON){
+- if(type == GL2PS_COINCIDENT) type = GL2PS_IN_BACK_OF;
+- else if(type != GL2PS_IN_BACK_OF) return 1;
+- if(d[i] < -GL2PS_EPSILON) return 1;
+- }
+- else if(d[j] < -GL2PS_EPSILON){
+- if(type == GL2PS_COINCIDENT) type = GL2PS_IN_FRONT_OF;
+- else if(type != GL2PS_IN_FRONT_OF) return 1;
+- if(d[i] > GL2PS_EPSILON) return 1;
+- }
+- }
+- }
+- return 0;
+-}
+-
+-static GLint gl2psSplitPrimitive(GL2PSprimitive *prim, GL2PSplane plane,
+- GL2PSprimitive **front, GL2PSprimitive **back)
+-{
+- GLshort i, j, in = 0, out = 0;
+- GLshort in0[5] = {0}, in1[5] = {0}, out0[5] = {0}, out1[5] = {0};
+- GLint type;
+- GLfloat d[5];
+-
+- type = GL2PS_COINCIDENT;
+-
+- for(i = 0; i < prim->numverts; i++){
+- d[i] = gl2psComparePointPlane(prim->verts[i].xyz, plane);
+- }
+-
+- switch(prim->type){
+- case GL2PS_POINT :
+- if(d[0] > GL2PS_EPSILON) type = GL2PS_IN_BACK_OF;
+- else if(d[0] < -GL2PS_EPSILON) type = GL2PS_IN_FRONT_OF;
+- else type = GL2PS_COINCIDENT;
+- break;
+- default :
+- for(i = 0; i < prim->numverts; i++){
+- j = gl2psGetIndex(i, prim->numverts);
+- if(d[j] > GL2PS_EPSILON){
+- if(type == GL2PS_COINCIDENT) type = GL2PS_IN_BACK_OF;
+- else if(type != GL2PS_IN_BACK_OF) type = GL2PS_SPANNING;
+- if(d[i] < -GL2PS_EPSILON){
+- gl2psAddIndex(in0, in1, &in, i, j);
+- gl2psAddIndex(out0, out1, &out, i, j);
+- type = GL2PS_SPANNING;
+- }
+- gl2psAddIndex(out0, out1, &out, j, -1);
+- }
+- else if(d[j] < -GL2PS_EPSILON){
+- if(type == GL2PS_COINCIDENT) type = GL2PS_IN_FRONT_OF;
+- else if(type != GL2PS_IN_FRONT_OF) type = GL2PS_SPANNING;
+- if(d[i] > GL2PS_EPSILON){
+- gl2psAddIndex(in0, in1, &in, i, j);
+- gl2psAddIndex(out0, out1, &out, i, j);
+- type = GL2PS_SPANNING;
+- }
+- gl2psAddIndex(in0, in1, &in, j, -1);
+- }
+- else{
+- gl2psAddIndex(in0, in1, &in, j, -1);
+- gl2psAddIndex(out0, out1, &out, j, -1);
+- }
+- }
+- break;
+- }
+-
+- if(type == GL2PS_SPANNING){
+- *back = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
+- *front = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
+- gl2psCreateSplitPrimitive(prim, plane, *back, out, out0, out1);
+- gl2psCreateSplitPrimitive(prim, plane, *front, in, in0, in1);
+- }
+-
+- return type;
+-}
+-
+-static void gl2psDivideQuad(GL2PSprimitive *quad,
+- GL2PSprimitive **t1, GL2PSprimitive **t2)
+-{
+- *t1 = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
+- *t2 = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
+- (*t1)->type = (*t2)->type = GL2PS_TRIANGLE;
+- (*t1)->numverts = (*t2)->numverts = 3;
+- (*t1)->culled = (*t2)->culled = quad->culled;
+- (*t1)->offset = (*t2)->offset = quad->offset;
+- (*t1)->pattern = (*t2)->pattern = quad->pattern;
+- (*t1)->factor = (*t2)->factor = quad->factor;
+- (*t1)->width = (*t2)->width = quad->width;
+- (*t1)->verts = (GL2PSvertex*)gl2psMalloc(3 * sizeof(GL2PSvertex));
+- (*t2)->verts = (GL2PSvertex*)gl2psMalloc(3 * sizeof(GL2PSvertex));
+- (*t1)->verts[0] = quad->verts[0];
+- (*t1)->verts[1] = quad->verts[1];
+- (*t1)->verts[2] = quad->verts[2];
+- (*t1)->boundary = ((quad->boundary & 1) ? 1 : 0) | ((quad->boundary & 2) ? 2 : 0);
+- (*t2)->verts[0] = quad->verts[0];
+- (*t2)->verts[1] = quad->verts[2];
+- (*t2)->verts[2] = quad->verts[3];
+- (*t2)->boundary = ((quad->boundary & 4) ? 2 : 0) | ((quad->boundary & 4) ? 2 : 0);
+-}
+-
+-static int gl2psCompareDepth(const void *a, const void *b)
+-{
+- GL2PSprimitive *q, *w;
+- GLfloat dq = 0.0F, dw = 0.0F, diff;
+- int i;
+-
+- q = *(GL2PSprimitive**)a;
+- w = *(GL2PSprimitive**)b;
+-
+- for(i = 0; i < q->numverts; i++){
+- dq += q->verts[i].xyz[2];
+- }
+- dq /= (GLfloat)q->numverts;
+-
+- for(i = 0; i < w->numverts; i++){
+- dw += w->verts[i].xyz[2];
+- }
+- dw /= (GLfloat)w->numverts;
+-
+- diff = dq - dw;
+- if(diff > 0.){
+- return -1;
+- }
+- else if(diff < 0.){
+- return 1;
+- }
+- else{
+- return 0;
+- }
+-}
+-
+-static int gl2psTrianglesFirst(const void *a, const void *b)
+-{
+- GL2PSprimitive *q, *w;
+-
+- q = *(GL2PSprimitive**)a;
+- w = *(GL2PSprimitive**)b;
+- return(q->type < w->type ? 1 : -1);
+-}
+-
+-static GLint gl2psFindRoot(GL2PSlist *primitives, GL2PSprimitive **root)
+-{
+- GLint i, j, count, best = 1000000, index = 0;
+- GL2PSprimitive *prim1, *prim2;
+- GL2PSplane plane;
+- GLint maxp;
+-
+- if(!gl2psListNbr(primitives)){
+- gl2psMsg(GL2PS_ERROR, "Cannot fint root in empty primitive list");
+- return 0;
+- }
+-
+- *root = *(GL2PSprimitive**)gl2psListPointer(primitives, 0);
+-
+- if(gl2ps->options & GL2PS_BEST_ROOT){
+- maxp = gl2psListNbr(primitives);
+- if(maxp > gl2ps->maxbestroot){
+- maxp = gl2ps->maxbestroot;
+- }
+- for(i = 0; i < maxp; i++){
+- prim1 = *(GL2PSprimitive**)gl2psListPointer(primitives, i);
+- gl2psGetPlane(prim1, plane);
+- count = 0;
+- for(j = 0; j < gl2psListNbr(primitives); j++){
+- if(j != i){
+- prim2 = *(GL2PSprimitive**)gl2psListPointer(primitives, j);
+- count += gl2psTestSplitPrimitive(prim2, plane);
+- }
+- if(count > best) break;
+- }
+- if(count < best){
+- best = count;
+- index = i;
+- *root = prim1;
+- if(!count) return index;
+- }
+- }
+- /* if(index) gl2psMsg(GL2PS_INFO, "GL2PS_BEST_ROOT was worth it: %d", index); */
+- return index;
+- }
+- else{
+- return 0;
+- }
+-}
+-
+-static void gl2psFreeImagemap(GL2PSimagemap *list){
+- GL2PSimagemap *next;
+- while(list != NULL){
+- next = list->next;
+- gl2psFree(list->image->pixels);
+- gl2psFree(list->image);
+- gl2psFree(list);
+- list = next;
+- }
+-}
+-
+-static void gl2psFreePrimitive(void *data)
+-{
+- GL2PSprimitive *q;
+-
+- q = *(GL2PSprimitive**)data;
+- gl2psFree(q->verts);
+- if(q->type == GL2PS_TEXT || q->type == GL2PS_SPECIAL){
+- gl2psFreeText(q->data.text);
+- }
+- else if(q->type == GL2PS_PIXMAP){
+- gl2psFreePixmap(q->data.image);
+- }
+- gl2psFree(q);
+-}
+-
+-static void gl2psAddPrimitiveInList(GL2PSprimitive *prim, GL2PSlist *list)
+-{
+- GL2PSprimitive *t1, *t2;
+-
+- if(prim->type != GL2PS_QUADRANGLE){
+- gl2psListAdd(list, &prim);
+- }
+- else{
+- gl2psDivideQuad(prim, &t1, &t2);
+- gl2psListAdd(list, &t1);
+- gl2psListAdd(list, &t2);
+- gl2psFreePrimitive(&prim);
+- }
+-
+-}
+-
+-static void gl2psFreeBspTree(GL2PSbsptree **tree)
+-{
+- if(*tree){
+- if((*tree)->back) gl2psFreeBspTree(&(*tree)->back);
+- if((*tree)->primitives){
+- gl2psListAction((*tree)->primitives, gl2psFreePrimitive);
+- gl2psListDelete((*tree)->primitives);
+- }
+- if((*tree)->front) gl2psFreeBspTree(&(*tree)->front);
+- gl2psFree(*tree);
+- *tree = NULL;
+- }
+-}
+-
+-static GLboolean gl2psGreater(GLfloat f1, GLfloat f2)
+-{
+- if(f1 > f2) return GL_TRUE;
+- else return GL_FALSE;
+-}
+-
+-static GLboolean gl2psLess(GLfloat f1, GLfloat f2)
+-{
+- if(f1 < f2) return GL_TRUE;
+- else return GL_FALSE;
+-}
+-
+-static void gl2psBuildBspTree(GL2PSbsptree *tree, GL2PSlist *primitives)
+-{
+- GL2PSprimitive *prim, *frontprim = NULL, *backprim = NULL;
+- GL2PSlist *frontlist, *backlist;
+- GLint i, index;
+-
+- tree->front = NULL;
+- tree->back = NULL;
+- tree->primitives = gl2psListCreate(1, 2, sizeof(GL2PSprimitive*));
+- index = gl2psFindRoot(primitives, &prim);
+- gl2psGetPlane(prim, tree->plane);
+- gl2psAddPrimitiveInList(prim, tree->primitives);
+-
+- frontlist = gl2psListCreate(1, 2, sizeof(GL2PSprimitive*));
+- backlist = gl2psListCreate(1, 2, sizeof(GL2PSprimitive*));
+-
+- for(i = 0; i < gl2psListNbr(primitives); i++){
+- if(i != index){
+- prim = *(GL2PSprimitive**)gl2psListPointer(primitives,i);
+- switch(gl2psSplitPrimitive(prim, tree->plane, &frontprim, &backprim)){
+- case GL2PS_COINCIDENT:
+- gl2psAddPrimitiveInList(prim, tree->primitives);
+- break;
+- case GL2PS_IN_BACK_OF:
+- gl2psAddPrimitiveInList(prim, backlist);
+- break;
+- case GL2PS_IN_FRONT_OF:
+- gl2psAddPrimitiveInList(prim, frontlist);
+- break;
+- case GL2PS_SPANNING:
+- gl2psAddPrimitiveInList(backprim, backlist);
+- gl2psAddPrimitiveInList(frontprim, frontlist);
+- gl2psFreePrimitive(&prim);
+- break;
+- }
+- }
+- }
+-
+- if(gl2psListNbr(tree->primitives)){
+- gl2psListSort(tree->primitives, gl2psTrianglesFirst);
+- }
+-
+- if(gl2psListNbr(frontlist)){
+- gl2psListSort(frontlist, gl2psTrianglesFirst);
+- tree->front = (GL2PSbsptree*)gl2psMalloc(sizeof(GL2PSbsptree));
+- gl2psBuildBspTree(tree->front, frontlist);
+- }
+- else{
+- gl2psListDelete(frontlist);
+- }
+-
+- if(gl2psListNbr(backlist)){
+- gl2psListSort(backlist, gl2psTrianglesFirst);
+- tree->back = (GL2PSbsptree*)gl2psMalloc(sizeof(GL2PSbsptree));
+- gl2psBuildBspTree(tree->back, backlist);
+- }
+- else{
+- gl2psListDelete(backlist);
+- }
+-
+- gl2psListDelete(primitives);
+-}
+-
+-static void gl2psTraverseBspTree(GL2PSbsptree *tree, GL2PSxyz eye, GLfloat epsilon,
+- GLboolean (*compare)(GLfloat f1, GLfloat f2),
+- void (*action)(void *data), int inverse)
+-{
+- GLfloat result;
+-
+- if(!tree) return;
+-
+- result = gl2psComparePointPlane(eye, tree->plane);
+-
+- if(GL_TRUE == compare(result, epsilon)){
+- gl2psTraverseBspTree(tree->back, eye, epsilon, compare, action, inverse);
+- if(inverse){
+- gl2psListActionInverse(tree->primitives, action);
+- }
+- else{
+- gl2psListAction(tree->primitives, action);
+- }
+- gl2psTraverseBspTree(tree->front, eye, epsilon, compare, action, inverse);
+- }
+- else if(GL_TRUE == compare(-epsilon, result)){
+- gl2psTraverseBspTree(tree->front, eye, epsilon, compare, action, inverse);
+- if(inverse){
+- gl2psListActionInverse(tree->primitives, action);
+- }
+- else{
+- gl2psListAction(tree->primitives, action);
+- }
+- gl2psTraverseBspTree(tree->back, eye, epsilon, compare, action, inverse);
+- }
+- else{
+- gl2psTraverseBspTree(tree->front, eye, epsilon, compare, action, inverse);
+- gl2psTraverseBspTree(tree->back, eye, epsilon, compare, action, inverse);
+- }
+-}
+-
+-static void gl2psRescaleAndOffset()
+-{
+- GL2PSprimitive *prim;
+- GLfloat minZ, maxZ, rangeZ, scaleZ;
+- GLfloat factor, units, area, dZ, dZdX, dZdY, maxdZ;
+- int i, j;
+-
+- if(!gl2psListNbr(gl2ps->primitives))
+- return;
+-
+- /* get z-buffer range */
+- prim = *(GL2PSprimitive**)gl2psListPointer(gl2ps->primitives, 0);
+- minZ = maxZ = prim->verts[0].xyz[2];
+- for(i = 1; i < prim->numverts; i++){
+- if(prim->verts[i].xyz[2] < minZ) minZ = prim->verts[i].xyz[2];
+- if(prim->verts[i].xyz[2] > maxZ) maxZ = prim->verts[i].xyz[2];
+- }
+- for(i = 1; i < gl2psListNbr(gl2ps->primitives); i++){
+- prim = *(GL2PSprimitive**)gl2psListPointer(gl2ps->primitives, i);
+- for(j = 0; j < prim->numverts; j++){
+- if(prim->verts[j].xyz[2] < minZ) minZ = prim->verts[j].xyz[2];
+- if(prim->verts[j].xyz[2] > maxZ) maxZ = prim->verts[j].xyz[2];
+- }
+- }
+- rangeZ = (maxZ - minZ);
+-
+- /* rescale z-buffer coordinate in [0,GL2PS_ZSCALE], to make it of
+- the same order of magnitude as the x and y coordinates */
+- scaleZ = GL2PS_ZERO(rangeZ) ? GL2PS_ZSCALE : (GL2PS_ZSCALE / rangeZ);
+- /* avoid precision loss (we use floats!) */
+- if(scaleZ > 100000.F) scaleZ = 100000.F;
+-
+- /* apply offsets */
+- for(i = 0; i < gl2psListNbr(gl2ps->primitives); i++){
+- prim = *(GL2PSprimitive**)gl2psListPointer(gl2ps->primitives, i);
+- for(j = 0; j < prim->numverts; j++){
+- prim->verts[j].xyz[2] = (prim->verts[j].xyz[2] - minZ) * scaleZ;
+- }
+- if((gl2ps->options & GL2PS_SIMPLE_LINE_OFFSET) &&
+- (prim->type == GL2PS_LINE)){
+- if(gl2ps->sort == GL2PS_SIMPLE_SORT){
+- prim->verts[0].xyz[2] -= GL2PS_ZOFFSET_LARGE;
+- prim->verts[1].xyz[2] -= GL2PS_ZOFFSET_LARGE;
+- }
+- else{
+- prim->verts[0].xyz[2] -= GL2PS_ZOFFSET;
+- prim->verts[1].xyz[2] -= GL2PS_ZOFFSET;
+- }
+- }
+- else if(prim->offset && (prim->type == GL2PS_TRIANGLE)){
+- factor = gl2ps->offset[0];
+- units = gl2ps->offset[1];
+- area =
+- (prim->verts[1].xyz[0] - prim->verts[0].xyz[0]) *
+- (prim->verts[2].xyz[1] - prim->verts[1].xyz[1]) -
+- (prim->verts[2].xyz[0] - prim->verts[1].xyz[0]) *
+- (prim->verts[1].xyz[1] - prim->verts[0].xyz[1]);
+- if(!GL2PS_ZERO(area)){
+- dZdX =
+- ((prim->verts[2].xyz[1] - prim->verts[1].xyz[1]) *
+- (prim->verts[1].xyz[2] - prim->verts[0].xyz[2]) -
+- (prim->verts[1].xyz[1] - prim->verts[0].xyz[1]) *
+- (prim->verts[2].xyz[2] - prim->verts[1].xyz[2])) / area;
+- dZdY =
+- ((prim->verts[1].xyz[0] - prim->verts[0].xyz[0]) *
+- (prim->verts[2].xyz[2] - prim->verts[1].xyz[2]) -
+- (prim->verts[2].xyz[0] - prim->verts[1].xyz[0]) *
+- (prim->verts[1].xyz[2] - prim->verts[0].xyz[2])) / area;
+- maxdZ = (GLfloat)sqrt(dZdX * dZdX + dZdY * dZdY);
+- }
+- else{
+- maxdZ = 0.0F;
+- }
+- dZ = factor * maxdZ + units;
+- prim->verts[0].xyz[2] += dZ;
+- prim->verts[1].xyz[2] += dZ;
+- prim->verts[2].xyz[2] += dZ;
+- }
+- }
+-}
+-
+-/*********************************************************************
+- *
+- * 2D sorting routines (for occlusion culling)
+- *
+- *********************************************************************/
+-
+-static GLint gl2psGetPlaneFromPoints(GL2PSxyz a, GL2PSxyz b, GL2PSplane plane)
+-{
+- GLfloat n;
+-
+- plane[0] = b[1] - a[1];
+- plane[1] = a[0] - b[0];
+- n = (GLfloat)sqrt(plane[0]*plane[0] + plane[1]*plane[1]);
+- plane[2] = 0.0F;
+- if(!GL2PS_ZERO(n)){
+- plane[0] /= n;
+- plane[1] /= n;
+- plane[3] = -plane[0]*a[0]-plane[1]*a[1];
+- return 1;
+- }
+- else{
+- plane[0] = -1.0F;
+- plane[1] = 0.0F;
+- plane[3] = a[0];
+- return 0;
+- }
+-}
+-
+-static void gl2psFreeBspImageTree(GL2PSbsptree2d **tree)
+-{
+- if(*tree){
+- if((*tree)->back) gl2psFreeBspImageTree(&(*tree)->back);
+- if((*tree)->front) gl2psFreeBspImageTree(&(*tree)->front);
+- gl2psFree(*tree);
+- *tree = NULL;
+- }
+-}
+-
+-static GLint gl2psCheckPoint(GL2PSxyz point, GL2PSplane plane)
+-{
+- GLfloat pt_dis;
+-
+- pt_dis = gl2psComparePointPlane(point, plane);
+- if(pt_dis > GL2PS_EPSILON) return GL2PS_POINT_INFRONT;
+- else if(pt_dis < -GL2PS_EPSILON) return GL2PS_POINT_BACK;
+- else return GL2PS_POINT_COINCIDENT;
+-}
+-
+-static void gl2psAddPlanesInBspTreeImage(GL2PSprimitive *prim,
+- GL2PSbsptree2d **tree)
+-{
+- GLint ret = 0;
+- GLint i;
+- GLint offset = 0;
+- GL2PSbsptree2d *head = NULL, *cur = NULL;
+-
+- if((*tree == NULL) && (prim->numverts > 2)){
+- /* don't cull if transparent
+- for(i = 0; i < prim->numverts - 1; i++)
+- if(prim->verts[i].rgba[3] < 1.0F) return;
+- */
+- head = (GL2PSbsptree2d*)gl2psMalloc(sizeof(GL2PSbsptree2d));
+- for(i = 0; i < prim->numverts-1; i++){
+- if(!gl2psGetPlaneFromPoints(prim->verts[i].xyz,
+- prim->verts[i+1].xyz,
+- head->plane)){
+- if(prim->numverts-i > 3){
+- offset++;
+- }
+- else{
+- gl2psFree(head);
+- return;
+- }
+- }
+- else{
+- break;
+- }
+- }
+- head->back = NULL;
+- head->front = NULL;
+- for(i = 2+offset; i < prim->numverts; i++){
+- ret = gl2psCheckPoint(prim->verts[i].xyz, head->plane);
+- if(ret != GL2PS_POINT_COINCIDENT) break;
+- }
+- switch(ret){
+- case GL2PS_POINT_INFRONT :
+- cur = head;
+- for(i = 1+offset; i < prim->numverts-1; i++){
+- if(cur->front == NULL){
+- cur->front = (GL2PSbsptree2d*)gl2psMalloc(sizeof(GL2PSbsptree2d));
+- }
+- if(gl2psGetPlaneFromPoints(prim->verts[i].xyz,
+- prim->verts[i+1].xyz,
+- cur->front->plane)){
+- cur = cur->front;
+- cur->front = NULL;
+- cur->back = NULL;
+- }
+- }
+- if(cur->front == NULL){
+- cur->front = (GL2PSbsptree2d*)gl2psMalloc(sizeof(GL2PSbsptree2d));
+- }
+- if(gl2psGetPlaneFromPoints(prim->verts[i].xyz,
+- prim->verts[offset].xyz,
+- cur->front->plane)){
+- cur->front->front = NULL;
+- cur->front->back = NULL;
+- }
+- else{
+- gl2psFree(cur->front);
+- cur->front = NULL;
+- }
+- break;
+- case GL2PS_POINT_BACK :
+- for(i = 0; i < 4; i++){
+- head->plane[i] = -head->plane[i];
+- }
+- cur = head;
+- for(i = 1+offset; i < prim->numverts-1; i++){
+- if(cur->front == NULL){
+- cur->front = (GL2PSbsptree2d*)gl2psMalloc(sizeof(GL2PSbsptree2d));
+- }
+- if(gl2psGetPlaneFromPoints(prim->verts[i+1].xyz,
+- prim->verts[i].xyz,
+- cur->front->plane)){
+- cur = cur->front;
+- cur->front = NULL;
+- cur->back = NULL;
+- }
+- }
+- if(cur->front == NULL){
+- cur->front = (GL2PSbsptree2d*)gl2psMalloc(sizeof(GL2PSbsptree2d));
+- }
+- if(gl2psGetPlaneFromPoints(prim->verts[offset].xyz,
+- prim->verts[i].xyz,
+- cur->front->plane)){
+- cur->front->front = NULL;
+- cur->front->back = NULL;
+- }
+- else{
+- gl2psFree(cur->front);
+- cur->front = NULL;
+- }
+- break;
+- default:
+- gl2psFree(head);
+- return;
+- }
+- (*tree) = head;
+- }
+-}
+-
+-static GLint gl2psCheckPrimitive(GL2PSprimitive *prim, GL2PSplane plane)
+-{
+- GLint i;
+- GLint pos;
+-
+- pos = gl2psCheckPoint(prim->verts[0].xyz, plane);
+- for(i = 1; i < prim->numverts; i++){
+- pos |= gl2psCheckPoint(prim->verts[i].xyz, plane);
+- if(pos == (GL2PS_POINT_INFRONT | GL2PS_POINT_BACK)) return GL2PS_SPANNING;
+- }
+- if(pos & GL2PS_POINT_INFRONT) return GL2PS_IN_FRONT_OF;
+- else if(pos & GL2PS_POINT_BACK) return GL2PS_IN_BACK_OF;
+- else return GL2PS_COINCIDENT;
+-}
+-
+-static GL2PSprimitive *gl2psCreateSplitPrimitive2D(GL2PSprimitive *parent,
+- GLshort numverts,
+- GL2PSvertex *vertx)
+-{
+- GLint i;
+- GL2PSprimitive *child = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
+-
+- if(parent->type == GL2PS_IMAGEMAP){
+- child->type = GL2PS_IMAGEMAP;
+- child->data.image = parent->data.image;
+- }
+- else {
+- switch(numverts){
+- case 1 : child->type = GL2PS_POINT; break;
+- case 2 : child->type = GL2PS_LINE; break;
+- case 3 : child->type = GL2PS_TRIANGLE; break;
+- case 4 : child->type = GL2PS_QUADRANGLE; break;
+- default: child->type = GL2PS_NO_TYPE; break; /* FIXME */
+- }
+- }
+- child->boundary = 0; /* FIXME: not done! */
+- child->culled = parent->culled;
+- child->offset = parent->offset;
+- child->pattern = parent->pattern;
+- child->factor = parent->factor;
+- child->width = parent->width;
+- child->numverts = numverts;
+- child->verts = (GL2PSvertex*)gl2psMalloc(numverts * sizeof(GL2PSvertex));
+- for(i = 0; i < numverts; i++){
+- child->verts[i] = vertx[i];
+- }
+- return child;
+-}
+-
+-static void gl2psSplitPrimitive2D(GL2PSprimitive *prim,
+- GL2PSplane plane,
+- GL2PSprimitive **front,
+- GL2PSprimitive **back)
+-{
+- /* cur will hold the position of the current vertex
+- prev will hold the position of the previous vertex
+- prev0 will hold the position of the vertex number 0
+- v1 and v2 represent the current and previous vertices, respectively
+- flag is set if the current vertex should be checked against the plane */
+- GLint cur = -1, prev = -1, i, v1 = 0, v2 = 0, flag = 1, prev0 = -1;
+-
+- /* list of vertices that will go in front and back primitive */
+- GL2PSvertex *front_list = NULL, *back_list = NULL;
+-
+- /* number of vertices in front and back list */
+- GLshort front_count = 0, back_count = 0;
+-
+- for(i = 0; i <= prim->numverts; i++){
+- v1 = i;
+- if(v1 == prim->numverts){
+- if(prim->numverts < 3) break;
+- v1 = 0;
+- v2 = prim->numverts - 1;
+- cur = prev0;
+- }
+- else if(flag){
+- cur = gl2psCheckPoint(prim->verts[v1].xyz, plane);
+- if(i == 0){
+- prev0 = cur;
+- }
+- }
+- if(((prev == -1) || (prev == cur) || (prev == 0) || (cur == 0)) &&
+- (i < prim->numverts)){
+- if(cur == GL2PS_POINT_INFRONT){
+- front_count++;
+- front_list = (GL2PSvertex*)gl2psRealloc(front_list,
+- sizeof(GL2PSvertex)*front_count);
+- front_list[front_count-1] = prim->verts[v1];
+- }
+- else if(cur == GL2PS_POINT_BACK){
+- back_count++;
+- back_list = (GL2PSvertex*)gl2psRealloc(back_list,
+- sizeof(GL2PSvertex)*back_count);
+- back_list[back_count-1] = prim->verts[v1];
+- }
+- else{
+- front_count++;
+- front_list = (GL2PSvertex*)gl2psRealloc(front_list,
+- sizeof(GL2PSvertex)*front_count);
+- front_list[front_count-1] = prim->verts[v1];
+- back_count++;
+- back_list = (GL2PSvertex*)gl2psRealloc(back_list,
+- sizeof(GL2PSvertex)*back_count);
+- back_list[back_count-1] = prim->verts[v1];
+- }
+- flag = 1;
+- }
+- else if((prev != cur) && (cur != 0) && (prev != 0)){
+- if(v1 != 0){
+- v2 = v1-1;
+- i--;
+- }
+- front_count++;
+- front_list = (GL2PSvertex*)gl2psRealloc(front_list,
+- sizeof(GL2PSvertex)*front_count);
+- gl2psCutEdge(&prim->verts[v2], &prim->verts[v1],
+- plane, &front_list[front_count-1]);
+- back_count++;
+- back_list = (GL2PSvertex*)gl2psRealloc(back_list,
+- sizeof(GL2PSvertex)*back_count);
+- back_list[back_count-1] = front_list[front_count-1];
+- flag = 0;
+- }
+- prev = cur;
+- }
+- *front = gl2psCreateSplitPrimitive2D(prim, front_count, front_list);
+- *back = gl2psCreateSplitPrimitive2D(prim, back_count, back_list);
+- gl2psFree(front_list);
+- gl2psFree(back_list);
+-}
+-
+-static GLint gl2psAddInBspImageTree(GL2PSprimitive *prim, GL2PSbsptree2d **tree)
+-{
+- GLint ret = 0;
+- GL2PSprimitive *frontprim = NULL, *backprim = NULL;
+-
+- /* FIXME: until we consider the actual extent of text strings and
+- pixmaps, never cull them. Otherwise the whole string/pixmap gets
+- culled as soon as the reference point is hidden */
+- if(prim->type == GL2PS_PIXMAP ||
+- prim->type == GL2PS_TEXT ||
+- prim->type == GL2PS_SPECIAL){
+- return 1;
+- }
+-
+- if(*tree == NULL){
+- if((prim->type != GL2PS_IMAGEMAP) && (GL_FALSE == gl2ps->zerosurfacearea)){
+- gl2psAddPlanesInBspTreeImage(gl2ps->primitivetoadd, tree);
+- }
+- return 1;
+- }
+- else{
+- switch(gl2psCheckPrimitive(prim, (*tree)->plane)){
+- case GL2PS_IN_BACK_OF: return gl2psAddInBspImageTree(prim, &(*tree)->back);
+- case GL2PS_IN_FRONT_OF:
+- if((*tree)->front != NULL) return gl2psAddInBspImageTree(prim, &(*tree)->front);
+- else return 0;
+- case GL2PS_SPANNING:
+- gl2psSplitPrimitive2D(prim, (*tree)->plane, &frontprim, &backprim);
+- ret = gl2psAddInBspImageTree(backprim, &(*tree)->back);
+- if((*tree)->front != NULL){
+- if(gl2psAddInBspImageTree(frontprim, &(*tree)->front)){
+- ret = 1;
+- }
+- }
+- gl2psFree(frontprim->verts);
+- gl2psFree(frontprim);
+- gl2psFree(backprim->verts);
+- gl2psFree(backprim);
+- return ret;
+- case GL2PS_COINCIDENT:
+- if((*tree)->back != NULL){
+- gl2ps->zerosurfacearea = GL_TRUE;
+- ret = gl2psAddInBspImageTree(prim, &(*tree)->back);
+- gl2ps->zerosurfacearea = GL_FALSE;
+- if(ret) return ret;
+- }
+- if((*tree)->front != NULL){
+- gl2ps->zerosurfacearea = GL_TRUE;
+- ret = gl2psAddInBspImageTree(prim, &(*tree)->front);
+- gl2ps->zerosurfacearea = GL_FALSE;
+- if(ret) return ret;
+- }
+- if(prim->type == GL2PS_LINE) return 1;
+- else return 0;
+- }
+- }
+- return 0;
+-}
+-
+-static void gl2psAddInImageTree(void *data)
+-{
+- GL2PSprimitive *prim = *(GL2PSprimitive **)data;
+- gl2ps->primitivetoadd = prim;
+- if(prim->type == GL2PS_IMAGEMAP && prim->data.image->format == GL2PS_IMAGEMAP_VISIBLE){
+- prim->culled = 1;
+- }
+- else if(!gl2psAddInBspImageTree(prim, &gl2ps->imagetree)){
+- prim->culled = 1;
+- }
+- else if(prim->type == GL2PS_IMAGEMAP){
+- prim->data.image->format = GL2PS_IMAGEMAP_VISIBLE;
+- }
+-}
+-
+-/* Boundary construction */
+-
+-static void gl2psAddBoundaryInList(GL2PSprimitive *prim, GL2PSlist *list)
+-{
+- GL2PSprimitive *b;
+- GLshort i;
+- GL2PSxyz c;
+-
+- c[0] = c[1] = c[2] = 0.0F;
+- for(i = 0; i < prim->numverts; i++){
+- c[0] += prim->verts[i].xyz[0];
+- c[1] += prim->verts[i].xyz[1];
+- }
+- c[0] /= prim->numverts;
+- c[1] /= prim->numverts;
+-
+- for(i = 0; i < prim->numverts; i++){
+- if(prim->boundary & (GLint)pow(2., i)){
+- b = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
+- b->type = GL2PS_LINE;
+- b->offset = prim->offset;
+- b->pattern = prim->pattern;
+- b->factor = prim->factor;
+- b->culled = prim->culled;
+- b->width = prim->width;
+- b->boundary = 0;
+- b->numverts = 2;
+- b->verts = (GL2PSvertex*)gl2psMalloc(2 * sizeof(GL2PSvertex));
+-
+-#if 0 /* FIXME: need to work on boundary offset... */
+- v[0] = c[0] - prim->verts[i].xyz[0];
+- v[1] = c[1] - prim->verts[i].xyz[1];
+- v[2] = 0.0F;
+- norm = gl2psNorm(v);
+- v[0] /= norm;
+- v[1] /= norm;
+- b->verts[0].xyz[0] = prim->verts[i].xyz[0] +0.1*v[0];
+- b->verts[0].xyz[1] = prim->verts[i].xyz[1] +0.1*v[1];
+- b->verts[0].xyz[2] = prim->verts[i].xyz[2];
+- v[0] = c[0] - prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[0];
+- v[1] = c[1] - prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[1];
+- norm = gl2psNorm(v);
+- v[0] /= norm;
+- v[1] /= norm;
+- b->verts[1].xyz[0] = prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[0] +0.1*v[0];
+- b->verts[1].xyz[1] = prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[1] +0.1*v[1];
+- b->verts[1].xyz[2] = prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[2];
+-#else
+- b->verts[0].xyz[0] = prim->verts[i].xyz[0];
+- b->verts[0].xyz[1] = prim->verts[i].xyz[1];
+- b->verts[0].xyz[2] = prim->verts[i].xyz[2];
+- b->verts[1].xyz[0] = prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[0];
+- b->verts[1].xyz[1] = prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[1];
+- b->verts[1].xyz[2] = prim->verts[gl2psGetIndex(i, prim->numverts)].xyz[2];
+-#endif
+-
+- b->verts[0].rgba[0] = 0.0F;
+- b->verts[0].rgba[1] = 0.0F;
+- b->verts[0].rgba[2] = 0.0F;
+- b->verts[0].rgba[3] = 0.0F;
+- b->verts[1].rgba[0] = 0.0F;
+- b->verts[1].rgba[1] = 0.0F;
+- b->verts[1].rgba[2] = 0.0F;
+- b->verts[1].rgba[3] = 0.0F;
+- gl2psListAdd(list, &b);
+- }
+- }
+-
+-}
+-
+-static void gl2psBuildPolygonBoundary(GL2PSbsptree *tree)
+-{
+- GLint i;
+- GL2PSprimitive *prim;
+-
+- if(!tree) return;
+- gl2psBuildPolygonBoundary(tree->back);
+- for(i = 0; i < gl2psListNbr(tree->primitives); i++){
+- prim = *(GL2PSprimitive**)gl2psListPointer(tree->primitives, i);
+- if(prim->boundary) gl2psAddBoundaryInList(prim, tree->primitives);
+- }
+- gl2psBuildPolygonBoundary(tree->front);
+-}
+-
+-/*********************************************************************
+- *
+- * Feedback buffer parser
+- *
+- *********************************************************************/
+-
+-static void gl2psAddPolyPrimitive(GLshort type, GLshort numverts,
+- GL2PSvertex *verts, GLint offset,
+- GLushort pattern, GLint factor,
+- GLfloat width, char boundary)
+-{
+- GL2PSprimitive *prim;
+-
+- prim = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
+- prim->type = type;
+- prim->numverts = numverts;
+- prim->verts = (GL2PSvertex*)gl2psMalloc(numverts * sizeof(GL2PSvertex));
+- memcpy(prim->verts, verts, numverts * sizeof(GL2PSvertex));
+- prim->boundary = boundary;
+- prim->offset = offset;
+- prim->pattern = pattern;
+- prim->factor = factor;
+- prim->width = width;
+- prim->culled = 0;
+-
+- /* FIXME: here we should have an option to split stretched
+- tris/quads to enhance SIMPLE_SORT */
+-
+- gl2psListAdd(gl2ps->primitives, &prim);
+-}
+-
+-static GLint gl2psGetVertex(GL2PSvertex *v, GLfloat *p)
+-{
+- GLint i;
+-
+- v->xyz[0] = p[0];
+- v->xyz[1] = p[1];
+- v->xyz[2] = p[2];
+-
+- if(gl2ps->colormode == GL_COLOR_INDEX && gl2ps->colorsize > 0){
+- i = (GLint)(p[3] + 0.5);
+- v->rgba[0] = gl2ps->colormap[i][0];
+- v->rgba[1] = gl2ps->colormap[i][1];
+- v->rgba[2] = gl2ps->colormap[i][2];
+- v->rgba[3] = gl2ps->colormap[i][3];
+- return 4;
+- }
+- else{
+- v->rgba[0] = p[3];
+- v->rgba[1] = p[4];
+- v->rgba[2] = p[5];
+- v->rgba[3] = p[6];
+- return 7;
+- }
+-}
+-
+-static void gl2psParseFeedbackBuffer(GLint used)
+-{
+- char flag;
+- GLushort pattern = 0;
+- GLboolean boundary;
+- GLint i, sizeoffloat, count, v, vtot, offset = 0, factor = 0, auxindex = 0;
+- GLfloat lwidth = 1.0F, psize = 1.0F;
+- GLfloat *current;
+- GL2PSvertex vertices[3];
+- GL2PSprimitive *prim;
+- GL2PSimagemap *node;
+-
+- current = gl2ps->feedback;
+- boundary = gl2ps->boundary = GL_FALSE;
+-
+- while(used > 0){
+-
+- if(GL_TRUE == boundary) gl2ps->boundary = GL_TRUE;
+-
+- switch((GLint)*current){
+- case GL_POINT_TOKEN :
+- current ++;
+- used --;
+- i = gl2psGetVertex(&vertices[0], current);
+- current += i;
+- used -= i;
+- gl2psAddPolyPrimitive(GL2PS_POINT, 1, vertices, 0,
+- pattern, factor, psize, 0);
+- break;
+- case GL_LINE_TOKEN :
+- case GL_LINE_RESET_TOKEN :
+- current ++;
+- used --;
+- i = gl2psGetVertex(&vertices[0], current);
+- current += i;
+- used -= i;
+- i = gl2psGetVertex(&vertices[1], current);
+- current += i;
+- used -= i;
+- gl2psAddPolyPrimitive(GL2PS_LINE, 2, vertices, 0,
+- pattern, factor, lwidth, 0);
+- break;
+- case GL_POLYGON_TOKEN :
+- count = (GLint)current[1];
+- current += 2;
+- used -= 2;
+- v = vtot = 0;
+- while(count > 0 && used > 0){
+- i = gl2psGetVertex(&vertices[v], current);
+- gl2psAdaptVertexForBlending(&vertices[v]);
+- current += i;
+- used -= i;
+- count --;
+- vtot++;
+- if(v == 2){
+- if(GL_TRUE == boundary){
+- if(!count && vtot == 2) flag = 1|2|4;
+- else if(!count) flag = 2|4;
+- else if(vtot == 2) flag = 1|2;
+- else flag = 2;
+- }
+- else
+- flag = 0;
+- gl2psAddPolyPrimitive(GL2PS_TRIANGLE, 3, vertices, offset,
+- pattern, factor, 1, flag);
+- vertices[1] = vertices[2];
+- }
+- else
+- v ++;
+- }
+- break;
+- case GL_BITMAP_TOKEN :
+- case GL_DRAW_PIXEL_TOKEN :
+- case GL_COPY_PIXEL_TOKEN :
+- current ++;
+- used --;
+- i = gl2psGetVertex(&vertices[0], current);
+- current += i;
+- used -= i;
+- break;
+- case GL_PASS_THROUGH_TOKEN :
+- switch((GLint)current[1]){
+- case GL2PS_BEGIN_OFFSET_TOKEN : offset = 1; break;
+- case GL2PS_END_OFFSET_TOKEN : offset = 0; break;
+- case GL2PS_BEGIN_BOUNDARY_TOKEN : boundary = GL_TRUE; break;
+- case GL2PS_END_BOUNDARY_TOKEN : boundary = GL_FALSE; break;
+- case GL2PS_END_STIPPLE_TOKEN : pattern = factor = 0; break;
+- case GL2PS_BEGIN_BLEND_TOKEN : gl2ps->blending = GL_TRUE; break;
+- case GL2PS_END_BLEND_TOKEN : gl2ps->blending = GL_FALSE; break;
+- case GL2PS_BEGIN_STIPPLE_TOKEN :
+- current += 2;
+- used -= 2;
+- pattern = (GLushort)current[1];
+- current += 2;
+- used -= 2;
+- factor = (GLint)current[1];
+- break;
+- case GL2PS_SRC_BLEND_TOKEN :
+- current += 2;
+- used -= 2;
+- gl2ps->blendfunc[0] = (GLint)current[1];
+- break;
+- case GL2PS_DST_BLEND_TOKEN :
+- current += 2;
+- used -= 2;
+- gl2ps->blendfunc[1] = (GLint)current[1];
+- break;
+- case GL2PS_POINT_SIZE_TOKEN :
+- current += 2;
+- used -= 2;
+- psize = current[1];
+- break;
+- case GL2PS_LINE_WIDTH_TOKEN :
+- current += 2;
+- used -= 2;
+- lwidth = current[1];
+- break;
+- case GL2PS_IMAGEMAP_TOKEN :
+- prim = (GL2PSprimitive *)gl2psMalloc(sizeof(GL2PSprimitive));
+- prim->type = GL2PS_IMAGEMAP;
+- prim->boundary = 0;
+- prim->numverts = 4;
+- prim->verts = (GL2PSvertex *)gl2psMalloc(4 * sizeof(GL2PSvertex));
+- prim->culled = 0;
+- prim->offset = 0;
+- prim->pattern = 0;
+- prim->factor = 0;
+- prim->width = 1;
+-
+- node = (GL2PSimagemap*)gl2psMalloc(sizeof(GL2PSimagemap));
+- node->image = (GL2PSimage*)gl2psMalloc(sizeof(GL2PSimage));
+- node->image->type = 0;
+- node->image->format = 0;
+- node->next = NULL;
+-
+- if(gl2ps->imagemap_head == NULL)
+- gl2ps->imagemap_head = node;
+- else
+- gl2ps->imagemap_tail->next = node;
+- gl2ps->imagemap_tail = node;
+- prim->data.image = node->image;
+-
+- current += 2; used -= 2;
+- i = gl2psGetVertex(&prim->verts[0], ¤t[1]);
+- current += i; used -= i;
+-
+- node->image->width = (GLint)current[2];
+- current += 2; used -= 2;
+- node->image->height = (GLint)current[2];
+- prim->verts[0].xyz[0] = prim->verts[0].xyz[0] - (int)(node->image->width / 2) + 0.5;
+- prim->verts[0].xyz[1] = prim->verts[0].xyz[1] - (int)(node->image->height / 2) + 0.5;
+- for(i = 1; i < 4; i++){
+- for(v = 0; v < 3; v++){
+- prim->verts[i].xyz[v] = prim->verts[0].xyz[v];
+- prim->verts[i].rgba[v] = prim->verts[0].rgba[v];
+- }
+- prim->verts[i].rgba[v] = prim->verts[0].rgba[v];
+- }
+- prim->verts[1].xyz[0] = prim->verts[1].xyz[0] + node->image->width;
+- prim->verts[2].xyz[0] = prim->verts[1].xyz[0];
+- prim->verts[2].xyz[1] = prim->verts[2].xyz[1] + node->image->height;
+- prim->verts[3].xyz[1] = prim->verts[2].xyz[1];
+-
+- sizeoffloat = sizeof(GLfloat);
+- v = 2 * sizeoffloat;
+- vtot = node->image->height + node->image->height *
+- ((node->image->width - 1) / 8);
+- node->image->pixels = (GLfloat*)gl2psMalloc(v + vtot);
+- node->image->pixels[0] = prim->verts[0].xyz[0];
+- node->image->pixels[1] = prim->verts[0].xyz[1];
+-
+- for(i = 0; i < vtot; i += sizeoffloat){
+- current += 2; used -= 2;
+- if((vtot - i) >= 4)
+- memcpy(&(((char*)(node->image->pixels))[i + v]), &(current[2]), sizeoffloat);
+- else
+- memcpy(&(((char*)(node->image->pixels))[i + v]), &(current[2]), vtot - i);
+- }
+- current++; used--;
+- gl2psListAdd(gl2ps->primitives, &prim);
+- break;
+- case GL2PS_DRAW_PIXELS_TOKEN :
+- case GL2PS_TEXT_TOKEN :
+- if(auxindex < gl2psListNbr(gl2ps->auxprimitives))
+- gl2psListAdd(gl2ps->primitives,
+- gl2psListPointer(gl2ps->auxprimitives, auxindex++));
+- else
+- gl2psMsg(GL2PS_ERROR, "Wrong number of auxiliary tokens in buffer");
+- break;
+- }
+- current += 2;
+- used -= 2;
+- break;
+- default :
+- gl2psMsg(GL2PS_WARNING, "Unknown token in buffer");
+- current ++;
+- used --;
+- break;
+- }
+- }
+-
+- gl2psListReset(gl2ps->auxprimitives);
+-}
+-
+-/*********************************************************************
+- *
+- * PostScript routines
+- *
+- *********************************************************************/
+-
+-static void gl2psWriteByte(unsigned char byte)
+-{
+- unsigned char h = byte / 16;
+- unsigned char l = byte % 16;
+- gl2psPrintf("%x%x", h, l);
+-}
+-
+-static void gl2psPrintPostScriptPixmap(GLfloat x, GLfloat y, GL2PSimage *im)
+-{
+- GLuint nbhex, nbyte, nrgb, nbits;
+- GLuint row, col, ibyte, icase;
+- GLfloat dr, dg, db, fgrey;
+- unsigned char red = 0, green = 0, blue = 0, b, grey;
+- GLuint width = (GLuint)im->width;
+- GLuint height = (GLuint)im->height;
+-
+- /* FIXME: should we define an option for these? Or just keep the
+- 8-bit per component case? */
+- int greyscale = 0; /* set to 1 to output greyscale image */
+- int nbit = 8; /* number of bits per color compoment (2, 4 or 8) */
+-
+- if((width <= 0) || (height <= 0)) return;
+-
+- gl2psPrintf("gsave\n");
+- gl2psPrintf("%.2f %.2f translate\n", x, y);
+- gl2psPrintf("%d %d scale\n", width, height);
+-
+- if(greyscale){ /* greyscale */
+- gl2psPrintf("/picstr %d string def\n", width);
+- gl2psPrintf("%d %d %d\n", width, height, 8);
+- gl2psPrintf("[ %d 0 0 -%d 0 %d ]\n", width, height, height);
+- gl2psPrintf("{ currentfile picstr readhexstring pop }\n");
+- gl2psPrintf("image\n");
+- for(row = 0; row < height; row++){
+- for(col = 0; col < width; col++){
+- gl2psGetRGB(im, col, row, &dr, &dg, &db);
+- fgrey = (0.30 * dr + 0.59 * dg + 0.11 * db);
+- grey = (unsigned char)(255. * fgrey);
+- gl2psWriteByte(grey);
+- }
+- gl2psPrintf("\n");
+- }
+- nbhex = width * height * 2;
+- gl2psPrintf("%%%% nbhex digit :%d\n", nbhex);
+- }
+- else if(nbit == 2){ /* color, 2 bits for r and g and b; rgbs following each other */
+- nrgb = width * 3;
+- nbits = nrgb * nbit;
+- nbyte = nbits / 8;
+- if((nbyte * 8) != nbits) nbyte++;
+- gl2psPrintf("/rgbstr %d string def\n", nbyte);
+- gl2psPrintf("%d %d %d\n", width, height, nbit);
+- gl2psPrintf("[ %d 0 0 -%d 0 %d ]\n", width, height, height);
+- gl2psPrintf("{ currentfile rgbstr readhexstring pop }\n");
+- gl2psPrintf("false 3\n");
+- gl2psPrintf("colorimage\n");
+- for(row = 0; row < height; row++){
+- icase = 1;
+- col = 0;
+- b = 0;
+- for(ibyte = 0; ibyte < nbyte; ibyte++){
+- if(icase == 1) {
+- if(col < width) {
+- gl2psGetRGB(im, col, row, &dr, &dg, &db);
+- }
+- else {
+- dr = dg = db = 0;
+- }
+- col++;
+- red = (unsigned char)(3. * dr);
+- green = (unsigned char)(3. * dg);
+- blue = (unsigned char)(3. * db);
+- b = red;
+- b = (b<<2) + green;
+- b = (b<<2) + blue;
+- if(col < width) {
+- gl2psGetRGB(im, col, row, &dr, &dg, &db);
+- }
+- else {
+- dr = dg = db = 0;
+- }
+- col++;
+- red = (unsigned char)(3. * dr);
+- green = (unsigned char)(3. * dg);
+- blue = (unsigned char)(3. * db);
+- b = (b<<2) + red;
+- gl2psWriteByte(b);
+- b = 0;
+- icase++;
+- }
+- else if(icase == 2) {
+- b = green;
+- b = (b<<2) + blue;
+- if(col < width) {
+- gl2psGetRGB(im, col, row, &dr, &dg, &db);
+- }
+- else {
+- dr = dg = db = 0;
+- }
+- col++;
+- red = (unsigned char)(3. * dr);
+- green = (unsigned char)(3. * dg);
+- blue = (unsigned char)(3. * db);
+- b = (b<<2) + red;
+- b = (b<<2) + green;
+- gl2psWriteByte(b);
+- b = 0;
+- icase++;
+- }
+- else if(icase == 3) {
+- b = blue;
+- if(col < width) {
+- gl2psGetRGB(im, col, row, &dr, &dg, &db);
+- }
+- else {
+- dr = dg = db = 0;
+- }
+- col++;
+- red = (unsigned char)(3. * dr);
+- green = (unsigned char)(3. * dg);
+- blue = (unsigned char)(3. * db);
+- b = (b<<2) + red;
+- b = (b<<2) + green;
+- b = (b<<2) + blue;
+- gl2psWriteByte(b);
+- b = 0;
+- icase = 1;
+- }
+- }
+- gl2psPrintf("\n");
+- }
+- }
+- else if(nbit == 4){ /* color, 4 bits for r and g and b; rgbs following each other */
+- nrgb = width * 3;
+- nbits = nrgb * nbit;
+- nbyte = nbits / 8;
+- if((nbyte * 8) != nbits) nbyte++;
+- gl2psPrintf("/rgbstr %d string def\n", nbyte);
+- gl2psPrintf("%d %d %d\n", width, height, nbit);
+- gl2psPrintf("[ %d 0 0 -%d 0 %d ]\n", width, height, height);
+- gl2psPrintf("{ currentfile rgbstr readhexstring pop }\n");
+- gl2psPrintf("false 3\n");
+- gl2psPrintf("colorimage\n");
+- for(row = 0; row < height; row++){
+- col = 0;
+- icase = 1;
+- for(ibyte = 0; ibyte < nbyte; ibyte++){
+- if(icase == 1) {
+- if(col < width) {
+- gl2psGetRGB(im, col, row, &dr, &dg, &db);
+- }
+- else {
+- dr = dg = db = 0;
+- }
+- col++;
+- red = (unsigned char)(15. * dr);
+- green = (unsigned char)(15. * dg);
+- gl2psPrintf("%x%x", red, green);
+- icase++;
+- }
+- else if(icase == 2) {
+- blue = (unsigned char)(15. * db);
+- if(col < width) {
+- gl2psGetRGB(im, col, row, &dr, &dg, &db);
+- }
+- else {
+- dr = dg = db = 0;
+- }
+- col++;
+- red = (unsigned char)(15. * dr);
+- gl2psPrintf("%x%x", blue, red);
+- icase++;
+- }
+- else if(icase == 3) {
+- green = (unsigned char)(15. * dg);
+- blue = (unsigned char)(15. * db);
+- gl2psPrintf("%x%x", green, blue);
+- icase = 1;
+- }
+- }
+- gl2psPrintf("\n");
+- }
+- }
+- else{ /* 8 bit for r and g and b */
+- nbyte = width * 3;
+- gl2psPrintf("/rgbstr %d string def\n", nbyte);
+- gl2psPrintf("%d %d %d\n", width, height, 8);
+- gl2psPrintf("[ %d 0 0 -%d 0 %d ]\n", width, height, height);
+- gl2psPrintf("{ currentfile rgbstr readhexstring pop }\n");
+- gl2psPrintf("false 3\n");
+- gl2psPrintf("colorimage\n");
+- for(row = 0; row < height; row++){
+- for(col = 0; col < width; col++){
+- gl2psGetRGB(im, col, row, &dr, &dg, &db);
+- red = (unsigned char)(255. * dr);
+- gl2psWriteByte(red);
+- green = (unsigned char)(255. * dg);
+- gl2psWriteByte(green);
+- blue = (unsigned char)(255. * db);
+- gl2psWriteByte(blue);
+- }
+- gl2psPrintf("\n");
+- }
+- }
+-
+- gl2psPrintf("grestore\n");
+-}
+-
+-static void gl2psPrintPostScriptImagemap(GLfloat x, GLfloat y,
+- GLsizei width, GLsizei height,
+- const unsigned char *imagemap){
+- int i, size;
+-
+- if((width <= 0) || (height <= 0)) return;
+-
+- size = height + height * (width - 1) / 8;
+-
+- gl2psPrintf("gsave\n");
+- gl2psPrintf("%.2f %.2f translate\n", x, y);
+- gl2psPrintf("%d %d scale\n%d %d\ntrue\n", width, height,width, height);
+- gl2psPrintf("[ %d 0 0 -%d 0 %d ] {<", width, height);
+- for(i = 0; i < size; i++){
+- gl2psWriteByte(*imagemap);
+- imagemap++;
+- }
+- gl2psPrintf(">} imagemask\ngrestore\n");
+-}
+-
+-static void gl2psPrintPostScriptHeader(void)
+-{
+- time_t now;
+-
+- /* Since compression is not part of the PostScript standard,
+- compressed PostScript files are just gzipped PostScript files
+- ("ps.gz" or "eps.gz") */
+- gl2psPrintGzipHeader();
+-
+- time(&now);
+-
+- if(gl2ps->format == GL2PS_PS){
+- gl2psPrintf("%%!PS-Adobe-3.0\n");
+- }
+- else{
+- gl2psPrintf("%%!PS-Adobe-3.0 EPSF-3.0\n");
+- }
+-
+- gl2psPrintf("%%%%Title: %s\n"
+- "%%%%Creator: GL2PS %d.%d.%d%s, %s\n"
+- "%%%%For: %s\n"
+- "%%%%CreationDate: %s"
+- "%%%%LanguageLevel: 3\n"
+- "%%%%DocumentData: Clean7Bit\n"
+- "%%%%Pages: 1\n",
+- gl2ps->title, GL2PS_MAJOR_VERSION, GL2PS_MINOR_VERSION,
+- GL2PS_PATCH_VERSION, GL2PS_EXTRA_VERSION, GL2PS_COPYRIGHT,
+- gl2ps->producer, ctime(&now));
+-
+- if(gl2ps->format == GL2PS_PS){
+- gl2psPrintf("%%%%Orientation: %s\n"
+- "%%%%DocumentMedia: Default %d %d 0 () ()\n",
+- (gl2ps->options & GL2PS_LANDSCAPE) ? "Landscape" : "Portrait",
+- (gl2ps->options & GL2PS_LANDSCAPE) ? (int)gl2ps->viewport[3] :
+- (int)gl2ps->viewport[2],
+- (gl2ps->options & GL2PS_LANDSCAPE) ? (int)gl2ps->viewport[2] :
+- (int)gl2ps->viewport[3]);
+- }
+-
+- gl2psPrintf("%%%%BoundingBox: %d %d %d %d\n"
+- "%%%%EndComments\n",
+- (gl2ps->options & GL2PS_LANDSCAPE) ? (int)gl2ps->viewport[1] :
+- (int)gl2ps->viewport[0],
+- (gl2ps->options & GL2PS_LANDSCAPE) ? (int)gl2ps->viewport[0] :
+- (int)gl2ps->viewport[1],
+- (gl2ps->options & GL2PS_LANDSCAPE) ? (int)gl2ps->viewport[3] :
+- (int)gl2ps->viewport[2],
+- (gl2ps->options & GL2PS_LANDSCAPE) ? (int)gl2ps->viewport[2] :
+- (int)gl2ps->viewport[3]);
+-
+- /* RGB color: r g b C (replace C by G in output to change from rgb to gray)
+- Grayscale: r g b G
+- Font choose: size fontname FC
+- Text string: (string) x y size fontname S??
+- Rotated text string: (string) angle x y size fontname S??R
+- Point primitive: x y size P
+- Line width: width W
+- Line start: x y LS
+- Line joining last point: x y L
+- Line end: x y LE
+- Flat-shaded triangle: x3 y3 x2 y2 x1 y1 T
+- Smooth-shaded triangle: x3 y3 r3 g3 b3 x2 y2 r2 g2 b2 x1 y1 r1 g1 b1 ST */
+-
+- gl2psPrintf("%%%%BeginProlog\n"
+- "/gl2psdict 64 dict def gl2psdict begin\n"
+- "0 setlinecap 0 setlinejoin\n"
+- "/tryPS3shading %s def %% set to false to force subdivision\n"
+- "/rThreshold %g def %% red component subdivision threshold\n"
+- "/gThreshold %g def %% green component subdivision threshold\n"
+- "/bThreshold %g def %% blue component subdivision threshold\n",
+- (gl2ps->options & GL2PS_NO_PS3_SHADING) ? "false" : "true",
+- gl2ps->threshold[0], gl2ps->threshold[1], gl2ps->threshold[2]);
+-
+- gl2psPrintf("/BD { bind def } bind def\n"
+- "/C { setrgbcolor } BD\n"
+- "/G { 0.082 mul exch 0.6094 mul add exch 0.3086 mul add neg 1.0 add setgray } BD\n"
+- "/W { setlinewidth } BD\n");
+-
+- gl2psPrintf("/FC { findfont exch /SH exch def SH scalefont setfont } BD\n"
+- "/SW { dup stringwidth pop } BD\n"
+- "/S { FC moveto show } BD\n"
+- "/SBC{ FC moveto SW -2 div 0 rmoveto show } BD\n"
+- "/SBR{ FC moveto SW neg 0 rmoveto show } BD\n"
+- "/SCL{ FC moveto 0 SH -2 div rmoveto show } BD\n"
+- "/SCC{ FC moveto SW -2 div SH -2 div rmoveto show } BD\n"
+- "/SCR{ FC moveto SW neg SH -2 div rmoveto show } BD\n"
+- "/STL{ FC moveto 0 SH neg rmoveto show } BD\n"
+- "/STC{ FC moveto SW -2 div SH neg rmoveto show } BD\n"
+- "/STR{ FC moveto SW neg SH neg rmoveto show } BD\n");
+-
+- /* rotated text routines: same nameanem with R appended */
+-
+- gl2psPrintf("/FCT { FC translate 0 0 } BD\n"
+- "/SR { gsave FCT moveto rotate show grestore } BD\n"
+- "/SBCR{ gsave FCT moveto rotate SW -2 div 0 rmoveto show grestore } BD\n"
+- "/SBRR{ gsave FCT moveto rotate SW neg 0 rmoveto show grestore } BD\n"
+- "/SCLR{ gsave FCT moveto rotate 0 SH -2 div rmoveto show grestore} BD\n");
+- gl2psPrintf("/SCCR{ gsave FCT moveto rotate SW -2 div SH -2 div rmoveto show grestore} BD\n"
+- "/SCRR{ gsave FCT moveto rotate SW neg SH -2 div rmoveto show grestore} BD\n"
+- "/STLR{ gsave FCT moveto rotate 0 SH neg rmoveto show grestore } BD\n"
+- "/STCR{ gsave FCT moveto rotate SW -2 div SH neg rmoveto show grestore } BD\n"
+- "/STRR{ gsave FCT moveto rotate SW neg SH neg rmoveto show grestore } BD\n");
+-
+- gl2psPrintf("/P { newpath 0.0 360.0 arc closepath fill } BD\n"
+- "/LS { newpath moveto } BD\n"
+- "/L { lineto } BD\n"
+- "/LE { lineto stroke } BD\n"
+- "/T { newpath moveto lineto lineto closepath fill } BD\n");
+-
+- /* Smooth-shaded triangle with PostScript level 3 shfill operator:
+- x3 y3 r3 g3 b3 x2 y2 r2 g2 b2 x1 y1 r1 g1 b1 STshfill */
+-
+- gl2psPrintf("/STshfill {\n"
+- " /b1 exch def /g1 exch def /r1 exch def /y1 exch def /x1 exch def\n"
+- " /b2 exch def /g2 exch def /r2 exch def /y2 exch def /x2 exch def\n"
+- " /b3 exch def /g3 exch def /r3 exch def /y3 exch def /x3 exch def\n"
+- " gsave << /ShadingType 4 /ColorSpace [/DeviceRGB]\n"
+- " /DataSource [ 0 x1 y1 r1 g1 b1 0 x2 y2 r2 g2 b2 0 x3 y3 r3 g3 b3 ] >>\n"
+- " shfill grestore } BD\n");
+-
+- /* Flat-shaded triangle with middle color:
+- x3 y3 r3 g3 b3 x2 y2 r2 g2 b2 x1 y1 r1 g1 b1 Tm */
+-
+- gl2psPrintf(/* stack : x3 y3 r3 g3 b3 x2 y2 r2 g2 b2 x1 y1 r1 g1 b1 */
+- "/Tm { 3 -1 roll 8 -1 roll 13 -1 roll add add 3 div\n" /* r = (r1+r2+r3)/3 */
+- /* stack : x3 y3 g3 b3 x2 y2 g2 b2 x1 y1 g1 b1 r */
+- " 3 -1 roll 7 -1 roll 11 -1 roll add add 3 div\n" /* g = (g1+g2+g3)/3 */
+- /* stack : x3 y3 b3 x2 y2 b2 x1 y1 b1 r g b */
+- " 3 -1 roll 6 -1 roll 9 -1 roll add add 3 div" /* b = (b1+b2+b3)/3 */
+- /* stack : x3 y3 x2 y2 x1 y1 r g b */
+- " C T } BD\n");
+-
+- /* Split triangle in four sub-triangles (at sides middle points) and call the
+- STnoshfill procedure on each, interpolating the colors in RGB space:
+- x3 y3 r3 g3 b3 x2 y2 r2 g2 b2 x1 y1 r1 g1 b1 STsplit
+- (in procedure comments key: (Vi) = xi yi ri gi bi) */
+-
+- gl2psPrintf("/STsplit {\n"
+- " 4 index 15 index add 0.5 mul\n" /* x13 = (x1+x3)/2 */
+- " 4 index 15 index add 0.5 mul\n" /* y13 = (y1+y3)/2 */
+- " 4 index 15 index add 0.5 mul\n" /* r13 = (r1+r3)/2 */
+- " 4 index 15 index add 0.5 mul\n" /* g13 = (g1+g3)/2 */
+- " 4 index 15 index add 0.5 mul\n" /* b13 = (b1+b3)/2 */
+- " 5 copy 5 copy 25 15 roll\n");
+-
+- /* at his point, stack = (V3) (V13) (V13) (V13) (V2) (V1) */
+-
+- gl2psPrintf(" 9 index 30 index add 0.5 mul\n" /* x23 = (x2+x3)/2 */
+- " 9 index 30 index add 0.5 mul\n" /* y23 = (y2+y3)/2 */
+- " 9 index 30 index add 0.5 mul\n" /* r23 = (r2+r3)/2 */
+- " 9 index 30 index add 0.5 mul\n" /* g23 = (g2+g3)/2 */
+- " 9 index 30 index add 0.5 mul\n" /* b23 = (b2+b3)/2 */
+- " 5 copy 5 copy 35 5 roll 25 5 roll 15 5 roll\n");
+-
+- /* stack = (V3) (V13) (V23) (V13) (V23) (V13) (V23) (V2) (V1) */
+-
+- gl2psPrintf(" 4 index 10 index add 0.5 mul\n" /* x12 = (x1+x2)/2 */
+- " 4 index 10 index add 0.5 mul\n" /* y12 = (y1+y2)/2 */
+- " 4 index 10 index add 0.5 mul\n" /* r12 = (r1+r2)/2 */
+- " 4 index 10 index add 0.5 mul\n" /* g12 = (g1+g2)/2 */
+- " 4 index 10 index add 0.5 mul\n" /* b12 = (b1+b2)/2 */
+- " 5 copy 5 copy 40 5 roll 25 5 roll 15 5 roll 25 5 roll\n");
+-
+- /* stack = (V3) (V13) (V23) (V13) (V12) (V23) (V13) (V1) (V12) (V23) (V12) (V2) */
+-
+- gl2psPrintf(" STnoshfill STnoshfill STnoshfill STnoshfill } BD\n");
+-
+- /* Gouraud shaded triangle using recursive subdivision until the difference
+- between corner colors does not exceed the thresholds:
+- x3 y3 r3 g3 b3 x2 y2 r2 g2 b2 x1 y1 r1 g1 b1 STnoshfill */
+-
+- gl2psPrintf("/STnoshfill {\n"
+- " 2 index 8 index sub abs rThreshold gt\n" /* |r1-r2|>rth */
+- " { STsplit }\n"
+- " { 1 index 7 index sub abs gThreshold gt\n" /* |g1-g2|>gth */
+- " { STsplit }\n"
+- " { dup 6 index sub abs bThreshold gt\n" /* |b1-b2|>bth */
+- " { STsplit }\n"
+- " { 2 index 13 index sub abs rThreshold gt\n" /* |r1-r3|>rht */
+- " { STsplit }\n"
+- " { 1 index 12 index sub abs gThreshold gt\n" /* |g1-g3|>gth */
+- " { STsplit }\n"
+- " { dup 11 index sub abs bThreshold gt\n" /* |b1-b3|>bth */
+- " { STsplit }\n"
+- " { 7 index 13 index sub abs rThreshold gt\n"); /* |r2-r3|>rht */
+- gl2psPrintf(" { STsplit }\n"
+- " { 6 index 12 index sub abs gThreshold gt\n" /* |g2-g3|>gth */
+- " { STsplit }\n"
+- " { 5 index 11 index sub abs bThreshold gt\n" /* |b2-b3|>bth */
+- " { STsplit }\n"
+- " { Tm }\n" /* all colors sufficiently similar */
+- " ifelse }\n"
+- " ifelse }\n"
+- " ifelse }\n"
+- " ifelse }\n"
+- " ifelse }\n"
+- " ifelse }\n"
+- " ifelse }\n"
+- " ifelse }\n"
+- " ifelse } BD\n");
+-
+- gl2psPrintf("tryPS3shading\n"
+- "{ /shfill where\n"
+- " { /ST { STshfill } BD }\n"
+- " { /ST { STnoshfill } BD }\n"
+- " ifelse }\n"
+- "{ /ST { STnoshfill } BD }\n"
+- "ifelse\n");
+-
+- gl2psPrintf("end\n"
+- "%%%%EndProlog\n"
+- "%%%%BeginSetup\n"
+- "/DeviceRGB setcolorspace\n"
+- "gl2psdict begin\n"
+- "%%%%EndSetup\n"
+- "%%%%Page: 1 1\n"
+- "%%%%BeginPageSetup\n");
+-
+- if(gl2ps->options & GL2PS_LANDSCAPE){
+- gl2psPrintf("%d 0 translate 90 rotate\n",
+- (int)gl2ps->viewport[3]);
+- }
+-
+- gl2psPrintf("%%%%EndPageSetup\n"
+- "mark\n"
+- "gsave\n"
+- "1.0 1.0 scale\n");
+-
+- if(gl2ps->options & GL2PS_DRAW_BACKGROUND){
+- gl2psPrintf("%g %g %g C\n"
+- "newpath %d %d moveto %d %d lineto %d %d lineto %d %d lineto\n"
+- "closepath fill\n",
+- gl2ps->bgcolor[0], gl2ps->bgcolor[1], gl2ps->bgcolor[2],
+- (int)gl2ps->viewport[0], (int)gl2ps->viewport[1], (int)gl2ps->viewport[2],
+- (int)gl2ps->viewport[1], (int)gl2ps->viewport[2], (int)gl2ps->viewport[3],
+- (int)gl2ps->viewport[0], (int)gl2ps->viewport[3]);
+- }
+-}
+-
+-static void gl2psPrintPostScriptColor(GL2PSrgba rgba)
+-{
+- if(!gl2psSameColor(gl2ps->lastrgba, rgba)){
+- gl2psSetLastColor(rgba);
+- gl2psPrintf("%g %g %g C\n", rgba[0], rgba[1], rgba[2]);
+- }
+-}
+-
+-static void gl2psResetPostScriptColor(void)
+-{
+- gl2ps->lastrgba[0] = gl2ps->lastrgba[1] = gl2ps->lastrgba[2] = -1.;
+-}
+-
+-static void gl2psEndPostScriptLine(void)
+-{
+- int i;
+- if(gl2ps->lastvertex.rgba[0] >= 0.){
+- gl2psPrintf("%g %g LE\n", gl2ps->lastvertex.xyz[0], gl2ps->lastvertex.xyz[1]);
+- for(i = 0; i < 3; i++)
+- gl2ps->lastvertex.xyz[i] = -1.;
+- for(i = 0; i < 4; i++)
+- gl2ps->lastvertex.rgba[i] = -1.;
+- }
+-}
+-
+-static void gl2psParseStipplePattern(GLushort pattern, GLint factor,
+- int *nb, int array[10])
+-{
+- int i, n;
+- int on[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+- int off[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+- char tmp[16];
+-
+- /* extract the 16 bits from the OpenGL stipple pattern */
+- for(n = 15; n >= 0; n--){
+- tmp[n] = (char)(pattern & 0x01);
+- pattern >>= 1;
+- }
+- /* compute the on/off pixel sequence */
+- n = 0;
+- for(i = 0; i < 8; i++){
+- while(n < 16 && !tmp[n]){ off[i]++; n++; }
+- while(n < 16 && tmp[n]){ on[i]++; n++; }
+- if(n >= 15){ i++; break; }
+- }
+-
+- /* store the on/off array from right to left, starting with off
+- pixels. The PostScript specification allows for at most 11
+- elements in the on/off array, so we limit ourselves to 5 on/off
+- couples (our longest possible array is thus [on4 off4 on3 off3
+- on2 off2 on1 off1 on0 off0]) */
+- *nb = 0;
+- for(n = i - 1; n >= 0; n--){
+- array[(*nb)++] = factor * on[n];
+- array[(*nb)++] = factor * off[n];
+- if(*nb == 10) break;
+- }
+-}
+-
+-static int gl2psPrintPostScriptDash(GLushort pattern, GLint factor, const char *str)
+-{
+- int len = 0, i, n, array[10];
+-
+- if(pattern == gl2ps->lastpattern && factor == gl2ps->lastfactor)
+- return 0;
+-
+- gl2ps->lastpattern = pattern;
+- gl2ps->lastfactor = factor;
+-
+- if(!pattern || !factor){
+- /* solid line */
+- len += gl2psPrintf("[] 0 %s\n", str);
+- }
+- else{
+- gl2psParseStipplePattern(pattern, factor, &n, array);
+- len += gl2psPrintf("[");
+- for(i = 0; i < n; i++){
+- if(i) len += gl2psPrintf(" ");
+- len += gl2psPrintf("%d", array[i]);
+- }
+- len += gl2psPrintf("] 0 %s\n", str);
+- }
+-
+- return len;
+-}
+-
+-static void gl2psPrintPostScriptPrimitive(void *data)
+-{
+- int newline;
+- GL2PSprimitive *prim;
+-
+- prim = *(GL2PSprimitive**)data;
+-
+- if((gl2ps->options & GL2PS_OCCLUSION_CULL) && prim->culled) return;
+-
+- /* Every effort is made to draw lines as connected segments (i.e.,
+- using a single PostScript path): this is the only way to get nice
+- line joins and to not restart the stippling for every line
+- segment. So if the primitive to print is not a line we must first
+- finish the current line (if any): */
+- if(prim->type != GL2PS_LINE) gl2psEndPostScriptLine();
+-
+- switch(prim->type){
+- case GL2PS_POINT :
+- gl2psPrintPostScriptColor(prim->verts[0].rgba);
+- gl2psPrintf("%g %g %g P\n",
+- prim->verts[0].xyz[0], prim->verts[0].xyz[1], 0.5 * prim->width);
+- break;
+- case GL2PS_LINE :
+- if(!gl2psSamePosition(gl2ps->lastvertex.xyz, prim->verts[0].xyz) ||
+- !gl2psSameColor(gl2ps->lastrgba, prim->verts[0].rgba) ||
+- gl2ps->lastlinewidth != prim->width ||
+- gl2ps->lastpattern != prim->pattern ||
+- gl2ps->lastfactor != prim->factor){
+- /* End the current line if the new segment does not start where
+- the last one ended, or if the color, the width or the
+- stippling have changed (multi-stroking lines with changing
+- colors is necessary until we use /shfill for lines;
+- unfortunately this means that at the moment we can screw up
+- line stippling for smooth-shaded lines) */
+- gl2psEndPostScriptLine();
+- newline = 1;
+- }
+- else{
+- newline = 0;
+- }
+- if(gl2ps->lastlinewidth != prim->width){
+- gl2ps->lastlinewidth = prim->width;
+- gl2psPrintf("%g W\n", gl2ps->lastlinewidth);
+- }
+- gl2psPrintPostScriptDash(prim->pattern, prim->factor, "setdash");
+- gl2psPrintPostScriptColor(prim->verts[0].rgba);
+- gl2psPrintf("%g %g %s\n", prim->verts[0].xyz[0], prim->verts[0].xyz[1],
+- newline ? "LS" : "L");
+- gl2ps->lastvertex = prim->verts[1];
+- break;
+- case GL2PS_TRIANGLE :
+- if(!gl2psVertsSameColor(prim)){
+- gl2psResetPostScriptColor();
+- gl2psPrintf("%g %g %g %g %g %g %g %g %g %g %g %g %g %g %g ST\n",
+- prim->verts[2].xyz[0], prim->verts[2].xyz[1],
+- prim->verts[2].rgba[0], prim->verts[2].rgba[1],
+- prim->verts[2].rgba[2], prim->verts[1].xyz[0],
+- prim->verts[1].xyz[1], prim->verts[1].rgba[0],
+- prim->verts[1].rgba[1], prim->verts[1].rgba[2],
+- prim->verts[0].xyz[0], prim->verts[0].xyz[1],
+- prim->verts[0].rgba[0], prim->verts[0].rgba[1],
+- prim->verts[0].rgba[2]);
+- }
+- else{
+- gl2psPrintPostScriptColor(prim->verts[0].rgba);
+- gl2psPrintf("%g %g %g %g %g %g T\n",
+- prim->verts[2].xyz[0], prim->verts[2].xyz[1],
+- prim->verts[1].xyz[0], prim->verts[1].xyz[1],
+- prim->verts[0].xyz[0], prim->verts[0].xyz[1]);
+- }
+- break;
+- case GL2PS_QUADRANGLE :
+- gl2psMsg(GL2PS_WARNING, "There should not be any quad left to print");
+- break;
+- case GL2PS_PIXMAP :
+- gl2psPrintPostScriptPixmap(prim->verts[0].xyz[0], prim->verts[0].xyz[1],
+- prim->data.image);
+- break;
+- case GL2PS_IMAGEMAP :
+- if(prim->data.image->type != GL2PS_IMAGEMAP_WRITTEN){
+- gl2psPrintPostScriptColor(prim->verts[0].rgba);
+- gl2psPrintPostScriptImagemap(prim->data.image->pixels[0],
+- prim->data.image->pixels[1],
+- prim->data.image->width, prim->data.image->height,
+- (const unsigned char*)(&(prim->data.image->pixels[2])));
+- prim->data.image->type = GL2PS_IMAGEMAP_WRITTEN;
+- }
+- break;
+- case GL2PS_TEXT :
+- gl2psPrintPostScriptColor(prim->verts[0].rgba);
+- gl2psPrintf("(%s) ", prim->data.text->str);
+- if(prim->data.text->angle)
+- gl2psPrintf("%g ", prim->data.text->angle);
+- gl2psPrintf("%g %g %d /%s ",
+- prim->verts[0].xyz[0], prim->verts[0].xyz[1],
+- prim->data.text->fontsize, prim->data.text->fontname);
+- switch(prim->data.text->alignment){
+- case GL2PS_TEXT_C:
+- gl2psPrintf(prim->data.text->angle ? "SCCR\n" : "SCC\n");
+- break;
+- case GL2PS_TEXT_CL:
+- gl2psPrintf(prim->data.text->angle ? "SCLR\n" : "SCL\n");
+- break;
+- case GL2PS_TEXT_CR:
+- gl2psPrintf(prim->data.text->angle ? "SCRR\n" : "SCR\n");
+- break;
+- case GL2PS_TEXT_B:
+- gl2psPrintf(prim->data.text->angle ? "SBCR\n" : "SBC\n");
+- break;
+- case GL2PS_TEXT_BR:
+- gl2psPrintf(prim->data.text->angle ? "SBRR\n" : "SBR\n");
+- break;
+- case GL2PS_TEXT_T:
+- gl2psPrintf(prim->data.text->angle ? "STCR\n" : "STC\n");
+- break;
+- case GL2PS_TEXT_TL:
+- gl2psPrintf(prim->data.text->angle ? "STLR\n" : "STL\n");
+- break;
+- case GL2PS_TEXT_TR:
+- gl2psPrintf(prim->data.text->angle ? "STRR\n" : "STR\n");
+- break;
+- case GL2PS_TEXT_BL:
+- default:
+- gl2psPrintf(prim->data.text->angle ? "SR\n" : "S\n");
+- break;
+- }
+- break;
+- case GL2PS_SPECIAL :
+- /* alignment contains the format for which the special output text
+- is intended */
+- if(prim->data.text->alignment == GL2PS_PS ||
+- prim->data.text->alignment == GL2PS_EPS)
+- gl2psPrintf("%s\n", prim->data.text->str);
+- break;
+- default :
+- break;
+- }
+-}
+-
+-static void gl2psPrintPostScriptFooter(void)
+-{
+- gl2psPrintf("grestore\n"
+- "showpage\n"
+- "cleartomark\n"
+- "%%%%PageTrailer\n"
+- "%%%%Trailer\n"
+- "end\n"
+- "%%%%EOF\n");
+-
+- gl2psPrintGzipFooter();
+-}
+-
+-static void gl2psPrintPostScriptBeginViewport(GLint viewport[4])
+-{
+- GLint index;
+- GLfloat rgba[4];
+- int x = viewport[0], y = viewport[1], w = viewport[2], h = viewport[3];
+-
+- glRenderMode(GL_FEEDBACK);
+-
+- if(gl2ps->header){
+- gl2psPrintPostScriptHeader();
+- gl2ps->header = GL_FALSE;
+- }
+-
+- gl2psPrintf("gsave\n"
+- "1.0 1.0 scale\n");
+-
+- if(gl2ps->options & GL2PS_DRAW_BACKGROUND){
+- if(gl2ps->colormode == GL_RGBA || gl2ps->colorsize == 0){
+- glGetFloatv(GL_COLOR_CLEAR_VALUE, rgba);
+- }
+- else{
+- glGetIntegerv(GL_INDEX_CLEAR_VALUE, &index);
+- rgba[0] = gl2ps->colormap[index][0];
+- rgba[1] = gl2ps->colormap[index][1];
+- rgba[2] = gl2ps->colormap[index][2];
+- rgba[3] = 1.0F;
+- }
+- gl2psPrintf("%g %g %g C\n"
+- "newpath %d %d moveto %d %d lineto %d %d lineto %d %d lineto\n"
+- "closepath fill\n",
+- rgba[0], rgba[1], rgba[2],
+- x, y, x+w, y, x+w, y+h, x, y+h);
+- }
+-
+- gl2psPrintf("newpath %d %d moveto %d %d lineto %d %d lineto %d %d lineto\n"
+- "closepath clip\n",
+- x, y, x+w, y, x+w, y+h, x, y+h);
+-
+-}
+-
+-static GLint gl2psPrintPostScriptEndViewport(void)
+-{
+- GLint res;
+-
+- res = gl2psPrintPrimitives();
+- gl2psPrintf("grestore\n");
+- return res;
+-}
+-
+-static void gl2psPrintPostScriptFinalPrimitive(void)
+-{
+- /* End any remaining line, if any */
+- gl2psEndPostScriptLine();
+-}
+-
+-/* definition of the PostScript and Encapsulated PostScript backends */
+-
+-static GL2PSbackend gl2psPS = {
+- gl2psPrintPostScriptHeader,
+- gl2psPrintPostScriptFooter,
+- gl2psPrintPostScriptBeginViewport,
+- gl2psPrintPostScriptEndViewport,
+- gl2psPrintPostScriptPrimitive,
+- gl2psPrintPostScriptFinalPrimitive,
+- "ps",
+- "Postscript"
+-};
+-
+-static GL2PSbackend gl2psEPS = {
+- gl2psPrintPostScriptHeader,
+- gl2psPrintPostScriptFooter,
+- gl2psPrintPostScriptBeginViewport,
+- gl2psPrintPostScriptEndViewport,
+- gl2psPrintPostScriptPrimitive,
+- gl2psPrintPostScriptFinalPrimitive,
+- "eps",
+- "Encapsulated Postscript"
+-};
+-
+-/*********************************************************************
+- *
+- * LaTeX routines
+- *
+- *********************************************************************/
+-
+-static void gl2psPrintTeXHeader(void)
+-{
+- char name[256];
+- time_t now;
+- int i;
+-
+- if(gl2ps->filename && strlen(gl2ps->filename) < 256){
+- for(i = strlen(gl2ps->filename)-1; i >= 0; i--){
+- if(gl2ps->filename[i] == '.'){
+- strncpy(name, gl2ps->filename, i);
+- name[i] = '\0';
+- break;
+- }
+- }
+- if(i <= 0) strcpy(name, gl2ps->filename);
+- }
+- else{
+- strcpy(name, "untitled");
+- }
+-
+- time(&now);
+-
+- fprintf(gl2ps->stream,
+- "%% Title: %s\n"
+- "%% Creator: GL2PS %d.%d.%d%s, %s\n"
+- "%% For: %s\n"
+- "%% CreationDate: %s",
+- gl2ps->title, GL2PS_MAJOR_VERSION, GL2PS_MINOR_VERSION,
+- GL2PS_PATCH_VERSION, GL2PS_EXTRA_VERSION, GL2PS_COPYRIGHT,
+- gl2ps->producer, ctime(&now));
+-
+- fprintf(gl2ps->stream,
+- "\\setlength{\\unitlength}{1pt}\n"
+- "\\begin{picture}(0,0)\n"
+- "\\includegraphics{%s}\n"
+- "\\end{picture}%%\n"
+- "%s\\begin{picture}(%d,%d)(0,0)\n",
+- name, (gl2ps->options & GL2PS_LANDSCAPE) ? "\\rotatebox{90}{" : "",
+- (int)gl2ps->viewport[2], (int)gl2ps->viewport[3]);
+-}
+-
+-static void gl2psPrintTeXPrimitive(void *data)
+-{
+- GL2PSprimitive *prim;
+-
+- prim = *(GL2PSprimitive**)data;
+-
+- switch(prim->type){
+- case GL2PS_TEXT :
+- fprintf(gl2ps->stream, "\\fontsize{%d}{0}\n\\selectfont",
+- prim->data.text->fontsize);
+- fprintf(gl2ps->stream, "\\put(%g,%g){\\makebox(0,0)",
+- prim->verts[0].xyz[0], prim->verts[0].xyz[1]);
+- switch(prim->data.text->alignment){
+- case GL2PS_TEXT_C:
+- fprintf(gl2ps->stream, "{");
+- break;
+- case GL2PS_TEXT_CL:
+- fprintf(gl2ps->stream, "[l]{");
+- break;
+- case GL2PS_TEXT_CR:
+- fprintf(gl2ps->stream, "[r]{");
+- break;
+- case GL2PS_TEXT_B:
+- fprintf(gl2ps->stream, "[b]{");
+- break;
+- case GL2PS_TEXT_BR:
+- fprintf(gl2ps->stream, "[br]{");
+- break;
+- case GL2PS_TEXT_T:
+- fprintf(gl2ps->stream, "[t]{");
+- break;
+- case GL2PS_TEXT_TL:
+- fprintf(gl2ps->stream, "[tl]{");
+- break;
+- case GL2PS_TEXT_TR:
+- fprintf(gl2ps->stream, "[tr]{");
+- break;
+- case GL2PS_TEXT_BL:
+- default:
+- fprintf(gl2ps->stream, "[bl]{");
+- break;
+- }
+- if(prim->data.text->angle)
+- fprintf(gl2ps->stream, "\\rotatebox{%g}{", prim->data.text->angle);
+- fprintf(gl2ps->stream, "\\textcolor[rgb]{%g,%g,%g}{{%s}}",
+- prim->verts[0].rgba[0], prim->verts[0].rgba[1], prim->verts[0].rgba[2],
+- prim->data.text->str);
+- if(prim->data.text->angle)
+- fprintf(gl2ps->stream, "}");
+- fprintf(gl2ps->stream, "}}\n");
+- break;
+- case GL2PS_SPECIAL :
+- /* alignment contains the format for which the special output text
+- is intended */
+- if (prim->data.text->alignment == GL2PS_TEX)
+- fprintf(gl2ps->stream, "%s\n", prim->data.text->str);
+- break;
+- default :
+- break;
+- }
+-}
+-
+-static void gl2psPrintTeXFooter(void)
+-{
+- fprintf(gl2ps->stream, "\\end{picture}%s\n",
+- (gl2ps->options & GL2PS_LANDSCAPE) ? "}" : "");
+-}
+-
+-static void gl2psPrintTeXBeginViewport(GLint /*viewport*/[4])
+-{
+- glRenderMode(GL_FEEDBACK);
+-
+- if(gl2ps->header){
+- gl2psPrintTeXHeader();
+- gl2ps->header = GL_FALSE;
+- }
+-}
+-
+-static GLint gl2psPrintTeXEndViewport(void)
+-{
+- return gl2psPrintPrimitives();
+-}
+-
+-static void gl2psPrintTeXFinalPrimitive(void)
+-{
+-}
+-
+-/* definition of the LaTeX backend */
+-
+-static GL2PSbackend gl2psTEX = {
+- gl2psPrintTeXHeader,
+- gl2psPrintTeXFooter,
+- gl2psPrintTeXBeginViewport,
+- gl2psPrintTeXEndViewport,
+- gl2psPrintTeXPrimitive,
+- gl2psPrintTeXFinalPrimitive,
+- "tex",
+- "LaTeX text"
+-};
+-
+-/*********************************************************************
+- *
+- * PDF routines
+- *
+- *********************************************************************/
+-
+-static int gl2psPrintPDFCompressorType(void)
+-{
+-#if defined(GL2PS_HAVE_ZLIB)
+- if(gl2ps->options & GL2PS_COMPRESS){
+- return fprintf(gl2ps->stream, "/Filter [/FlateDecode]\n");
+- }
+-#endif
+- return 0;
+-}
+-
+-static int gl2psPrintPDFStrokeColor(GL2PSrgba rgba)
+-{
+- int i, offs = 0;
+-
+- gl2psSetLastColor(rgba);
+- for(i = 0; i < 3; ++i){
+- if(GL2PS_ZERO(rgba[i]))
+- offs += gl2psPrintf("%.0f ", 0.);
+- else if(rgba[i] < 1e-4 || rgba[i] > 1e6) /* avoid %e formatting */
+- offs += gl2psPrintf("%f ", rgba[i]);
+- else
+- offs += gl2psPrintf("%g ", rgba[i]);
+- }
+- offs += gl2psPrintf("RG\n");
+- return offs;
+-}
+-
+-static int gl2psPrintPDFFillColor(GL2PSrgba rgba)
+-{
+- int i, offs = 0;
+-
+- for(i = 0; i < 3; ++i){
+- if(GL2PS_ZERO(rgba[i]))
+- offs += gl2psPrintf("%.0f ", 0.);
+- else if(rgba[i] < 1e-4 || rgba[i] > 1e6) /* avoid %e formatting */
+- offs += gl2psPrintf("%f ", rgba[i]);
+- else
+- offs += gl2psPrintf("%g ", rgba[i]);
+- }
+- offs += gl2psPrintf("rg\n");
+- return offs;
+-}
+-
+-static int gl2psPrintPDFLineWidth(GLfloat lw)
+-{
+- if(GL2PS_ZERO(lw))
+- return gl2psPrintf("%.0f w\n", 0.);
+- else if(lw < 1e-4 || lw > 1e6) /* avoid %e formatting */
+- return gl2psPrintf("%f w\n", lw);
+- else
+- return gl2psPrintf("%g w\n", lw);
+-}
+-
+-static void gl2psPutPDFText(GL2PSstring *text, int cnt, GLfloat x, GLfloat y)
+-{
+- gl2ps->streamlength +=
+- gl2psPrintf("BT\n"
+- "/F%d %d Tf\n"
+- "%f %f Td\n"
+- "(%s) Tj\n"
+- "ET\n",
+- cnt, text->fontsize, x, y, text->str);
+-}
+-
+-static void gl2psPutPDFImage(GL2PSimage *image, int cnt, GLfloat x, GLfloat y)
+-{
+- gl2ps->streamlength +=
+- gl2psPrintf("q\n"
+- "%d 0 0 %d %f %f cm\n"
+- "/Im%d Do\n"
+- "Q\n",
+- (int)image->width, (int)image->height, x, y, cnt);
+-}
+-
+-static void gl2psPDFstacksInit(void)
+-{
+- gl2ps->objects_stack = 7 /* FIXED_XREF_ENTRIES */ + 1;
+- gl2ps->extgs_stack = 0;
+- gl2ps->font_stack = 0;
+- gl2ps->im_stack = 0;
+- gl2ps->trgroupobjects_stack = 0;
+- gl2ps->shader_stack = 0;
+- gl2ps->mshader_stack = 0;
+-}
+-
+-static void gl2psPDFgroupObjectInit(GL2PSpdfgroup *gro)
+-{
+- if(!gro)
+- return;
+-
+- gro->ptrlist = NULL;
+- gro->fontno = gro->gsno = gro->imno = gro->maskshno = gro->shno
+- = gro->trgroupno = gro->fontobjno = gro->imobjno = gro->shobjno
+- = gro->maskshobjno = gro->gsobjno = gro->trgroupobjno = -1;
+-}
+-
+-/* Build up group objects and assign name and object numbers */
+-
+-static void gl2psPDFgroupListInit(void)
+-{
+- int i;
+- GL2PSprimitive *p = NULL;
+- GL2PSpdfgroup gro;
+- int lasttype = GL2PS_NO_TYPE;
+- GL2PSrgba lastrgba = {-1.0F, -1.0F, -1.0F, -1.0F};
+- GLushort lastpattern = 0;
+- GLint lastfactor = 0;
+- GLfloat lastwidth = 1;
+- GL2PStriangle lastt, tmpt;
+- int lastTriangleWasNotSimpleWithSameColor = 0;
+-
+- if(!gl2ps->pdfprimlist)
+- return;
+-
+- gl2ps->pdfgrouplist = gl2psListCreate(500, 500, sizeof(GL2PSpdfgroup));
+- gl2psInitTriangle(&lastt);
+-
+- for(i = 0; i < gl2psListNbr(gl2ps->pdfprimlist); ++i){
+- p = *(GL2PSprimitive**)gl2psListPointer(gl2ps->pdfprimlist, i);
+- switch(p->type){
+- case GL2PS_PIXMAP:
+- gl2psPDFgroupObjectInit(&gro);
+- gro.ptrlist = gl2psListCreate(1, 2, sizeof(GL2PSprimitive*));
+- gro.imno = gl2ps->im_stack++;
+- gl2psListAdd(gro.ptrlist, &p);
+- gl2psListAdd(gl2ps->pdfgrouplist, &gro);
+- break;
+- case GL2PS_TEXT:
+- gl2psPDFgroupObjectInit(&gro);
+- gro.ptrlist = gl2psListCreate(1, 2, sizeof(GL2PSprimitive*));
+- gro.fontno = gl2ps->font_stack++;
+- gl2psListAdd(gro.ptrlist, &p);
+- gl2psListAdd(gl2ps->pdfgrouplist, &gro);
+- break;
+- case GL2PS_LINE:
+- if(lasttype != p->type || lastwidth != p->width ||
+- lastpattern != p->pattern || lastfactor != p->factor ||
+- !gl2psSameColor(p->verts[0].rgba, lastrgba)){
+- gl2psPDFgroupObjectInit(&gro);
+- gro.ptrlist = gl2psListCreate(1, 2, sizeof(GL2PSprimitive*));
+- gl2psListAdd(gro.ptrlist, &p);
+- gl2psListAdd(gl2ps->pdfgrouplist, &gro);
+- }
+- else{
+- gl2psListAdd(gro.ptrlist, &p);
+- }
+- lastpattern = p->pattern;
+- lastfactor = p->factor;
+- lastwidth = p->width;
+- lastrgba[0] = p->verts[0].rgba[0];
+- lastrgba[1] = p->verts[0].rgba[1];
+- lastrgba[2] = p->verts[0].rgba[2];
+- break;
+- case GL2PS_POINT:
+- if(lasttype != p->type || lastwidth != p->width ||
+- !gl2psSameColor(p->verts[0].rgba, lastrgba)){
+- gl2psPDFgroupObjectInit(&gro);
+- gro.ptrlist = gl2psListCreate(1,2,sizeof(GL2PSprimitive*));
+- gl2psListAdd(gro.ptrlist, &p);
+- gl2psListAdd(gl2ps->pdfgrouplist, &gro);
+- }
+- else{
+- gl2psListAdd(gro.ptrlist, &p);
+- }
+- lastwidth = p->width;
+- lastrgba[0] = p->verts[0].rgba[0];
+- lastrgba[1] = p->verts[0].rgba[1];
+- lastrgba[2] = p->verts[0].rgba[2];
+- break;
+- case GL2PS_TRIANGLE:
+- gl2psFillTriangleFromPrimitive(&tmpt, p, GL_TRUE);
+- lastTriangleWasNotSimpleWithSameColor =
+- !(tmpt.prop & T_CONST_COLOR && tmpt.prop & T_ALPHA_1) ||
+- !gl2psSameColor(tmpt.vertex[0].rgba, lastt.vertex[0].rgba);
+- if(lasttype == p->type && tmpt.prop == lastt.prop &&
+- lastTriangleWasNotSimpleWithSameColor){
+- /* TODO Check here for last alpha */
+- gl2psListAdd(gro.ptrlist, &p);
+- }
+- else{
+- gl2psPDFgroupObjectInit(&gro);
+- gro.ptrlist = gl2psListCreate(1, 2, sizeof(GL2PSprimitive*));
+- gl2psListAdd(gro.ptrlist, &p);
+- gl2psListAdd(gl2ps->pdfgrouplist, &gro);
+- }
+- lastt = tmpt;
+- break;
+- default:
+- break;
+- }
+- lasttype = p->type;
+- }
+-}
+-
+-static void gl2psSortOutTrianglePDFgroup(GL2PSpdfgroup *gro)
+-{
+- GL2PStriangle t;
+- GL2PSprimitive *prim = NULL;
+-
+- if(!gro)
+- return;
+-
+- if(!gl2psListNbr(gro->ptrlist))
+- return;
+-
+- prim = *(GL2PSprimitive**)gl2psListPointer(gro->ptrlist, 0);
+-
+- if(prim->type != GL2PS_TRIANGLE)
+- return;
+-
+- gl2psFillTriangleFromPrimitive(&t, prim, GL_TRUE);
+-
+- if(t.prop & T_CONST_COLOR && t.prop & T_ALPHA_LESS_1){
+- gro->gsno = gl2ps->extgs_stack++;
+- gro->gsobjno = gl2ps->objects_stack ++;
+- }
+- else if(t.prop & T_CONST_COLOR && t.prop & T_VAR_ALPHA){
+- gro->gsno = gl2ps->extgs_stack++;
+- gro->gsobjno = gl2ps->objects_stack++;
+- gro->trgroupno = gl2ps->trgroupobjects_stack++;
+- gro->trgroupobjno = gl2ps->objects_stack++;
+- gro->maskshno = gl2ps->mshader_stack++;
+- gro->maskshobjno = gl2ps->objects_stack++;
+- }
+- else if(t.prop & T_VAR_COLOR && t.prop & T_ALPHA_1){
+- gro->shno = gl2ps->shader_stack++;
+- gro->shobjno = gl2ps->objects_stack++;
+- }
+- else if(t.prop & T_VAR_COLOR && t.prop & T_ALPHA_LESS_1){
+- gro->gsno = gl2ps->extgs_stack++;
+- gro->gsobjno = gl2ps->objects_stack++;
+- gro->shno = gl2ps->shader_stack++;
+- gro->shobjno = gl2ps->objects_stack++;
+- }
+- else if(t.prop & T_VAR_COLOR && t.prop & T_VAR_ALPHA){
+- gro->gsno = gl2ps->extgs_stack++;
+- gro->gsobjno = gl2ps->objects_stack++;
+- gro->shno = gl2ps->shader_stack++;
+- gro->shobjno = gl2ps->objects_stack++;
+- gro->trgroupno = gl2ps->trgroupobjects_stack++;
+- gro->trgroupobjno = gl2ps->objects_stack++;
+- gro->maskshno = gl2ps->mshader_stack++;
+- gro->maskshobjno = gl2ps->objects_stack++;
+- }
+-}
+-
+-/* Main stream data */
+-
+-static void gl2psPDFgroupListWriteMainStream(void)
+-{
+- int i, j, lastel;
+- GL2PSprimitive *prim = NULL, *prev = NULL;
+- GL2PSpdfgroup *gro;
+- GL2PStriangle t;
+-
+- if(!gl2ps->pdfgrouplist)
+- return;
+-
+- for(i = 0; i < gl2psListNbr(gl2ps->pdfgrouplist); ++i){
+- gro = (GL2PSpdfgroup*)gl2psListPointer(gl2ps->pdfgrouplist, i);
+-
+- lastel = gl2psListNbr(gro->ptrlist) - 1;
+- if(lastel < 0)
+- continue;
+-
+- prim = *(GL2PSprimitive**)gl2psListPointer(gro->ptrlist, 0);
+-
+- switch(prim->type){
+- case GL2PS_POINT:
+- gl2ps->streamlength += gl2psPrintf("1 J\n");
+- gl2ps->streamlength += gl2psPrintPDFLineWidth(prim->width);
+- gl2ps->streamlength += gl2psPrintPDFStrokeColor(prim->verts[0].rgba);
+- for(j = 0; j <= lastel; ++j){
+- prim = *(GL2PSprimitive**)gl2psListPointer(gro->ptrlist, j);
+- gl2ps->streamlength +=
+- gl2psPrintf("%f %f m %f %f l\n",
+- prim->verts[0].xyz[0], prim->verts[0].xyz[1],
+- prim->verts[0].xyz[0], prim->verts[0].xyz[1]);
+- }
+- gl2ps->streamlength += gl2psPrintf("S\n");
+- gl2ps->streamlength += gl2psPrintf("0 J\n");
+- break;
+- case GL2PS_LINE:
+- /* We try to use as few paths as possible to draw lines, in
+- order to get nice stippling even when the individual segments
+- are smaller than the stipple */
+- gl2ps->streamlength += gl2psPrintPDFLineWidth(prim->width);
+- gl2ps->streamlength += gl2psPrintPDFStrokeColor(prim->verts[0].rgba);
+- gl2ps->streamlength += gl2psPrintPostScriptDash(prim->pattern, prim->factor, "d");
+- /* start new path */
+- gl2ps->streamlength +=
+- gl2psPrintf("%f %f m\n",
+- prim->verts[0].xyz[0], prim->verts[0].xyz[1]);
+-
+- for(j = 1; j <= lastel; ++j){
+- prev = prim;
+- prim = *(GL2PSprimitive**)gl2psListPointer(gro->ptrlist, j);
+- if(!gl2psSamePosition(prim->verts[0].xyz, prev->verts[1].xyz)){
+- /* the starting point of the new segment does not match the
+- end point of the previous line, so we end the current
+- path and start a new one */
+- gl2ps->streamlength +=
+- gl2psPrintf("%f %f l\n",
+- prev->verts[1].xyz[0], prev->verts[1].xyz[1]);
+- gl2ps->streamlength +=
+- gl2psPrintf("%f %f m\n",
+- prim->verts[0].xyz[0], prim->verts[0].xyz[1]);
+- }
+- else{
+- /* the two segements are connected, so we just append to the
+- current path */
+- gl2ps->streamlength +=
+- gl2psPrintf("%f %f l\n",
+- prim->verts[0].xyz[0], prim->verts[0].xyz[1]);
+- }
+- }
+- /* end last path */
+- gl2ps->streamlength +=
+- gl2psPrintf("%f %f l\n",
+- prim->verts[1].xyz[0], prim->verts[1].xyz[1]);
+- gl2ps->streamlength += gl2psPrintf("S\n");
+- break;
+- case GL2PS_TRIANGLE:
+- gl2psFillTriangleFromPrimitive(&t, prim, GL_TRUE);
+- gl2psSortOutTrianglePDFgroup(gro);
+-
+- /* No alpha and const color: Simple PDF draw orders */
+- if(t.prop & T_CONST_COLOR && t.prop & T_ALPHA_1){
+- gl2ps->streamlength += gl2psPrintPDFFillColor(t.vertex[0].rgba);
+- for(j = 0; j <= lastel; ++j){
+- prim = *(GL2PSprimitive**)gl2psListPointer(gro->ptrlist, j);
+- gl2psFillTriangleFromPrimitive(&t, prim, GL_FALSE);
+- gl2ps->streamlength
+- += gl2psPrintf("%f %f m\n"
+- "%f %f l\n"
+- "%f %f l\n"
+- "h f\n",
+- t.vertex[0].xyz[0], t.vertex[0].xyz[1],
+- t.vertex[1].xyz[0], t.vertex[1].xyz[1],
+- t.vertex[2].xyz[0], t.vertex[2].xyz[1]);
+- }
+- }
+- /* Const alpha < 1 and const color: Simple PDF draw orders
+- and an extra extended Graphics State for the alpha const */
+- else if(t.prop & T_CONST_COLOR && t.prop & T_ALPHA_LESS_1){
+- gl2ps->streamlength += gl2psPrintf("q\n"
+- "/GS%d gs\n",
+- gro->gsno);
+- gl2ps->streamlength += gl2psPrintPDFFillColor(prim->verts[0].rgba);
+- for(j = 0; j <= lastel; ++j){
+- prim = *(GL2PSprimitive**)gl2psListPointer(gro->ptrlist, j);
+- gl2psFillTriangleFromPrimitive(&t, prim, GL_FALSE);
+- gl2ps->streamlength
+- += gl2psPrintf("%f %f m\n"
+- "%f %f l\n"
+- "%f %f l\n"
+- "h f\n",
+- t.vertex[0].xyz[0], t.vertex[0].xyz[1],
+- t.vertex[1].xyz[0], t.vertex[1].xyz[1],
+- t.vertex[2].xyz[0], t.vertex[2].xyz[1]);
+- }
+- gl2ps->streamlength += gl2psPrintf("Q\n");
+- }
+- /* Variable alpha and const color: Simple PDF draw orders
+- and an extra extended Graphics State + Xobject + Shader
+- object for the alpha mask */
+- else if(t.prop & T_CONST_COLOR && t.prop & T_VAR_ALPHA){
+- gl2ps->streamlength += gl2psPrintf("q\n"
+- "/GS%d gs\n"
+- "/TrG%d Do\n",
+- gro->gsno, gro->trgroupno);
+- gl2ps->streamlength += gl2psPrintPDFFillColor(prim->verts[0].rgba);
+- for(j = 0; j <= lastel; ++j){
+- prim = *(GL2PSprimitive**)gl2psListPointer(gro->ptrlist, j);
+- gl2psFillTriangleFromPrimitive(&t, prim, GL_FALSE);
+- gl2ps->streamlength
+- += gl2psPrintf("%f %f m\n"
+- "%f %f l\n"
+- "%f %f l\n"
+- "h f\n",
+- t.vertex[0].xyz[0], t.vertex[0].xyz[1],
+- t.vertex[1].xyz[0], t.vertex[1].xyz[1],
+- t.vertex[2].xyz[0], t.vertex[2].xyz[1]);
+- }
+- gl2ps->streamlength += gl2psPrintf("Q\n");
+- }
+- /* Variable color and no alpha: Shader Object for the colored
+- triangle(s) */
+- else if(t.prop & T_VAR_COLOR && t.prop & T_ALPHA_1){
+- gl2ps->streamlength += gl2psPrintf("/Sh%d sh\n", gro->shno);
+- }
+- /* Variable color and const alpha < 1: Shader Object for the
+- colored triangle(s) and an extra extended Graphics State
+- for the alpha const */
+- else if(t.prop & T_VAR_COLOR && t.prop & T_ALPHA_LESS_1){
+- gl2ps->streamlength += gl2psPrintf("q\n"
+- "/GS%d gs\n"
+- "/Sh%d sh\n"
+- "Q\n",
+- gro->gsno, gro->shno);
+- }
+- /* Variable alpha and color: Shader Object for the colored
+- triangle(s) and an extra extended Graphics State
+- + Xobject + Shader object for the alpha mask */
+- else if(t.prop & T_VAR_COLOR && t.prop & T_VAR_ALPHA){
+- gl2ps->streamlength += gl2psPrintf("q\n"
+- "/GS%d gs\n"
+- "/TrG%d Do\n"
+- "/Sh%d sh\n"
+- "Q\n",
+- gro->gsno, gro->trgroupno, gro->shno);
+- }
+- break;
+- case GL2PS_PIXMAP:
+- for(j = 0; j <= lastel; ++j){
+- prim = *(GL2PSprimitive**)gl2psListPointer(gro->ptrlist, j);
+- gl2psPutPDFImage(prim->data.image, gro->imno, prim->verts[0].xyz[0],
+- prim->verts[0].xyz[1]);
+- }
+- break;
+- case GL2PS_TEXT:
+- for(j = 0; j <= lastel; ++j){
+- prim = *(GL2PSprimitive**)gl2psListPointer(gro->ptrlist, j);
+- gl2ps->streamlength += gl2psPrintPDFFillColor(prim->verts[0].rgba);
+- gl2psPutPDFText(prim->data.text, gro->fontno, prim->verts[0].xyz[0],
+- prim->verts[0].xyz[1]);
+- }
+- break;
+- default:
+- break;
+- }
+- }
+-}
+-
+-/* Graphics State names */
+-
+-static int gl2psPDFgroupListWriteGStateResources(void)
+-{
+- GL2PSpdfgroup *gro;
+- int offs = 0;
+- int i;
+-
+- offs += fprintf(gl2ps->stream,
+- "/ExtGState\n"
+- "<<\n"
+- "/GSa 7 0 R\n");
+- for(i = 0; i < gl2psListNbr(gl2ps->pdfgrouplist); ++i){
+- gro = (GL2PSpdfgroup*)gl2psListPointer(gl2ps->pdfgrouplist, i);
+- if(gro->gsno >= 0)
+- offs += fprintf(gl2ps->stream, "/GS%d %d 0 R\n", gro->gsno, gro->gsobjno);
+- }
+- offs += fprintf(gl2ps->stream, ">>\n");
+- return offs;
+-}
+-
+-/* Main Shader names */
+-
+-static int gl2psPDFgroupListWriteShaderResources(void)
+-{
+- GL2PSpdfgroup *gro;
+- int offs = 0;
+- int i;
+-
+- offs += fprintf(gl2ps->stream,
+- "/Shading\n"
+- "<<\n");
+- for(i = 0; i < gl2psListNbr(gl2ps->pdfgrouplist); ++i){
+- gro = (GL2PSpdfgroup*)gl2psListPointer(gl2ps->pdfgrouplist, i);
+- if(gro->shno >= 0)
+- offs += fprintf(gl2ps->stream, "/Sh%d %d 0 R\n", gro->shno, gro->shobjno);
+- if(gro->maskshno >= 0)
+- offs += fprintf(gl2ps->stream, "/TrSh%d %d 0 R\n", gro->maskshno, gro->maskshobjno);
+- }
+- offs += fprintf(gl2ps->stream,">>\n");
+- return offs;
+-}
+-
+-/* Images & Mask Shader XObject names */
+-
+-static int gl2psPDFgroupListWriteXObjectResources(void)
+-{
+- int i;
+- GL2PSprimitive *p = NULL;
+- GL2PSpdfgroup *gro;
+- int offs = 0;
+-
+- offs += fprintf(gl2ps->stream,
+- "/XObject\n"
+- "<<\n");
+-
+- for(i = 0; i < gl2psListNbr(gl2ps->pdfgrouplist); ++i){
+- gro = (GL2PSpdfgroup*)gl2psListPointer(gl2ps->pdfgrouplist, i);
+- if(!gl2psListNbr(gro->ptrlist))
+- continue;
+- p = *(GL2PSprimitive**)gl2psListPointer(gro->ptrlist, 0);
+- switch(p->type){
+- case GL2PS_PIXMAP:
+- gro->imobjno = gl2ps->objects_stack++;
+- if(GL_RGBA == p->data.image->format) /* reserve one object for image mask */
+- gl2ps->objects_stack++;
+- offs += fprintf(gl2ps->stream, "/Im%d %d 0 R\n", gro->imno, gro->imobjno);
+- case GL2PS_TRIANGLE:
+- if(gro->trgroupno >=0)
+- offs += fprintf(gl2ps->stream, "/TrG%d %d 0 R\n", gro->trgroupno, gro->trgroupobjno);
+- break;
+- default:
+- break;
+- }
+- }
+- offs += fprintf(gl2ps->stream,">>\n");
+- return offs;
+-}
+-
+-/* Font names */
+-
+-static int gl2psPDFgroupListWriteFontResources(void)
+-{
+- int i;
+- GL2PSpdfgroup *gro;
+- int offs = 0;
+-
+- offs += fprintf(gl2ps->stream, "/Font\n<<\n");
+-
+- for(i = 0; i < gl2psListNbr(gl2ps->pdfgrouplist); ++i){
+- gro = (GL2PSpdfgroup*)gl2psListPointer(gl2ps->pdfgrouplist, i);
+- if(gro->fontno < 0)
+- continue;
+- gro->fontobjno = gl2ps->objects_stack++;
+- offs += fprintf(gl2ps->stream, "/F%d %d 0 R\n", gro->fontno, gro->fontobjno);
+- }
+- offs += fprintf(gl2ps->stream, ">>\n");
+-
+- return offs;
+-}
+-
+-static void gl2psPDFgroupListDelete(void)
+-{
+- int i;
+- GL2PSpdfgroup *gro = NULL;
+-
+- if(!gl2ps->pdfgrouplist)
+- return;
+-
+- for(i = 0; i < gl2psListNbr(gl2ps->pdfgrouplist); ++i){
+- gro = (GL2PSpdfgroup*)gl2psListPointer(gl2ps->pdfgrouplist,i);
+- gl2psListDelete(gro->ptrlist);
+- }
+-
+- gl2psListDelete(gl2ps->pdfgrouplist);
+- gl2ps->pdfgrouplist = NULL;
+-}
+-
+-/* Print 1st PDF object - file info */
+-
+-static int gl2psPrintPDFInfo(void)
+-{
+- int offs;
+- time_t now;
+- struct tm *newtime;
+-
+- time(&now);
+- newtime = gmtime(&now);
+-
+- offs = fprintf(gl2ps->stream,
+- "1 0 obj\n"
+- "<<\n"
+- "/Title (%s)\n"
+- "/Creator (GL2PS %d.%d.%d%s, %s)\n"
+- "/Producer (%s)\n",
+- gl2ps->title, GL2PS_MAJOR_VERSION, GL2PS_MINOR_VERSION,
+- GL2PS_PATCH_VERSION, GL2PS_EXTRA_VERSION, GL2PS_COPYRIGHT,
+- gl2ps->producer);
+-
+- if(!newtime){
+- offs += fprintf(gl2ps->stream,
+- ">>\n"
+- "endobj\n");
+- return offs;
+- }
+-
+- offs += fprintf(gl2ps->stream,
+- "/CreationDate (D:%d%02d%02d%02d%02d%02d)\n"
+- ">>\n"
+- "endobj\n",
+- newtime->tm_year+1900,
+- newtime->tm_mon+1,
+- newtime->tm_mday,
+- newtime->tm_hour,
+- newtime->tm_min,
+- newtime->tm_sec);
+- return offs;
+-}
+-
+-/* Create catalog and page structure - 2nd and 3th PDF object */
+-
+-static int gl2psPrintPDFCatalog(void)
+-{
+- return fprintf(gl2ps->stream,
+- "2 0 obj\n"
+- "<<\n"
+- "/Type /Catalog\n"
+- "/Pages 3 0 R\n"
+- ">>\n"
+- "endobj\n");
+-}
+-
+-static int gl2psPrintPDFPages(void)
+-{
+- return fprintf(gl2ps->stream,
+- "3 0 obj\n"
+- "<<\n"
+- "/Type /Pages\n"
+- "/Kids [6 0 R]\n"
+- "/Count 1\n"
+- ">>\n"
+- "endobj\n");
+-}
+-
+-/* Open stream for data - graphical objects, fonts etc. PDF object 4 */
+-
+-static int gl2psOpenPDFDataStream(void)
+-{
+- int offs = 0;
+-
+- offs += fprintf(gl2ps->stream,
+- "4 0 obj\n"
+- "<<\n"
+- "/Length 5 0 R\n" );
+- offs += gl2psPrintPDFCompressorType();
+- offs += fprintf(gl2ps->stream,
+- ">>\n"
+- "stream\n");
+- return offs;
+-}
+-
+-/* Stream setup - Graphics state, fill background if allowed */
+-
+-static int gl2psOpenPDFDataStreamWritePreface(void)
+-{
+- int offs;
+-
+- offs = gl2psPrintf("/GSa gs\n");
+-
+- if(gl2ps->options & GL2PS_DRAW_BACKGROUND){
+- offs += gl2psPrintPDFFillColor(gl2ps->bgcolor);
+- offs += gl2psPrintf("%d %d %d %d re\n",
+- (int)gl2ps->viewport[0], (int)gl2ps->viewport[1],
+- (int)gl2ps->viewport[2], (int)gl2ps->viewport[3]);
+- offs += gl2psPrintf("f\n");
+- }
+- return offs;
+-}
+-
+-/* Use the functions above to create the first part of the PDF*/
+-
+-static void gl2psPrintPDFHeader(void)
+-{
+- int offs = 0;
+- gl2ps->pdfprimlist = gl2psListCreate(500, 500, sizeof(GL2PSprimitive*));
+- gl2psPDFstacksInit();
+-
+- gl2ps->xreflist = (int*)gl2psMalloc(sizeof(int) * gl2ps->objects_stack);
+-
+-#if defined(GL2PS_HAVE_ZLIB)
+- if(gl2ps->options & GL2PS_COMPRESS){
+- gl2psSetupCompress();
+- }
+-#endif
+- gl2ps->xreflist[0] = 0;
+- offs += fprintf(gl2ps->stream, "%%PDF-1.4\n");
+- gl2ps->xreflist[1] = offs;
+-
+- offs += gl2psPrintPDFInfo();
+- gl2ps->xreflist[2] = offs;
+-
+- offs += gl2psPrintPDFCatalog();
+- gl2ps->xreflist[3] = offs;
+-
+- offs += gl2psPrintPDFPages();
+- gl2ps->xreflist[4] = offs;
+-
+- offs += gl2psOpenPDFDataStream();
+- gl2ps->xreflist[5] = offs; /* finished in gl2psPrintPDFFooter */
+- gl2ps->streamlength = gl2psOpenPDFDataStreamWritePreface();
+-}
+-
+-/* The central primitive drawing */
+-
+-static void gl2psPrintPDFPrimitive(void *data)
+-{
+- GL2PSprimitive *prim = *(GL2PSprimitive**)data;
+-
+- if((gl2ps->options & GL2PS_OCCLUSION_CULL) && prim->culled)
+- return;
+-
+- prim = gl2psCopyPrimitive(prim); /* deep copy */
+- gl2psListAdd(gl2ps->pdfprimlist, &prim);
+-}
+-
+-/* close stream and ... */
+-
+-static int gl2psClosePDFDataStream(void)
+-{
+- int offs = 0;
+-
+-#if defined(GL2PS_HAVE_ZLIB)
+- if(gl2ps->options & GL2PS_COMPRESS){
+- if(Z_OK != gl2psDeflate())
+- gl2psMsg(GL2PS_ERROR, "Zlib deflate error");
+- else
+- fwrite(gl2ps->compress->dest, gl2ps->compress->destLen, 1, gl2ps->stream);
+- gl2ps->streamlength += gl2ps->compress->destLen;
+-
+- offs += gl2ps->streamlength;
+- gl2psFreeCompress();
+- }
+-#endif
+-
+- offs += fprintf(gl2ps->stream,
+- "endstream\n"
+- "endobj\n");
+- return offs;
+-}
+-
+-/* ... write the now known length object */
+-
+-static int gl2psPrintPDFDataStreamLength(int val)
+-{
+- return fprintf(gl2ps->stream,
+- "5 0 obj\n"
+- "%d\n"
+- "endobj\n", val);
+-}
+-
+-/* Put the info created before in PDF objects */
+-
+-static int gl2psPrintPDFOpenPage(void)
+-{
+- int offs;
+-
+- /* Write fixed part */
+-
+- offs = fprintf(gl2ps->stream,
+- "6 0 obj\n"
+- "<<\n"
+- "/Type /Page\n"
+- "/Parent 3 0 R\n"
+- "/MediaBox [%d %d %d %d]\n",
+- (int)gl2ps->viewport[0], (int)gl2ps->viewport[1],
+- (int)gl2ps->viewport[2], (int)gl2ps->viewport[3]);
+-
+- if(gl2ps->options & GL2PS_LANDSCAPE)
+- offs += fprintf(gl2ps->stream, "/Rotate -90\n");
+-
+- offs += fprintf(gl2ps->stream,
+- "/Contents 4 0 R\n"
+- "/Resources\n"
+- "<<\n"
+- "/ProcSet [/PDF /Text /ImageB /ImageC] %%/ImageI\n");
+-
+- return offs;
+-
+- /* End fixed part, proceeds in gl2psPDFgroupListWriteVariableResources() */
+-}
+-
+-static int gl2psPDFgroupListWriteVariableResources(void)
+-{
+- int offs = 0;
+-
+- /* a) Graphics States for shader alpha masks*/
+- offs += gl2psPDFgroupListWriteGStateResources();
+-
+- /* b) Shader and shader masks */
+- offs += gl2psPDFgroupListWriteShaderResources();
+-
+- /* c) XObjects (Images & Shader Masks) */
+- offs += gl2psPDFgroupListWriteXObjectResources();
+-
+- /* d) Fonts */
+- offs += gl2psPDFgroupListWriteFontResources();
+-
+- /* End resources and page */
+- offs += fprintf(gl2ps->stream,
+- ">>\n"
+- ">>\n"
+- "endobj\n");
+- return offs;
+-}
+-
+-/* Standard Graphics State */
+-
+-static int gl2psPrintPDFGSObject(void)
+-{
+- return fprintf(gl2ps->stream,
+- "7 0 obj\n"
+- "<<\n"
+- "/Type /ExtGState\n"
+- "/SA false\n"
+- "/SM 0.02\n"
+- "/OP false\n"
+- "/op false\n"
+- "/OPM 0\n"
+- "/BG2 /Default\n"
+- "/UCR2 /Default\n"
+- "/TR2 /Default\n"
+- ">>\n"
+- "endobj\n");
+-}
+-
+-/* Put vertex' edge flag (8bit) and coordinates (32bit) in shader stream */
+-
+-static int gl2psPrintPDFShaderStreamDataCoord(GL2PSvertex *vertex,
+- size_t (*action)(unsigned long data,
+- size_t size),
+- GLfloat dx, GLfloat dy,
+- GLfloat xmin, GLfloat ymin)
+-{
+- int offs = 0;
+- unsigned long imap;
+- GLfloat diff;
+- double dmax = ~1UL;
+- char edgeflag = 0;
+-
+- /* FIXME: temp bux fix for 64 bit archs: */
+- if(sizeof(unsigned long) == 8) dmax = dmax - 2048.;
+-
+- offs += (*action)(edgeflag, 1);
+-
+- /* The Shader stream in PDF requires to be in a 'big-endian'
+- order */
+-
+- if(GL2PS_ZERO(dx * dy)){
+- offs += (*action)(0, 4);
+- offs += (*action)(0, 4);
+- }
+- else{
+- diff = (vertex->xyz[0] - xmin) / dx;
+- if(diff > 1)
+- diff = 1.0F;
+- else if(diff < 0)
+- diff = 0.0F;
+- imap = (unsigned long)(diff * dmax);
+- offs += (*action)(imap, 4);
+-
+- diff = (vertex->xyz[1] - ymin) / dy;
+- if(diff > 1)
+- diff = 1.0F;
+- else if(diff < 0)
+- diff = 0.0F;
+- imap = (unsigned long)(diff * dmax);
+- offs += (*action)(imap, 4);
+- }
+-
+- return offs;
+-}
+-
+-/* Put vertex' rgb value (8bit for every component) in shader stream */
+-
+-static int gl2psPrintPDFShaderStreamDataRGB(GL2PSvertex *vertex,
+- size_t (*action)(unsigned long data,
+- size_t size))
+-{
+- int offs = 0;
+- unsigned long imap;
+- double dmax = ~1UL;
+-
+- /* FIXME: temp bux fix for 64 bit archs: */
+- if(sizeof(unsigned long) == 8) dmax = dmax - 2048.;
+-
+- imap = (unsigned long)((vertex->rgba[0]) * dmax);
+- offs += (*action)(imap, 1);
+-
+- imap = (unsigned long)((vertex->rgba[1]) * dmax);
+- offs += (*action)(imap, 1);
+-
+- imap = (unsigned long)((vertex->rgba[2]) * dmax);
+- offs += (*action)(imap, 1);
+-
+- return offs;
+-}
+-
+-/* Put vertex' alpha (8/16bit) in shader stream */
+-
+-static int gl2psPrintPDFShaderStreamDataAlpha(GL2PSvertex *vertex,
+- size_t (*action)(unsigned long data,
+- size_t size),
+- int sigbyte)
+-{
+- int offs = 0;
+- unsigned long imap;
+- double dmax = ~1UL;
+-
+- /* FIXME: temp bux fix for 64 bit archs: */
+- if(sizeof(unsigned long) == 8) dmax = dmax - 2048.;
+-
+- if(sigbyte != 8 && sigbyte != 16)
+- sigbyte = 8;
+-
+- sigbyte /= 8;
+-
+- imap = (unsigned long)((vertex->rgba[3]) * dmax);
+-
+- offs += (*action)(imap, sigbyte);
+-
+- return offs;
+-}
+-
+-/* Put a triangles raw data in shader stream */
+-
+-static int gl2psPrintPDFShaderStreamData(GL2PStriangle *triangle,
+- GLfloat dx, GLfloat dy,
+- GLfloat xmin, GLfloat ymin,
+- size_t (*action)(unsigned long data,
+- size_t size),
+- int gray)
+-{
+- int i, offs = 0;
+- GL2PSvertex v;
+-
+- if(gray && gray != 8 && gray != 16)
+- gray = 8;
+-
+- for(i = 0; i < 3; ++i){
+- offs += gl2psPrintPDFShaderStreamDataCoord(&triangle->vertex[i], action,
+- dx, dy, xmin, ymin);
+- if(gray){
+- v = triangle->vertex[i];
+- offs += gl2psPrintPDFShaderStreamDataAlpha(&v, action, gray);
+- }
+- else{
+- offs += gl2psPrintPDFShaderStreamDataRGB(&triangle->vertex[i], action);
+- }
+- }
+-
+- return offs;
+-}
+-
+-static void gl2psPDFRectHull(GLfloat *xmin, GLfloat *xmax,
+- GLfloat *ymin, GLfloat *ymax,
+- GL2PStriangle *triangles, int cnt)
+-{
+- int i, j;
+-
+- *xmin = triangles[0].vertex[0].xyz[0];
+- *xmax = triangles[0].vertex[0].xyz[0];
+- *ymin = triangles[0].vertex[0].xyz[1];
+- *ymax = triangles[0].vertex[0].xyz[1];
+-
+- for(i = 0; i < cnt; ++i){
+- for(j = 0; j < 3; ++j){
+- if(*xmin > triangles[i].vertex[j].xyz[0])
+- *xmin = triangles[i].vertex[j].xyz[0];
+- if(*xmax < triangles[i].vertex[j].xyz[0])
+- *xmax = triangles[i].vertex[j].xyz[0];
+- if(*ymin > triangles[i].vertex[j].xyz[1])
+- *ymin = triangles[i].vertex[j].xyz[1];
+- if(*ymax < triangles[i].vertex[j].xyz[1])
+- *ymax = triangles[i].vertex[j].xyz[1];
+- }
+- }
+-}
+-
+-/* Writes shaded triangle
+- gray == 0 means write RGB triangles
+- gray == 8 8bit-grayscale (for alpha masks)
+- gray == 16 16bit-grayscale (for alpha masks) */
+-
+-static int gl2psPrintPDFShader(int obj, GL2PStriangle *triangles,
+- int size, int gray)
+-{
+- int i, offs = 0, vertexbytes, done = 0;
+- GLfloat xmin, xmax, ymin, ymax;
+-
+- switch(gray){
+- case 0:
+- vertexbytes = 1+4+4+1+1+1;
+- break;
+- case 8:
+- vertexbytes = 1+4+4+1;
+- break;
+- case 16:
+- vertexbytes = 1+4+4+2;
+- break;
+- default:
+- gray = 8;
+- vertexbytes = 1+4+4+1;
+- break;
+- }
+-
+- gl2psPDFRectHull(&xmin, &xmax, &ymin, &ymax, triangles, size);
+-
+- offs += fprintf(gl2ps->stream,
+- "%d 0 obj\n"
+- "<< "
+- "/ShadingType 4 "
+- "/ColorSpace %s "
+- "/BitsPerCoordinate 32 "
+- "/BitsPerComponent %d "
+- "/BitsPerFlag 8 "
+- "/Decode [%f %f %f %f 0 1 %s] ",
+- obj,
+- (gray) ? "/DeviceGray" : "/DeviceRGB",
+- (gray) ? gray : 8,
+- xmin, xmax, ymin, ymax,
+- (gray) ? "" : "0 1 0 1");
+-
+-#if defined(GL2PS_HAVE_ZLIB)
+- if(gl2ps->options & GL2PS_COMPRESS){
+- gl2psAllocCompress(vertexbytes * size * 3);
+-
+- for(i = 0; i < size; ++i)
+- gl2psPrintPDFShaderStreamData(&triangles[i],
+- xmax-xmin, ymax-ymin, xmin, ymin,
+- gl2psWriteBigEndianCompress, gray);
+-
+- if(Z_OK == gl2psDeflate() && 23 + gl2ps->compress->destLen < gl2ps->compress->srcLen){
+- offs += gl2psPrintPDFCompressorType();
+- offs += fprintf(gl2ps->stream,
+- "/Length %d "
+- ">>\n"
+- "stream\n",
+- (int)gl2ps->compress->destLen);
+- offs += gl2ps->compress->destLen * fwrite(gl2ps->compress->dest,
+- gl2ps->compress->destLen,
+- 1, gl2ps->stream);
+- done = 1;
+- }
+- gl2psFreeCompress();
+- }
+-#endif
+-
+- if(!done){
+- /* no compression, or too long after compression, or compress error
+- -> write non-compressed entry */
+- offs += fprintf(gl2ps->stream,
+- "/Length %d "
+- ">>\n"
+- "stream\n",
+- vertexbytes * 3 * size);
+- for(i = 0; i < size; ++i)
+- offs += gl2psPrintPDFShaderStreamData(&triangles[i],
+- xmax-xmin, ymax-ymin, xmin, ymin,
+- gl2psWriteBigEndian, gray);
+- }
+-
+- offs += fprintf(gl2ps->stream,
+- "\nendstream\n"
+- "endobj\n");
+-
+- return offs;
+-}
+-
+-/* Writes a XObject for a shaded triangle mask */
+-
+-static int gl2psPrintPDFShaderMask(int obj, int childobj)
+-{
+- int offs = 0, len;
+-
+- offs += fprintf(gl2ps->stream,
+- "%d 0 obj\n"
+- "<<\n"
+- "/Type /XObject\n"
+- "/Subtype /Form\n"
+- "/BBox [ %d %d %d %d ]\n"
+- "/Group \n<<\n/S /Transparency /CS /DeviceRGB\n"
+- ">>\n",
+- obj,
+- (int)gl2ps->viewport[0], (int)gl2ps->viewport[1],
+- (int)gl2ps->viewport[2], (int)gl2ps->viewport[3]);
+-
+- len = (childobj>0)
+- ? strlen("/TrSh sh\n") + (int)log10((double)childobj)+1
+- : strlen("/TrSh0 sh\n");
+-
+- offs += fprintf(gl2ps->stream,
+- "/Length %d\n"
+- ">>\n"
+- "stream\n",
+- len);
+- offs += fprintf(gl2ps->stream,
+- "/TrSh%d sh\n",
+- childobj);
+- offs += fprintf(gl2ps->stream,
+- "endstream\n"
+- "endobj\n");
+-
+- return offs;
+-}
+-
+-/* Writes a Extended graphics state for a shaded triangle mask if
+- simplealpha ist true the childobj argument is ignored and a /ca
+- statement will be written instead */
+-
+-static int gl2psPrintPDFShaderExtGS(int obj, int childobj)
+-{
+- int offs = 0;
+-
+- offs += fprintf(gl2ps->stream,
+- "%d 0 obj\n"
+- "<<\n",
+- obj);
+-
+- offs += fprintf(gl2ps->stream,
+- "/SMask << /S /Alpha /G %d 0 R >> ",
+- childobj);
+-
+- offs += fprintf(gl2ps->stream,
+- ">>\n"
+- "endobj\n");
+- return offs;
+-}
+-
+-/* a simple graphics state */
+-
+-static int gl2psPrintPDFShaderSimpleExtGS(int obj, GLfloat alpha)
+-{
+- int offs = 0;
+-
+- offs += fprintf(gl2ps->stream,
+- "%d 0 obj\n"
+- "<<\n"
+- "/ca %g"
+- ">>\n"
+- "endobj\n",
+- obj, alpha);
+- return offs;
+-}
+-
+-/* Similar groups of functions for pixmaps and text */
+-
+-static int gl2psPrintPDFPixmapStreamData(GL2PSimage *im,
+- size_t (*action)(unsigned long data,
+- size_t size),
+- int gray)
+-{
+- int x, y;
+- GLfloat r, g, b, a;
+-
+- if(im->format != GL_RGBA && gray)
+- return 0;
+-
+- if(gray && gray !=8 && gray != 16)
+- gray = 8;
+-
+- gray /= 8;
+-
+- for(y = 0; y < im->height; ++y){
+- for(x = 0; x < im->width; ++x){
+- a = gl2psGetRGB(im, x, y, &r, &g, &b);
+- if(im->format == GL_RGBA && gray){
+- (*action)((unsigned long)(a*255) << 24, gray);
+- }
+- else{
+- (*action)((unsigned long)(r*255) << 24, 1);
+- (*action)((unsigned long)(g*255) << 24, 1);
+- (*action)((unsigned long)(b*255) << 24, 1);
+- }
+- }
+- }
+-
+- switch(gray){
+- case 0: return 3 * im->width * im->height;
+- case 1: return im->width * im->height;
+- case 2: return 2 * im->width * im->height;
+- default: return 3 * im->width * im->height;
+- }
+-}
+-
+-static int gl2psPrintPDFPixmap(int obj, int childobj, GL2PSimage *im, int gray)
+-{
+- int offs = 0, done = 0, sigbytes = 3;
+-
+- if(gray && gray !=8 && gray != 16)
+- gray = 8;
+-
+- if(gray)
+- sigbytes = gray / 8;
+-
+- offs += fprintf(gl2ps->stream,
+- "%d 0 obj\n"
+- "<<\n"
+- "/Type /XObject\n"
+- "/Subtype /Image\n"
+- "/Width %d\n"
+- "/Height %d\n"
+- "/ColorSpace %s \n"
+- "/BitsPerComponent 8\n",
+- obj,
+- (int)im->width, (int)im->height,
+- (gray) ? "/DeviceGray" : "/DeviceRGB" );
+- if(GL_RGBA == im->format && gray == 0){
+- offs += fprintf(gl2ps->stream,
+- "/SMask %d 0 R\n",
+- childobj);
+- }
+-
+-#if defined(GL2PS_HAVE_ZLIB)
+- if(gl2ps->options & GL2PS_COMPRESS){
+- gl2psAllocCompress((int)(im->width * im->height * sigbytes));
+-
+- gl2psPrintPDFPixmapStreamData(im, gl2psWriteBigEndianCompress, gray);
+-
+- if(Z_OK == gl2psDeflate() && 23 + gl2ps->compress->destLen < gl2ps->compress->srcLen){
+- offs += gl2psPrintPDFCompressorType();
+- offs += fprintf(gl2ps->stream,
+- "/Length %d "
+- ">>\n"
+- "stream\n",
+- (int)gl2ps->compress->destLen);
+- offs += gl2ps->compress->destLen * fwrite(gl2ps->compress->dest, gl2ps->compress->destLen,
+- 1, gl2ps->stream);
+- done = 1;
+- }
+- gl2psFreeCompress();
+- }
+-#endif
+-
+- if(!done){
+- /* no compression, or too long after compression, or compress error
+- -> write non-compressed entry */
+- offs += fprintf(gl2ps->stream,
+- "/Length %d "
+- ">>\n"
+- "stream\n",
+- (int)(im->width * im->height * sigbytes));
+- offs += gl2psPrintPDFPixmapStreamData(im, gl2psWriteBigEndian, gray);
+- }
+-
+- offs += fprintf(gl2ps->stream,
+- "\nendstream\n"
+- "endobj\n");
+-
+- return offs;
+-}
+-
+-static int gl2psPrintPDFText(int obj, GL2PSstring *s, int fontnumber)
+-{
+- int offs = 0;
+-
+- offs += fprintf(gl2ps->stream,
+- "%d 0 obj\n"
+- "<<\n"
+- "/Type /Font\n"
+- "/Subtype /Type1\n"
+- "/Name /F%d\n"
+- "/BaseFont /%s\n"
+- "/Encoding /MacRomanEncoding\n"
+- ">>\n"
+- "endobj\n",
+- obj, fontnumber, s->fontname);
+- return offs;
+-}
+-
+-/* Write the physical objects */
+-
+-static int gl2psPDFgroupListWriteObjects(int entryoffs)
+-{
+- int i,j;
+- GL2PSprimitive *p = NULL;
+- GL2PSpdfgroup *gro;
+- int offs = entryoffs;
+- GL2PStriangle *triangles;
+- int size = 0;
+-
+- if(!gl2ps->pdfgrouplist)
+- return offs;
+-
+- for(i = 0; i < gl2psListNbr(gl2ps->pdfgrouplist); ++i){
+- gro = (GL2PSpdfgroup*)gl2psListPointer(gl2ps->pdfgrouplist, i);
+- if(!gl2psListNbr(gro->ptrlist))
+- continue;
+- p = *(GL2PSprimitive**)gl2psListPointer(gro->ptrlist, 0);
+- switch(p->type){
+- case GL2PS_POINT:
+- break;
+- case GL2PS_LINE:
+- break;
+- case GL2PS_TRIANGLE:
+- size = gl2psListNbr(gro->ptrlist);
+- triangles = (GL2PStriangle*)gl2psMalloc(sizeof(GL2PStriangle) * size);
+- for(j = 0; j < size; ++j){
+- p = *(GL2PSprimitive**)gl2psListPointer(gro->ptrlist, j);
+- gl2psFillTriangleFromPrimitive(&triangles[j], p, GL_TRUE);
+- }
+- if(triangles[0].prop & T_VAR_COLOR){
+- gl2ps->xreflist[gro->shobjno] = offs;
+- offs += gl2psPrintPDFShader(gro->shobjno, triangles, size, 0);
+- }
+- if(triangles[0].prop & T_ALPHA_LESS_1){
+- gl2ps->xreflist[gro->gsobjno] = offs;
+- offs += gl2psPrintPDFShaderSimpleExtGS(gro->gsobjno, triangles[0].vertex[0].rgba[3]);
+- }
+- if(triangles[0].prop & T_VAR_ALPHA){
+- gl2ps->xreflist[gro->gsobjno] = offs;
+- offs += gl2psPrintPDFShaderExtGS(gro->gsobjno, gro->trgroupobjno);
+- gl2ps->xreflist[gro->trgroupobjno] = offs;
+- offs += gl2psPrintPDFShaderMask(gro->trgroupobjno, gro->maskshno);
+- gl2ps->xreflist[gro->maskshobjno] = offs;
+- offs += gl2psPrintPDFShader(gro->maskshobjno, triangles, size, 8);
+- }
+- gl2psFree(triangles);
+- break;
+- case GL2PS_PIXMAP:
+- gl2ps->xreflist[gro->imobjno] = offs;
+- offs += gl2psPrintPDFPixmap(gro->imobjno, gro->imobjno+1, p->data.image, 0);
+- if(p->data.image->format == GL_RGBA){
+- gl2ps->xreflist[gro->imobjno+1] = offs;
+- offs += gl2psPrintPDFPixmap(gro->imobjno+1, -1, p->data.image, 8);
+- }
+- break;
+- case GL2PS_TEXT:
+- gl2ps->xreflist[gro->fontobjno] = offs;
+- offs += gl2psPrintPDFText(gro->fontobjno,p->data.text,gro->fontno);
+- break;
+- case GL2PS_SPECIAL :
+- /* alignment contains the format for which the special output text
+- is intended */
+- if(p->data.text->alignment == GL2PS_PDF)
+- offs += fprintf(gl2ps->stream, "%s\n", p->data.text->str);
+- break;
+- default:
+- break;
+- }
+- }
+- return offs;
+-}
+-
+-/* All variable data has been written at this point and all required
+- functioninality has been gathered, so we can write now file footer
+- with cross reference table and trailer */
+-
+-static void gl2psPrintPDFFooter(void)
+-{
+- int i, offs;
+-
+- gl2psPDFgroupListInit();
+- gl2psPDFgroupListWriteMainStream();
+-
+- offs = gl2ps->xreflist[5] + gl2ps->streamlength;
+- offs += gl2psClosePDFDataStream();
+- gl2ps->xreflist[5] = offs;
+-
+- offs += gl2psPrintPDFDataStreamLength(gl2ps->streamlength);
+- gl2ps->xreflist[6] = offs;
+- gl2ps->streamlength = 0;
+-
+- offs += gl2psPrintPDFOpenPage();
+- offs += gl2psPDFgroupListWriteVariableResources();
+- gl2ps->xreflist = (int*)gl2psRealloc(gl2ps->xreflist,
+- sizeof(int) * (gl2ps->objects_stack + 1));
+- gl2ps->xreflist[7] = offs;
+-
+- offs += gl2psPrintPDFGSObject();
+- gl2ps->xreflist[8] = offs;
+-
+- gl2ps->xreflist[gl2ps->objects_stack] =
+- gl2psPDFgroupListWriteObjects(gl2ps->xreflist[8]);
+-
+- /* Start cross reference table. The file has to been opened in
+- binary mode to preserve the 20 digit string length! */
+- fprintf(gl2ps->stream,
+- "xref\n"
+- "0 %d\n"
+- "%010d 65535 f \n", gl2ps->objects_stack, 0);
+-
+- for(i = 1; i < gl2ps->objects_stack; ++i)
+- fprintf(gl2ps->stream, "%010d 00000 n \n", gl2ps->xreflist[i]);
+-
+- fprintf(gl2ps->stream,
+- "trailer\n"
+- "<<\n"
+- "/Size %d\n"
+- "/Info 1 0 R\n"
+- "/Root 2 0 R\n"
+- ">>\n"
+- "startxref\n%d\n"
+- "%%%%EOF\n",
+- gl2ps->objects_stack, gl2ps->xreflist[gl2ps->objects_stack]);
+-
+- /* Free auxiliary lists and arrays */
+- gl2psFree(gl2ps->xreflist);
+- gl2psListAction(gl2ps->pdfprimlist, gl2psFreePrimitive);
+- gl2psListDelete(gl2ps->pdfprimlist);
+- gl2psPDFgroupListDelete();
+-
+-#if defined(GL2PS_HAVE_ZLIB)
+- if(gl2ps->options & GL2PS_COMPRESS){
+- gl2psFreeCompress();
+- gl2psFree(gl2ps->compress);
+- gl2ps->compress = NULL;
+- }
+-#endif
+-}
+-
+-/* PDF begin viewport */
+-
+-static void gl2psPrintPDFBeginViewport(GLint viewport[4])
+-{
+- int offs = 0;
+- GLint index;
+- GLfloat rgba[4];
+- int x = viewport[0], y = viewport[1], w = viewport[2], h = viewport[3];
+-
+- glRenderMode(GL_FEEDBACK);
+-
+- if(gl2ps->header){
+- gl2psPrintPDFHeader();
+- gl2ps->header = GL_FALSE;
+- }
+-
+- offs += gl2psPrintf("q\n");
+-
+- if(gl2ps->options & GL2PS_DRAW_BACKGROUND){
+- if(gl2ps->colormode == GL_RGBA || gl2ps->colorsize == 0){
+- glGetFloatv(GL_COLOR_CLEAR_VALUE, rgba);
+- }
+- else{
+- glGetIntegerv(GL_INDEX_CLEAR_VALUE, &index);
+- rgba[0] = gl2ps->colormap[index][0];
+- rgba[1] = gl2ps->colormap[index][1];
+- rgba[2] = gl2ps->colormap[index][2];
+- rgba[3] = 1.0F;
+- }
+- offs += gl2psPrintPDFFillColor(rgba);
+- offs += gl2psPrintf("%d %d %d %d re\n"
+- "W\n"
+- "f\n",
+- x, y, w, h);
+- }
+- else{
+- offs += gl2psPrintf("%d %d %d %d re\n"
+- "W\n"
+- "n\n",
+- x, y, w, h);
+- }
+-
+- gl2ps->streamlength += offs;
+-}
+-
+-static GLint gl2psPrintPDFEndViewport(void)
+-{
+- GLint res;
+-
+- res = gl2psPrintPrimitives();
+- gl2ps->streamlength += gl2psPrintf("Q\n");
+- return res;
+-}
+-
+-static void gl2psPrintPDFFinalPrimitive(void)
+-{
+-}
+-
+-/* definition of the PDF backend */
+-
+-static GL2PSbackend gl2psPDF = {
+- gl2psPrintPDFHeader,
+- gl2psPrintPDFFooter,
+- gl2psPrintPDFBeginViewport,
+- gl2psPrintPDFEndViewport,
+- gl2psPrintPDFPrimitive,
+- gl2psPrintPDFFinalPrimitive,
+- "pdf",
+- "Portable Document Format"
+-};
+-
+-/*********************************************************************
+- *
+- * SVG routines
+- *
+- *********************************************************************/
+-
+-static void gl2psSVGGetCoordsAndColors(int n, GL2PSvertex *verts,
+- GL2PSxyz *xyz, GL2PSrgba *rgba)
+-{
+- int i, j;
+-
+- for(i = 0; i < n; i++){
+- xyz[i][0] = verts[i].xyz[0];
+- xyz[i][1] = gl2ps->viewport[3] - verts[i].xyz[1];
+- xyz[i][2] = 0.0F;
+- for(j = 0; j < 4; j++)
+- rgba[i][j] = verts[i].rgba[j];
+- }
+-}
+-
+-static void gl2psSVGGetColorString(GL2PSrgba rgba, char str[32])
+-{
+- int r = (int)(255. * rgba[0]);
+- int g = (int)(255. * rgba[1]);
+- int b = (int)(255. * rgba[2]);
+- int rc = (r < 0) ? 0 : (r > 255) ? 255 : r;
+- int gc = (g < 0) ? 0 : (g > 255) ? 255 : g;
+- int bc = (b < 0) ? 0 : (b > 255) ? 255 : b;
+- sprintf(str, "#%2.2x%2.2x%2.2x", rc, gc, bc);
+-}
+-
+-static void gl2psPrintSVGHeader(void)
+-{
+- int x, y, width, height;
+- char col[32];
+- time_t now;
+-
+- time(&now);
+-
+- if (gl2ps->options & GL2PS_LANDSCAPE){
+- x = (int)gl2ps->viewport[1];
+- y = (int)gl2ps->viewport[0];
+- width = (int)gl2ps->viewport[3];
+- height = (int)gl2ps->viewport[2];
+- }
+- else{
+- x = (int)gl2ps->viewport[0];
+- y = (int)gl2ps->viewport[1];
+- width = (int)gl2ps->viewport[2];
+- height = (int)gl2ps->viewport[3];
+- }
+-
+- /* Compressed SVG files (.svgz) are simply gzipped SVG files */
+- gl2psPrintGzipHeader();
+-
+- gl2psPrintf("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n");
+- gl2psPrintf("<svg xmlns=\"http://www.w3.org/2000/svg\"\n");
+- gl2psPrintf(" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n"
+- " width=\"%dpx\" height=\"%dpx\" viewBox=\"%d %d %d %d\">\n",
+- width, height, x, y, width, height);
+- gl2psPrintf("<title>%s</title>\n", gl2ps->title);
+- gl2psPrintf("<desc>\n");
+- gl2psPrintf("Creator: GL2PS %d.%d.%d%s, %s\n"
+- "For: %s\n"
+- "CreationDate: %s",
+- GL2PS_MAJOR_VERSION, GL2PS_MINOR_VERSION, GL2PS_PATCH_VERSION,
+- GL2PS_EXTRA_VERSION, GL2PS_COPYRIGHT, gl2ps->producer, ctime(&now));
+- gl2psPrintf("</desc>\n");
+- gl2psPrintf("<defs>\n");
+- gl2psPrintf("</defs>\n");
+-
+- if(gl2ps->options & GL2PS_DRAW_BACKGROUND){
+- gl2psSVGGetColorString(gl2ps->bgcolor, col);
+- gl2psPrintf("<polygon fill=\"%s\" points=\"%d,%d %d,%d %d,%d %d,%d\"/>\n", col,
+- (int)gl2ps->viewport[0], (int)gl2ps->viewport[1],
+- (int)gl2ps->viewport[2], (int)gl2ps->viewport[1],
+- (int)gl2ps->viewport[2], (int)gl2ps->viewport[3],
+- (int)gl2ps->viewport[0], (int)gl2ps->viewport[3]);
+- }
+-
+- /* group all the primitives and disable antialiasing */
+- gl2psPrintf("<g shape-rendering=\"crispEdges\">\n");
+-}
+-
+-static void gl2psPrintSVGSmoothTriangle(GL2PSxyz xyz[3], GL2PSrgba rgba[3])
+-{
+- int i;
+- GL2PSxyz xyz2[3];
+- GL2PSrgba rgba2[3];
+- char col[32];
+-
+- /* Apparently there is no easy way to do Gouraud shading in SVG
+- without explicitly pre-defining gradients, so for now we just do
+- recursive subdivision */
+-
+- if(gl2psSameColorThreshold(3, rgba, gl2ps->threshold)){
+- gl2psSVGGetColorString(rgba[0], col);
+- gl2psPrintf("<polygon fill=\"%s\" ", col);
+- if(rgba[0][3] < 1.0F) gl2psPrintf("fill-opacity=\"%g\" ", rgba[0][3]);
+- gl2psPrintf("points=\"%g,%g %g,%g %g,%g\"/>\n", xyz[0][0], xyz[0][1],
+- xyz[1][0], xyz[1][1], xyz[2][0], xyz[2][1]);
+- }
+- else{
+- /* subdivide into 4 subtriangles */
+- for(i = 0; i < 3; i++){
+- xyz2[0][i] = xyz[0][i];
+- xyz2[1][i] = 0.5 * (xyz[0][i] + xyz[1][i]);
+- xyz2[2][i] = 0.5 * (xyz[0][i] + xyz[2][i]);
+- }
+- for(i = 0; i < 4; i++){
+- rgba2[0][i] = rgba[0][i];
+- rgba2[1][i] = 0.5 * (rgba[0][i] + rgba[1][i]);
+- rgba2[2][i] = 0.5 * (rgba[0][i] + rgba[2][i]);
+- }
+- gl2psPrintSVGSmoothTriangle(xyz2, rgba2);
+- for(i = 0; i < 3; i++){
+- xyz2[0][i] = 0.5 * (xyz[0][i] + xyz[1][i]);
+- xyz2[1][i] = xyz[1][i];
+- xyz2[2][i] = 0.5 * (xyz[1][i] + xyz[2][i]);
+- }
+- for(i = 0; i < 4; i++){
+- rgba2[0][i] = 0.5 * (rgba[0][i] + rgba[1][i]);
+- rgba2[1][i] = rgba[1][i];
+- rgba2[2][i] = 0.5 * (rgba[1][i] + rgba[2][i]);
+- }
+- gl2psPrintSVGSmoothTriangle(xyz2, rgba2);
+- for(i = 0; i < 3; i++){
+- xyz2[0][i] = 0.5 * (xyz[0][i] + xyz[2][i]);
+- xyz2[1][i] = xyz[2][i];
+- xyz2[2][i] = 0.5 * (xyz[1][i] + xyz[2][i]);
+- }
+- for(i = 0; i < 4; i++){
+- rgba2[0][i] = 0.5 * (rgba[0][i] + rgba[2][i]);
+- rgba2[1][i] = rgba[2][i];
+- rgba2[2][i] = 0.5 * (rgba[1][i] + rgba[2][i]);
+- }
+- gl2psPrintSVGSmoothTriangle(xyz2, rgba2);
+- for(i = 0; i < 3; i++){
+- xyz2[0][i] = 0.5 * (xyz[0][i] + xyz[1][i]);
+- xyz2[1][i] = 0.5 * (xyz[1][i] + xyz[2][i]);
+- xyz2[2][i] = 0.5 * (xyz[0][i] + xyz[2][i]);
+- }
+- for(i = 0; i < 4; i++){
+- rgba2[0][i] = 0.5 * (rgba[0][i] + rgba[1][i]);
+- rgba2[1][i] = 0.5 * (rgba[1][i] + rgba[2][i]);
+- rgba2[2][i] = 0.5 * (rgba[0][i] + rgba[2][i]);
+- }
+- gl2psPrintSVGSmoothTriangle(xyz2, rgba2);
+- }
+-}
+-
+-static void gl2psPrintSVGDash(GLushort pattern, GLint factor)
+-{
+- int i, n, array[10];
+-
+- if(!pattern || !factor) return; /* solid line */
+-
+- gl2psParseStipplePattern(pattern, factor, &n, array);
+- gl2psPrintf("stroke-dasharray=\"");
+- for(i = 0; i < n; i++){
+- if(i) gl2psPrintf(",");
+- gl2psPrintf("%d", array[i]);
+- }
+- gl2psPrintf("\" ");
+-}
+-
+-static void gl2psEndSVGLine(void)
+-{
+- int i;
+- if(gl2ps->lastvertex.rgba[0] >= 0.){
+- gl2psPrintf("%g,%g\"/>\n", gl2ps->lastvertex.xyz[0],
+- gl2ps->viewport[3] - gl2ps->lastvertex.xyz[1]);
+- for(i = 0; i < 3; i++)
+- gl2ps->lastvertex.xyz[i] = -1.;
+- for(i = 0; i < 4; i++)
+- gl2ps->lastvertex.rgba[i] = -1.;
+- }
+-}
+-
+-static void gl2psPrintSVGPixmap(GLfloat /*x*/, GLfloat /*y*/, GL2PSimage * /*pixmap*/)
+-{
+-#if defined(GL2PS_HAVE_LIBPNG)
+- GL2PSlist *png;
+- unsigned char c;
+- int i;
+-
+- /* The only image types supported by the SVG standard are JPEG, PNG
+- and SVG. Here we choose PNG, and since we want to embed the image
+- directly in the SVG stream (and not link to an external image
+- file), we need to encode the pixmap into PNG in memory, then
+- encode it into base64. */
+-
+- png = gl2psListCreate(pixmap->width * pixmap->height * 3, 1000,
+- sizeof(unsigned char));
+- gl2psConvertPixmapToPNG(pixmap, png);
+- gl2psListEncodeBase64(png);
+- gl2psPrintf("<image x=\"%g\" y=\"%g\" width=\"%d\" height=\"%d\"\n",
+- x, y - pixmap->height, pixmap->width, pixmap->height);
+- gl2psPrintf("xlink:href=\"data:image/png;base64,");
+- for(i = 0; i < gl2psListNbr(png); i++){
+- gl2psListRead(png, i, &c);
+- gl2psPrintf("%c", c);
+- }
+- gl2psPrintf("\"/>\n");
+- gl2psListDelete(png);
+-#else
+- gl2psMsg(GL2PS_WARNING, "GL2PS has to be compiled with PNG support in "
+- "order to embed images in SVG streams");
+-#endif
+-}
+-
+-static void gl2psPrintSVGPrimitive(void *data)
+-{
+- GL2PSprimitive *prim;
+- GL2PSxyz xyz[4];
+- GL2PSrgba rgba[4];
+- char col[32];
+- int newline;
+-
+- prim = *(GL2PSprimitive**)data;
+-
+- if((gl2ps->options & GL2PS_OCCLUSION_CULL) && prim->culled) return;
+-
+- /* We try to draw connected lines as a single path to get nice line
+- joins and correct stippling. So if the primitive to print is not
+- a line we must first finish the current line (if any): */
+- if(prim->type != GL2PS_LINE) gl2psEndSVGLine();
+-
+- gl2psSVGGetCoordsAndColors(prim->numverts, prim->verts, xyz, rgba);
+-
+- switch(prim->type){
+- case GL2PS_POINT :
+- gl2psSVGGetColorString(rgba[0], col);
+- gl2psPrintf("<circle fill=\"%s\" ", col);
+- if(rgba[0][3] < 1.0F) gl2psPrintf("fill-opacity=\"%g\" ", rgba[0][3]);
+- gl2psPrintf("cx=\"%g\" cy=\"%g\" r=\"%g\"/>\n",
+- xyz[0][0], xyz[0][1], 0.5 * prim->width);
+- break;
+- case GL2PS_LINE :
+- if(!gl2psSamePosition(gl2ps->lastvertex.xyz, prim->verts[0].xyz) ||
+- !gl2psSameColor(gl2ps->lastrgba, prim->verts[0].rgba) ||
+- gl2ps->lastlinewidth != prim->width ||
+- gl2ps->lastpattern != prim->pattern ||
+- gl2ps->lastfactor != prim->factor){
+- /* End the current line if the new segment does not start where
+- the last one ended, or if the color, the width or the
+- stippling have changed (we will need to use multi-point
+- gradients for smooth-shaded lines) */
+- gl2psEndSVGLine();
+- newline = 1;
+- }
+- else{
+- newline = 0;
+- }
+- gl2ps->lastvertex = prim->verts[1];
+- gl2psSetLastColor(prim->verts[0].rgba);
+- gl2ps->lastlinewidth = prim->width;
+- gl2ps->lastpattern = prim->pattern;
+- gl2ps->lastfactor = prim->factor;
+- if(newline){
+- gl2psSVGGetColorString(rgba[0], col);
+- gl2psPrintf("<polyline fill=\"none\" stroke=\"%s\" stroke-width=\"%g\" ",
+- col, prim->width);
+- if(rgba[0][3] < 1.0F) gl2psPrintf("stroke-opacity=\"%g\" ", rgba[0][3]);
+- gl2psPrintSVGDash(prim->pattern, prim->factor);
+- gl2psPrintf("points=\"%g,%g ", xyz[0][0], xyz[0][1]);
+- }
+- else{
+- gl2psPrintf("%g,%g ", xyz[0][0], xyz[0][1]);
+- }
+- break;
+- case GL2PS_TRIANGLE :
+- gl2psPrintSVGSmoothTriangle(xyz, rgba);
+- break;
+- case GL2PS_QUADRANGLE :
+- gl2psMsg(GL2PS_WARNING, "There should not be any quad left to print");
+- break;
+- case GL2PS_PIXMAP :
+- gl2psPrintSVGPixmap(xyz[0][0], xyz[0][1], prim->data.image);
+- break;
+- case GL2PS_TEXT :
+- gl2psSVGGetColorString(prim->verts[0].rgba, col);
+- gl2psPrintf("<text fill=\"%s\" x=\"%g\" y=\"%g\" font-size=\"%d\" ",
+- col, xyz[0][0], xyz[0][1], prim->data.text->fontsize);
+- if(!strcmp(prim->data.text->fontname, "Times-Roman"))
+- gl2psPrintf("font-family=\"Times\">");
+- else if(!strcmp(prim->data.text->fontname, "Times-Bold"))
+- gl2psPrintf("font-family=\"Times\" font-weight=\"bold\">");
+- else if(!strcmp(prim->data.text->fontname, "Times-Italic"))
+- gl2psPrintf("font-family=\"Times\" font-style=\"italic\">");
+- else if(!strcmp(prim->data.text->fontname, "Times-BoldItalic"))
+- gl2psPrintf("font-family=\"Times\" font-style=\"italic\" font-weight=\"bold\">");
+- else if(!strcmp(prim->data.text->fontname, "Helvetica-Bold"))
+- gl2psPrintf("font-family=\"Helvetica\" font-weight=\"bold\">");
+- else if(!strcmp(prim->data.text->fontname, "Helvetica-Oblique"))
+- gl2psPrintf("font-family=\"Helvetica\" font-style=\"oblique\">");
+- else if(!strcmp(prim->data.text->fontname, "Helvetica-BoldOblique"))
+- gl2psPrintf("font-family=\"Helvetica\" font-style=\"oblique\" font-weight=\"bold\">");
+- else if(!strcmp(prim->data.text->fontname, "Courier-Bold"))
+- gl2psPrintf("font-family=\"Courier\" font-weight=\"bold\">");
+- else if(!strcmp(prim->data.text->fontname, "Courier-Oblique"))
+- gl2psPrintf("font-family=\"Courier\" font-style=\"oblique\">");
+- else if(!strcmp(prim->data.text->fontname, "Courier-BoldOblique"))
+- gl2psPrintf("font-family=\"Courier\" font-style=\"oblique\" font-weight=\"bold\">");
+- else
+- gl2psPrintf("font-family=\"%s\">", prim->data.text->fontname);
+- gl2psPrintf("%s</text>\n", prim->data.text->str);
+- break;
+- case GL2PS_SPECIAL :
+- /* alignment contains the format for which the special output text
+- is intended */
+- if(prim->data.text->alignment == GL2PS_SVG)
+- gl2psPrintf("%s\n", prim->data.text->str);
+- break;
+- default :
+- break;
+- }
+-}
+-
+-static void gl2psPrintSVGFooter(void)
+-{
+- gl2psPrintf("</g>\n");
+- gl2psPrintf("</svg>\n");
+-
+- gl2psPrintGzipFooter();
+-}
+-
+-static void gl2psPrintSVGBeginViewport(GLint viewport[4])
+-{
+- GLint index;
+- char col[32];
+- GLfloat rgba[4];
+- int x = viewport[0], y = viewport[1], w = viewport[2], h = viewport[3];
+-
+- glRenderMode(GL_FEEDBACK);
+-
+- if(gl2ps->header){
+- gl2psPrintSVGHeader();
+- gl2ps->header = GL_FALSE;
+- }
+-
+- if(gl2ps->options & GL2PS_DRAW_BACKGROUND){
+- if(gl2ps->colormode == GL_RGBA || gl2ps->colorsize == 0){
+- glGetFloatv(GL_COLOR_CLEAR_VALUE, rgba);
+- }
+- else{
+- glGetIntegerv(GL_INDEX_CLEAR_VALUE, &index);
+- rgba[0] = gl2ps->colormap[index][0];
+- rgba[1] = gl2ps->colormap[index][1];
+- rgba[2] = gl2ps->colormap[index][2];
+- rgba[3] = 1.0F;
+- }
+- gl2psSVGGetColorString(rgba, col);
+- gl2psPrintf("<polygon fill=\"%s\" points=\"%d,%d %d,%d %d,%d %d,%d\"/>\n", col,
+- x, gl2ps->viewport[3] - y,
+- x + w, gl2ps->viewport[3] - y,
+- x + w, gl2ps->viewport[3] - (y + h),
+- x, gl2ps->viewport[3] - (y + h));
+- }
+-
+- gl2psPrintf("<clipPath id=\"cp%d%d%d%d\">\n", x, y, w, h);
+- gl2psPrintf(" <polygon points=\"%d,%d %d,%d %d,%d %d,%d\"/>\n",
+- x, gl2ps->viewport[3] - y,
+- x + w, gl2ps->viewport[3] - y,
+- x + w, gl2ps->viewport[3] - (y + h),
+- x, gl2ps->viewport[3] - (y + h));
+- gl2psPrintf("</clipPath>\n");
+- gl2psPrintf("<g clip-path=\"url(#cp%d%d%d%d)\">\n", x, y, w, h);
+-}
+-
+-static GLint gl2psPrintSVGEndViewport(void)
+-{
+- GLint res;
+-
+- res = gl2psPrintPrimitives();
+- gl2psPrintf("</g>\n");
+- return res;
+-}
+-
+-static void gl2psPrintSVGFinalPrimitive(void)
+-{
+- /* End any remaining line, if any */
+- gl2psEndSVGLine();
+-}
+-
+-/* definition of the SVG backend */
+-
+-static GL2PSbackend gl2psSVG = {
+- gl2psPrintSVGHeader,
+- gl2psPrintSVGFooter,
+- gl2psPrintSVGBeginViewport,
+- gl2psPrintSVGEndViewport,
+- gl2psPrintSVGPrimitive,
+- gl2psPrintSVGFinalPrimitive,
+- "svg",
+- "Scalable Vector Graphics"
+-};
+-
+-/*********************************************************************
+- *
+- * PGF routines
+- *
+- *********************************************************************/
+-
+-static void gl2psPrintPGFColor(GL2PSrgba rgba)
+-{
+- if(!gl2psSameColor(gl2ps->lastrgba, rgba)){
+- gl2psSetLastColor(rgba);
+- fprintf(gl2ps->stream, "\\color[rgb]{%f,%f,%f}\n", rgba[0], rgba[1], rgba[2]);
+- }
+-}
+-
+-static void gl2psPrintPGFHeader(void)
+-{
+- time_t now;
+-
+- time(&now);
+-
+- fprintf(gl2ps->stream,
+- "%% Title: %s\n"
+- "%% Creator: GL2PS %d.%d.%d%s, %s\n"
+- "%% For: %s\n"
+- "%% CreationDate: %s",
+- gl2ps->title, GL2PS_MAJOR_VERSION, GL2PS_MINOR_VERSION,
+- GL2PS_PATCH_VERSION, GL2PS_EXTRA_VERSION, GL2PS_COPYRIGHT,
+- gl2ps->producer, ctime(&now));
+-
+- fprintf(gl2ps->stream, "\\begin{pgfpicture}\n");
+- if(gl2ps->options & GL2PS_DRAW_BACKGROUND){
+- gl2psPrintPGFColor(gl2ps->bgcolor);
+- fprintf(gl2ps->stream,
+- "\\pgfpathrectanglecorners{"
+- "\\pgfpoint{%dpt}{%dpt}}{\\pgfpoint{%dpt}{%dpt}}\n"
+- "\\pgfusepath{fill}\n",
+- (int)gl2ps->viewport[0], (int)gl2ps->viewport[1],
+- (int)gl2ps->viewport[2], (int)gl2ps->viewport[3]);
+- }
+-}
+-
+-static void gl2psPrintPGFDash(GLushort pattern, GLint factor)
+-{
+- int i, n, array[10];
+-
+- if(pattern == gl2ps->lastpattern && factor == gl2ps->lastfactor)
+- return;
+-
+- gl2ps->lastpattern = pattern;
+- gl2ps->lastfactor = factor;
+-
+- if(!pattern || !factor){
+- /* solid line */
+- fprintf(gl2ps->stream, "\\pgfsetdash{}{0pt}\n");
+- }
+- else{
+- gl2psParseStipplePattern(pattern, factor, &n, array);
+- fprintf(gl2ps->stream, "\\pgfsetdash{");
+- for(i = 0; i < n; i++) fprintf(gl2ps->stream, "{%dpt}", array[i]);
+- fprintf(gl2ps->stream, "}{0pt}\n");
+- }
+-}
+-
+-static const char *gl2psPGFTextAlignment(int align)
+-{
+- switch(align){
+- case GL2PS_TEXT_C : return "center";
+- case GL2PS_TEXT_CL : return "west";
+- case GL2PS_TEXT_CR : return "east";
+- case GL2PS_TEXT_B : return "south";
+- case GL2PS_TEXT_BR : return "south east";
+- case GL2PS_TEXT_T : return "north";
+- case GL2PS_TEXT_TL : return "north west";
+- case GL2PS_TEXT_TR : return "north east";
+- case GL2PS_TEXT_BL :
+- default : return "south west";
+- }
+-}
+-
+-static void gl2psPrintPGFPrimitive(void *data)
+-{
+- GL2PSprimitive *prim;
+-
+- prim = *(GL2PSprimitive**)data;
+-
+- switch(prim->type){
+- case GL2PS_POINT :
+- /* Points in openGL are rectangular */
+- gl2psPrintPGFColor(prim->verts[0].rgba);
+- fprintf(gl2ps->stream,
+- "\\pgfpathrectangle{\\pgfpoint{%fpt}{%fpt}}"
+- "{\\pgfpoint{%fpt}{%fpt}}\n\\pgfusepath{fill}\n",
+- prim->verts[0].xyz[0]-0.5*prim->width,
+- prim->verts[0].xyz[1]-0.5*prim->width,
+- prim->width,prim->width);
+- break;
+- case GL2PS_LINE :
+- gl2psPrintPGFColor(prim->verts[0].rgba);
+- if(gl2ps->lastlinewidth != prim->width){
+- gl2ps->lastlinewidth = prim->width;
+- fprintf(gl2ps->stream, "\\pgfsetlinewidth{%fpt}\n", gl2ps->lastlinewidth);
+- }
+- gl2psPrintPGFDash(prim->pattern, prim->factor);
+- fprintf(gl2ps->stream,
+- "\\pgfpathmoveto{\\pgfpoint{%fpt}{%fpt}}\n"
+- "\\pgflineto{\\pgfpoint{%fpt}{%fpt}}\n"
+- "\\pgfusepath{stroke}\n",
+- prim->verts[1].xyz[0], prim->verts[1].xyz[1],
+- prim->verts[0].xyz[0], prim->verts[0].xyz[1]);
+- break;
+- case GL2PS_TRIANGLE :
+- if(gl2ps->lastlinewidth != 0){
+- gl2ps->lastlinewidth = 0;
+- fprintf(gl2ps->stream, "\\pgfsetlinewidth{0.01pt}\n");
+- }
+- gl2psPrintPGFColor(prim->verts[0].rgba);
+- fprintf(gl2ps->stream,
+- "\\pgfpathmoveto{\\pgfpoint{%fpt}{%fpt}}\n"
+- "\\pgflineto{\\pgfpoint{%fpt}{%fpt}}\n"
+- "\\pgflineto{\\pgfpoint{%fpt}{%fpt}}\n"
+- "\\pgfpathclose\n"
+- "\\pgfusepath{fill,stroke}\n",
+- prim->verts[2].xyz[0], prim->verts[2].xyz[1],
+- prim->verts[1].xyz[0], prim->verts[1].xyz[1],
+- prim->verts[0].xyz[0], prim->verts[0].xyz[1]);
+- break;
+- case GL2PS_TEXT :
+- fprintf(gl2ps->stream, "{\n\\pgftransformshift{\\pgfpoint{%fpt}{%fpt}}\n",
+- prim->verts[0].xyz[0], prim->verts[0].xyz[1]);
+-
+- if(prim->data.text->angle)
+- fprintf(gl2ps->stream, "\\pgftransformrotate{%f}{", prim->data.text->angle);
+-
+- fprintf(gl2ps->stream, "\\pgfnode{rectangle}{%s}{\\fontsize{%d}{0}\\selectfont",
+- gl2psPGFTextAlignment(prim->data.text->alignment),
+- prim->data.text->fontsize);
+-
+- fprintf(gl2ps->stream, "\\textcolor[rgb]{%g,%g,%g}{{%s}}",
+- prim->verts[0].rgba[0], prim->verts[0].rgba[1],
+- prim->verts[0].rgba[2], prim->data.text->str);
+-
+- fprintf(gl2ps->stream, "}{}{\\pgfusepath{discard}}}\n");
+- break;
+- case GL2PS_SPECIAL :
+- /* alignment contains the format for which the special output text
+- is intended */
+- if (prim->data.text->alignment == GL2PS_PGF)
+- fprintf(gl2ps->stream, "%s\n", prim->data.text->str);
+- break;
+- default :
+- break;
+- }
+-}
+-
+-static void gl2psPrintPGFFooter(void)
+-{
+- fprintf(gl2ps->stream, "\\end{pgfpicture}\n");
+-}
+-
+-static void gl2psPrintPGFBeginViewport(GLint viewport[4])
+-{
+- GLint index;
+- GLfloat rgba[4];
+- int x = viewport[0], y = viewport[1], w = viewport[2], h = viewport[3];
+-
+- glRenderMode(GL_FEEDBACK);
+-
+- if(gl2ps->header){
+- gl2psPrintPGFHeader();
+- gl2ps->header = GL_FALSE;
+- }
+-
+- fprintf(gl2ps->stream, "\\begin{pgfscope}\n");
+- if(gl2ps->options & GL2PS_DRAW_BACKGROUND){
+- if(gl2ps->colormode == GL_RGBA || gl2ps->colorsize == 0){
+- glGetFloatv(GL_COLOR_CLEAR_VALUE, rgba);
+- }
+- else{
+- glGetIntegerv(GL_INDEX_CLEAR_VALUE, &index);
+- rgba[0] = gl2ps->colormap[index][0];
+- rgba[1] = gl2ps->colormap[index][1];
+- rgba[2] = gl2ps->colormap[index][2];
+- rgba[3] = 1.0F;
+- }
+- gl2psPrintPGFColor(rgba);
+- fprintf(gl2ps->stream,
+- "\\pgfpathrectangle{\\pgfpoint{%dpt}{%dpt}}"
+- "{\\pgfpoint{%dpt}{%dpt}}\n"
+- "\\pgfusepath{fill}\n",
+- x, y, w, h);
+- }
+-
+- fprintf(gl2ps->stream,
+- "\\pgfpathrectangle{\\pgfpoint{%dpt}{%dpt}}"
+- "{\\pgfpoint{%dpt}{%dpt}}\n"
+- "\\pgfusepath{clip}\n",
+- x, y, w, h);
+-}
+-
+-static GLint gl2psPrintPGFEndViewport(void)
+-{
+- GLint res;
+- res = gl2psPrintPrimitives();
+- fprintf(gl2ps->stream, "\\end{pgfscope}\n");
+- return res;
+-}
+-
+-static void gl2psPrintPGFFinalPrimitive(void)
+-{
+-}
+-
+-/* definition of the PGF backend */
+-
+-static GL2PSbackend gl2psPGF = {
+- gl2psPrintPGFHeader,
+- gl2psPrintPGFFooter,
+- gl2psPrintPGFBeginViewport,
+- gl2psPrintPGFEndViewport,
+- gl2psPrintPGFPrimitive,
+- gl2psPrintPGFFinalPrimitive,
+- "tex",
+- "PGF Latex Graphics"
+-};
+-
+-/*********************************************************************
+- *
+- * General primitive printing routine
+- *
+- *********************************************************************/
+-
+-/* Warning: the ordering of the backends must match the format
+- #defines in gl2ps.h */
+-
+-static GL2PSbackend *gl2psbackends[] = {
+- &gl2psPS, /* 0 */
+- &gl2psEPS, /* 1 */
+- &gl2psTEX, /* 2 */
+- &gl2psPDF, /* 3 */
+- &gl2psSVG, /* 4 */
+- &gl2psPGF /* 5 */
+-};
+-
+-static void gl2psComputeTightBoundingBox(void *data)
+-{
+- GL2PSprimitive *prim;
+- int i;
+-
+- prim = *(GL2PSprimitive**)data;
+-
+- for(i = 0; i < prim->numverts; i++){
+- if(prim->verts[i].xyz[0] < gl2ps->viewport[0])
+- gl2ps->viewport[0] = (GLint)prim->verts[i].xyz[0];
+- if(prim->verts[i].xyz[0] > gl2ps->viewport[2])
+- gl2ps->viewport[2] = (GLint)(prim->verts[i].xyz[0] + 0.5F);
+- if(prim->verts[i].xyz[1] < gl2ps->viewport[1])
+- gl2ps->viewport[1] = (GLint)prim->verts[i].xyz[1];
+- if(prim->verts[i].xyz[1] > gl2ps->viewport[3])
+- gl2ps->viewport[3] = (GLint)(prim->verts[i].xyz[1] + 0.5F);
+- }
+-}
+-
+-static GLint gl2psPrintPrimitives(void)
+-{
+- GL2PSbsptree *root;
+- GL2PSxyz eye = {0.0F, 0.0F, 100.0F * GL2PS_ZSCALE};
+- GLint used;
+-
+- used = glRenderMode(GL_RENDER);
+-
+- if(used < 0){
+- gl2psMsg(GL2PS_INFO, "OpenGL feedback buffer overflow");
+- return GL2PS_OVERFLOW;
+- }
+-
+- if(used > 0)
+- gl2psParseFeedbackBuffer(used);
+-
+- gl2psRescaleAndOffset();
+-
+- if(gl2ps->header){
+- if(gl2psListNbr(gl2ps->primitives) &&
+- (gl2ps->options & GL2PS_TIGHT_BOUNDING_BOX)){
+- gl2ps->viewport[0] = gl2ps->viewport[1] = 100000;
+- gl2ps->viewport[2] = gl2ps->viewport[3] = -100000;
+- gl2psListAction(gl2ps->primitives, gl2psComputeTightBoundingBox);
+- }
+- (gl2psbackends[gl2ps->format]->printHeader)();
+- gl2ps->header = GL_FALSE;
+- }
+-
+- if(!gl2psListNbr(gl2ps->primitives)){
+- /* empty feedback buffer and/or nothing else to print */
+- return GL2PS_NO_FEEDBACK;
+- }
+-
+- switch(gl2ps->sort){
+- case GL2PS_NO_SORT :
+- gl2psListAction(gl2ps->primitives, gl2psbackends[gl2ps->format]->printPrimitive);
+- gl2psListAction(gl2ps->primitives, gl2psFreePrimitive);
+- /* reset the primitive list, waiting for the next viewport */
+- gl2psListReset(gl2ps->primitives);
+- break;
+- case GL2PS_SIMPLE_SORT :
+- gl2psListSort(gl2ps->primitives, gl2psCompareDepth);
+- if(gl2ps->options & GL2PS_OCCLUSION_CULL){
+- gl2psListActionInverse(gl2ps->primitives, gl2psAddInImageTree);
+- gl2psFreeBspImageTree(&gl2ps->imagetree);
+- }
+- gl2psListAction(gl2ps->primitives, gl2psbackends[gl2ps->format]->printPrimitive);
+- gl2psListAction(gl2ps->primitives, gl2psFreePrimitive);
+- /* reset the primitive list, waiting for the next viewport */
+- gl2psListReset(gl2ps->primitives);
+- break;
+- case GL2PS_BSP_SORT :
+- root = (GL2PSbsptree*)gl2psMalloc(sizeof(GL2PSbsptree));
+- gl2psBuildBspTree(root, gl2ps->primitives);
+- if(GL_TRUE == gl2ps->boundary) gl2psBuildPolygonBoundary(root);
+- if(gl2ps->options & GL2PS_OCCLUSION_CULL){
+- gl2psTraverseBspTree(root, eye, -GL2PS_EPSILON, gl2psLess,
+- gl2psAddInImageTree, 1);
+- gl2psFreeBspImageTree(&gl2ps->imagetree);
+- }
+- gl2psTraverseBspTree(root, eye, GL2PS_EPSILON, gl2psGreater,
+- gl2psbackends[gl2ps->format]->printPrimitive, 0);
+- gl2psFreeBspTree(&root);
+- /* reallocate the primitive list (it's been deleted by
+- gl2psBuildBspTree) in case there is another viewport */
+- gl2ps->primitives = gl2psListCreate(500, 500, sizeof(GL2PSprimitive*));
+- break;
+- }
+- gl2psbackends[gl2ps->format]->printFinalPrimitive();
+-
+- return GL2PS_SUCCESS;
+-}
+-
+-/*********************************************************************
+- *
+- * Public routines
+- *
+- *********************************************************************/
+-
+-GL2PSDLL_API GLint gl2psBeginPage(const char *title, const char *producer,
+- GLint viewport[4], GLint format, GLint sort,
+- GLint options, GLint colormode,
+- GLint colorsize, GL2PSrgba *colormap,
+- GLint nr, GLint ng, GLint nb, GLint buffersize,
+- FILE *stream, const char *filename)
+-{
+- GLint index;
+- int i;
+-
+- if(gl2ps){
+- gl2psMsg(GL2PS_ERROR, "gl2psBeginPage called in wrong program state");
+- return GL2PS_ERROR;
+- }
+-
+- gl2ps = (GL2PScontext*)gl2psMalloc(sizeof(GL2PScontext));
+-
+- if(format >= 0 && format < (GLint)(sizeof(gl2psbackends) / sizeof(gl2psbackends[0]))){
+- gl2ps->format = format;
+- }
+- else {
+- gl2psMsg(GL2PS_ERROR, "Unknown output format: %d", format);
+- gl2psFree(gl2ps);
+- gl2ps = NULL;
+- return GL2PS_ERROR;
+- }
+-
+- switch(sort){
+- case GL2PS_NO_SORT :
+- case GL2PS_SIMPLE_SORT :
+- case GL2PS_BSP_SORT :
+- gl2ps->sort = sort;
+- break;
+- default :
+- gl2psMsg(GL2PS_ERROR, "Unknown sorting algorithm: %d", sort);
+- gl2psFree(gl2ps);
+- gl2ps = NULL;
+- return GL2PS_ERROR;
+- }
+-
+- if(stream){
+- gl2ps->stream = stream;
+- }
+- else{
+- gl2psMsg(GL2PS_ERROR, "Bad file pointer");
+- gl2psFree(gl2ps);
+- gl2ps = NULL;
+- return GL2PS_ERROR;
+- }
+-
+- gl2ps->header = GL_TRUE;
+- gl2ps->maxbestroot = 10;
+- gl2ps->options = options;
+- gl2ps->compress = NULL;
+- gl2ps->imagemap_head = NULL;
+- gl2ps->imagemap_tail = NULL;
+-
+- if(gl2ps->options & GL2PS_USE_CURRENT_VIEWPORT){
+- glGetIntegerv(GL_VIEWPORT, gl2ps->viewport);
+- }
+- else{
+- for(i = 0; i < 4; i++){
+- gl2ps->viewport[i] = viewport[i];
+- }
+- }
+-
+- if(!gl2ps->viewport[2] || !gl2ps->viewport[3]){
+- gl2psMsg(GL2PS_ERROR, "Incorrect viewport (x=%d, y=%d, width=%d, height=%d)",
+- gl2ps->viewport[0], gl2ps->viewport[1],
+- gl2ps->viewport[2], gl2ps->viewport[3]);
+- gl2psFree(gl2ps);
+- gl2ps = NULL;
+- return GL2PS_ERROR;
+- }
+-
+- gl2ps->threshold[0] = nr ? 1.0F / (GLfloat)nr : 0.064F;
+- gl2ps->threshold[1] = ng ? 1.0F / (GLfloat)ng : 0.034F;
+- gl2ps->threshold[2] = nb ? 1.0F / (GLfloat)nb : 0.100F;
+- gl2ps->colormode = colormode;
+- gl2ps->buffersize = buffersize > 0 ? buffersize : 2048 * 2048;
+- for(i = 0; i < 3; i++){
+- gl2ps->lastvertex.xyz[i] = -1.0F;
+- }
+- for(i = 0; i < 4; i++){
+- gl2ps->lastvertex.rgba[i] = -1.0F;
+- gl2ps->lastrgba[i] = -1.0F;
+- }
+- gl2ps->lastlinewidth = -1.0F;
+- gl2ps->lastpattern = 0;
+- gl2ps->lastfactor = 0;
+- gl2ps->imagetree = NULL;
+- gl2ps->primitivetoadd = NULL;
+- gl2ps->zerosurfacearea = GL_FALSE;
+- gl2ps->pdfprimlist = NULL;
+- gl2ps->pdfgrouplist = NULL;
+- gl2ps->xreflist = NULL;
+-
+- /* get default blending mode from current OpenGL state (enabled by
+- default for SVG) */
+- gl2ps->blending = (gl2ps->format == GL2PS_SVG) ? GL_TRUE : glIsEnabled(GL_BLEND);
+- glGetIntegerv(GL_BLEND_SRC, &gl2ps->blendfunc[0]);
+- glGetIntegerv(GL_BLEND_DST, &gl2ps->blendfunc[1]);
+-
+- if(gl2ps->colormode == GL_RGBA){
+- gl2ps->colorsize = 0;
+- gl2ps->colormap = NULL;
+- glGetFloatv(GL_COLOR_CLEAR_VALUE, gl2ps->bgcolor);
+- }
+- else if(gl2ps->colormode == GL_COLOR_INDEX){
+- if(!colorsize || !colormap){
+- gl2psMsg(GL2PS_ERROR, "Missing colormap for GL_COLOR_INDEX rendering");
+- gl2psFree(gl2ps);
+- gl2ps = NULL;
+- return GL2PS_ERROR;
+- }
+- gl2ps->colorsize = colorsize;
+- gl2ps->colormap = (GL2PSrgba*)gl2psMalloc(gl2ps->colorsize * sizeof(GL2PSrgba));
+- memcpy(gl2ps->colormap, colormap, gl2ps->colorsize * sizeof(GL2PSrgba));
+- glGetIntegerv(GL_INDEX_CLEAR_VALUE, &index);
+- gl2ps->bgcolor[0] = gl2ps->colormap[index][0];
+- gl2ps->bgcolor[1] = gl2ps->colormap[index][1];
+- gl2ps->bgcolor[2] = gl2ps->colormap[index][2];
+- gl2ps->bgcolor[3] = 1.0F;
+- }
+- else{
+- gl2psMsg(GL2PS_ERROR, "Unknown color mode in gl2psBeginPage");
+- gl2psFree(gl2ps);
+- gl2ps = NULL;
+- return GL2PS_ERROR;
+- }
+-
+- if(!title){
+- gl2ps->title = (char*)gl2psMalloc(sizeof(char));
+- gl2ps->title[0] = '\0';
+- }
+- else{
+- gl2ps->title = (char*)gl2psMalloc((strlen(title)+1)*sizeof(char));
+- strcpy(gl2ps->title, title);
+- }
+-
+- if(!producer){
+- gl2ps->producer = (char*)gl2psMalloc(sizeof(char));
+- gl2ps->producer[0] = '\0';
+- }
+- else{
+- gl2ps->producer = (char*)gl2psMalloc((strlen(producer)+1)*sizeof(char));
+- strcpy(gl2ps->producer, producer);
+- }
+-
+- if(!filename){
+- gl2ps->filename = (char*)gl2psMalloc(sizeof(char));
+- gl2ps->filename[0] = '\0';
+- }
+- else{
+- gl2ps->filename = (char*)gl2psMalloc((strlen(filename)+1)*sizeof(char));
+- strcpy(gl2ps->filename, filename);
+- }
+-
+- gl2ps->primitives = gl2psListCreate(500, 500, sizeof(GL2PSprimitive*));
+- gl2ps->auxprimitives = gl2psListCreate(100, 100, sizeof(GL2PSprimitive*));
+- gl2ps->feedback = (GLfloat*)gl2psMalloc(gl2ps->buffersize * sizeof(GLfloat));
+- glFeedbackBuffer(gl2ps->buffersize, GL_3D_COLOR, gl2ps->feedback);
+- glRenderMode(GL_FEEDBACK);
+-
+- return GL2PS_SUCCESS;
+-}
+-
+-GL2PSDLL_API GLint gl2psEndPage(void)
+-{
+- GLint res;
+-
+- if(!gl2ps) return GL2PS_UNINITIALIZED;
+-
+- res = gl2psPrintPrimitives();
+-
+- if(res != GL2PS_OVERFLOW)
+- (gl2psbackends[gl2ps->format]->printFooter)();
+-
+- fflush(gl2ps->stream);
+-
+- gl2psListDelete(gl2ps->primitives);
+- gl2psListDelete(gl2ps->auxprimitives);
+- gl2psFreeImagemap(gl2ps->imagemap_head);
+- gl2psFree(gl2ps->colormap);
+- gl2psFree(gl2ps->title);
+- gl2psFree(gl2ps->producer);
+- gl2psFree(gl2ps->filename);
+- gl2psFree(gl2ps->feedback);
+- gl2psFree(gl2ps);
+- gl2ps = NULL;
+-
+- return res;
+-}
+-
+-GL2PSDLL_API GLint gl2psBeginViewport(GLint viewport[4])
+-{
+- if(!gl2ps) return GL2PS_UNINITIALIZED;
+-
+- (gl2psbackends[gl2ps->format]->beginViewport)(viewport);
+-
+- return GL2PS_SUCCESS;
+-}
+-
+-GL2PSDLL_API GLint gl2psEndViewport(void)
+-{
+- GLint res;
+-
+- if(!gl2ps) return GL2PS_UNINITIALIZED;
+-
+- res = (gl2psbackends[gl2ps->format]->endViewport)();
+-
+- /* reset last used colors, line widths */
+- gl2ps->lastlinewidth = -1.0F;
+-
+- return res;
+-}
+-
+-GL2PSDLL_API GLint gl2psTextOpt(const char *str, const char *fontname,
+- GLshort fontsize, GLint alignment, GLfloat angle)
+-{
+- return gl2psAddText(GL2PS_TEXT, str, fontname, fontsize, alignment, angle);
+-}
+-
+-GL2PSDLL_API GLint gl2psText(const char *str, const char *fontname, GLshort fontsize)
+-{
+- return gl2psAddText(GL2PS_TEXT, str, fontname, fontsize, GL2PS_TEXT_BL, 0.0F);
+-}
+-
+-GL2PSDLL_API GLint gl2psSpecial(GLint format, const char *str)
+-{
+- return gl2psAddText(GL2PS_SPECIAL, str, "", 0, format, 0.0F);
+-}
+-
+-GL2PSDLL_API GLint gl2psDrawPixels(GLsizei width, GLsizei height,
+- GLint xorig, GLint yorig,
+- GLenum format, GLenum type,
+- const void *pixels)
+-{
+- int size, i;
+- GLfloat pos[4], *piv;
+- GL2PSprimitive *prim;
+- GLboolean valid;
+-
+- if(!gl2ps || !pixels) return GL2PS_UNINITIALIZED;
+-
+- if((width <= 0) || (height <= 0)) return GL2PS_ERROR;
+-
+- if(gl2ps->options & GL2PS_NO_PIXMAP) return GL2PS_SUCCESS;
+-
+- if((format != GL_RGB && format != GL_RGBA) || type != GL_FLOAT){
+- gl2psMsg(GL2PS_ERROR, "gl2psDrawPixels only implemented for "
+- "GL_RGB/GL_RGBA, GL_FLOAT pixels");
+- return GL2PS_ERROR;
+- }
+-
+- glGetBooleanv(GL_CURRENT_RASTER_POSITION_VALID, &valid);
+- if(GL_FALSE == valid) return GL2PS_SUCCESS; /* the primitive is culled */
+-
+- glGetFloatv(GL_CURRENT_RASTER_POSITION, pos);
+-
+- prim = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
+- prim->type = GL2PS_PIXMAP;
+- prim->boundary = 0;
+- prim->numverts = 1;
+- prim->verts = (GL2PSvertex*)gl2psMalloc(sizeof(GL2PSvertex));
+- prim->verts[0].xyz[0] = pos[0] + xorig;
+- prim->verts[0].xyz[1] = pos[1] + yorig;
+- prim->verts[0].xyz[2] = pos[2];
+- prim->culled = 0;
+- prim->offset = 0;
+- prim->pattern = 0;
+- prim->factor = 0;
+- prim->width = 1;
+- glGetFloatv(GL_CURRENT_RASTER_COLOR, prim->verts[0].rgba);
+- prim->data.image = (GL2PSimage*)gl2psMalloc(sizeof(GL2PSimage));
+- prim->data.image->width = width;
+- prim->data.image->height = height;
+- prim->data.image->format = format;
+- prim->data.image->type = type;
+-
+- switch(format){
+- case GL_RGBA:
+- if(gl2ps->options & GL2PS_NO_BLENDING || !gl2ps->blending){
+- /* special case: blending turned off */
+- prim->data.image->format = GL_RGB;
+- size = height * width * 3;
+- prim->data.image->pixels = (GLfloat*)gl2psMalloc(size * sizeof(GLfloat));
+- piv = (GLfloat*)pixels;
+- for(i = 0; i < size; ++i, ++piv){
+- prim->data.image->pixels[i] = *piv;
+- if(!((i+1)%3))
+- ++piv;
+- }
+- }
+- else{
+- size = height * width * 4;
+- prim->data.image->pixels = (GLfloat*)gl2psMalloc(size * sizeof(GLfloat));
+- memcpy(prim->data.image->pixels, pixels, size * sizeof(GLfloat));
+- }
+- break;
+- case GL_RGB:
+- default:
+- size = height * width * 3;
+- prim->data.image->pixels = (GLfloat*)gl2psMalloc(size * sizeof(GLfloat));
+- memcpy(prim->data.image->pixels, pixels, size * sizeof(GLfloat));
+- break;
+- }
+-
+- gl2psListAdd(gl2ps->auxprimitives, &prim);
+- glPassThrough(GL2PS_DRAW_PIXELS_TOKEN);
+-
+- return GL2PS_SUCCESS;
+-}
+-
+-GL2PSDLL_API GLint gl2psDrawImageMap(GLsizei width, GLsizei height,
+- const GLfloat position[3],
+- const unsigned char *imagemap){
+- int size, i;
+- int sizeoffloat = sizeof(GLfloat);
+-
+- if(!gl2ps || !imagemap) return GL2PS_UNINITIALIZED;
+-
+- if((width <= 0) || (height <= 0)) return GL2PS_ERROR;
+-
+- size = height + height * ((width - 1) / 8);
+- glPassThrough(GL2PS_IMAGEMAP_TOKEN);
+- glBegin(GL_POINTS);
+- glVertex3f(position[0], position[1],position[2]);
+- glEnd();
+- glPassThrough((GLfloat)width);
+- glPassThrough((GLfloat)height);
+- for(i = 0; i < size; i += sizeoffloat){
+- float *value = (float*)imagemap;
+- glPassThrough(*value);
+- imagemap += sizeoffloat;
+- }
+- return GL2PS_SUCCESS;
+-}
+-
+-GL2PSDLL_API GLint gl2psEnable(GLint mode)
+-{
+- GLint tmp;
+-
+- if(!gl2ps) return GL2PS_UNINITIALIZED;
+-
+- switch(mode){
+- case GL2PS_POLYGON_OFFSET_FILL :
+- glPassThrough(GL2PS_BEGIN_OFFSET_TOKEN);
+- glGetFloatv(GL_POLYGON_OFFSET_FACTOR, &gl2ps->offset[0]);
+- glGetFloatv(GL_POLYGON_OFFSET_UNITS, &gl2ps->offset[1]);
+- break;
+- case GL2PS_POLYGON_BOUNDARY :
+- glPassThrough(GL2PS_BEGIN_BOUNDARY_TOKEN);
+- break;
+- case GL2PS_LINE_STIPPLE :
+- glPassThrough(GL2PS_BEGIN_STIPPLE_TOKEN);
+- glGetIntegerv(GL_LINE_STIPPLE_PATTERN, &tmp);
+- glPassThrough((GLfloat)tmp);
+- glGetIntegerv(GL_LINE_STIPPLE_REPEAT, &tmp);
+- glPassThrough((GLfloat)tmp);
+- break;
+- case GL2PS_BLEND :
+- glPassThrough(GL2PS_BEGIN_BLEND_TOKEN);
+- break;
+- default :
+- gl2psMsg(GL2PS_WARNING, "Unknown mode in gl2psEnable: %d", mode);
+- return GL2PS_WARNING;
+- }
+-
+- return GL2PS_SUCCESS;
+-}
+-
+-GL2PSDLL_API GLint gl2psDisable(GLint mode)
+-{
+- if(!gl2ps) return GL2PS_UNINITIALIZED;
+-
+- switch(mode){
+- case GL2PS_POLYGON_OFFSET_FILL :
+- glPassThrough(GL2PS_END_OFFSET_TOKEN);
+- break;
+- case GL2PS_POLYGON_BOUNDARY :
+- glPassThrough(GL2PS_END_BOUNDARY_TOKEN);
+- break;
+- case GL2PS_LINE_STIPPLE :
+- glPassThrough(GL2PS_END_STIPPLE_TOKEN);
+- break;
+- case GL2PS_BLEND :
+- glPassThrough(GL2PS_END_BLEND_TOKEN);
+- break;
+- default :
+- gl2psMsg(GL2PS_WARNING, "Unknown mode in gl2psDisable: %d", mode);
+- return GL2PS_WARNING;
+- }
+-
+- return GL2PS_SUCCESS;
+-}
+-
+-GL2PSDLL_API GLint gl2psPointSize(GLfloat value)
+-{
+- if(!gl2ps) return GL2PS_UNINITIALIZED;
+-
+- glPassThrough(GL2PS_POINT_SIZE_TOKEN);
+- glPassThrough(value);
+-
+- return GL2PS_SUCCESS;
+-}
+-
+-GL2PSDLL_API GLint gl2psLineWidth(GLfloat value)
+-{
+- if(!gl2ps) return GL2PS_UNINITIALIZED;
+-
+- glPassThrough(GL2PS_LINE_WIDTH_TOKEN);
+- glPassThrough(value);
+-
+- return GL2PS_SUCCESS;
+-}
+-
+-GL2PSDLL_API GLint gl2psBlendFunc(GLenum sfactor, GLenum dfactor)
+-{
+- if(!gl2ps) return GL2PS_UNINITIALIZED;
+-
+- if(GL_FALSE == gl2psSupportedBlendMode(sfactor, dfactor))
+- return GL2PS_WARNING;
+-
+- glPassThrough(GL2PS_SRC_BLEND_TOKEN);
+- glPassThrough((GLfloat)sfactor);
+- glPassThrough(GL2PS_DST_BLEND_TOKEN);
+- glPassThrough((GLfloat)dfactor);
+-
+- return GL2PS_SUCCESS;
+-}
+-
+-GL2PSDLL_API GLint gl2psSetOptions(GLint options)
+-{
+- if(!gl2ps) return GL2PS_UNINITIALIZED;
+-
+- gl2ps->options = options;
+-
+- return GL2PS_SUCCESS;
+-}
+-
+-GL2PSDLL_API GLint gl2psGetOptions(GLint *options)
+-{
+- if(!gl2ps) {
+- *options = 0;
+- return GL2PS_UNINITIALIZED;
+- }
+-
+- *options = gl2ps->options;
+-
+- return GL2PS_SUCCESS;
+-}
+-
+-GL2PSDLL_API const char *gl2psGetFileExtension(GLint format)
+-{
+- if(format >= 0 && format < (GLint)(sizeof(gl2psbackends) / sizeof(gl2psbackends[0])))
+- return gl2psbackends[format]->file_extension;
+- else
+- return "Unknown format";
+-}
+-
+-GL2PSDLL_API const char *gl2psGetFormatDescription(GLint format)
+-{
+- if(format >= 0 && format < (GLint)(sizeof(gl2psbackends) / sizeof(gl2psbackends[0])))
+- return gl2psbackends[format]->description;
+- else
+- return "Unknown format";
+-}
diff --git a/debian/patches/20-add-libgl2ps-build-dep.patch b/debian/patches/20-add-libgl2ps-build-dep.patch
new file mode 100644
index 0000000..8ff1c19
--- /dev/null
+++ b/debian/patches/20-add-libgl2ps-build-dep.patch
@@ -0,0 +1,23 @@
+--- a/build/package/lib/makebuilddepend.sh
++++ b/build/package/lib/makebuilddepend.sh
+@@ -199,7 +199,8 @@
+ echo -n ", libglu1-mesa-dev"
+ echo -n "| xlibmesa-glu-dev | libglu-dev"
+ echo -n ", libglew1.5-dev | libglew-dev"
+- echo -n ", libftgl-dev | ftgl-dev" ;;
++ echo -n ", libftgl-dev | ftgl-dev"
++ echo -n ", libgl2ps-dev" ;;
+ libroot-gui) ;;
+ libroot-gui-ged) ;;
+ libroot-hist) ;;
+--- a/build/package/common/libroot-graf3d-gl.control
++++ b/build/package/common/libroot-graf3d-gl.control
+@@ -22,7 +22,7 @@
+ Package: libroot-graf3d-gl-dev
+ Architecture: any
+ Section: libdevel
+-Depends: libroot-graf3d-gl at libvers@ (= ${binary:Version}), ${misc:Depends}
++Depends: libroot-graf3d-gl at libvers@ (= ${binary:Version}), libgl2ps-dev, ${misc:Depends}
+ Breaks: root-plugin-graf3d-gl (<< 5.19.00-1)
+ Replaces: root-plugin-graf3d-gl
+ Description: GL plugin for ROOT - development files
diff --git a/debian/patches/21-fix-manpage-hyphen.patch b/debian/patches/21-fix-manpage-hyphen.patch
new file mode 100644
index 0000000..aacbf6a
--- /dev/null
+++ b/debian/patches/21-fix-manpage-hyphen.patch
@@ -0,0 +1,33 @@
+--- a/man/man1/rlibmap.1
++++ b/man/man1/rlibmap.1
+@@ -8,7 +8,7 @@
+ rlibmap \- ROOT utility to create class to library maps
+ .SH SYNOPSIS
+ .B rlibmap
+-[-f] [[-r|-o] \fImapfile\fR] -l \fIlibrary\fR -d \fIdependecy\fR -c \fILinkdef\fR
++[\(hyf] [[\(hyr|\(hyo] \fImapfile\fR] \(hyl \fIlibrary\fR \(hyd \fIdependecy\fR \(hyc \fILinkdef\fR
+ .SH "DESCRIPTION"
+ Creates a map from classes to shared libraries that contain these
+ classes.
+--- a/man/man1/rmkdepend.1
++++ b/man/man1/rmkdepend.1
+@@ -286,7 +286,7 @@
+ Filename.
+ This allows you to specify an alternate target filename to be use for the preceding file. For example if you call
+ .sp
+- rmkdepend -sobj -pbuild file.cxx -tlibrary.so
++ rmkdepend \(hysobj \(hypbuild file.cxx \(hytlibrary.so
+ .sp
+ rather than inserting the line
+ .sp
+--- a/man/man1/root-config.1
++++ b/man/man1/root-config.1
+@@ -48,7 +48,7 @@
+ CLEANFILES = *Cint.cxx *Cint.h *~ core
+
+ %Cint.cxx %Cint.h:Include.h LinkDef.h
+- @ROOTCINT@ \-f $*Cint.cxx -c $(INCLUDES) $(AM_CPPFLAGS) $^
++ @ROOTCINT@ \(hyf $*Cint.cxx \(hyc $(INCLUDES) $(AM_CPPFLAGS) $^
+
+ .fi
+ .RE
diff --git a/debian/patches/22-fix-typo-succes-success.patch b/debian/patches/22-fix-typo-succes-success.patch
new file mode 100644
index 0000000..f7acc24
--- /dev/null
+++ b/debian/patches/22-fix-typo-succes-success.patch
@@ -0,0 +1,392 @@
+--- a/core/meta/src/TCint.cxx
++++ b/core/meta/src/TCint.cxx
+@@ -1776,7 +1776,7 @@
+ Int_t TCint::UnloadAllSharedLibraryMaps()
+ {
+ // Unload the library map entries coming from all the loaded shared libraries.
+- // Returns 0 if succesful
++ // Returns 0 if successful
+
+ const TString sharedLibLStr = GetSharedLibs();
+ const TObjArray *sharedLibL = sharedLibLStr.Tokenize(" ");
+--- a/core/unix/src/TUnixSystem.cxx
++++ b/core/unix/src/TUnixSystem.cxx
+@@ -1612,7 +1612,7 @@
+ //______________________________________________________________________________
+ int TUnixSystem::Symlink(const char *from, const char *to)
+ {
+- // Create a symlink from file1 to file2. Returns 0 when succesfull,
++ // Create a symlink from file1 to file2. Returns 0 when successful,
+ // -1 in case of failure.
+
+ #if defined(R__AIX)
+@@ -1625,7 +1625,7 @@
+ //______________________________________________________________________________
+ int TUnixSystem::Unlink(const char *name)
+ {
+- // Unlink, i.e. remove, a file or directory. Returns 0 when succesfull,
++ // Unlink, i.e. remove, a file or directory. Returns 0 when successful,
+ // -1 in case of failure.
+
+ TSystem *helper = FindHelper(name);
+--- a/core/winnt/src/TWinNTSystem.cxx
++++ b/core/winnt/src/TWinNTSystem.cxx
+@@ -2724,7 +2724,7 @@
+ //______________________________________________________________________________
+ int TWinNTSystem::Symlink(const char *from, const char *to)
+ {
+- // Create a symlink from file1 to file2. Returns 0 when succesfull,
++ // Create a symlink from file1 to file2. Returns 0 when successful,
+ // -1 in case of failure.
+
+ HRESULT hRes; /* Returned COM result code */
+--- a/graf2d/asimage/src/libAfterImage/libungif/dgif_lib.c
++++ b/graf2d/asimage/src/libAfterImage/libungif/dgif_lib.c
+@@ -687,7 +687,7 @@
+ * The LZ decompression input routine: *
+ * This routine is responsable for the decompression of the bit stream from *
+ * 8 bits (bytes) packets, into the real codes. *
+-* Returns GIF_OK if read succesfully. *
++* Returns GIF_OK if read successfully. *
+ ******************************************************************************/
+ static int DGifDecompressInput(GifFileType *GifFile, int *Code)
+ {
+@@ -730,7 +730,7 @@
+ * This routines read one gif data block at a time and buffers it internally *
+ * so that the decompression routine could access it. *
+ * The routine returns the next byte from its internal buffer (or read next *
+-* block in if buffer empty) and returns GIF_OK if succesful. *
++* block in if buffer empty) and returns GIF_OK if successful. *
+ ******************************************************************************/
+ static int DGifBufferedInput(GifFileType *GifFile, GifByteType *Buf,
+ GifByteType *NextByte)
+--- a/graf2d/asimage/src/libAfterImage/libungif/egif_lib.c
++++ b/graf2d/asimage/src/libAfterImage/libungif/egif_lib.c
+@@ -69,7 +69,7 @@
+ * Update a new gif file, given its file handle, which must be opened for *
+ * write in binary mode. *
+ * Returns GifFileType pointer dynamically allocated which serves as the gif *
+-* info record. _GifError is cleared if succesfull. *
++* info record. _GifError is cleared if successful. *
+ ******************************************************************************/
+ GifFileType *EGifOpenFileHandle(int FileHandle)
+ {
+@@ -732,7 +732,7 @@
+ * The LZ compression output routine: *
+ * This routine is responsible for the compression of the bit stream into *
+ * 8 bits (bytes) packets. *
+-* Returns GIF_OK if written succesfully. *
++* Returns GIF_OK if written successfully. *
+ ******************************************************************************/
+ static int EGifCompressOutput(GifFileType *GifFile, int Code)
+ {
+@@ -778,7 +778,7 @@
+ * This routines buffers the given characters until 255 characters are ready *
+ * to be output. If Code is equal to -1 the buffer is flushed (EOF). *
+ * The buffer is Dumped with first byte as its size, as GIF format requires. *
+-* Returns GIF_OK if written succesfully. *
++* Returns GIF_OK if written successfully. *
+ ******************************************************************************/
+ static int EGifBufferedOutput(GifFileType *GifFile, GifByteType *Buf, int c)
+ {
+--- a/graf2d/win32gdk/src/gifquantize.c
++++ b/graf2d/win32gdk/src/gifquantize.c
+@@ -58,7 +58,7 @@
+ * ColorMapSize specifies size of color map up to 256 and will be updated to *
+ * real size before returning. *
+ * Also non of the parameter are allocated by this routine. *
+-* This function returns GIF_OK if succesfull, GIF_ERROR otherwise. *
++* This function returns GIF_OK if successful, GIF_ERROR otherwise. *
+ ******************************************************************************/
+ int GIFquantize(unsigned int Width, unsigned int Height, int *ColorMapSize,
+ byte *RedInput, byte *GreenInput, byte *BlueInput,
+--- a/graf2d/x11/src/gifquantize.c
++++ b/graf2d/x11/src/gifquantize.c
+@@ -58,7 +58,7 @@
+ * ColorMapSize specifies size of color map up to 256 and will be updated to *
+ * real size before returning. *
+ * Also non of the parameter are allocated by this routine. *
+-* This function returns GIF_OK if succesfull, GIF_ERROR otherwise. *
++* This function returns GIF_OK if successful, GIF_ERROR otherwise. *
+ ******************************************************************************/
+ int GIFquantize(unsigned int Width, unsigned int Height, int *ColorMapSize,
+ byte *RedInput, byte *GreenInput, byte *BlueInput,
+--- a/gui/fitpanel/inc/TFitEditor.h
++++ b/gui/fitpanel/inc/TFitEditor.h
+@@ -133,7 +133,7 @@
+ };
+ std::vector<FuncParamData_t> fFuncPars; // function parameters (value + limits)
+
+- std::multimap<TObject*, TF1*> fPrevFit; // Previous succesful fits.
++ std::multimap<TObject*, TF1*> fPrevFit; // Previous successful fits.
+ std::vector<TF1*> fSystemFuncs; // functions managed by the fitpanel
+
+ TGRadioButton *fLibMinuit; // set default minimization library (Minuit)
+--- a/gui/fitpanel/test/UnitTesting.cxx
++++ b/gui/fitpanel/test/UnitTesting.cxx
+@@ -170,7 +170,7 @@
+ // This function compares the parameters stored in the TFitEditor
+ // with the ones passed by the test functions. Normally, if the
+ // function return 0, it means all the parameters are equal up to a
+- // certain limit, thus the test was succesful.
++ // certain limit, thus the test was successful.
+ int CompareFuncPars(std::vector<TFitEditor::FuncParamData_t>& pars)
+ {
+ int status = 0;
+--- a/gui/sessionviewer/src/TSessionDialogs.cxx
++++ b/gui/sessionviewer/src/TSessionDialogs.cxx
+@@ -1313,7 +1313,7 @@
+ }
+ else {
+ new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
+- "Files have been succesfully uploaded to the cluster",
++ "Files have been successfully uploaded to the cluster",
+ kMBIconAsterisk, kMBOk, &retval);
+ }
+ fUploading = kFALSE;
+@@ -1338,7 +1338,7 @@
+ }
+ else {
+ new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
+- "Files have been succesfully uploaded to the cluster",
++ "Files have been successfully uploaded to the cluster",
+ kMBIconAsterisk, kMBOk, &retval);
+ }
+ }
+@@ -1347,7 +1347,7 @@
+ }
+ else {
+ new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
+- "Files have been succesfully uploaded to the cluster",
++ "Files have been successfully uploaded to the cluster",
+ kMBIconAsterisk, kMBOk, &retval);
+ }
+ // finally, update list of datasets in session viewer
+--- a/io/hdfs/src/THDFSFile.cxx
++++ b/io/hdfs/src/THDFSFile.cxx
+@@ -490,7 +490,7 @@
+ //______________________________________________________________________________
+ Int_t THDFSSystem::Unlink(const char * path)
+ {
+- // Unlink, i.e. remove, a file or directory. Returns 0 when succesfull,
++ // Unlink, i.e. remove, a file or directory. Returns 0 when successful,
+ // -1 in case of failure.
+
+ if (fFH == 0) {
+--- a/io/rfio/src/TRFIOFile.cxx
++++ b/io/rfio/src/TRFIOFile.cxx
+@@ -543,7 +543,7 @@
+ //______________________________________________________________________________
+ Int_t TRFIOSystem::Unlink(const char *path)
+ {
+- // Unlink, i.e. remove, a file or directory. Returns 0 when succesfull,
++ // Unlink, i.e. remove, a file or directory. Returns 0 when successful,
+ // -1 in case of failure.
+
+ TUrl url(path);
+--- a/io/sql/src/TSQLFile.cxx
++++ b/io/sql/src/TSQLFile.cxx
+@@ -589,7 +589,7 @@
+ {
+ // Start user transaction.
+ // This can be usesfull, when big number of objects should be stored in
+- // data base and commitment required only if all operations were succesfull.
++ // data base and commitment required only if all operations were successful.
+ // In that case in the end of all operations method Commit() should be
+ // called. If operation on user-level is looks like not successfull,
+ // method Rollback() will return database data and TSQLFile instance to
+@@ -935,7 +935,7 @@
+ {
+ // read keys for specified directory (when update == kFALSE)
+ // or update value for modified keys when update == kTRUE
+- // Returns number of succesfully read keys or -1 if error
++ // Returns number of successfully read keys or -1 if error
+
+ if (dir==0) return -1;
+
+--- a/io/xmlparser/src/TXMLParser.cxx
++++ b/io/xmlparser/src/TXMLParser.cxx
+@@ -164,7 +164,7 @@
+ void TXMLParser::SetParseCode(Int_t errorcode)
+ {
+ // Set the parse code:
+- // 0: Parse succesfull
++ // 0: Parse successful
+ // -1: Attempt to parse a second file while a parse is in progress
+ // -2: Parse context is not created
+ // -3: An error occured while parsing file
+--- a/math/mathcore/inc/Math/Minimizer.h
++++ b/math/mathcore/inc/Math/Minimizer.h
+@@ -128,7 +128,7 @@
+ }
+
+
+- /// add variables . Return number of variables succesfully added
++ /// add variables . Return number of variables successfully added
+ template<class VariableIterator>
+ int SetVariables(const VariableIterator & begin, const VariableIterator & end) {
+ unsigned int ivar = 0;
+--- a/math/mathmore/inc/Math/GSLRootFinder.h
++++ b/math/mathmore/inc/Math/GSLRootFinder.h
+@@ -104,7 +104,7 @@
+
+ using IRootFinderMethod::SetFunction;
+
+- // iterate to find ROOTS return GSL_CONTINUE if iteration was succesfull or another error
++ // iterate to find ROOTS return GSL_CONTINUE if iteration was successful or another error
+ int Iterate();
+
+ double Root() const;
+--- a/math/mathmore/inc/Math/GSLRootFinderDeriv.h
++++ b/math/mathmore/inc/Math/GSLRootFinderDeriv.h
+@@ -113,7 +113,7 @@
+
+ using IRootFinderMethod::SetFunction;
+
+- /// iterate (return GSL_SUCCESS in case of succesfull iteration)
++ /// iterate (return GSL_SUCCESS in case of successful iteration)
+ int Iterate();
+
+ double Root() const;
+--- a/math/minuit2/src/FumiliBuilder.cxx
++++ b/math/minuit2/src/FumiliBuilder.cxx
+@@ -46,7 +46,7 @@
+
+ FunctionMinimum FumiliBuilder::Minimum(const MnFcn& fcn, const GradientCalculator& gc, const MinimumSeed& seed, const MnStrategy& strategy, unsigned int maxfcn, double edmval) const {
+ // top level function to find minimum from a given initial seed
+- // iterate on a minimum search in case of first attempt is not succesfull
++ // iterate on a minimum search in case of first attempt is not successful
+
+ edmval *= 0.0001;
+ //edmval *= 0.1; // use small factor for Fumili
+@@ -414,7 +414,7 @@
+ // std::cout<<"result.back().Error().Dcovar()= "<<result.back().Error().Dcovar()<<std::endl;
+
+ #ifdef DEBUG
+- std::cout << "Exiting succesfully FumiliBuilder \n"
++ std::cout << "Exiting successfully FumiliBuilder \n"
+ << "NFCalls = " << fcn.NumOfCalls()
+ << "\nFval = " << result.back().Fval()
+ << "\nedm = " << edm << " requested = " << edmval << std::endl;
+--- a/math/minuit2/src/VariableMetricBuilder.cxx
++++ b/math/minuit2/src/VariableMetricBuilder.cxx
+@@ -41,7 +41,7 @@
+
+ FunctionMinimum VariableMetricBuilder::Minimum(const MnFcn& fcn, const GradientCalculator& gc, const MinimumSeed& seed, const MnStrategy& strategy, unsigned int maxfcn, double edmval) const {
+ // top level function to find minimum from a given initial seed
+- // iterate on a minimum search in case of first attempt is not succesfull
++ // iterate on a minimum search in case of first attempt is not successful
+
+ // to be consistent with F77 Minuit
+ // in Minuit2 edm is correct and is ~ a factor of 2 smaller than F77Minuit
+@@ -399,7 +399,7 @@
+ // std::cout<<"result.back().Error().Dcovar()= "<<result.back().Error().Dcovar()<<std::endl;
+
+ #ifdef DEBUG
+- std::cout << "Exiting succesfully Variable Metric Builder \n"
++ std::cout << "Exiting successfully Variable Metric Builder \n"
+ << "NFCalls = " << fcn.NumOfCalls()
+ << "\nFval = " << result.back().Fval()
+ << "\nedm = " << edm << " requested = " << edmval << std::endl;
+--- a/net/net/src/TSQLServer.cxx
++++ b/net/net/src/TSQLServer.cxx
+@@ -132,7 +132,7 @@
+ Bool_t TSQLServer::StartTransaction()
+ {
+ // submit "START TRANSACTION" query to database
+- // return kTRUE, if succesfull
++ // return kTRUE, if successful
+
+ return Exec("START TRANSACTION");
+ }
+@@ -141,7 +141,7 @@
+ Bool_t TSQLServer::Commit()
+ {
+ // submit "COMMIT" query to database
+- // return kTRUE, if succesfull
++ // return kTRUE, if successful
+
+ return Exec("COMMIT");
+ }
+@@ -150,7 +150,7 @@
+ Bool_t TSQLServer::Rollback()
+ {
+ // submit "ROLLBACK" query to database
+- // return kTRUE, if succesfull
++ // return kTRUE, if successful
+
+ return Exec("ROLLBACK");
+ }
+--- a/net/net/src/TWebFile.cxx
++++ b/net/net/src/TWebFile.cxx
+@@ -1345,7 +1345,7 @@
+ //______________________________________________________________________________
+ Int_t TWebSystem::Unlink(const char *)
+ {
+- // Unlink, i.e. remove, a file or directory. Returns 0 when succesfull,
++ // Unlink, i.e. remove, a file or directory. Returns 0 when successful,
+ // -1 in case of failure. Not supported for httpd.
+
+ return -1;
+--- a/roofit/roofitcore/src/RooAbsAnaConvPdf.cxx
++++ b/roofit/roofitcore/src/RooAbsAnaConvPdf.cxx
+@@ -231,7 +231,7 @@
+ }
+ delete cIter ;
+
+- // Check if all convolutions were succesfully built
++ // Check if all convolutions were successfully built
+ if (!allOK) {
+ // Delete new basis functions created sofar
+ TIterator* iter = newConvSet.createIterator() ;
+--- a/roofit/roofitcore/src/RooCmdConfig.cxx
++++ b/roofit/roofitcore/src/RooCmdConfig.cxx
+@@ -240,7 +240,7 @@
+ void RooCmdConfig::defineDependency(const char* refArgName, const char* neededArgName)
+ {
+ // Define that processing argument name refArgName requires processing
+- // of argument named neededArgName to succesfully complete parsing
++ // of argument named neededArgName to successfully complete parsing
+
+ TNamed* dep = new TNamed(refArgName,neededArgName) ;
+ _yList.Add(dep) ;
+@@ -753,7 +753,7 @@
+ //_____________________________________________________________________________
+ Bool_t RooCmdConfig::ok(Bool_t verbose) const
+ {
+- // Return true of parsing was succesfull
++ // Return true of parsing was successful
+
+ if (_rList.GetSize()==0 && !_error) return kTRUE ;
+
+--- a/roofit/roostats/src/LikelihoodInterval.cxx
++++ b/roofit/roostats/src/LikelihoodInterval.cxx
+@@ -191,7 +191,7 @@
+ {
+ // Compute lower limit, check first if limit has been computed
+ // status is a boolean flag which will b set to false in case of error
+- // and is true if calculation is succesfull
++ // and is true if calculation is successful
+ // in case of error return also a lower limit value of zero
+
+ double lower = 0;
+@@ -205,7 +205,7 @@
+ {
+ // Compute upper limit, check first if limit has been computed
+ // status is a boolean flag which will b set to false in case of error
+- // and is true if calculation is succesfull
++ // and is true if calculation is successful
+ // in case of error return also a lower limit value of zero
+
+ double lower = 0;
+--- a/sql/oracle/src/TOracleServer.cxx
++++ b/sql/oracle/src/TOracleServer.cxx
+@@ -216,7 +216,7 @@
+ Bool_t TOracleServer::Exec(const char* sql)
+ {
+ // Execute sql command wich does not produce any result set.
+- // Return kTRUE if succesfull
++ // Return kTRUE if successful
+
+ CheckConnect("Exec", kFALSE);
+
diff --git a/debian/patches/23-fix-typo-preceed-preced.patch b/debian/patches/23-fix-typo-preceed-preced.patch
new file mode 100644
index 0000000..1cef5d0
--- /dev/null
+++ b/debian/patches/23-fix-typo-preceed-preced.patch
@@ -0,0 +1,346 @@
+--- a/core/base/src/TApplication.cxx
++++ b/core/base/src/TApplication.cxx
+@@ -721,7 +721,7 @@
+ Printf("(as in ssh). A \"dbg\" value > 0 gives increasing verbosity.");
+ Printf("The last argument \"script\" allows to specify an alternative script to");
+ Printf("be executed remotely to startup the session, \"roots\" being");
+- Printf("the default. If the script is preceeded by a \"<\" the script will be");
++ Printf("the default. If the script is preceded by a \"<\" the script will be");
+ Printf("sourced, after which \"roots\" is executed. The sourced script can be ");
+ Printf("used to change the PATH and other variables, allowing an alternative");
+ Printf("\"roots\" script to be found.");
+--- a/core/base/src/TVirtualPS.cxx
++++ b/core/base/src/TVirtualPS.cxx
+@@ -106,7 +106,7 @@
+ if (fLenBuffer > 0) nWrite = fLenBuffer;
+ } else {
+ if ((len + fLenBuffer) > nWrite) {
+- // Search for the nearest preceeding space to break a line, if there is no instruction to escape the <end-of-line>.
++ // Search for the nearest preceding space to break a line, if there is no instruction to escape the <end-of-line>.
+ while ((nWrite >= fLenBuffer) && (str[nWrite - fLenBuffer] != ' ')) nWrite--;
+ if (nWrite < fLenBuffer) {
+ while ((nWrite >= 0) && (fBuffer[nWrite] != ' ')) nWrite--;
+--- a/core/clib/src/Demangle.c
++++ b/core/clib/src/Demangle.c
+@@ -2370,7 +2370,7 @@
+ {
+ /* If we have 10 or more types we might have more than a 1 digit
+ index so we'll have to consume the whole count here. This
+- will loose if the next thing is a type name preceeded by a
++ will loose if the next thing is a type name preceded by a
+ count but it's impossible to demangle that case properly
+ anyway. Eg if we already have 12 types is T12Pc "(..., type1,
+ anyway. Eg if we already have 12 types is T12Pc "(..., type1,
+--- a/graf2d/graf/src/TGaxis.cxx
++++ b/graf2d/graf/src/TGaxis.cxx
+@@ -1494,7 +1494,7 @@
+
+ LabelsLimits(label,first,last); //Eliminate blanks
+
+- if (label[first] == '.') { //check if '.' is preceeded by a digit
++ if (label[first] == '.') { //check if '.' is preceded by a digit
+ strncpy(chtemp, "0",256);
+ strlcat(chtemp, &label[first],256);
+ strncpy(label, chtemp,256);
+--- a/graf3d/gl/inc/TGLOrthoCamera.h
++++ b/graf3d/gl/inc/TGLOrthoCamera.h
+@@ -36,7 +36,7 @@
+ {
+ public:
+ enum EType { kZOY, kXOZ, kXOY, // Pair of world axes aligned to h/v screen.
+- kZnOY, kXnOZ, kXnOY }; // 'n' means preceeding axis is negated.
++ kZnOY, kXnOZ, kXnOY }; // 'n' means preceding axis is negated.
+ private:
+ // Fields
+ EType fType; //! camera type
+--- a/gui/gui/src/HelpText.cxx
++++ b/gui/gui/src/HelpText.cxx
+@@ -452,7 +452,7 @@
+ (as in ssh). A \"dbg\" value > 0 gives increasing verbosity.\n\
+ The last argument \"script\" allows to specify an alternative script to\n\
+ be executed remotely to startup the session, \"roots\" being\n\
+-the default. If the script is preceeded by a \"<\" the script will be\n\
++the default. If the script is preceded by a \"<\" the script will be\n\
+ sourced, after which \"roots\" is executed. The sourced script can be \n\
+ used to change the PATH and other variables, allowing an alternative\n\
+ \"roots\" script to be found.\n\
+--- a/io/io/src/TFree.cxx
++++ b/io/io/src/TFree.cxx
+@@ -55,11 +55,11 @@
+ {
+ // Add a new free segment to the list of free segments.
+ //
+-// If last just preceedes an existing free segment, then first becomes
++// If last just precedes an existing free segment, then first becomes
+ // the new starting location of the free segment.
+ // if first just follows an existing free segment, then last becomes
+ // the new ending location of the free segment.
+-// if first just follows an existing free segment AND last just preceedes
++// if first just follows an existing free segment AND last just precedes
+ // an existing free segment, these two segments are merged into
+ // one single segment.
+ //
+--- a/math/minuit/src/TMinuit.cxx
++++ b/math/minuit/src/TMinuit.cxx
+@@ -3835,7 +3835,7 @@
+ Printf(" reading. Note that this command is implemented in standard");
+ Printf(" Fortran 77 and the results may depend on the system;");
+ Printf(" for example, if a filename is given under VM/CMS, it must");
+- Printf(" be preceeded by a slash.");
++ Printf(" be preceded by a slash.");
+
+ Printf(" ");
+ Printf(" SET INTeractive");
+--- a/misc/table/src/TTable.cxx
++++ b/misc/table/src/TTable.cxx
+@@ -53,7 +53,7 @@
+ // float x_last[3]; /* coord. of last measured point (cm) */
+ // float length; /* from first to last point (cm) */
+ // float impact; /* primary vertex (cm) */
+-// unsigned long map[2]; /* extrap. info. (see preceeding comments)*/
++// unsigned long map[2]; /* extrap. info. (see preceding comments)*/
+ // int id; /* Primary key (see comments) */
+ // int iflag; /* bitmask quality info. (see comments) */
+ // int det_id; /* Detector id information */
+--- a/proof/proofd/src/XrdProofdAux.cxx
++++ b/proof/proofd/src/XrdProofdAux.cxx
+@@ -1603,7 +1603,7 @@
+ {
+ // Parse a path in the form of "<before>[.<pid>][.<after>]", filling 'rest'
+ // and returning 'pid'.
+- // Return 0 if pid is not defined; 'before' is filled with the string preceeding
++ // Return 0 if pid is not defined; 'before' is filled with the string preceding
+ // <pid>, <after> with the string following <pid>.
+ XPDLOC(AUX, "ParsePidPath")
+
+--- a/roofit/histfactory/src/HistoToWorkspaceFactory.cxx
++++ b/roofit/histfactory/src/HistoToWorkspaceFactory.cxx
+@@ -430,11 +430,11 @@
+ string pdfName(pdfNameChar);
+ map<string,string>::iterator it;
+ string edit="EDIT::customized("+pdfName+",";
+- string preceed="";
++ string preced="";
+ for(it=renameMap.begin(); it!=renameMap.end(); ++it) {
+ cout << it->first + "=" + it->second << endl;
+- edit+=preceed + it->first + "=" + it->second;
+- preceed=",";
++ edit+=preced + it->first + "=" + it->second;
++ preced=",";
+ }
+ edit+=")";
+ cout << edit<< endl;
+@@ -452,7 +452,7 @@
+ string edit="EDIT::newSimPdf("+pdfName+",";
+ string editList;
+ string lastPdf=pdfName;
+- string preceed="";
++ string preced="";
+ unsigned int numReplacements = 0;
+ unsigned int nskipped = 0;
+ map<string,double>::iterator it;
+@@ -507,10 +507,10 @@
+
+ // replace alphas with alphaOfBeta and replace constraints
+ //cout << "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint" << endl;
+- editList+=preceed + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
+- preceed=",";
++ editList+=preced + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
++ preced=",";
+ // cout << "alpha_"+it->first+"=alphaOfBeta_"+ it->first << endl;
+- editList+=preceed + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;
++ editList+=preced + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;
+
+ /*
+ if( proto->pdf(("alpha_"+it->first+"Constraint").c_str()) && proto->var(("alpha_"+it->first).c_str()) )
+@@ -524,7 +524,7 @@
+ edit="EDIT::"+lastPdf+"_("+lastPdf+","+editList+")";
+ lastPdf+="_"; // append an underscore for the edit
+ editList=""; // reset edit list
+- preceed="";
++ preced="";
+ cout << "Going to issue this edit command\n" << edit<< endl;
+ proto->factory( edit.c_str() );
+ RooAbsPdf* newOne = proto->pdf(lastPdf.c_str());
+@@ -559,10 +559,10 @@
+
+ // replace alphas with alphaOfBeta and replace constraints
+ cout << "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint" << endl;
+- editList+=preceed + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
+- preceed=",";
++ editList+=preced + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
++ preced=",";
+ cout << "alpha_"+it->first+"=alphaOfBeta_"+ it->first << endl;
+- editList+=preceed + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;
++ editList+=preced + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;
+
+ if( proto->pdf(("alpha_"+it->first+"Constraint").c_str()) && proto->var(("alpha_"+it->first).c_str()) )
+ cout << " checked they are there" << proto->pdf(("alpha_"+it->first+"Constraint").c_str()) << " " << proto->var(("alpha_"+it->first).c_str()) << endl;
+@@ -574,7 +574,7 @@
+ edit="EDIT::"+lastPdf+"_("+lastPdf+","+editList+")";
+ lastPdf+="_"; // append an underscore for the edit
+ editList=""; // reset edit list
+- preceed="";
++ preced="";
+ cout << edit<< endl;
+ proto->factory( edit.c_str() );
+ RooAbsPdf* newOne = proto->pdf(lastPdf.c_str());
+@@ -626,10 +626,10 @@
+
+ // replace alphas with alphaOfBeta and replace constraints
+ cout << "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint" << endl;
+- editList+=preceed + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
+- preceed=",";
++ editList+=preced + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
++ preced=",";
+ cout << "alpha_"+it->first+"=alphaOfBeta_"+ it->first << endl;
+- editList+=preceed + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;
++ editList+=preced + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;
+
+ if( proto->pdf(("alpha_"+it->first+"Constraint").c_str()) && proto->var(("alpha_"+it->first).c_str()) )
+ cout << " checked they are there" << proto->pdf(("alpha_"+it->first+"Constraint").c_str()) << " " << proto->var(("alpha_"+it->first).c_str()) << endl;
+@@ -641,7 +641,7 @@
+ edit="EDIT::"+lastPdf+"_("+lastPdf+","+editList+")";
+ lastPdf+="_"; // append an underscore for the edit
+ editList=""; // reset edit list
+- preceed="";
++ preced="";
+ cout << edit<< endl;
+ proto->factory( edit.c_str() );
+ RooAbsPdf* newOne = proto->pdf(lastPdf.c_str());
+--- a/roofit/histfactory/src/HistoToWorkspaceFactoryFast.cxx
++++ b/roofit/histfactory/src/HistoToWorkspaceFactoryFast.cxx
+@@ -719,11 +719,11 @@
+ string pdfName(pdfNameChar);
+ map<string,string>::iterator it;
+ string edit="EDIT::customized("+pdfName+",";
+- string preceed="";
++ string preced="";
+ for(it=renameMap.begin(); it!=renameMap.end(); ++it) {
+ cout << it->first + "=" + it->second << endl;
+- edit+=preceed + it->first + "=" + it->second;
+- preceed=",";
++ edit+=preced + it->first + "=" + it->second;
++ preced=",";
+ }
+ edit+=")";
+ cout << edit<< endl;
+@@ -743,7 +743,7 @@
+ string edit="EDIT::newSimPdf("+pdfName+",";
+ string editList;
+ string lastPdf=pdfName;
+- string preceed="";
++ string preced="";
+ unsigned int numReplacements = 0;
+ unsigned int nskipped = 0;
+ map<string,double>::iterator it;
+@@ -798,10 +798,10 @@
+
+ // replace alphas with alphaOfBeta and replace constraints
+ //cout << "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint" << endl;
+- editList+=preceed + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
+- preceed=",";
++ editList+=preced + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
++ preced=",";
+ // cout << "alpha_"+it->first+"=alphaOfBeta_"+ it->first << endl;
+- editList+=preceed + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;
++ editList+=preced + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;
+
+ /*
+ if( proto->pdf(("alpha_"+it->first+"Constraint").c_str()) && proto->var(("alpha_"+it->first).c_str()) )
+@@ -815,7 +815,7 @@
+ edit="EDIT::"+lastPdf+"_("+lastPdf+","+editList+")";
+ lastPdf+="_"; // append an underscore for the edit
+ editList=""; // reset edit list
+- preceed="";
++ preced="";
+ cout << "Going to issue this edit command\n" << edit<< endl;
+ proto->factory( edit.c_str() );
+ RooAbsPdf* newOne = proto->pdf(lastPdf.c_str());
+@@ -850,10 +850,10 @@
+
+ // replace alphas with alphaOfBeta and replace constraints
+ cout << "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint" << endl;
+- editList+=preceed + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
+- preceed=",";
++ editList+=preced + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
++ preced=",";
+ cout << "alpha_"+it->first+"=alphaOfBeta_"+ it->first << endl;
+- editList+=preceed + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;
++ editList+=preced + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;
+
+ if( proto->pdf(("alpha_"+it->first+"Constraint").c_str()) && proto->var(("alpha_"+it->first).c_str()) )
+ cout << " checked they are there" << proto->pdf(("alpha_"+it->first+"Constraint").c_str()) << " " << proto->var(("alpha_"+it->first).c_str()) << endl;
+@@ -865,7 +865,7 @@
+ edit="EDIT::"+lastPdf+"_("+lastPdf+","+editList+")";
+ lastPdf+="_"; // append an underscore for the edit
+ editList=""; // reset edit list
+- preceed="";
++ preced="";
+ cout << edit<< endl;
+ proto->factory( edit.c_str() );
+ RooAbsPdf* newOne = proto->pdf(lastPdf.c_str());
+@@ -917,10 +917,10 @@
+
+ // replace alphas with alphaOfBeta and replace constraints
+ cout << "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint" << endl;
+- editList+=preceed + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
+- preceed=",";
++ editList+=preced + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
++ preced=",";
+ cout << "alpha_"+it->first+"=alphaOfBeta_"+ it->first << endl;
+- editList+=preceed + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;
++ editList+=preced + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;
+
+ if( proto->pdf(("alpha_"+it->first+"Constraint").c_str()) && proto->var(("alpha_"+it->first).c_str()) )
+ cout << " checked they are there" << proto->pdf(("alpha_"+it->first+"Constraint").c_str()) << " " << proto->var(("alpha_"+it->first).c_str()) << endl;
+@@ -932,7 +932,7 @@
+ edit="EDIT::"+lastPdf+"_("+lastPdf+","+editList+")";
+ lastPdf+="_"; // append an underscore for the edit
+ editList=""; // reset edit list
+- preceed="";
++ preced="";
+ cout << edit<< endl;
+ proto->factory( edit.c_str() );
+ RooAbsPdf* newOne = proto->pdf(lastPdf.c_str());
+@@ -961,15 +961,15 @@
+
+ // replace constraints
+ cout << "alpha_"+it->first+"Constraint=one" << endl;
+- editList+=preceed + "alpha_"+it->first+"Constraint=one";
+- preceed=",";
++ editList+=preced + "alpha_"+it->first+"Constraint=one";
++ preced=",";
+
+ // EDIT seems to die if the list of edits is too long. So chunck them up.
+ if(numReplacements%10 == 0 && numReplacements+nskipped!=gammaSyst.size()){
+ edit="EDIT::"+lastPdf+"_("+lastPdf+","+editList+")";
+ lastPdf+="_"; // append an underscore for the edit
+ editList=""; // reset edit list
+- preceed="";
++ preced="";
+ cout << edit << endl;
+ proto->factory( edit.c_str() );
+ RooAbsPdf* newOne = proto->pdf(lastPdf.c_str());
+--- a/roofit/roofitcore/src/RooStreamParser.cxx
++++ b/roofit/roofitcore/src/RooStreamParser.cxx
+@@ -204,7 +204,7 @@
+ }
+
+ if (!quotedString) {
+- // Decide if next char is punctuation (exempt - and . that are part of floating point numbers, or +/- preceeding INF)
++ // Decide if next char is punctuation (exempt - and . that are part of floating point numbers, or +/- preceding INF)
+ if (isPunctChar(c) && !(c=='.' && (isdigit(cnext)||isdigit(cprev)))
+ && !((c=='-'||c=='+') && (isdigit(cnext)||cnext=='.'||cnext=='i'||cnext=='I'))) {
+ if (first) {
+--- a/tutorials/graphs/timeonaxis.C
++++ b/tutorials/graphs/timeonaxis.C
+@@ -12,7 +12,7 @@
+ // begin_html <a href="http://www.topology.org/sci/time.html">http://www.topology.org/sci/time.html</a> end_html
+ //
+ // The start time is : almost NOW (the time at which the script is executed)
+-// actualy, the nearest preceeding hour beginning.
++// actualy, the nearest preceding hour beginning.
+ // The time is in general expressed in UTC time with the C time() function
+ // This will obviously most of the time not be the time displayed on your watch
+ // since it is universal time. See the C time functions for converting this time
diff --git a/debian/patches/24-fix-typo-informations-information.patch b/debian/patches/24-fix-typo-informations-information.patch
new file mode 100644
index 0000000..278bbff
--- /dev/null
+++ b/debian/patches/24-fix-typo-informations-information.patch
@@ -0,0 +1,380 @@
+--- a/core/base/inc/TRemoteObject.h
++++ b/core/base/inc/TRemoteObject.h
+@@ -17,7 +17,7 @@
+ // //
+ // The TRemoteObject class provides protocol for browsing ROOT objects //
+ // from a remote ROOT session. //
+-// It contains informations on the real remote object as: //
++// It contains information on the real remote object as: //
+ // - Object Properties (i.e. file stat if the object is a TSystemFile) //
+ // - Object Name //
+ // - Class Name //
+--- a/core/base/src/TRemoteObject.cxx
++++ b/core/base/src/TRemoteObject.cxx
+@@ -15,7 +15,7 @@
+ // //
+ // The TRemoteObject class provides protocol for browsing ROOT objects //
+ // from a remote ROOT session. //
+-// It contains informations on the real remote object as: //
++// It contains information on the real remote object as: //
+ // - Object Properties (i.e. file stat if the object is a TSystemFile) //
+ // - Object Name //
+ // - Class Name //
+--- a/core/meta/src/TFunction.cxx
++++ b/core/meta/src/TFunction.cxx
+@@ -182,7 +182,7 @@
+ // of the function. It has to work even if the function has been
+ // unloaded by cint (in which case fInfo is actually hold reference to
+ // memory that is (likely) not valid anymore. So we cache the information.
+- // Maybe we should also cache the rest of the informations .. but this might
++ // Maybe we should also cache the rest of the information .. but this might
+ // be too much duplication of information.
+ if (fInfo)
+ return fMangledName;
+--- a/core/winnt/src/TWinNTSystem.cxx
++++ b/core/winnt/src/TWinNTSystem.cxx
+@@ -3046,7 +3046,7 @@
+ //______________________________________________________________________________
+ Bool_t TWinNTSystem::InitUsersGroups()
+ {
+- // Collect local users and groups accounts informations
++ // Collect local users and groups accounts information
+
+ // Net* API functions allowed and OS is Windows NT/2000/XP
+ if ((gEnv->GetValue("WinNT.UseNetAPI", 0)) && (::GetVersion() < 0x80000000)) {
+--- a/gui/ged/src/HelpSMText.cxx
++++ b/gui/ged/src/HelpSMText.cxx
+@@ -254,7 +254,7 @@
+ ;
+
+ const char gHelpSMTitle[] =
+-"In this tad, the informations related with titles are edited. You can choose\n"
++"In this tad, the information related with titles are edited. You can choose\n"
+ "to show or hide the title in your canvases via the check button 'Show title'.\n"
+ "\n"
+ "'Fill' group: \n"
+@@ -279,7 +279,7 @@
+ ;
+
+ const char gHelpSMStats[] =
+-"In this tad, the informations related with stats are edited.\n"
++"In this tad, the information related with stats are edited.\n"
+ "\n"
+ "'Fill' group: \n"
+ " You can modify here the color and the pattern which is used to fill\n"
+@@ -302,18 +302,18 @@
+ " the width (W) and the height (H).\n"
+ "\n"
+ "'Stat Options' group:\n"
+-" You can select the informations you want to see in the stats pave.\n"
++" You can select the information you want to see in the stats pave.\n"
+ " The paint format is used as an argument in a C++ printf() method: it\n"
+ " describes how the value will be shown.\n"
+ "\n"
+ "'Fit Options' group:\n"
+-" You can select the way you want to show informations in the pave.\n"
++" You can select the way you want to show information in the pave.\n"
+ " The paint format is used as an argument in a C++ printf() method: it\n"
+ " describes how the value will be shown.\n"
+ ;
+
+ const char gHelpSMPSPDF[] =
+-"In this tad, the informations related with PS and PDF are edited. These\n"
++"In this tad, the information related with PS and PDF are edited. These\n"
+ "settings can't be previewed, but as in the other tabs, any modification in\n"
+ "this one will take effect.\n"
+ "\n"
+--- a/gui/ged/src/TStyleManager.cxx
++++ b/gui/ged/src/TStyleManager.cxx
+@@ -4617,7 +4617,7 @@
+
+ if ((!samePad) && preview) DoPreview(kFALSE);
+
+- // Update the informations' label about the selected objects.
++ // Update the information' label about the selected objects.
+ TString sPad;
+ if (fCurPad->GetName() && strlen(fCurPad->GetName()))
+ sPad.Append(fCurPad->GetName());
+--- a/gui/gui/src/TGFrame.cxx
++++ b/gui/gui/src/TGFrame.cxx
+@@ -2311,7 +2311,7 @@
+ void TGHeaderFrame::SetColumnsInfo(Int_t nColumns, TGTextButton **colHeader,
+ TGVFileSplitter **splitHeader)
+ {
+- // Set columns informations in the header frame.
++ // Set columns information in the header frame.
+
+ fNColumns = nColumns;
+ fColHeader = colHeader;
+--- a/gui/gui/src/TGTextEditor.cxx
++++ b/gui/gui/src/TGTextEditor.cxx
+@@ -476,7 +476,7 @@
+ //______________________________________________________________________________
+ void TGTextEditor::DataDropped(char *fname)
+ {
+- // Update file informations when receiving the signal
++ // Update file information when receiving the signal
+ // DataDropped from TGTextEdit widget.
+
+ TString tmp;
+--- a/gui/guibuilder/src/TRootGuiBuilder.cxx
++++ b/gui/guibuilder/src/TRootGuiBuilder.cxx
+@@ -166,7 +166,7 @@
+ o Ctrl-Z - undo last action (not implemented)\n\
+ o Shift-Ctrl-Z - redo (not implemented)\n\
+ \n\
+- More informations\n\
++ More information\n\
+ ************************************************\n\
+ \n\
+ For more information, please see the GuiBuilder Howto page at:\n\
+--- a/gui/sessionviewer/src/TSessionViewer.cxx
++++ b/gui/sessionviewer/src/TSessionViewer.cxx
+@@ -1195,7 +1195,7 @@
+ //______________________________________________________________________________
+ void TSessionFrame::ProofInfos()
+ {
+- // Display informations on current session.
++ // Display information on current session.
+
+ TString buf;
+
+@@ -2383,7 +2383,7 @@
+ //______________________________________________________________________________
+ void TSessionQueryFrame::Build(TSessionViewer *gui)
+ {
+- // Build query informations frame.
++ // Build query information frame.
+
+ SetLayoutManager(new TGVerticalLayout(this));
+ SetCleanup(kDeepCleanup);
+@@ -2636,7 +2636,7 @@
+ return;
+ TString buf;
+
+- // Update informations at first call
++ // Update information at first call
+ if (fEntries != total) {
+ buf.Form("PROOF cluster : \"%s\" - %d worker nodes",
+ fViewer->GetActDesc()->fProof->GetMaster(),
+@@ -2785,7 +2785,7 @@
+ // if no change since last call, just return
+ TString buf;
+
+- // Update informations at first call
++ // Update information at first call
+ if (fEntries != total) {
+ fLabInfos->SetText("Local Session");
+
+@@ -3045,7 +3045,7 @@
+ }
+ }
+ }
+- // update list tree, query frame informations, and buttons state
++ // update list tree, query frame information, and buttons state
+ fViewer->GetSessionHierarchy()->ClearViewPort();
+ fClient->NeedRedraw(fViewer->GetSessionHierarchy());
+ UpdateInfos();
+@@ -3087,7 +3087,7 @@
+ if (!obj || obj->IsA() != TQueryDescription::Class())
+ return;
+ TQueryDescription *newquery = (TQueryDescription *)obj;
+- // reset progress informations
++ // reset progress information
+ ResetProgressDialog(newquery->fSelectorString,
+ newquery->fNbFiles, newquery->fFirstEntry, newquery->fNoEntries);
+ // set query start time
+@@ -3581,7 +3581,7 @@
+ //______________________________________________________________________________
+ void TSessionInputFrame::Build(TSessionViewer *gui)
+ {
+- // Build query input informations frame.
++ // Build query input information frame.
+
+ fViewer = gui;
+ SetLayoutManager(new TGVerticalLayout(this));
+@@ -3991,7 +3991,7 @@
+ }
+ if (found) continue;
+ newdesc = new TSessionDescription();
+- // and fill informations from Proof session
++ // and fill information from Proof session
+ newdesc->fTag = d->GetName();
+ newdesc->fName = d->GetTitle();
+ newdesc->fAddress = d->GetTitle();
+@@ -4076,7 +4076,7 @@
+ if (found) continue;
+ // create new session description
+ newdesc = new TSessionDescription();
+- // and fill informations from Proof session
++ // and fill information from Proof session
+ newdesc->fName = proof->GetMaster();
+ newdesc->fConfigFile = proof->GetConfFile();
+ newdesc->fUserName = proof->GetUser();
+@@ -4139,7 +4139,7 @@
+ if (found) continue;
+ // create new session description
+ newdesc = new TSessionDescription();
+- // and fill informations from Proof session
++ // and fill information from Proof session
+ newdesc->fTag = pdesc->GetName();
+ newdesc->fName = pdesc->GetTitle();
+ proof = pdesc->GetProof();
+@@ -4650,7 +4650,7 @@
+ obj = (TObject *)entry->GetUserData();
+ if (!obj || obj->IsA() != TSessionDescription::Class())
+ return;
+- // update server frame informations
++ // update server frame information
+ fServerFrame->Update((TSessionDescription *)obj);
+ fActDesc = (TSessionDescription*)obj;
+ // if Proof valid, update connection infos
+@@ -4729,7 +4729,7 @@
+ if (obj && obj->IsA() == TQueryDescription::Class()) {
+ fActDesc->fActQuery = (TQueryDescription *)obj;
+ }
+- // update query informations and buttons state
++ // update query information and buttons state
+ fQueryFrame->UpdateInfos();
+ fQueryFrame->UpdateButtons(fActDesc->fActQuery);
+ if (fActFrame != fQueryFrame) {
+@@ -5096,7 +5096,7 @@
+ if (!fSessionHierarchy->FindChildByName(item2, "OutputList"))
+ fSessionHierarchy->AddItem(item2, "OutputList");
+ }
+- // update list tree, query frame informations, and buttons state
++ // update list tree, query frame information, and buttons state
+ fSessionHierarchy->ClearViewPort();
+ fClient->NeedRedraw(fSessionHierarchy);
+ fQueryFrame->UpdateInfos();
+--- a/hist/hist/src/TLimit.cxx
++++ b/hist/hist/src/TLimit.cxx
+@@ -105,7 +105,7 @@
+ infile->Close();
+ </PRE></BLOCKQUOTE></p>
+ <p></p>
+- <p>More informations can still be found on
++ <p>More information can still be found on
+ <a HREF="http://cern.ch/aleph-proj-alphapp/doc/tlimit.html">this</a> page.</p>
+ </FONT>
+ */
+--- a/math/mlp/src/TMLPAnalyzer.cxx
++++ b/math/mlp/src/TMLPAnalyzer.cxx
+@@ -165,7 +165,7 @@
+ //______________________________________________________________________________
+ void TMLPAnalyzer::GatherInformations()
+ {
+- // Collect informations about what is usefull in the network.
++ // Collect information about what is usefull in the network.
+ // This method has to be called first when analyzing a network.
+ // Fills the two analysis trees.
+
+--- a/math/unuran/config.h.win.in
++++ b/math/unuran/config.h.win.in
+@@ -191,11 +191,11 @@
+ NULL pointer */
+ /* #undef UNUR_ENABLE_CHECKNULL */
+
+-/* Define to 1 if you want to use the info routine for printing informations
++/* Define to 1 if you want to use the info routine for printing information
+ about UNU.RAN objects */
+ #define UNUR_ENABLE_INFO 1
+
+-/* Define to 1 if you want to use a logfile for logging informations about
++/* Define to 1 if you want to use a logfile for logging information about
+ UNU.RAN objects */
+ /* #undef UNUR_ENABLE_LOGGING */
+
+--- a/proof/proof/src/TProof.cxx
++++ b/proof/proof/src/TProof.cxx
+@@ -10902,7 +10902,7 @@
+ //______________________________________________________________________________
+ void TProof::SaveWorkerInfo()
+ {
+- // Save informations about the worker set in the file .workers in the working
++ // Save information about the worker set in the file .workers in the working
+ // dir. Called each time there is a change in the worker setup, e.g. by
+ // TProof::MarkBad().
+
+--- a/proof/proofplayer/src/TPacketizerUnit.cxx
++++ b/proof/proofplayer/src/TPacketizerUnit.cxx
+@@ -491,7 +491,7 @@
+ fProcessing = (num < (fTotalEntries - fAssigned)) ? num
+ : (fTotalEntries - fAssigned);
+
+- // Set the informations of the current slave
++ // Set the information of the current slave
+ slstat->fLastProcessed = fProcessing;
+ // Set the start time of the current packet
+ slstat->fTimeInstant = cTime;
+--- a/roofit/roostats/src/HybridCalculatorOriginal.cxx
++++ b/roofit/roostats/src/HybridCalculatorOriginal.cxx
+@@ -122,7 +122,7 @@
+
+ // observables are managed by the class (they are copied in)
+ fObservables = new RooArgList(observables);
+- //Try to recover the informations from the pdf's
++ //Try to recover the information from the pdf's
+ //fObservables=new RooArgList("fObservables");
+ //fNuisanceParameters=new RooArgSet("fNuisanceParameters");
+ // if (priorPdf){
+--- a/test/RootShower/MyParticle.cxx
++++ b/test/RootShower/MyParticle.cxx
+@@ -117,7 +117,7 @@
+ //______________________________________________________________________________
+ char *MyParticle::GetObjectInfo(Int_t, Int_t) const
+ {
+- // Returns particle informations.
++ // Returns particle information.
+
+ static char info[64];
+ sprintf(info,"Particle = %s, E = %1.3e", GetName(), Energy());
+--- a/test/RootShower/RSHelpText.cxx
++++ b/test/RootShower/RSHelpText.cxx
+@@ -107,7 +107,7 @@
+ "status :\n"
+ " Waiting to start simulation \n"
+ " Done - Total particles : xxx - Waiting for next simulation \n"
+-"You can access informations on current event by selecting Infos into the\n"
++"You can access information on current event by selecting Infos into the\n"
+ "Event menu.\n"
+ "Select 3D View into this same menu to have a 3D view of the event into\n"
+ "a new OpenGL window. It is also possible to do this with the context menu\n"
+--- a/tmva/src/DataSetFactory.cxx
++++ b/tmva/src/DataSetFactory.cxx
+@@ -162,7 +162,7 @@
+ std::vector<VariableInfo>& varinfos = dsi.GetVariableInfos();
+
+ if (varinfos.empty())
+- Log() << kFATAL << "Dynamic data set cannot be built, since no variable informations are present. Apparently no variables have been set. This should not happen, please contact the TMVA authors." << Endl;
++ Log() << kFATAL << "Dynamic data set cannot be built, since no variable information are present. Apparently no variables have been set. This should not happen, please contact the TMVA authors." << Endl;
+
+ std::vector<VariableInfo>::iterator it = varinfos.begin(), itEnd=varinfos.end();
+ for (;it!=itEnd;++it) {
+--- a/tutorials/eve/SplitGLView.C
++++ b/tutorials/eve/SplitGLView.C
+@@ -1104,7 +1104,7 @@
+ // Slot used to handle "OnMouseOver" signal coming from any GL viewer.
+ // We receive a pointer on the physical shape in which the mouse cursor is.
+
+- // display informations on the physical shape in the status bar
++ // display information on the physical shape in the status bar
+ if (shape && shape->GetLogical() && shape->GetLogical()->GetExternal())
+ fStatusBar->SetText(Form("Mouse Over: \"%s\"",
+ shape->GetLogical()->GetExternal()->GetName()), 0);
+--- a/tutorials/gui/CPUMeter.C
++++ b/tutorials/gui/CPUMeter.C
+@@ -115,11 +115,11 @@
+ prev_load = act_load;
+ old_memUsage = memUsage;
+
+- // Get CPU informations
++ // Get CPU information
+ gSystem->GetCpuInfo(&cpuInfo, 100);
+ // actual CPU load
+ act_load = cpuInfo.fTotal;
+- // Get Memory informations
++ // Get Memory information
+ gSystem->GetMemInfo(&memInfo);
+ // choose which value to display
+ if (gMainWindow->GetActInfo() == 0)
diff --git a/debian/patches/25-fix-typo-childs-children.patch b/debian/patches/25-fix-typo-childs-children.patch
new file mode 100644
index 0000000..dd05ea3
--- /dev/null
+++ b/debian/patches/25-fix-typo-childs-children.patch
@@ -0,0 +1,290 @@
+--- a/cint/reflex/python/genreflex/gendict.py
++++ b/cint/reflex/python/genreflex/gendict.py
+@@ -1464,7 +1464,7 @@
+ c += indent + '};\n'
+ return c
+ #----------------------------------------------------------------------------------
+- def genTypedefBuild(self, attrs, childs) :
++ def genTypedefBuild(self, attrs, children) :
+ if self.no_membertypedefs : return ''
+ # access selection doesn't work with gccxml0.6 - typedefs don't have it
+ if self.interpreter and 'access' in attrs : return ''
+@@ -1472,11 +1472,11 @@
+ s += ' .AddTypedef(%s, Reflex::Literal("%s::%s"))' % ( self.genTypeID(attrs['type']), self.genTypeName(attrs['context']), attrs['name'])
+ return s
+ #----------------------------------------------------------------------------------
+- def genEnumerationBuild(self, attrs, childs):
++ def genEnumerationBuild(self, attrs, children):
+ s = ''
+ name = self.genTypeName(attrs['id'])
+ values = ''
+- for child in childs : values += child['name'] + '=' + child['init'] +';'
++ for child in children : values += child['name'] + '=' + child['init'] +';'
+ values = values[:-1]
+ mod = self.genModifier(attrs, None)
+ if self.isUnnamedType(name) :
+@@ -1818,7 +1818,7 @@
+ else : pass
+ return cnt
+ #----------------------------------------------------------------------------------
+- def genFieldBuild(self, attrs, childs):
++ def genFieldBuild(self, attrs, children):
+ type = self.genTypeName(attrs['type'], enum=False, const=False)
+ cl = self.genTypeName(attrs['context'],colon=True)
+ cls = self.genTypeName(attrs['context'])
+@@ -1860,7 +1860,7 @@
+ c += '\n .AddProperty(Reflex::Literal("%s"),Reflex::Literal("%s"))' % (pname, pval)
+ return c
+ #----------------------------------------------------------------------------------
+- def genVariableBuild(self, attrs, childs):
++ def genVariableBuild(self, attrs, children):
+ if 'access' in attrs and attrs['access'] in ('private','protected') : return ''
+ type = self.genTypeName(attrs['type'], enum=False, const=False)
+ cl = self.genTypeName(attrs['context'],colon=True)
+@@ -2150,7 +2150,7 @@
+ body += '}\n'
+ return head + body
+ #----------------------------------------------------------------------------------
+- def genDestructorDef(self, attrs, childs):
++ def genDestructorDef(self, attrs, children):
+ cl = self.genTypeName(attrs['context'])
+ static = ''
+ dtorscope = ''
+@@ -2164,7 +2164,7 @@
+ # unnamed; can't call.
+ return dtorimpl + ' // unnamed, cannot call destructor\n}'
+ #----------------------------------------------------------------------------------
+- def genDestructorBuild(self, attrs, childs):
++ def genDestructorBuild(self, attrs, children):
+ if self.isUnnamedType(self.xref[attrs['context']]['attrs'].get('demangled')) or \
+ self.checkAccessibleType(self.xref[attrs['context']]) : return ''
+ mod = self.genModifier(attrs,None)
+--- a/cint/reflex/python/genreflex/genheader.py
++++ b/cint/reflex/python/genreflex/genheader.py
+@@ -25,68 +25,68 @@
+ return genName(attrs[u'type'])+'&'
+ elif elem == 'FunctionType' :
+ s = genName(attrs[u'returns']) + '(*)('
+- childs = xref[id][2]
+- for a in childs :
++ children = xref[id][2]
++ for a in children :
+ s += genArgument(a)
+- if a != childs[-1] : s += ', '
++ if a != children[-1] : s += ', '
+ s += ')'
+ return s
+ elif elem == 'ArrayType' :
+ return genName(attrs[u'type'])+'['+attrs[u'max']+']'
+ else :
+ return attrs[u'name']
+-def genField(attrs, childs):
++def genField(attrs, children):
+ return '%s %s;' % (genName(attrs[u'type']), attrs[u'name'] )
+-def genVariable(attrs, childs):
++def genVariable(attrs, children):
+ return 'static %s %s;' % (genName(attrs[u'type']), attrs[u'name'] )
+ def genArgument(attrs):
+ if u'name' in attrs :
+ return '%s %s' % (genName(attrs[u'type']), attrs[u'name'] )
+ else :
+ return '%s ' % (genName(attrs[u'type']))
+-def genMethod(attrs, childs):
++def genMethod(attrs, children):
+ s = ''
+ if u'virtual' in attrs : s += 'virtual '
+ if u'static' in attrs : s += 'static '
+ s += '%s %s(' % (genName(attrs[u'returns']), attrs[u'name'])
+- for a in childs :
++ for a in children :
+ s += genArgument(a)
+- if a != childs[-1] : s += ', '
++ if a != children[-1] : s += ', '
+ s += ')'
+ if u'const' in attrs : s += ' const'
+ if u'pure_virtual' in attrs : s += ' = 0'
+ s += ';'
+ return s
+-def genConstructor(attrs, childs):
++def genConstructor(attrs, children):
+ s = '%s(' % (attrs[u'name'])
+- for a in childs :
++ for a in children :
+ s += genArgument(a)
+- if a != childs[-1] : s += ', '
++ if a != children[-1] : s += ', '
+ s += ');'
+ return s
+-def genOperatorMethod(attrs, childs):
++def genOperatorMethod(attrs, children):
+ s = '%s operator %s(' % ( genName(attrs[u'returns']), attrs[u'name'])
+- for a in childs :
++ for a in children :
+ s += genArgument(a)
+- if a != childs[-1] : s += ', '
++ if a != children[-1] : s += ', '
+ s += ')'
+ if u'const' in attrs : s += ' const'
+ s += ';'
+ return s
+-def genDestructor(attrs, childs):
++def genDestructor(attrs, children):
+ return '~%s();' % (attrs[u'name'])
+-def genConverter(attrs, childs):
++def genConverter(attrs, children):
+ return 'operator %s();' % (attrs[u'returns'])
+ def genEnumValue(attrs):
+ return '%s = %s' % (attrs[u'name'], attrs[u'init'])
+-def genEnumeration(attrs, childs):
++def genEnumeration(attrs, children):
+ s = 'enum %s { ' % (attrs[u'name'])
+- for a in childs :
++ for a in children :
+ s += genEnumValue(a)
+- if a != childs[-1] : s += ', '
++ if a != children[-1] : s += ', '
+ s += '};'
+ return s
+-def genClass(attrs, childs ):
++def genClass(attrs, children ):
+ s = 'class %s ' % (attrs[u'name'])
+ if u'bases' in attrs :
+ bases = string.split(attrs[u'bases'])
+@@ -109,7 +109,7 @@
+ print 'Function '+funcname+' not found'
+ s += '};'
+ return s
+-def genTypedef(attrs, childs):
++def genTypedef(attrs, children):
+ return 'typedef %s %s;' % ( genName(attrs[u'type']), attrs[u'name'] )
+
+ def start_element(name, attrs):
+--- a/core/unix/src/TUnixSystem.cxx
++++ b/core/unix/src/TUnixSystem.cxx
+@@ -1265,7 +1265,7 @@
+ //______________________________________________________________________________
+ void TUnixSystem::CheckChilds()
+ {
+- // Check if childs have finished.
++ // Check if children have finished.
+
+ #if 0 //rdm
+ int pid;
+--- a/gui/gui/inc/TGMdiMainFrame.h
++++ b/gui/gui/inc/TGMdiMainFrame.h
+@@ -152,10 +152,10 @@
+ };
+
+ Int_t fCurrentX, fCurrentY, fResizeMode; // current MDI child XY position and resize mode
+- Int_t fArrangementMode; // MDI childs arrangement mode
+- TGFont *fFontCurrent, *fFontNotCurrent; // fonts for active and inactive MDI childs
+- Pixel_t fBackCurrent, fForeCurrent; // back and fore colors for active MDI childs
+- Pixel_t fBackNotCurrent, fForeNotCurrent; // back and fore colors for inactive MDI childs
++ Int_t fArrangementMode; // MDI children arrangement mode
++ TGFont *fFontCurrent, *fFontNotCurrent; // fonts for active and inactive MDI children
++ Pixel_t fBackCurrent, fForeCurrent; // back and fore colors for active MDI children
++ Pixel_t fBackNotCurrent, fForeNotCurrent; // back and fore colors for inactive MDI children
+
+ TGGC *fBoxGC; // GC used to draw resizing box (rectangle)
+
+--- a/gui/gui/src/TGMenu.cxx
++++ b/gui/gui/src/TGMenu.cxx
+@@ -1273,7 +1273,7 @@
+
+ if (fDelay) fDelay->Remove();
+
+- // destroy any cascaded childs and get any ID
++ // destroy any cascaded children and get any ID
+
+ if (fCurrent != 0) {
+
+--- a/io/sql/src/TSQLStructure.cxx
++++ b/io/sql/src/TSQLStructure.cxx
+@@ -1730,7 +1730,7 @@
+ }
+
+ if (columntyp==kColSimpleArray) {
+- // number of items should be exactly equal to number of childs
++ // number of items should be exactly equal to number of children
+
+ if (NumChilds()!=1) {
+ Error("StoreElementInNormalForm","In fixed array %s only array node should be", elem->GetName());
+--- a/io/xml/src/TXMLEngine.cxx
++++ b/io/xml/src/TXMLEngine.cxx
+@@ -36,7 +36,7 @@
+ };
+
+ enum EXmlNodeType {
+- kXML_NODE = 1, // normal node with childs
++ kXML_NODE = 1, // normal node with children
+ kXML_COMMENT = 2, // comment (stored as value of node fName)
+ kXML_PI_NODE = 3, // processing instructions node (like <?name attr="" ?>
+ kXML_RAWLINE = 4 // just one line of xml code
+@@ -959,7 +959,7 @@
+ //______________________________________________________________________________
+ void TXMLEngine::CleanNode(XMLNodePointer_t xmlnode)
+ {
+- // remove all childs node from xmlnode
++ // remove all children node from xmlnode
+
+ if (xmlnode==0) return;
+ SXmlNode_t* node = (SXmlNode_t*) xmlnode;
+@@ -1483,7 +1483,7 @@
+
+ if (*inp->fCurrent!='<') {
+ // here should be reading of element content
+- // only one entry for content is supported, only before any other childs
++ // only one entry for content is supported, only before any other children
+ if ((parent==0) || (parent->fChild!=0)) { resvalue = -2; return 0; }
+ int contlen = inp->LocateContent();
+ if (contlen<0) return 0;
+@@ -1529,14 +1529,14 @@
+ }
+
+ EXmlNodeType nodetype = kXML_NODE;
+- Bool_t canhaschilds = true;
++ Bool_t canhaschildren = true;
+ char endsymbol = '/';
+
+ // this is case of processing instructions node
+ if (*inp->fCurrent=='?') {
+ if (!inp->ShiftCurrent()) return 0;
+ nodetype = kXML_PI_NODE;
+- canhaschilds = false;
++ canhaschildren = false;
+ endsymbol = '?';
+ }
+
+@@ -1578,8 +1578,8 @@
+ return node;
+ } else return 0;
+ } else
+- if (nextsymb=='>') { // this is end of parent node, lets find all childs
+- if (!canhaschilds) { resvalue = -11; return 0; }
++ if (nextsymb=='>') { // this is end of parent node, lets find all children
++ if (!canhaschildren) { resvalue = -11; return 0; }
+
+ if (!inp->ShiftCurrent()) return 0;
+
+--- a/tutorials/xml/xmlreadfile.C
++++ b/tutorials/xml/xmlreadfile.C
+@@ -33,7 +33,7 @@
+
+ void DisplayNode(TXMLEngine* xml, XMLNodePointer_t node, Int_t level)
+ {
+- // this function display all accessible information about xml node and its childs
++ // this function display all accessible information about xml node and its children
+
+ printf("%*c node: %s\n",level,' ', xml->GetNodeName(node));
+
+--- a/geom/gdml/src/TGDMLParse.cxx
++++ b/geom/gdml/src/TGDMLParse.cxx
+@@ -726,7 +726,7 @@
+ fracmap[ref.Data()] = n;
+ }
+ child = gdml->GetNext(child);
+- } // loop on childs
++ } // loop on children
+ // Create TGeoElement - note: Object(name, title) corresponds to Element(formula, name)
+ TGeoElement *ele = new TGeoElement(NameShort(name), NameShort(name), ncompo);
+ for (fractions f = fracmap.begin(); f != fracmap.end(); f++) {
diff --git a/debian/patches/26-fix-typo-avaliable-available.patch b/debian/patches/26-fix-typo-avaliable-available.patch
new file mode 100644
index 0000000..ca2997b
--- /dev/null
+++ b/debian/patches/26-fix-typo-avaliable-available.patch
@@ -0,0 +1,196 @@
+--- a/README/INSTALL
++++ b/README/INSTALL
+@@ -688,7 +688,7 @@
+ or you can download the source from the same directory. The original
+ sources can be found via Lunds FTP server.
+
+-More information is avaliable from:
++More information is available from:
+
+ http://www.thep.lu.se/~torbjorn/Pythia.html
+
+@@ -717,7 +717,7 @@
+ -------------------------
+ To build rootd and proofd with support for AFS authentication, you
+ first have to install AFS client libraries system. There are a few AFS
+-distributions avaliable.
++distributions available.
+
+ * OpenAFS
+ IBMs OpenSource AFS distribution - see
+--- a/cint/configure
++++ b/cint/configure
+@@ -421,7 +421,7 @@
+ # *)
+ # echo "Attempts at guessing your architecture failed."
+ # echo "Please specify the architecture as the first argument."
+-# echo "Do '$0 --help' for a list of avaliable architectures."
++# echo "Do '$0 --help' for a list of available architectures."
+ # exit 1
+ # ;;
+ esac
+--- a/configure
++++ b/configure
+@@ -1201,7 +1201,7 @@
+ echo "Attempts at guessing your architecture failed."
+ echo "(triplet is $arch:$chip:$rele)"
+ echo "Please specify the architecture as the first argument."
+- echo "Do '$0 --help' for a list of avaliable architectures."
++ echo "Do '$0 --help' for a list of available architectures."
+ echo "Or file a bug at https://savannah.cern.ch/projects/savroot/"
+ echo "including the full config.log and a dump of"
+ echo " touch dummy_file.c; gcc -E -dM dummy_file.c"
+--- a/html/src/TClassDocOutput.cxx
++++ b/html/src/TClassDocOutput.cxx
+@@ -1046,7 +1046,7 @@
+ }
+ outdot << "}" << endl; // dependencies
+ } else
+- outdot << "\"No rlibmap information avaliable.\"" << endl;
++ outdot << "\"No rlibmap information available.\"" << endl;
+
+ outdot << "}" << endl; // digraph
+
+--- a/html/src/THtml.cxx
++++ b/html/src/THtml.cxx
+@@ -2396,7 +2396,7 @@
+
+ //______________________________________________________________________________
+ void THtml::SetFoundDot(Bool_t found) {
+- // Set whether "dot" (a GraphViz utility) is avaliable
++ // Set whether "dot" (a GraphViz utility) is available
+ if (found) fPathInfo.fFoundDot = PathInfo_t::kDotFound;
+ else fPathInfo.fFoundDot = PathInfo_t::kDotNotFound;
+ }
+--- a/io/xml/src/TXMLFile.cxx
++++ b/io/xml/src/TXMLFile.cxx
+@@ -928,7 +928,7 @@
+ void TXMLFile::SetUsedDtd(Bool_t use)
+ {
+ // Specify usage of DTD for this file.
+- // Currently this option not avaliable (always false).
++ // Currently this option not available (always false).
+ // Can be changed only for newly created file.
+
+ if (IsWritable() && (GetListOfKeys()->GetSize()==0))
+--- a/man/man1/g2root.1
++++ b/man/man1/g2root.1
+@@ -110,7 +110,7 @@
+ .RS
+ .I The ROOT Users Guide
+ .RE
+-avaliable from the main
++available from the main
+ .B ROOT
+ website:
+ .RS
+--- a/man/man1/g2rootold.1
++++ b/man/man1/g2rootold.1
+@@ -111,7 +111,7 @@
+ .RS
+ .I The ROOT Users Guide
+ .RE
+-avaliable from the main
++available from the main
+ .B ROOT
+ website:
+ .RS
+--- a/man/man1/h2root.1
++++ b/man/man1/h2root.1
+@@ -106,7 +106,7 @@
+ .RS
+ .I The ROOT Users Guide
+ .RE
+-avaliable from the main
++available from the main
+ .B ROOT
+ website:
+ .RS
+--- a/man/man1/hadd.1
++++ b/man/man1/hadd.1
+@@ -26,7 +26,7 @@
+ \fIhttp://root.cern.ch\fR
+ .UE
+ .PP
+-A \fBUsers Guide\fR is avaliable from
++A \fBUsers Guide\fR is available from
+ .UR http://root.cern.ch/root/UsersGuide.html
+ here.
+ .UE
+--- a/man/man1/rlibmap.1
++++ b/man/man1/rlibmap.1
+@@ -15,7 +15,7 @@
+ .SH OPTIONS
+ .TP
+ .B --help
+-Gives a short list of options avaliable, and exit
++Gives a short list of options available, and exit
+ .TP
+ .BI -f
+ What!?
+--- a/man/man1/root-config.1
++++ b/man/man1/root-config.1
+@@ -146,7 +146,7 @@
+ .SH OPTIONS
+ .TP
+ .B \-\-help
+-Gives a short list of options avaliable, and exit
++Gives a short list of options available, and exit
+ .TP
+ .B \-\-version
+ Report the version number of installed \fBROOT\fR, and exit.
+--- a/man/man1/root.1
++++ b/man/man1/root.1
+@@ -48,7 +48,7 @@
+ \fIhttp://root.cern.ch\fR
+ .UE
+ .PP
+-A \fBUsers Guide\fR is avaliable
++A \fBUsers Guide\fR is available
+ .UR http://root.cern.ch/root/UsersGuide.html
+ online.
+ .UE
+--- a/man/man1/roota.1
++++ b/man/man1/roota.1
+@@ -49,7 +49,7 @@
+ \fIROOT web-site\fR
+ .UE
+ .IP *
+-A \fBUsers Guide\fR is avaliable from
++A \fBUsers Guide\fR is available from
+ .UR http://root.cern.ch/root/UsersGuide.html
+ \fIthe ROOT website\fR
+ .UE
+--- a/man/man1/ssh2rpd.1
++++ b/man/man1/ssh2rpd.1
+@@ -14,7 +14,7 @@
+ .SH OPTIONS
+ .TP
+ .B --help
+-Gives a short list of options avaliable, and exit
++Gives a short list of options available, and exit
+ .SH "SEE ALSO"
+ \fIroot\fR(1), \fIrootd\fR(1)
+ .PP
+--- a/roofit/roofitcore/src/RooRealConstant.cxx
++++ b/roofit/roofitcore/src/RooRealConstant.cxx
+@@ -65,7 +65,7 @@
+ RooConstVar& RooRealConstant::value(Double_t value)
+ {
+ // Return a constant value object with given value.
+- // Return previously created object if avaliable,
++ // Return previously created object if available,
+ // otherwise create a new one on the fly.
+
+ // Lookup existing constant
+--- a/tmva/src/MethodMLP.cxx
++++ b/tmva/src/MethodMLP.cxx
+@@ -1657,7 +1657,7 @@
+ << "only the TMlpANN performs an explicit separation of the" << Endl;
+ Log() << "full training sample into independent training and validation samples." << Endl;
+ Log() << "We have found that in most high-energy physics applications the " << Endl;
+- Log() << "avaliable degrees of freedom (training events) are sufficient to " << Endl;
++ Log() << "available degrees of freedom (training events) are sufficient to " << Endl;
+ Log() << "constrain the weights of the relatively simple architectures required" << Endl;
+ Log() << "to achieve good performance. Hence no overtraining should occur, and " << Endl;
+ Log() << "the use of validation samples would only reduce the available training" << Endl;
diff --git a/debian/patches/27-fix-typo-writeable-writable.patch b/debian/patches/27-fix-typo-writeable-writable.patch
new file mode 100644
index 0000000..69c68f0
--- /dev/null
+++ b/debian/patches/27-fix-typo-writeable-writable.patch
@@ -0,0 +1,303 @@
+--- a/build/package/debian/root-system-rootd.postinst
++++ b/build/package/debian/root-system-rootd.postinst
+@@ -66,7 +66,7 @@
+ -exec chgrp rootd {} \;
+
+ # Create the tmp and pub directories in /var/spool/rootd and
+- # make them world read- and writeable.
++ # make them world read- and writable.
+ if [ ! -d /var/spool/rootd/tmp ] ; then
+ mkdir -p /var/spool/rootd/tmp
+ chmod 1777 /var/spool/rootd/tmp
+--- a/build/package/rpm/root-system-rootd.pre
++++ b/build/package/rpm/root-system-rootd.pre
+@@ -43,7 +43,7 @@
+ -exec chgrp rootd {} \;
+
+ # Create the tmp and pub directories in /var/spool/rootd and
+-# make them world read- and writeable.
++# make them world read- and writable.
+ if [ ! -d /var/spool/rootd/tmp ] ; then
+ mkdir -p /var/spool/rootd/tmp
+ chmod 777 /var/spool/rootd/tmp
+--- a/config/root-help.el.in
++++ b/config/root-help.el.in
+@@ -391,7 +391,7 @@
+ (if (file-exists-p source-name)
+ (error "Source file '%s' already exists - will not overwrite"
+ source-name))
+- ;; Check files are writeable
++ ;; Check files are writable
+ (if (not (file-writable-p header-name))
+ (error "Cannot write header file '%s'" header-name))
+ (if (not (file-writable-p source-name))
+--- a/core/base/src/TSystem.cxx
++++ b/core/base/src/TSystem.cxx
+@@ -3181,7 +3181,7 @@
+ ::Warning("ACLiC","Could not create the directory: %s",
+ build_loc.Data());
+ } else {
+- ::Warning("ACLiC","%s is not writeable!",
++ ::Warning("ACLiC","%s is not writable!",
+ build_loc.Data());
+ }
+ if (emergency_loc == build_dir ) {
+--- a/docbook/users-guide/CINT.xml
++++ b/docbook/users-guide/CINT.xml
+@@ -620,7 +620,7 @@
+
+ <programlisting language="c++">
+ root[] <emphasis role="bold"><code>.L readonly/t.C++</code></emphasis>
+-Warning in <ACLiC>: /scratch/aclic/subs/./readonly is not writeable!
++Warning in <ACLiC>: /scratch/aclic/subs/./readonly is not writable!
+ Warning in <ACLiC>: Output will be written to /tmp
+ Info in <TUnixSystem::ACLiC>: creating shared library
+ /tmp//scratch/aclic/subs/./readonly/t_C.so
+--- a/graf2d/asimage/src/libAfterImage/export.c
++++ b/graf2d/asimage/src/libAfterImage/export.c
+@@ -184,7 +184,7 @@
+ /* Some helper functions : */
+
+ FILE*
+-open_writeable_image_file( const char *path )
++open_writable_image_file( const char *path )
+ {
+ FILE *fp = NULL;
+ if ( path )
+@@ -290,7 +290,7 @@
+ params = &defaults ;
+ }
+
+- if ((outfile = open_writeable_image_file( path )) == NULL)
++ if ((outfile = open_writable_image_file( path )) == NULL)
+ return False;
+
+ mapped_im = colormap_asimage( im, &cmap, params->xpm.max_colors, params->xpm.dither, params->xpm.opaque_threshold );
+@@ -648,7 +648,7 @@
+ if( im == NULL )
+ return False;
+
+- if ((outfile = open_writeable_image_file( path )) == NULL)
++ if ((outfile = open_writable_image_file( path )) == NULL)
+ return False;
+
+ res = ASImage2png_int ( im, outfile, NULL, NULL, params );
+@@ -765,7 +765,7 @@
+ params = &defaults ;
+ }
+
+- if ((outfile = open_writeable_image_file( path )) == NULL)
++ if ((outfile = open_writable_image_file( path )) == NULL)
+ return False;
+
+ if((imdec = start_image_decoding( NULL /* default visual */ , im,
+@@ -1035,7 +1035,7 @@
+ gif = NULL;
+ fclose (infile);
+ infile = NULL;
+- outfile = open_writeable_image_file( path );
++ outfile = open_writable_image_file( path );
+
+ if (outfile)
+ gif = EGifOpenFileHandle(fileno(outfile));
+@@ -1077,7 +1077,7 @@
+ if (gif == NULL)
+ {
+ if (outfile == NULL)
+- outfile = open_writeable_image_file(path);
++ outfile = open_writable_image_file(path);
+
+ if (outfile)
+ if ((gif = EGifOpenFileHandle(fileno(outfile))) == NULL)
+--- a/graf2d/win32gdk/gdk/src/gdk/gdkcolor.c
++++ b/graf2d/win32gdk/gdk/src/gdk/gdkcolor.c
+@@ -173,11 +173,11 @@
+ gboolean
+ gdk_colormap_alloc_color(GdkColormap * colormap,
+ GdkColor * color,
+- gboolean writeable, gboolean best_match)
++ gboolean writable, gboolean best_match)
+ {
+ gboolean success;
+
+- gdk_colormap_alloc_colors(colormap, color, 1, writeable, best_match,
++ gdk_colormap_alloc_colors(colormap, color, 1, writable, best_match,
+ &success);
+
+ return success;
+--- a/graf2d/win32gdk/gdk/src/gdk/gdkcolor.h
++++ b/graf2d/win32gdk/gdk/src/gdk/gdkcolor.h
+@@ -42,11 +42,11 @@
+ gint gdk_colormap_alloc_colors(GdkColormap * colormap,
+ GdkColor * colors,
+ gint ncolors,
+- gboolean writeable,
++ gboolean writable,
+ gboolean best_match, gboolean * success);
+ gboolean gdk_colormap_alloc_color(GdkColormap * colormap,
+ GdkColor * color,
+- gboolean writeable,
++ gboolean writable,
+ gboolean best_match);
+ void gdk_colormap_free_colors(GdkColormap * colormap,
+ GdkColor * colors, gint ncolors);
+--- a/graf2d/win32gdk/gdk/src/gdk/win32/gdkcolor-win32.c
++++ b/graf2d/win32gdk/gdk/src/gdk/win32/gdkcolor-win32.c
+@@ -1674,10 +1674,10 @@
+ }
+
+ static gint
+-gdk_colormap_alloc_colors_writeable(GdkColormap * colormap,
++gdk_colormap_alloc_colors_writable(GdkColormap * colormap,
+ GdkColor * colors,
+ gint ncolors,
+- gboolean writeable,
++ gboolean writable,
+ gboolean best_match,
+ gboolean * success)
+ {
+@@ -1706,7 +1706,7 @@
+ return i;
+ } else {
+ pixels = g_new(gulong, ncolors);
+- /* Allocation of a writeable color cells */
++ /* Allocation of a writable color cells */
+
+ status = alloc_color_cells(private->xcolormap, FALSE, NULL,
+ 0, pixels, ncolors);
+@@ -1728,7 +1728,7 @@
+ gdk_colormap_alloc_colors_private(GdkColormap * colormap,
+ GdkColor * colors,
+ gint ncolors,
+- gboolean writeable,
++ gboolean writable,
+ gboolean best_match, gboolean * success)
+ {
+ GdkColormapPrivateWin32 *private;
+@@ -1801,7 +1801,7 @@
+ gdk_colormap_alloc_colors_shared(GdkColormap * colormap,
+ GdkColor * colors,
+ gint ncolors,
+- gboolean writeable,
++ gboolean writable,
+ gboolean best_match, gboolean * success)
+ {
+ GdkColormapPrivateWin32 *private;
+@@ -1878,7 +1878,7 @@
+ gdk_colormap_alloc_colors_pseudocolor(GdkColormap * colormap,
+ GdkColor * colors,
+ gint ncolors,
+- gboolean writeable,
++ gboolean writable,
+ gboolean best_match,
+ gboolean * success)
+ {
+@@ -1909,11 +1909,11 @@
+ if (nremaining > 0) {
+ if (private->private_val)
+ return gdk_colormap_alloc_colors_private(colormap, colors,
+- ncolors, writeable,
++ ncolors, writable,
+ best_match, success);
+ else
+ return gdk_colormap_alloc_colors_shared(colormap, colors, ncolors,
+- writeable, best_match,
++ writable, best_match,
+ success);
+ } else
+ return 0;
+@@ -1923,7 +1923,7 @@
+ gdk_colormap_alloc_colors(GdkColormap * colormap,
+ GdkColor * colors,
+ gint ncolors,
+- gboolean writeable,
++ gboolean writable,
+ gboolean best_match, gboolean * success)
+ {
+ GdkColormapPrivateWin32 *private;
+@@ -1944,13 +1944,13 @@
+ switch (private->base.visual->type) {
+ case GDK_VISUAL_PSEUDO_COLOR:
+ case GDK_VISUAL_GRAYSCALE:
+- if (writeable)
+- return gdk_colormap_alloc_colors_writeable(colormap, colors,
+- ncolors, writeable,
++ if (writable)
++ return gdk_colormap_alloc_colors_writable(colormap, colors,
++ ncolors, writable,
+ best_match, success);
+ else
+ return gdk_colormap_alloc_colors_pseudocolor(colormap, colors,
+- ncolors, writeable,
++ ncolors, writable,
+ best_match, success);
+ break;
+
+--- a/io/doc/TFile/TDirectory.txt
++++ b/io/doc/TFile/TDirectory.txt
+@@ -17,7 +17,7 @@
+ // 1->.. Title = lTitle bytes with the title of the object <direcory title> TNamed::fTitle
+ // --------DATA----------------
+ // 0->0 Modified = True if directory has been modified TDirectory::fModified
+-// 1->1 Writeable = True if directory is writeable TDirectory::fWriteable
++// 1->1 Writable = True if directory is writable TDirectory::fWriteable
+ // 2->5 DatimeC = Date and time when directory was created TDirectory::fDatimeC
+ // | (year-1995)<<26|month<<22|day<<17|hour<<12|minute<<6|second
+ // 6->9 DatimeM = Date and time when directory was last modified TDirectory::fDatimeM
+--- a/io/doc/TFile/TFile.txt
++++ b/io/doc/TFile/TFile.txt
+@@ -24,7 +24,7 @@
+ // 0->0 lTitle = Number of bytes in the TFile title TNamed::fTitle
+ // 1->.. Title = lTitle bytes with the title of the TFile <file title> TNamed::fTitle
+ // 0->0 Modified = True if directory has been modified TDirectory::fModified
+-// 1->1 Writeable = True if directory is writeable TDirectory::fWriteable
++// 1->1 Writable = True if directory is writable TDirectory::fWriteable
+ // 2->5 DatimeC = Date and time when directory was created TDirectory::fDatimeC
+ // | (year-1995)<<26|month<<22|day<<17|hour<<12|minute<<6|second
+ // 6->9 DatimeM = Date and time when directory was last modified TDirectory::fDatimeM
+--- a/net/rootd/src/rootd.cxx
++++ b/net/rootd/src/rootd.cxx
+@@ -148,7 +148,7 @@
+ // Where /var/spool/rootd must match the rootd home directory as //
+ // specified in the rootd /etc/passwd entry. //
+ // //
+-// - To make writeable directories for anonymous do, for example: //
++// - To make writable directories for anonymous do, for example: //
+ // //
+ // mkdir /var/spool/rootd/pub //
+ // chown rootd:rootd /var/spool/rootd/pub //
+--- a/tree/tree/src/TTreeCloner.cxx
++++ b/tree/tree/src/TTreeCloner.cxx
+@@ -156,10 +156,10 @@
+ fIsValid = kFALSE;
+ } else if (! fToTree->GetDirectory()->IsWritable()) {
+ if (fToTree->GetDirectory()==fToTree->GetCurrentFile()) {
+- fWarningMsg.Form("The output TTree (%s) must be associated with a writeable file (%s).",
++ fWarningMsg.Form("The output TTree (%s) must be associated with a writable file (%s).",
+ fToTree->GetName(),fToTree->GetCurrentFile()->GetName());
+ } else {
+- fWarningMsg.Form("The output TTree (%s) must be associated with a writeable directory (%s in %s).",
++ fWarningMsg.Form("The output TTree (%s) must be associated with a writable directory (%s in %s).",
+ fToTree->GetName(),fToTree->GetDirectory()->GetName(),fToTree->GetCurrentFile()->GetName());
+ }
+ if (!(fOptions & kNoWarnings)) {
+--- a/graf2d/asimage/src/libAfterImage/bmp.c
++++ b/graf2d/asimage/src/libAfterImage/bmp.c
+@@ -41,7 +41,7 @@
+ /* from import.c : */
+ FILE* open_image_file( const char *path );
+ /* from export.c : */
+-FILE* open_writeable_image_file( const char *path );
++FILE* open_writable_image_file( const char *path );
+
+ void
+ dib_data_to_scanline( ASScanline *buf,
+@@ -364,7 +364,7 @@
+ FILE *outfile = NULL ;
+ START_TIME(started);
+
+- if ((outfile = open_writeable_image_file( path )) != NULL)
++ if ((outfile = open_writable_image_file( path )) != NULL)
+ {
+ void *bmbits ;
+ BITMAPINFO *bmi = ASImage2DBI( get_default_asvisual(), im, 0, 0, im->width, im->height, &bmbits, 0 );
diff --git a/debian/patches/28-fix-typo-comand-command.patch b/debian/patches/28-fix-typo-comand-command.patch
new file mode 100644
index 0000000..bcd7191
--- /dev/null
+++ b/debian/patches/28-fix-typo-comand-command.patch
@@ -0,0 +1,44 @@
+--- a/cmake/scripts/testsingle.cxx.in
++++ b/cmake/scripts/testsingle.cxx.in
+@@ -635,7 +635,7 @@
+ filename = &filename1;
+ */
+ } else {
+- fprintf(stderr,"Wrong comand line. Please use\n");
++ fprintf(stderr,"Wrong command line. Please use\n");
+ fprintf(stderr,"%s -f <filename> \n",argv[0]);
+ return 1;
+ }
+--- a/core/rint/inc/TTabCom.h
++++ b/core/rint/inc/TTabCom.h
+@@ -232,7 +232,7 @@
+ Bool_t fVarIsPointer; // frodo: pointer or not flag
+ Int_t fLastIter; // frodo: iteration counter for recursive MakeClassFromVarName
+
+- ClassDef(TTabCom,0) //Perform comand line completion when hitting <TAB>
++ ClassDef(TTabCom,0) //Perform command line completion when hitting <TAB>
+ };
+
+ R__EXTERN TTabCom *gTabCom;
+--- a/gui/sessionviewer/src/TSessionViewer.cxx
++++ b/gui/sessionviewer/src/TSessionViewer.cxx
+@@ -932,7 +932,7 @@
+ tf->AddFrame(fFC, new TGLayoutHints(kLHintsTop | kLHintsLeft |
+ kLHintsExpandX | kLHintsExpandY));
+
+- // add comand line label and text entry
++ // add command line label and text entry
+ TGCompositeFrame* frmCmd = new TGHorizontalFrame(fFC, 350, 100);
+ frmCmd->SetCleanup(kDeepCleanup);
+ frmCmd->AddFrame(new TGLabel(frmCmd, "Command Line :"),
+--- a/tutorials/gui/guiWithCINT.C
++++ b/tutorials/gui/guiWithCINT.C
+@@ -1,7 +1,7 @@
+ // A simple example of entering CINT commands and having the CINT output in a
+ // ROOT GUI application window.
+ // An editable combo box is used as a CINT prompt, a text view widget displays
+-// the comand output.
++// the command output.
+ // Author: Ilka Antcheva 06/07/2007
+
+ #include <iostream>
diff --git a/debian/patches/29-fix-typo-unkown-unknown.patch b/debian/patches/29-fix-typo-unkown-unknown.patch
new file mode 100644
index 0000000..a8d508d
--- /dev/null
+++ b/debian/patches/29-fix-typo-unkown-unknown.patch
@@ -0,0 +1,61 @@
+--- a/cint/cint/src/newlink.cxx
++++ b/cint/cint/src/newlink.cxx
+@@ -4876,7 +4876,7 @@
+ break;
+
+ default:
+- fprintf(fp, " Unkown: %c", formal_param->type);
++ fprintf(fp, " Unknown: %c", formal_param->type);
+ G__fprinterr(G__serr,"Type %c not known yet (methodcall)\n", para_type);
+ }
+
+@@ -4979,7 +4979,7 @@
+ break;
+
+ default:
+- fprintf(fp, " Unkown: %c", formal_param->type);
++ fprintf(fp, " Unknown: %c", formal_param->type);
+ G__fprinterr(G__serr,"Type %c not known yet (G__write_dummy_param)\n",formal_param->type);
+ }
+ fprintf(fp,"*");
+--- a/cint/cintex/test/dict/CintexTest.h
++++ b/cint/cintex/test/dict/CintexTest.h
+@@ -181,8 +181,8 @@
+ MyClass& retByReference() { return m_object; }
+ MyClass*& retByRefPointer() { return m_ptr; }
+ void* retByVoidPointer() { return &m_object; }
+- UnknownType* retUnkownTypePointer() { return (UnknownType*)0x12345678; }
+- UnknownType& retUnkownTypeReference() { return *(UnknownType*)0x12345678; }
++ UnknownType* retUnknownTypePointer() { return (UnknownType*)0x12345678; }
++ UnknownType& retUnknownTypeReference() { return *(UnknownType*)0x12345678; }
+ std::string retStrByValue() { return std::string("value");}
+ std::string& retStrByRef() { static std::string s("reference");return s;}
+ const std::string& retStrByConstRef() { static std::string s("const reference");return s;}
+--- a/cint/cintex/test/test_Cintex.C
++++ b/cint/cintex/test/test_Cintex.C
+@@ -101,9 +101,9 @@
+ bool test_UnknownTypes() {
+ A::B::C::Calling calling;
+ //---Returning unknown types
+- void* rp = calling.retUnkownTypePointer();
++ void* rp = calling.retUnknownTypePointer();
+ failUnless( rp );
+- void* rr = (void*)&(calling.retUnkownTypeReference());
++ void* rr = (void*)&(calling.retUnknownTypeReference());
+ failUnless( rr );
+ //---Passing unknown types
+ failUnlessEqual( calling.setByUnknownTypePointer(rp), 0x12345678);
+--- a/cint/cintex/test/test_PyCintex_basics.py
++++ b/cint/cintex/test/test_PyCintex_basics.py
+@@ -101,9 +101,9 @@
+ def test04UnknownTypes(self) :
+ calling = self.A.B.C.Calling()
+ #---Returning unknown types
+- rp = calling.retUnkownTypePointer()
++ rp = calling.retUnknownTypePointer()
+ self.failUnless( rp )
+- rr = calling.retUnkownTypeReference()
++ rr = calling.retUnknownTypeReference()
+ self.failUnless( rr )
+ #---Passing unknown types
+ self.failUnlessEqual( calling.setByUnknownTypePointer(rp), 0x12345678)
diff --git a/debian/patches/30-fix-typo-wierd-weird.patch b/debian/patches/30-fix-typo-wierd-weird.patch
new file mode 100644
index 0000000..d3cb66c
--- /dev/null
+++ b/debian/patches/30-fix-typo-wierd-weird.patch
@@ -0,0 +1,156 @@
+--- a/graf2d/asimage/src/TASImage.cxx
++++ b/graf2d/asimage/src/TASImage.cxx
+@@ -2619,9 +2619,9 @@
+ // dissipate - randomly alpha-blend images
+ // hue - hue bottom image same as top image
+ // lighten - use highest color value from both images
+- // overlay - some wierd image overlaying(see GIMP)
++ // overlay - some weird image overlaying(see GIMP)
+ // saturate - saturate bottom image same as top image
+- // screen - another wierd image overlaying(see GIMP)
++ // screen - another weird image overlaying(see GIMP)
+ // sub - color substraction with saturation
+ // tint - tinting image with image
+ // value - value bottom image same as top image
+--- a/graf2d/asimage/src/libAfterImage/ChangeLog
++++ b/graf2d/asimage/src/libAfterImage/ChangeLog
+@@ -510,7 +510,7 @@
+ up wharf's support for look defined folder icon. That should also
+ speedup repeated changes of look
+ * adding support in Wharf for look-specific folder pixmap - so far
+- only works 2 times, then stops changing - wierd
++ only works 2 times, then stops changing - weird
+
+ 2007-07-19 sasha
+
+@@ -1059,7 +1059,7 @@
+
+ 2005-04-22 sasha
+
+- * Fixed off-by-one bug in ASStorage causing wierd artefact and
++ * Fixed off-by-one bug in ASStorage causing weird artefact and
+ possibly segfaults, due to occupied slots being reused improperly
+
+ 2005-04-21 sasha
+@@ -1381,7 +1381,7 @@
+ * fixed segfault in asstorage when diff buffer does not gets
+ reallocated
+ * fixed button ungrabbing on windows withdrawing that was causing
+- wierd BadAccess errors in Wharf
++ weird BadAccess errors in Wharf
+
+ 2004-09-23 sasha
+
+@@ -1527,7 +1527,7 @@
+ calls to storage destruction code
+ * fixed thresholding code in asstorage needed for rectangular shape
+ stuff
+- * Improved reference counting in ASStorage to accomodate to wierd
++ * Improved reference counting in ASStorage to accomodate to weird
+ storage states where some blocks have no space left for reference
+
+ 2004-07-30 sasha
+@@ -1738,7 +1738,7 @@
+
+ 2004-03-18 sasha
+
+- * Found and fixed very wierd heap corruption bug, causing segfault
++ * Found and fixed very weird heap corruption bug, causing segfault
+ whenever bevelled rectang is drawn
+ * Added builtin libungif to libAfterImage, and enabled support for
+ it by default in configure
+@@ -1839,7 +1839,7 @@
+ 2004-01-21 sasha
+
+ * fixed bug where empty locale would be specified while starting a
+- module causing Pager to have 255 desktops and other wierdness
++ module causing Pager to have 255 desktops and other weirdness
+
+ 2004-01-13 sasha
+
+@@ -1917,7 +1917,7 @@
+
+ * Added ActiveDeskBevel and InActiveDeskBevel to Pager's options;
+ Debugged bevel drawing when tbar has different bevels for focus
+- and unfocus states( should get rid of wierd black frame when one
++ and unfocus states( should get rid of weird black frame when one
+ of the states is None)
+
+ 2003-09-25 sasha
+@@ -2121,7 +2121,7 @@
+ TakeFrameShot, as the side effect of debugging root background
+ handling. Updated feel.DEFAULT to use those
+ * fixed bug in inheritance code where back_icon would get destroyed
+- even if it was inherited, thus causing wierd things to happen
++ even if it was inherited, thus causing weird things to happen
+ when same style is inherited twice; Added code to
+ mystyle_make_image to ensure that we always produce valid ASImage
+
+@@ -3646,7 +3646,7 @@
+ * minor quality tweaks in rations 1-2 scaling up. Started
+ implementing ASImageDecoder for automatic tinting/tiling
+ * IMplemented JPEG input filter for ASImage. Fixed long standing
+- bug in image scaling causing wierdness in scaling UP with small
++ bug in image scaling causing weirdness in scaling UP with small
+ ratios. Started implemntation of XCF file reader.
+
+ 2001-04-15 sasha
+--- a/graf2d/asimage/src/libAfterImage/afterbase.c
++++ b/graf2d/asimage/src/libAfterImage/afterbase.c
+@@ -88,7 +88,7 @@
+ do
+ { /* Save our program name - for error messages */
+ register int i = 1 ; /* we don't use standard strrchr since there
+- * seems to be some wierdness in
++ * seems to be some weirdness in
+ * CYGWIN implementation of it. */
+ asim_ApplicationName = temp ;
+ while( temp[i] && temp[i] != '/' ) ++i ;
+--- a/graf2d/asimage/src/libAfterImage/blender.c
++++ b/graf2d/asimage/src/libAfterImage/blender.c
+@@ -319,9 +319,9 @@
+ { "dissipate", 9, dissipate_scanlines, "randomly alpha-blend images"},
+ { "hue", 3, hue_scanlines, "hue bottom image same as top image" },
+ { "lighten", 7, lighten_scanlines, "use highest color value from both images" },
+- { "overlay", 7, overlay_scanlines, "some wierd image overlaying(see GIMP)" },
++ { "overlay", 7, overlay_scanlines, "some weird image overlaying(see GIMP)" },
+ { "saturate", 8, saturate_scanlines, "saturate bottom image same as top image"},
+- { "screen", 6, screen_scanlines, "another wierd image overlaying(see GIMP)" },
++ { "screen", 6, screen_scanlines, "another weird image overlaying(see GIMP)" },
+ { "sub", 3, sub_scanlines, "color substraction with saturation" },
+ { "tint", 4, tint_scanlines, "tinting image with image" },
+ { "value", 5, value_scanlines, "value bottom image same as top image" },
+--- a/graf2d/asimage/src/libAfterImage/blender.h
++++ b/graf2d/asimage/src/libAfterImage/blender.h
+@@ -197,9 +197,9 @@
+ * value of top and bottom :
+ * bottom = (bottom>top)?bottom:top;
+ * NAME
+- * screen_scanlines() - some wierd merging algorithm taken from GIMP;
++ * screen_scanlines() - some weird merging algorithm taken from GIMP;
+ * NAME
+- * overlay_scanlines() - some wierd merging algorithm taken from GIMP;
++ * overlay_scanlines() - some weird merging algorithm taken from GIMP;
+ * NAME
+ * hue_scanlines() - substitute hue of bottom scanline with hue of
+ * top scanline;
+--- a/graf2d/asimage/src/libAfterImage/transform.c
++++ b/graf2d/asimage/src/libAfterImage/transform.c
+@@ -2639,7 +2639,7 @@
+ gauss[0] = 1.0;
+ return;
+ }
+- /* after radius of 128 - gaussian degrades into something wierd,
++ /* after radius of 128 - gaussian degrades into something weird,
+ since our colors are only 8 bit */
+ if (radius > 128.0) radius = 128.0;
+ std_dev = (radius - 1) * 0.3003866304;
+@@ -2707,7 +2707,7 @@
+ gauss_sums[0] = 1024;
+ return;
+ }
+- /* after radius of 128 - gaussian degrades into something wierd,
++ /* after radius of 128 - gaussian degrades into something weird,
+ since our colors are only 8 bit */
+ if (i > 128) i = 128;
+ #if 1
diff --git a/debian/patches/31-fix-typo-wheter-whether.patch b/debian/patches/31-fix-typo-wheter-whether.patch
new file mode 100644
index 0000000..c0ae555
--- /dev/null
+++ b/debian/patches/31-fix-typo-wheter-whether.patch
@@ -0,0 +1,13 @@
+diff --git a/proof/proofx/inc/TXSocket.h b/proof/proofx/inc/TXSocket.h
+index e350fa6..01e6fdb 100644
+--- a/proof/proofx/inc/TXSocket.h
++++ b/proof/proofx/inc/TXSocket.h
+@@ -110,7 +110,7 @@ private:
+ // Interrupts
+ TMutex *fIMtx; // To protect interrupt queue
+ kXR_int32 fILev; // Highest received interrupt
+- Bool_t fIForward; // Wheter the interrupt should be propagated
++ Bool_t fIForward; // Whether the interrupt should be propagated
+
+ // Process ID of the instatiating process (to signal interrupts)
+ Int_t fPid;
diff --git a/debian/patches/32-fix-typo-unecessary-unnecessary.patch b/debian/patches/32-fix-typo-unecessary-unnecessary.patch
new file mode 100644
index 0000000..487526b
--- /dev/null
+++ b/debian/patches/32-fix-typo-unecessary-unnecessary.patch
@@ -0,0 +1,26 @@
+diff --git a/roofit/roostats/inc/RooStats/BernsteinCorrection.h b/roofit/roostats/inc/RooStats/BernsteinCorrection.h
+index b4da0ca..4f06b2d 100644
+--- a/roofit/roostats/inc/RooStats/BernsteinCorrection.h
++++ b/roofit/roostats/inc/RooStats/BernsteinCorrection.h
+@@ -39,7 +39,7 @@ namespace RooStats {
+
+ private:
+ Double_t fMaxCorrection; // maximum correction factor at any point
+- Double_t fTolerance; // probability to add an unecessary term
++ Double_t fTolerance; // probability to add an unnecessary term
+
+ protected:
+ ClassDef(BernsteinCorrection,1) // A utility to add polynomial corrrection terms to a model to improve the description of data.
+diff --git a/tutorials/roostats/rs_bernsteinCorrection.C b/tutorials/roostats/rs_bernsteinCorrection.C
+index f519658..111e609 100644
+--- a/tutorials/roostats/rs_bernsteinCorrection.C
++++ b/tutorials/roostats/rs_bernsteinCorrection.C
+@@ -80,7 +80,7 @@ void rs_bernsteinCorrection(){
+ wks->import(*data, Rename("data"));
+ wks->import(nominal);
+
+- // The tolerance sets the probability to add an unecessary term.
++ // The tolerance sets the probability to add an unnecessary term.
+ // lower tolerance will add fewer terms, while higher tolerance
+ // will add more terms and provide a more flexible function.
+ Double_t tolerance = 0.05;
diff --git a/debian/patches/33-fix-typo-splitted-split.patch b/debian/patches/33-fix-typo-splitted-split.patch
new file mode 100644
index 0000000..cdaf6f9
--- /dev/null
+++ b/debian/patches/33-fix-typo-splitted-split.patch
@@ -0,0 +1,201 @@
+--- a/cint/reflex/inc/Reflex/Tools.h
++++ b/cint/reflex/inc/Reflex/Tools.h
+@@ -64,8 +64,8 @@
+
+
+ /**
+- * StringSplit will return a vector of splitted strings
+- * @param splitValues returns the vector with splitted strings
++ * StringSplit will return a vector of split strings
++ * @param splitValues returns the vector with split strings
+ * @param str the input string
+ * @param delim the delimiter on which to split
+ */
+--- a/core/base/inc/TUri.h
++++ b/core/base/inc/TUri.h
+@@ -43,7 +43,7 @@
+ private:
+
+ // In order to represent the five basic components of an URI,
+- // we use 7 member variables (authority gets splitted in 3 parts)
++ // we use 7 member variables (authority gets split in 3 parts)
+ //
+ // foo://user:pass@example.com:8042/over/there?name=ferret#nose
+ // \_/ \________________________/\_________/ \_________/ \__/
+--- a/geom/geom/src/TGeoCompositeShape.cxx
++++ b/geom/geom/src/TGeoCompositeShape.cxx
+@@ -58,7 +58,7 @@
+ // This represent the union of A, B and C. Both union operators are at the
+ // same level. Since:
+ // A+B+C = (A+B)+C = A+(B+C)
+-// the first (+) is taken as separator, hence the expression splitted:
++// the first (+) is taken as separator, hence the expression split:
+ // A and B+C
+ // A Boolean node of type TGeoUnion("A", "B+C") is created. This tries to replace
+ // the 2 expressions by actual pointers to corresponding shapes.
+--- a/geom/geom/src/TGeoPolygon.cxx
++++ b/geom/geom/src/TGeoPolygon.cxx
+@@ -17,7 +17,7 @@
+ // TGeoXtru class for computing Contains() and Safety(). Only the pointers to
+ // the actual lists of XY values are used - these are not owned by the class.
+ //
+-// To check if a point in XY plane is contained by a polygon, this is splitted
++// To check if a point in XY plane is contained by a polygon, this is split
+ // into an outscribed convex polygon and the remaining polygons of its subtracton
+ // from the outscribed one. A point is INSIDE if it is
+ // contained by the outscribed polygon but NOT by the remaining ones. Since these
+@@ -27,7 +27,7 @@
+ // Pconvex-P = P1 + P2 + ... where (+) means 'union'
+ //
+ // *Note that P1, P2, ... do not intersect each other and they are defined
+-// by subsets of the list of vertices of P. They can be splitted in the same
++// by subsets of the list of vertices of P. They can be split in the same
+ // way as P*
+ //
+ // Therefore, if C(P) represents the Boolean : 'does P contains a given point?',
+--- a/geom/geombuilder/src/TGeoVolumeEditor.cxx
++++ b/geom/geombuilder/src/TGeoVolumeEditor.cxx
+@@ -16,7 +16,7 @@
+ //////////////////////////////////////////////////////////////////////////
+ /* Editor for geometry volumes and assemblies of volumes. Besides the volume
+ name and line attributes, a TGeoVolume has the following editable categories
+- splitted vertically by a shutter:
++ split vertically by a shutter:
+ - Properties: one can edit the shape and medium components from here. It is
+ also possible to change the existing ones.
+ - Daughters: the main category allowing defining, editing, removing or
+--- a/gui/gui/src/TGSplitFrame.cxx
++++ b/gui/gui/src/TGSplitFrame.cxx
+@@ -407,7 +407,7 @@
+ {
+ // Horizontally split the frame.
+
+- // return if already splitted
++ // return if already split
+ if ((fSplitter != 0) || (fFirst != 0) || (fSecond != 0) || (fFrame != 0))
+ return;
+ UInt_t height = (h > 0) ? h : fHeight/2;
+@@ -436,7 +436,7 @@
+ {
+ // Vertically split the frame.
+
+- // return if already splitted
++ // return if already split
+ if ((fSplitter != 0) || (fFirst != 0) || (fSecond != 0) || (fFrame != 0))
+ return;
+ UInt_t width = (w > 0) ? w : fWidth/2;
+--- a/roofit/roofitcore/src/RooSimWSTool.cxx
++++ b/roofit/roofitcore/src/RooSimWSTool.cxx
+@@ -641,7 +641,7 @@
+ //_____________________________________________________________________________
+ void RooSimWSTool::SplitRule::splitParameter(const char* paramNameList, const char* categoryNameList)
+ {
+- // Specify that parameters names listed in paramNameList be splitted in (product of) category(s)
++ // Specify that parameters names listed in paramNameList be split in (product of) category(s)
+ // listed in categoryNameList
+
+ char paramBuf[4096] ;
+@@ -669,7 +669,7 @@
+ //_____________________________________________________________________________
+ void RooSimWSTool::SplitRule::splitParameterConstrained(const char* paramNameList, const char* categoryNameList, const char* remainderStateName)
+ {
+- // Specify that parameters names listed in paramNameList be splitted in constrained way in (product of) category(s)
++ // Specify that parameters names listed in paramNameList be split in constrained way in (product of) category(s)
+ // listed in categoryNameList and that remainder fraction formula be put in state with name remainderStateName
+
+ char paramBuf[4096] ;
+--- a/tmva/inc/TMVA/RegressionVariance.h
++++ b/tmva/inc/TMVA/RegressionVariance.h
+@@ -80,7 +80,7 @@
+ // destructor
+ virtual ~RegressionVariance(){}
+
+- // Return the gain in separation of the original sample is splitted in two sub-samples
++ // Return the gain in separation of the original sample is split in two sub-samples
+ // (N * Index_parent) - (N_left * Index_left) - (N_right * Index_right)
+ Double_t GetSeparationGain( const Double_t &nLeft, const Double_t &targetLeft, const Double_t &target2Left,
+ const Double_t &nTot, const Double_t &targetTot, const Double_t &target2Tot );
+--- a/tmva/inc/TMVA/SeparationBase.h
++++ b/tmva/inc/TMVA/SeparationBase.h
+@@ -98,7 +98,7 @@
+ // destructor
+ virtual ~SeparationBase(){}
+
+- // Return the gain in separation of the original sample is splitted in two sub-samples
++ // Return the gain in separation of the original sample is split in two sub-samples
+ // (N * Index_parent) - (N_left * Index_left) - (N_right * Index_right)
+ Double_t GetSeparationGain( const Double_t& nSelS, const Double_t& nSelB,
+ const Double_t& nTotS, const Double_t& nTotB );
+--- a/tree/treeplayer/inc/TFormLeafInfo.h
++++ b/tree/treeplayer/inc/TFormLeafInfo.h
+@@ -340,7 +340,7 @@
+ // TFormLeafInfoMultiVarDim is a small helper class to implement reading a
+ // data member on a variable size array inside a TClonesArray object stored in
+ // a TTree. This is the version used when the data member is inside a
+-// non-splitted object.
++// non-split object.
+
+ class TFormLeafInfoMultiVarDim : public TFormLeafInfo {
+ public:
+--- a/tree/treeplayer/src/TFormLeafInfo.cxx
++++ b/tree/treeplayer/src/TFormLeafInfo.cxx
+@@ -2245,7 +2245,7 @@
+ // TFormLeafInfoMultiVarDim is a helper class to implement reading a
+ // data member on a variable size array inside a TClonesArray object stored in
+ // a TTree. This is the version used when the data member is inside a
+-// non-splitted object.
++// non-split object.
+
+ //______________________________________________________________________________
+ TFormLeafInfoMultiVarDim::TFormLeafInfoMultiVarDim( TClass* classptr,
+--- a/tree/treeplayer/src/TTreeFormula.cxx
++++ b/tree/treeplayer/src/TTreeFormula.cxx
+@@ -2248,7 +2248,7 @@
+ }
+
+ // What we have so far might be a member function of one of the
+- // leaves that are not splitted (for example "GetNtrack" for the Event class).
++ // leaves that are not split (for example "GetNtrack" for the Event class).
+ TIter next(fTree->GetIteratorOnAllLeaves());
+ TLeaf* leafcur = 0;
+ while (!leaf && (leafcur = (TLeaf*) next())) {
+@@ -2445,7 +2445,7 @@
+ *current = 0;
+ } else {
+ // What we have so far might be a data member of one of the
+- // leaves that are not splitted (for example "fNtrack" for the Event class.
++ // leaves that are not split (for example "fNtrack" for the Event class.
+ TLeaf *leafcur = GetLeafWithDatamember(first,work,readentry);
+ if (leafcur) {
+ leaf = leafcur;
+--- a/tree/treeplayer/src/TTreeProxyGenerator.cxx
++++ b/tree/treeplayer/src/TTreeProxyGenerator.cxx
+@@ -1354,7 +1354,7 @@
+ if ( branch->GetListOfBranches()->GetEntries() == 0 ) {
+
+ if (cl) {
+- // We have a non-splitted object!
++ // We have a non-split object!
+
+ if (desc) {
+ TVirtualStreamerInfo *cinfo = cl->GetStreamerInfo();
+@@ -1382,7 +1382,7 @@
+
+ } else {
+
+- // We have a splitted object
++ // We have a split object
+
+ TIter subnext( branch->GetListOfBranches() );
+ if (desc) {
+--- a/test/stressProof.cxx
++++ b/test/stressProof.cxx
+@@ -952,7 +952,7 @@
+ &PT_H1FileCollection, (void *)&gStd_Old, "1", "h1analysis", kTRUE));
+ // H1 analysis over HTTP by dataset name
+ testList->Add(new ProofTest("H1: by-name processing", 8, &PT_H1DataSet, 0, "1,4", "h1analysis", kTRUE));
+- // H1 analysis over HTTP by dataset name splitted in two
++ // H1 analysis over HTTP by dataset name split in two
+ testList->Add(new ProofTest("H1: multi dataset processing", 9, &PT_H1MultiDataSet, 0, "1,4", "h1analysis", kTRUE));
+ // H1 analysis over HTTP by dataset name
+ testList->Add(new ProofTest("H1: multi dataset and entry list", 10, &PT_H1MultiDSetEntryList, 0, "1,4", "h1analysis", kTRUE));
diff --git a/debian/patches/34-fix-typo-registerd-registered.patch b/debian/patches/34-fix-typo-registerd-registered.patch
new file mode 100644
index 0000000..3a0ccf5
--- /dev/null
+++ b/debian/patches/34-fix-typo-registerd-registered.patch
@@ -0,0 +1,55 @@
+--- a/graf3d/eve/src/TEvePointSet.cxx
++++ b/graf3d/eve/src/TEvePointSet.cxx
+@@ -227,7 +227,7 @@
+ //______________________________________________________________________________
+ void TEvePointSet::SetPointIntIds(Int_t* ids)
+ {
+- // Set integer ids for the last point that was registerd (most
++ // Set integer ids for the last point that was registered (most
+ // probably via TPolyMarker3D::SetNextPoint(x,y,z)).
+
+ SetPointIntIds(fLastPoint, ids);
+--- a/graf3d/eve/src/TEveTrack.cxx
++++ b/graf3d/eve/src/TEveTrack.cxx
+@@ -486,7 +486,7 @@
+ //______________________________________________________________________________
+ void TEveTrack::SortPathMarksByTime()
+ {
+- // Sort registerd pat-marks by time.
++ // Sort registered pat-marks by time.
+
+ std::sort(fPathMarks.begin(), fPathMarks.end(), Cmp_pathmark_t());
+ }
+--- a/hist/hist/src/TFormulaPrimitive.cxx
++++ b/hist/hist/src/TFormulaPrimitive.cxx
+@@ -254,7 +254,7 @@
+ namespace TFastFun {
+ //
+ // Namespace with basic primitive functions registered by TFormulaPrimitive
+- // all function registerd by TFormulaPrimitive can be used in TFormula
++ // all function registered by TFormulaPrimitive can be used in TFormula
+ //
+ Double_t Pow2(Double_t x){return x*x;}
+ Double_t Pow3(Double_t x){return x*x*x;}
+--- a/proof/proofd/src/XrdProofdNetMgr.cxx
++++ b/proof/proofd/src/XrdProofdNetMgr.cxx
+@@ -491,7 +491,7 @@
+ w++;
+ haveit = 0;
+ while (w != mgr->fRegWorkers.end()) {
+- TRACE(HDBG,"registerd node: "<< (*w)->fHost <<", port: "<<(*w)->fPort);
++ TRACE(HDBG,"registered node: "<< (*w)->fHost <<", port: "<<(*w)->fPort);
+ if ((*w)->fHost == i->GetHostName() && (*w)->fPort == i->GetPort()) {
+ (*w)->fActive = true;
+ haveit = 1;
+--- a/roofit/roofit/inc/RooCFunction1Binding.h
++++ b/roofit/roofit/inc/RooCFunction1Binding.h
+@@ -153,7 +153,7 @@
+ void RooCFunction1Ref<VO,VI>::Streamer(TBuffer &R__b)
+ {
+ // Custom streamer for function pointer reference object. When writing,
+- // the function pointer is substituted by its registerd name. When function
++ // the function pointer is substituted by its registered name. When function
+ // is unregistered name 'UNKNOWN' is written and a warning is issues. When
+ // reading back, the embedded name is converted back to a function pointer
+ // using the mapping service. When name UNKNOWN is encountered a warning is
diff --git a/debian/patches/35-fix-typo-recieve-receive.patch b/debian/patches/35-fix-typo-recieve-receive.patch
new file mode 100644
index 0000000..ad64b5c
--- /dev/null
+++ b/debian/patches/35-fix-typo-recieve-receive.patch
@@ -0,0 +1,22 @@
+--- a/net/net/src/TSQLStatement.cxx
++++ b/net/net/src/TSQLStatement.cxx
+@@ -122,7 +122,7 @@
+ // should be stored in internal buffers with TSQLStatement::StoreResult()
+ // method. Information about selected fields (columns)
+ // can be obtained with GetNumFields() and GetFieldName() methods.
+-// To recieve data for next result row, NextResultRow() method should be called.
++// To receive data for next result row, NextResultRow() method should be called.
+ // Value from each column can be taken with the GetInt(), GetDouble(),
+ // GetString() and other methods.
+ //
+--- a/net/rpdutils/src/rpdutils.cxx
++++ b/net/rpdutils/src/rpdutils.cxx
+@@ -3605,7 +3605,7 @@
+ //______________________________________________________________________________
+ int RpdCheckSpecialPass(const char *passwd)
+ {
+- // Check recieved user's password against password in $HOME/.rootdpass.
++ // Check received user's password against password in $HOME/.rootdpass.
+ // The password is retrieved in RpdUser and temporarly saved in gPasswd.
+ // Returns 1 in case of success authentication, 0 otherwise.
+
diff --git a/debian/patches/37-fix-typo-processsing-processing.patch b/debian/patches/37-fix-typo-processsing-processing.patch
new file mode 100644
index 0000000..0b9e7a7
--- /dev/null
+++ b/debian/patches/37-fix-typo-processsing-processing.patch
@@ -0,0 +1,11 @@
+--- a/proof/proof/src/TProofMgr.cxx
++++ b/proof/proof/src/TProofMgr.cxx
+@@ -1031,7 +1031,7 @@
+ void TProofDesc::Print(Option_t *) const
+ {
+ // Dump the content to the screen.
+- const char *st[] = { "unknown", "idle", "processsing", "shutting down"};
++ const char *st[] = { "unknown", "idle", "processing", "shutting down"};
+
+ Printf("// # %d", fLocalId);
+ Printf("// alias: %s, url: \"%s\"", GetTitle(), GetUrl());
diff --git a/debian/patches/38-fix-typo-ouput-output.patch b/debian/patches/38-fix-typo-ouput-output.patch
new file mode 100644
index 0000000..c275566
--- /dev/null
+++ b/debian/patches/38-fix-typo-ouput-output.patch
@@ -0,0 +1,164 @@
+--- a/cint/cint/include/graphbuf.h
++++ b/cint/cint/include/graphbuf.h
+@@ -391,7 +391,7 @@
+ return(*this);
+ }
+
+-// reset ouput pointer
++// reset output pointer
+ graphbuf& graphbuf::operator >>(char *s)
+ {
+ pout=0;
+--- a/core/textinput/src/textinput/TerminalDisplay.h
++++ b/core/textinput/src/textinput/TerminalDisplay.h
+@@ -24,7 +24,7 @@
+ namespace textinput {
+ class Color;
+
+- // Base class for ouput to a terminal.
++ // Base class for output to a terminal.
+ class TerminalDisplay: public Display {
+ public:
+ ~TerminalDisplay();
+--- a/graf2d/asimage/src/libAfterImage/libpng/pngwio.c
++++ b/graf2d/asimage/src/libAfterImage/libpng/pngwio.c
+@@ -161,7 +161,7 @@
+ arguments a pointer to a png_struct. After a call to
+ the flush function, there should be no data in any buffers
+ or pending transmission. If the output method doesn't do
+- any buffering of ouput, a function prototype must still be
++ any buffering of output, a function prototype must still be
+ supplied although it doesn't have to do anything. If
+ PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile
+ time, output_flush_fn will be ignored, although it must be
+--- a/graf2d/postscript/src/TSVG.cxx
++++ b/graf2d/postscript/src/TSVG.cxx
+@@ -1143,7 +1143,7 @@
+ //______________________________________________________________________________
+ void TSVG::Initialize()
+ {
+- // Initialize the SVG file. The main task of the function is to ouput the
++ // Initialize the SVG file. The main task of the function is to output the
+ // SVG header file which consist in <title>, <desc> and <defs>. The
+ // HeaderPS provided by the user program is written in the <defs> part.
+
+@@ -1202,7 +1202,7 @@
+ void TSVG::NewPage()
+ {
+ // Start the SVG page. This function initialize the pad conversion
+- // coefficients and ouput the <svg> directive which is close later in the
++ // coefficients and output the <svg> directive which is close later in the
+ // the function Close.
+
+ // Compute pad conversion coefficients
+--- a/proof/proof/src/TProof.cxx
++++ b/proof/proof/src/TProof.cxx
+@@ -3050,7 +3050,7 @@
+ } else {
+ PDB(kGlobal,2)
+ Info("HandleInputMessage",
+- "%s: kPROOF_OUTPUTLIST: ouputlist is empty", sl->GetOrdinal());
++ "%s: kPROOF_OUTPUTLIST: outputlist is empty", sl->GetOrdinal());
+ }
+ } else {
+ Warning("HandleInputMessage",
+--- a/proof/proofplayer/src/TProofPlayer.cxx
++++ b/proof/proofplayer/src/TProofPlayer.cxx
+@@ -2474,7 +2474,7 @@
+ TList *tmp = (TList *) qr->GetOutputList();
+ if (!tmp) {
+ gSystem->RedirectOutput(0);
+- Info("Finalize(TQueryResult *)", "ouputlist is empty");
++ Info("Finalize(TQueryResult *)", "outputlist is empty");
+ return -1;
+ }
+ TList *out = fOutput;
+--- a/test/stressHepix.cxx
++++ b/test/stressHepix.cxx
+@@ -26,7 +26,7 @@
+ // make
+ //
+ // The default configuration of ROOT is enough.
+-// The ouput of this benchmark looks like:
++// The output of this benchmark looks like:
+ //
+ /// stressHepix
+ ///
+--- a/test/stressHistoFit.cxx
++++ b/test/stressHistoFit.cxx
+@@ -485,7 +485,7 @@
+ fflush(stdout);
+ }
+
+-// Sets the color of the ouput to red or normal
++// Sets the color of the output to red or normal
+ void setColor(int red = 0)
+ {
+ char command[13];
+--- a/tmva/inc/TMVA/Rule.h
++++ b/tmva/inc/TMVA/Rule.h
+@@ -55,7 +55,7 @@
+
+ class Rule {
+
+- // ouput operator for a Rule
++ // output operator for a Rule
+ friend ostream& operator<< ( ostream& os, const Rule & rule );
+
+ public:
+--- a/tmva/src/MethodCFMlpANN_Utils.cxx
++++ b/tmva/src/MethodCFMlpANN_Utils.cxx
+@@ -267,7 +267,7 @@
+ ULog() << kINFO << "Number of layers for neuron(" << j << "): " << fNeur_1.neuron[j - 1] << Endl;
+ }
+ if (fNeur_1.neuron[fParam_1.layerm - 1] != 2) {
+- printf("Error: wrong number of classes at ouput layer: %i != 2 ==> abort\n",
++ printf("Error: wrong number of classes at output layer: %i != 2 ==> abort\n",
+ fNeur_1.neuron[fParam_1.layerm - 1]);
+ Arret("stop");
+ }
+@@ -695,7 +695,7 @@
+ }
+ if (fParam_1.lclass < fNeur_1.neuron[fParam_1.layerm - 1]) {
+ ktest = 1;
+- printf("Error: wrong number of classes at ouput layer: %i != %i ==> abort\n",
++ printf("Error: wrong number of classes at output layer: %i != %i ==> abort\n",
+ fNeur_1.neuron[fParam_1.layerm - 1], fParam_1.lclass);
+ Arret("problem needs to reported ");
+ }
+--- a/tmva/src/OptimizeConfigParameters.cxx
++++ b/tmva/src/OptimizeConfigParameters.cxx
+@@ -385,7 +385,7 @@
+ Double_t TMVA::OptimizeConfigParameters::GetSeparation()
+ {
+ // return the searation between the signal and background
+- // MVA ouput distribution
++ // MVA output distribution
+ GetMVADists();
+ if (1){
+ PDF *splS = new PDF( " PDF Sig", fMvaSig, PDF::kSpline2 );
+@@ -404,10 +404,10 @@
+ // calculate the area (integral) under the ROC curve as a
+ // overall quality measure of the classification
+ //
+- // makeing pdfs out of the MVA-ouput distributions doesn't work
+- // reliably for cases where the MVA-ouput isn't a smooth distribution.
++ // makeing pdfs out of the MVA-output distributions doesn't work
++ // reliably for cases where the MVA-output isn't a smooth distribution.
+ // this happens "frequently" in BDTs for example when the number of
+- // trees is small resulting in only some discrete possible MVA ouput values.
++ // trees is small resulting in only some discrete possible MVA output values.
+ // (I still leave the code here, but use this with care!!! The default
+ // however is to use the distributions!!!
+
+--- a/tmva/src/PDEFoam.cxx
++++ b/tmva/src/PDEFoam.cxx
+@@ -1471,7 +1471,7 @@
+ // as rectangles in C++ format readable for ROOT.
+ //
+ // Parameters:
+- // - filename - filename of ouput root macro
++ // - filename - filename of output root macro
+ //
+ // - opt - cell_value, rms, rms_ov_mean
+ // If cell_value is set, the following values will be filled into
diff --git a/debian/patches/39-fix-typo-mutiple-multiple.patch b/debian/patches/39-fix-typo-mutiple-multiple.patch
new file mode 100644
index 0000000..3e80aa1
--- /dev/null
+++ b/debian/patches/39-fix-typo-mutiple-multiple.patch
@@ -0,0 +1,35 @@
+diff --git a/gui/gui/src/TGuiBuilder.cxx b/gui/gui/src/TGuiBuilder.cxx
+index ee0444b..499e920 100644
+--- a/gui/gui/src/TGuiBuilder.cxx
++++ b/gui/gui/src/TGuiBuilder.cxx
+@@ -48,7 +48,7 @@
+ //
+ // o Click left mouse button or Ctrl-Click to select an object to edit.
+ // o Press right mouse button to activate context menu
+-// o Mutiple selection (grabbing):
++// o Multiple selection (grabbing):
+ // - draw lasso and press Return key
+ // - press Shift key and draw lasso
+ // o Dropping:
+diff --git a/gui/guibuilder/src/TRootGuiBuilder.cxx b/gui/guibuilder/src/TRootGuiBuilder.cxx
+index cc7caf8..c49ca83 100644
+--- a/gui/guibuilder/src/TRootGuiBuilder.cxx
++++ b/gui/guibuilder/src/TRootGuiBuilder.cxx
+@@ -83,7 +83,7 @@
+ //
+ // o Click left mouse button or Ctrl-Click to select an object to edit.
+ // o Press right mouse button to activate context menu
+-// o Mutiple selection (grabbing):
++// o Multiple selection (grabbing):
+ // - draw lasso and press Return key
+ // - press Shift key and draw lasso
+ // o Dropping:
+@@ -133,7 +133,7 @@ const char gHelpBuilder[] = "\
+ \n\
+ o Press left mouse button Click or Ctrl-Click to select an object.\n\
+ o Press right mouse button to activate context menu\n\
+- o Mutiple selection can be done in two ways (grabbing):\n\
++ o Multiple selection can be done in two ways (grabbing):\n\
+ - draw lasso and press Return key\n\
+ - press Shift key and draw lasso\n\
+ o Dropping:\n\
diff --git a/debian/patches/40-fix-typo-lenght-length.patch b/debian/patches/40-fix-typo-lenght-length.patch
new file mode 100644
index 0000000..5212403
--- /dev/null
+++ b/debian/patches/40-fix-typo-lenght-length.patch
@@ -0,0 +1,249 @@
+--- a/core/base/src/TVirtualX.cxx
++++ b/core/base/src/TVirtualX.cxx
+@@ -1589,7 +1589,7 @@
+ Int_t TVirtualX::TextWidth(FontStruct_t /*font*/, const char * /*s*/,
+ Int_t /*len*/)
+ {
+- // Return lenght of the string "s" in pixels. Size depends on font.
++ // Return length of the string "s" in pixels. Size depends on font.
+
+ return 5;
+ }
+--- a/core/unix/src/TUnixSystem.cxx
++++ b/core/unix/src/TUnixSystem.cxx
+@@ -3289,7 +3289,7 @@
+ //______________________________________________________________________________
+ int TUnixSystem::RecvBuf(int sock, void *buf, int length)
+ {
+- // Receive a buffer headed by a length indicator. Lenght is the size of
++ // Receive a buffer headed by a length indicator. Length is the size of
+ // the buffer. Returns the number of bytes received in buf or -1 in
+ // case of error.
+
+--- a/core/winnt/src/TWinNTSystem.cxx
++++ b/core/winnt/src/TWinNTSystem.cxx
+@@ -4721,7 +4721,7 @@
+ //______________________________________________________________________________
+ int TWinNTSystem::RecvBuf(int sock, void *buf, int length)
+ {
+- // Receive a buffer headed by a length indicator. Lenght is the size of
++ // Receive a buffer headed by a length indicator. Length is the size of
+ // the buffer. Returns the number of bytes received in buf or -1 in
+ // case of error.
+
+@@ -4770,7 +4770,7 @@
+ {
+ // Receive exactly length bytes into buffer. Use opt to receive out-of-band
+ // data or to have a peek at what is in the buffer (see TSocket). Buffer
+- // must be able to store at least lenght bytes. Returns the number of
++ // must be able to store at least length bytes. Returns the number of
+ // bytes received (can be 0 if other side of connection was closed) or -1
+ // in case of error, -2 in case of MSG_OOB and errno == EWOULDBLOCK, -3
+ // in case of MSG_OOB and errno == EINVAL and -4 in case of kNoBlock and
+--- a/graf2d/qt/src/GQtGUI.cxx
++++ b/graf2d/qt/src/GQtGUI.cxx
+@@ -2242,7 +2242,7 @@
+ //______________________________________________________________________________
+ Int_t TGQt::TextWidth(FontStruct_t font, const char *s, Int_t len)
+ {
+- // Return lenght of string in pixels. Size depends on font.
++ // Return length of string in pixels. Size depends on font.
+
+ Int_t textWidth = 0;
+ if (len >0 && s && s[0] != 0 ) {
+--- a/graf2d/win32gdk/src/TGWin32.cxx
++++ b/graf2d/win32gdk/src/TGWin32.cxx
+@@ -6407,7 +6407,7 @@
+ //______________________________________________________________________________
+ Int_t TGWin32::TextWidth(FontStruct_t font, const char *s, Int_t len)
+ {
+- // Return lenght of string in pixels. Size depends on font.
++ // Return length of string in pixels. Size depends on font.
+
+ return gdk_text_width((GdkFont *)font, s, len);
+ }
+--- a/graf2d/x11/src/GX11Gui.cxx
++++ b/graf2d/x11/src/GX11Gui.cxx
+@@ -2058,7 +2058,7 @@
+ //______________________________________________________________________________
+ Int_t TGX11::TextWidth(FontStruct_t font, const char *s, Int_t len)
+ {
+- // Return lenght of string in pixels. Size depends on font.
++ // Return length of string in pixels. Size depends on font.
+
+ return XTextWidth((XFontStruct*) font, (char*) s, len);
+ }
+--- a/graf2d/x11ttf/src/TGX11TTF.cxx
++++ b/graf2d/x11ttf/src/TGX11TTF.cxx
+@@ -591,7 +591,7 @@
+ //______________________________________________________________________________
+ Int_t TGX11TTF::TextWidth(FontStruct_t font, const char *s, Int_t len)
+ {
+- // Return lenght of string in pixels. Size depends on font
++ // Return length of string in pixels. Size depends on font
+
+ if (!fXftFontHash) {
+ return TGX11::TextWidth(font, s, len);
+--- a/graf3d/gl/src/TGLAxisPainter.cxx
++++ b/graf3d/gl/src/TGLAxisPainter.cxx
+@@ -568,7 +568,7 @@
+ glGetDoublev(GL_PROJECTION_MATRIX, pm);
+ glGetIntegerv(GL_VIEWPORT, vp);
+
+- // determine bitmap font size from lenght of projected vertical
++ // determine bitmap font size from length of projected vertical
+ GLdouble dn[3];
+ GLdouble up[3];
+ gluProject(fAxisTitlePos[2].X(), fAxisTitlePos[2].Y(), fAxis[2]->GetXmin(), mm.Arr(), pm, vp, &dn[0], &dn[1], &dn[2]);
+--- a/gui/gui/inc/TGListBox.h
++++ b/gui/gui/inc/TGListBox.h
+@@ -156,7 +156,7 @@
+ protected:
+ UInt_t fLineWidth; // line width
+ Style_t fLineStyle; // line style
+- UInt_t fLineLength; // line lenght
++ UInt_t fLineLength; // line length
+ TGGC *fLineGC; // line graphics context
+
+ virtual void DoRedraw();
+--- a/gui/gui/inc/TGPack.h
++++ b/gui/gui/inc/TGPack.h
+@@ -103,7 +103,7 @@
+ Bool_t GetVertical() const { return fVertical; }
+ void SetVertical(Bool_t x);
+
+- // For now assume this is always true. Lenght of splitter = 4 pixels.
++ // For now assume this is always true. Length of splitter = 4 pixels.
+ Bool_t GetUseSplitters() const { return fUseSplitters; }
+ void SetUseSplitters(Bool_t x) { fUseSplitters = x; }
+
+--- a/gui/gui/inc/TGText.h
++++ b/gui/gui/inc/TGText.h
+@@ -38,7 +38,7 @@
+
+ protected:
+ char *fString; // line of text
+- ULong_t fLength; // lenght of line
++ ULong_t fLength; // length of line
+ TGTextLine *fPrev; // previous line
+ TGTextLine *fNext; // next line
+
+--- a/gui/gui/src/TGTextEntry.cxx
++++ b/gui/gui/src/TGTextEntry.cxx
+@@ -328,7 +328,7 @@
+ fSelbackGC = GetDefaultSelectedBackgroundGC()();
+
+ fOffset = 0;
+- // Set default maximum lenght to 4096. Can be changed with SetMaxLength()
++ // Set default maximum length to 4096. Can be changed with SetMaxLength()
+ fMaxLen = 4096;
+ fFrameDrawn = kTRUE;
+ fEdited = kFALSE;
+--- a/math/smatrix/inc/Math/Functions.h
++++ b/math/smatrix/inc/Math/Functions.h
+@@ -371,7 +371,7 @@
+
+
+ /** Unit.
+- Return a vector of unit lenght: \f$ \vec{e}_v = \vec{v}/|\vec{v}| \f$.
++ Return a vector of unit length: \f$ \vec{e}_v = \vec{v}/|\vec{v}| \f$.
+
+ @ingroup VectFunction
+ @author T. Glebe
+--- a/math/smatrix/inc/Math/SVector.h
++++ b/math/smatrix/inc/Math/SVector.h
+@@ -297,7 +297,7 @@
+ #endif
+
+ /** @name --- Expert functions --- */
+- /// transform vector into a vector of lenght 1
++ /// transform vector into a vector of length 1
+ SVector<T,D>& Unit();
+ /// place a sub-vector starting from the given position
+ template <unsigned int D2>
+--- a/misc/table/doc/index.txt
++++ b/misc/table/doc/index.txt
+@@ -12,7 +12,7 @@
+ That defines the hierarchical nature the class and all its subclasses.
+ <br>
+ The most advanced subclasses of TDataSet are TTable and TGenericTable
+-to create the TDataSet implementations bearing the self-described variable lenght arrays
++to create the TDataSet implementations bearing the self-described variable length arrays
+ of the C-structures.
+ <P>
+ See STAR publications:
+--- a/net/net/src/TNetFile.cxx
++++ b/net/net/src/TNetFile.cxx
+@@ -412,7 +412,7 @@
+ Double_t start = 0;
+ if (gPerfStats) start = TTimeStamp();
+
+- // Make the string with a list of offsets and lenghts
++ // Make the string with a list of offsets and lengths
+ Long64_t total_len = 0;
+ Long64_t actual_pos;
+ for(Int_t i = 0; i < nbuf; i++) {
+@@ -423,7 +423,7 @@
+ total_len += len[i];
+ }
+
+- // Send the command with the lenght of the info and number of buffers
++ // Send the command with the length of the info and number of buffers
+ if (fSocket->Send(Form("%d %d %d", nbuf, data_buf.Length(), blockSize),
+ kROOTD_GETS) < 0) {
+ Error("ReadBuffers", "error sending kROOTD_GETS command");
+--- a/proof/proof/src/TDSetProxy.cxx
++++ b/proof/proof/src/TDSetProxy.cxx
+@@ -65,7 +65,7 @@
+
+ fCurrent = fServ->GetNextPacket(totalEntries);
+
+- // Check log file lenght (before processing the next packet, so we have the
++ // Check log file length (before processing the next packet, so we have the
+ // chance to keep the latest logs)
+ fServ->TruncateLogFile();
+
+--- a/proof/proof/src/TProofServ.cxx
++++ b/proof/proof/src/TProofServ.cxx
+@@ -1321,7 +1321,7 @@
+ Int_t rc = 0;
+ TString exmsg;
+
+- // Check log file lenght (before the action, so we have the chance to keep the
++ // Check log file length (before the action, so we have the chance to keep the
+ // latest logs)
+ TruncateLogFile();
+
+--- a/roofit/roostats/inc/RooStats/HLFactory.h
++++ b/roofit/roostats/inc/RooStats/HLFactory.h
+@@ -96,7 +96,7 @@
+ /// Create the category for the combinations
+ void fCreateCategory();
+
+- /// Check the lenght of the lists
++ /// Check the length of the lists
+ bool fNamesListsConsistent();
+
+ /// List of channels names to combine for the signal plus background pdfs
+--- a/tmva/src/CostComplexityPruneTool.cxx
++++ b/tmva/src/CostComplexityPruneTool.cxx
+@@ -227,7 +227,7 @@
+ // for automatic pruning, at each step, we calculate the current quality of the
+ // tree and in the end we will prune at the minimum of the tree quality
+ // for the fixed parameter pruing, the cut is simply set at a relative position
+- // in the sequence according to the "lenght" of the sequence of pruned trees.
++ // in the sequence according to the "length" of the sequence of pruned trees.
+ // 100: at the end (pruned until the root node would be the next pruning candidate
+ // 50: in the middle of the sequence
+ // etc...
+--- a/tree/tree/inc/TBranch.h
++++ b/tree/tree/inc/TBranch.h
+@@ -88,7 +88,7 @@
+ TObjArray fBranches; //-> List of Branches of this branch
+ TObjArray fLeaves; //-> List of leaves of this branch
+ TObjArray fBaskets; //-> List of baskets of this branch
+- Int_t *fBasketBytes; //[fMaxBaskets] Lenght of baskets on file
++ Int_t *fBasketBytes; //[fMaxBaskets] Length of baskets on file
+ Long64_t *fBasketEntry; //[fMaxBaskets] Table of first entry in eack basket
+ Long64_t *fBasketSeek; //[fMaxBaskets] Addresses of baskets on file
+ TTree *fTree; //! Pointer to Tree header
diff --git a/debian/patches/41-fix-typo-interupted-interrupted.patch b/debian/patches/41-fix-typo-interupted-interrupted.patch
new file mode 100644
index 0000000..ec9e3d4
--- /dev/null
+++ b/debian/patches/41-fix-typo-interupted-interrupted.patch
@@ -0,0 +1,11 @@
+--- a/roofit/roostats/src/HypoTestInverterOriginal.cxx
++++ b/roofit/roostats/src/HypoTestInverterOriginal.cxx
+@@ -330,7 +330,7 @@
+
+ // check if failed status
+ if ( status==false ) {
+- std::cout << "Loop interupted because of failed status\n";
++ std::cout << "Loop interrupted because of failed status\n";
+ return false;
+ }
+ }
diff --git a/debian/patches/42-fix-typo-independant-independent.patch b/debian/patches/42-fix-typo-independant-independent.patch
new file mode 100644
index 0000000..e0c6c8f
--- /dev/null
+++ b/debian/patches/42-fix-typo-independant-independent.patch
@@ -0,0 +1,73 @@
+--- a/graf2d/asimage/src/libAfterImage/ChangeLog
++++ b/graf2d/asimage/src/libAfterImage/ChangeLog
+@@ -3383,7 +3383,7 @@
+ * Completed Pseudo-color support with colormap allocation and
+ ximage handling. Added create_asimage and destroy_asimage for
+ convinience. Added missing stuff to libAfterImage/afterbase.h to
+- make it completely independant. libAfterImage thus should be
++ make it completely independent. libAfterImage thus should be
+ ready for release - only to write up some docs :)
+
+ 2001-06-13 sasha
+@@ -3495,7 +3495,7 @@
+ it. That should allow for better library independancy - visual
+ will go with libAfterImage while ScreenInfo will move into
+ libAfterStep , or, possibly will split up even more. Goal is to
+- make libAfterImage completely independant from everything else.
++ make libAfterImage completely independent from everything else.
+
+ 2001-05-23 allanon
+
+--- a/graf3d/eve/doc/index.txt
++++ b/graf3d/eve/doc/index.txt
+@@ -2,7 +2,7 @@
+ <center><h1>The Event Display classes</h1></center>
+ <p><hr><p>
+
+- Eve is a ROOT module based on experiment-independant part of the
++ Eve is a ROOT module based on experiment-independent part of the
+ ALICE event display developed in cooperation between ALICE offline
+ project and ROOT during the last two years. It has been used in
+ ALICE for more than a year to perform high-level event
+--- a/graf3d/eve/inc/TEveVSD.h
++++ b/graf3d/eve/inc/TEveVSD.h
+@@ -64,7 +64,7 @@
+
+ static void DisableTObjectStreamersForVSDStruct();
+
+- ClassDef(TEveVSD, 1); // Visualization Summary Data - a collection of trees holding standard event data in experiment independant format.
++ ClassDef(TEveVSD, 1); // Visualization Summary Data - a collection of trees holding standard event data in experiment independent format.
+ };
+
+ #endif
+--- a/graf3d/eve/src/TEveVSD.cxx
++++ b/graf3d/eve/src/TEveVSD.cxx
+@@ -19,7 +19,7 @@
+ //______________________________________________________________________________
+ //
+ // Visualization Summary Data - a collection of trees holding standard
+-// event data in experiment independant format.
++// event data in experiment independent format.
+
+ ClassImp(TEveVSD);
+
+--- a/math/genvector/inc/Math/GenVector/BitReproducible.h
++++ b/math/genvector/inc/Math/GenVector/BitReproducible.h
+@@ -48,7 +48,7 @@
+
+ // dto2longs(d, i1, i2) returns (in i1 and i2) two unsigned ints
+ // representation of its double input. This is byte-ordering
+- // independant, and depends for complete portability ONLY on adherance
++ // independent, and depends for complete portability ONLY on adherance
+ // to the IEEE 754 standard for 64-bit floating point representation.
+ // The first unsigned int contains the high-order bits in IEEE; thus
+ // 1.0 will always be 0x3FF00000, 00000000
+@@ -64,7 +64,7 @@
+
+ // dtox(d) returns a 16-character string containing the (zero-filled) hex
+ // representation of its double input. This is byte-ordering
+- // independant, and depends for complete portability ONLY on adherance
++ // independent, and depends for complete portability ONLY on adherance
+ // to the IEEE 754 standard for 64-bit floating point representation.
+ static std::string D2x(double d);
+
diff --git a/debian/patches/43-fix-typo-inconsistant-inconsistent.patch b/debian/patches/43-fix-typo-inconsistant-inconsistent.patch
new file mode 100644
index 0000000..c4b7e9a
--- /dev/null
+++ b/debian/patches/43-fix-typo-inconsistant-inconsistent.patch
@@ -0,0 +1,13 @@
+diff --git a/misc/minicern/src/zebra.f b/misc/minicern/src/zebra.f
+index 26c6ca4..80477ee 100644
+--- a/misc/minicern/src/zebra.f
++++ b/misc/minicern/src/zebra.f
+@@ -672,7 +672,7 @@
+ ENDIF
+ IF (IPASS.NE.0 .AND. LRECL2.NE.0) THEN
+ WRITE(IQPRNT,10600) LRECL2,LRECL
+-10600 FORMAT(' RZOPEN: LRECL inconsistant - ',
++10600 FORMAT(' RZOPEN: LRECL inconsistent - ',
+ + ' file was opened with LRECL = ',I6,
+ + ' should be LRECL = ',I6)
+ ENDIF
diff --git a/debian/patches/45-fix-typo-expresion-expression.patch b/debian/patches/45-fix-typo-expresion-expression.patch
new file mode 100644
index 0000000..0884661
--- /dev/null
+++ b/debian/patches/45-fix-typo-expresion-expression.patch
@@ -0,0 +1,44 @@
+--- a/cint/cint/src/bc_parse.cxx
++++ b/cint/cint/src/bc_parse.cxx
+@@ -309,7 +309,7 @@
+ // expression, 2nd level
+ ////////////////////////////////////////////////////////////////////////////
+ /***********************************************************************
+- * G__blockscope::compile_expresion()
++ * G__blockscope::compile_expression()
+ * func(args); -> expr
+ * type(args); -> expr
+ * (expr); -> expr
+--- a/geom/geom/src/TGeoBoolNode.cxx
++++ b/geom/geom/src/TGeoBoolNode.cxx
+@@ -202,7 +202,7 @@
+ TString sleft, sright, stransf;
+ Int_t boolop = TGeoManager::Parse(expr, sleft, sright, stransf);
+ if (boolop<0) {
+- Error("MakeBranch", "invalid expresion");
++ Error("MakeBranch", "invalid expression");
+ return kFALSE;
+ }
+ TGeoShape *shape = 0;
+--- a/roofit/roofitcore/inc/RooClassFactory.h
++++ b/roofit/roofitcore/inc/RooClassFactory.h
+@@ -45,7 +45,7 @@
+ static Bool_t makePdf(const char* name, const char* realArgNames=0, const char* catArgNames=0,
+ const char* expression="1.0", Bool_t hasAnaInt=kFALSE, Bool_t hasIntGen=kFALSE, const char* intExpression=0) ;
+ static Bool_t makeFunction(const char* name, const char* realArgNames=0, const char* catArgNames=0,
+- const char* expresion="1.0", Bool_t hasAnaInt=kFALSE, const char* intExpression=0) ;
++ const char* expression="1.0", Bool_t hasAnaInt=kFALSE, const char* intExpression=0) ;
+ static Bool_t makeClass(const char* className, const char* name, const char* realArgNames=0, const char* catArgNames=0,
+ const char* expression="1.0", Bool_t hasAnaInt=kFALSE, Bool_t hasIntGen=kFALSE, const char* intExpression=0) ;
+
+--- a/tree/tree/src/TTreeCache.cxx
++++ b/tree/tree/src/TTreeCache.cxx
+@@ -357,7 +357,7 @@
+ // this is to be used by user (thats why we pass the name of the branch).
+ // It works in exactly the same way as TTree::SetBranchStatus so you
+ // probably want to look over ther for details about the use of bname
+- // with regular expresions.
++ // with regular expressions.
+ // The branches are taken with respect to the Owner of this TTreeCache
+ // (i.e. the original Tree)
+ // NB: if bname="*" all branches are put in the cache and the learning phase stopped
diff --git a/debian/patches/46-fix-typo-explicitely-explicitly.patch b/debian/patches/46-fix-typo-explicitely-explicitly.patch
new file mode 100644
index 0000000..80f935d
--- /dev/null
+++ b/debian/patches/46-fix-typo-explicitely-explicitly.patch
@@ -0,0 +1,396 @@
+--- a/build/win/w32pragma.h
++++ b/build/win/w32pragma.h
+@@ -65,7 +65,7 @@
+ #define CRTAPI1 _cdecl
+ #define CRTAPI2 _cdecl
+ #define _X86_ 1
+-// #define _DLL - used to be explicitely defined,
++// #define _DLL - used to be explicitly defined,
+ // but it's implicitely defined via /MD(d)
+ #define G__REDIRECTIO 1
+ #define G__SHAREDLIB 1
+--- a/cint/configure
++++ b/cint/configure
+@@ -701,7 +701,7 @@
+ EXPORTS=(${EXPORTS[*]} HAVE_CONFIG)
+
+ # now set the default values of the installation directories, if
+-# they were not set explicitely by the user
++# they were not set explicitly by the user
+
+ if [ "x$WITHPREFIX" = "x1" ]; then
+ # prefix based build
+--- a/config/roots.in
++++ b/config/roots.in
+@@ -7,7 +7,7 @@
+ # Template for the 'roots.sh' script.
+ # In case of problems with 'ssh' not executing the relevant <shell>rc init
+ # script, an ad hoc version of this script can be put, for example, under
+-# $HOME/bin, defining explicitely $ROOTSYS, e.g.
++# $HOME/bin, defining explicitly $ROOTSYS, e.g.
+ #
+ # ----------------------------------------------------------------------
+ # #!/bin/sh
+--- a/configure
++++ b/configure
+@@ -2874,7 +2874,7 @@
+ mysqllib=$found_lib
+ mysqllibdir=$found_dir
+
+- # on linux, but maybe also other systems, explicitely add libz
++ # on linux, but maybe also other systems, explicitly add libz
+ # (formally only needed when linking against the static libmysqlclient.a)
+ if test ! "x$mysqllib" = "x" ; then
+ case $platform in
+--- a/core/thread/src/TPosixThreadFactory.cxx
++++ b/core/thread/src/TPosixThreadFactory.cxx
+@@ -23,7 +23,7 @@
+ #include "TPosixThread.h"
+
+ // Force creation of TPosixThreadFactory when shared library will be loaded
+-// (don't explicitely create a TPosixThreadFactory).
++// (don't explicitly create a TPosixThreadFactory).
+ static TPosixThreadFactory gPosixThreadFactoryCreator;
+
+ ClassImp(TPosixThreadFactory)
+--- a/core/thread/src/TWin32ThreadFactory.cxx
++++ b/core/thread/src/TWin32ThreadFactory.cxx
+@@ -23,7 +23,7 @@
+ #include "TWin32Thread.h"
+
+ // Force creation of TWin32ThreadFactory when shared library will be loaded
+-// (don't explicitely create a TWin32ThreadFactory).
++// (don't explicitly create a TWin32ThreadFactory).
+ static TWin32ThreadFactory gWin32ThreadFactoryCreator;
+
+ ClassImp(TWin32ThreadFactory)
+--- a/etc/proof/xpd.cf.sample
++++ b/etc/proof/xpd.cf.sample
+@@ -32,7 +32,7 @@
+ ### to export /tmp.
+ ### NB: specifying any of these directives removes the default /tmp
+ ### from the internal list; in such a case a directive needs to
+-### be given explicitely if /tmp needs to be exposed.
++### be given explicitly if /tmp needs to be exposed.
+ xrootd.export /tmp
+ xrootd.export /pool/data
+
+@@ -63,7 +63,7 @@
+
+ ###
+ ### Directives governing the behaviour of the XrdProofd plug-in.
+-### Except when explicitely indicated, all the following directives support
++### Except when explicitly indicated, all the following directives support
+ ### an optional 'if <pattern>' condition at the end of the line, e.g.
+ ### xpd.rootsys /opt/root if lxb*.cern.ch
+ ### xpd.rootsys /usr/local if lxp*.cern.ch
+--- a/graf2d/win32gdk/gdk/src/gdk/gdkdraw.c
++++ b/graf2d/win32gdk/gdk/src/gdk/gdkdraw.c
+@@ -237,7 +237,7 @@
+ *
+ * Modified by Li-Da Lho to draw 16 bits and Multibyte strings
+ *
+- * Interface changed: add "GdkFont *font" to specify font or fontset explicitely
++ * Interface changed: add "GdkFont *font" to specify font or fontset explicitly
+ */
+ void
+ gdk_draw_string(GdkDrawable * drawable,
+@@ -252,7 +252,7 @@
+ *
+ * Modified by Li-Da Lho to draw 16 bits and Multibyte strings
+ *
+- * Interface changed: add "GdkFont *font" to specify font or fontset explicitely
++ * Interface changed: add "GdkFont *font" to specify font or fontset explicitly
+ */
+ void
+ gdk_draw_text(GdkDrawable * drawable,
+--- a/gui/guihtml/inc/TGHtml.h
++++ b/gui/guihtml/inc/TGHtml.h
+@@ -150,7 +150,7 @@
+ signed int fSubscript : 4; // Positive for <sup>, negative for <sub>
+ unsigned int fAlign : 2; // Horizontal alignment
+ unsigned int fBgcolor : 6; // Background color
+- unsigned int fExpbg : 1; // Set to 1 if bgcolor explicitely set
++ unsigned int fExpbg : 1; // Set to 1 if bgcolor explicitly set
+ unsigned int fFlags : 7; // the STY_ flags below
+ };
+
+--- a/hist/hist/src/TSVDUnfold.cxx
++++ b/hist/hist/src/TSVDUnfold.cxx
+@@ -39,7 +39,7 @@
+ <li><tt>bini</tt>: reconstructed spectrum (TH1D, n bins)
+ <li><tt>Adet</tt>: response matrix (TH2D, nxn bins)
+ </ul>
+-Consider the unfolding of a measured spectrum <tt>bdat</tt> with covariance matrix <tt>Bcov</tt> (if not passed explicitely, a diagonal covariance will be built given the errors of <tt>bdat</tt>). The corresponding spectrum in the Monte Carlo is given by <tt>bini</tt>, with the true underlying spectrum given by <tt>xini</tt>. The detector response is described by <tt>Adet</tt>, with <tt>Adet</tt> filled with events (not probabilities) with the true observable on the y-axis and the reconstructed observable on the x-axis.
++Consider the unfolding of a measured spectrum <tt>bdat</tt> with covariance matrix <tt>Bcov</tt> (if not passed explicitly, a diagonal covariance will be built given the errors of <tt>bdat</tt>). The corresponding spectrum in the Monte Carlo is given by <tt>bini</tt>, with the true underlying spectrum given by <tt>xini</tt>. The detector response is described by <tt>Adet</tt>, with <tt>Adet</tt> filled with events (not probabilities) with the true observable on the y-axis and the reconstructed observable on the x-axis.
+ <p>
+ The measured distribution can be unfolded for any combination of resolution, efficiency and acceptance effects, provided an appropriate definition of <tt>xini</tt> and <tt>Adet</tt>.<br><br>
+ <p>
+--- a/io/io/src/TBufferFile.cxx
++++ b/io/io/src/TBufferFile.cxx
+@@ -2981,7 +2981,7 @@
+ if (readClass) {
+ if ((cli = fMap->GetValue(offset)) == 0) {
+ // No class found at this location in map. It might have been skipped
+- // as part of a skipped object. Try to explicitely read the class.
++ // as part of a skipped object. Try to explicitly read the class.
+
+ // save fBufCur and set to place specified by offset (-kMapOffset-sizeof(bytecount))
+ char *bufsav = fBufCur;
+@@ -3013,7 +3013,7 @@
+
+ if ((cli = fMap->GetValue(offset)) == 0) {
+ // No object found at this location in map. It might have been skipped
+- // as part of a skipped object. Try to explicitely read the object.
++ // as part of a skipped object. Try to explicitly read the object.
+
+ // save fBufCur and set to place specified by offset (-kMapOffset)
+ char *bufsav = fBufCur;
+--- a/io/io/src/TContainerConverters.cxx
++++ b/io/io/src/TContainerConverters.cxx
+@@ -119,7 +119,7 @@
+ if (b.GetBufferVersion()==0) continue;
+
+ // No object found at this location in map. It might have been skipped
+- // as part of a skipped object. Try to explicitely read the object.
++ // as part of a skipped object. Try to explicitly read the object.
+ b.MapObject(*(void**)addr, fProxy->GetCollectionClass(), 0);
+ Int_t currentpos = b.Length();
+ b.SetBufferOffset( tag - kMapOffset );
+--- a/math/mlp/src/TMultiLayerPerceptron.cxx
++++ b/math/mlp/src/TMultiLayerPerceptron.cxx
+@@ -159,7 +159,7 @@
+ </UL>
+ <P><FONT SIZE=3>TMLP is build from 3 classes: TNeuron, TSynapse and
+ TMultiLayerPerceptron. Only TMultiLayerPerceptron should be used
+-explicitely by the user.</FONT></P>
++explicitly by the user.</FONT></P>
+ <P><FONT SIZE=3>TMultiLayerPerceptron will take examples from a TTree
+ given in the constructor. The network is described by a simple
+ string: The input/output layers are defined by giving the expression for
+@@ -178,7 +178,7 @@
+ </SPAN>TMultiLayerPerceptron("x,y:10:5:f",inputTree);</SPAN></FONT></P>
+ <P><FONT SIZE=3>Both the TTree and the TEventLists can be defined in
+ the constructor, or later with the suited setter method. The lists
+-used for training and test can be defined either explicitely, or via
++used for training and test can be defined either explicitly, or via
+ a string containing the formula to be used to define them, exactly as
+ for a TCut.</FONT></P>
+ <P><FONT SIZE=3>The learning method is defined using the
+--- a/net/net/src/TNetFile.cxx
++++ b/net/net/src/TNetFile.cxx
+@@ -656,7 +656,7 @@
+ // option argument with an "-", e.g.: "-recreate". Do this only
+ // in cases when you are very sure nobody else is using the file.
+ // To bypass the writelock on a file, to allow the reading of a file
+- // that is being written by another process, explicitely specify the
++ // that is being written by another process, explicitly specify the
+ // "+read" option ("read" being the default option).
+ // The netopt argument can be used to specify the size of the tcp window in
+ // bytes (for more info see: http://www.psc.edu/networking/perf_tune.html).
+@@ -887,7 +887,7 @@
+ // Check locality, taking into account possible prefixes
+ fLocalPrefix = "";
+ fIsLocal = kFALSE;
+- // We may have been asked explicitely to go through the daemon
++ // We may have been asked explicitly to go through the daemon
+ Bool_t forceRemote = gEnv->GetValue("Path.ForceRemote", 0);
+ TString opts = TUrl(url).GetOptions();
+ if (opts.Contains("remote=1"))
+--- a/net/net/src/TPSocket.cxx
++++ b/net/net/src/TPSocket.cxx
+@@ -332,7 +332,7 @@
+ // Close a parallel socket. If option is "force", calls shutdown(id,2) to
+ // shut down the connection. This will close the connection also
+ // for the parent of this process. Also called via the dtor (without
+- // option "force", call explicitely Close("force") if this is desired).
++ // option "force", call explicitly Close("force") if this is desired).
+
+
+ if (!IsValid()) {
+--- a/net/net/src/TSocket.cxx
++++ b/net/net/src/TSocket.cxx
+@@ -385,7 +385,7 @@
+ // Close the socket. If option is "force", calls shutdown(id,2) to
+ // shut down the connection. This will close the connection also
+ // for the parent of this process. Also called via the dtor (without
+- // option "force", call explicitely Close("force") if this is desired).
++ // option "force", call explicitly Close("force") if this is desired).
+
+ Bool_t force = option ? (!strcmp(option, "force") ? kTRUE : kFALSE) : kFALSE;
+
+--- a/proof/doc/v522/index.html
++++ b/proof/doc/v522/index.html
+@@ -197,7 +197,7 @@
+
+ <li>Avoid duplicating worker logs in the master log file
+ unless
+-when explicitely needed by the request (Exec(...), Print(...)) or when
++when explicitly needed by the request (Exec(...), Print(...)) or when
+ an error occured</li><li>Fix
+ problem with the determination and transmission of the name of the
+ object to be processed. The problem appeared when processing files
+--- a/proof/proof/src/TProof.cxx
++++ b/proof/proof/src/TProof.cxx
+@@ -832,7 +832,7 @@
+ if (enableSchemaEvolution) {
+ TMessage::EnableSchemaEvolutionForAll();
+ } else {
+- Info("TProof", "automatic schema evolution in TMessage explicitely disabled");
++ Info("TProof", "automatic schema evolution in TMessage explicitly disabled");
+ }
+
+ if (IsMaster()) {
+@@ -10784,7 +10784,7 @@
+ if (mgr && mgr->IsValid()) {
+
+ // If XProofd we always attempt an attach first (unless
+- // explicitely not requested).
++ // explicitly not requested).
+ Bool_t attach = (create || mgr->IsProofd() || mgr->IsLite()) ? kFALSE : kTRUE;
+ if (attach) {
+ TProofDesc *d = 0;
+--- a/proof/proof/src/TProofServ.cxx
++++ b/proof/proof/src/TProofServ.cxx
+@@ -762,7 +762,7 @@
+ if (enableSchemaEvolution) {
+ TMessage::EnableSchemaEvolutionForAll();
+ } else {
+- Info("TProofServ", "automatic schema evolution in TMessage explicitely disabled");
++ Info("TProofServ", "automatic schema evolution in TMessage explicitly disabled");
+ }
+ }
+
+@@ -2533,7 +2533,7 @@
+ fflush(stdout);
+
+ // On workers we do not send the logs to masters (to avoid duplication of
+- // text) unless asked explicitely, e.g. after an Exec(...) request.
++ // text) unless asked explicitly, e.g. after an Exec(...) request.
+ if (!IsMaster()) {
+ if (!fSendLogToMaster) {
+ FlushLogFile();
+--- a/proof/proofd/src/XrdProofdClientMgr.cxx
++++ b/proof/proofd/src/XrdProofdClientMgr.cxx
+@@ -335,7 +335,7 @@
+
+ TRACEP(p, HDBG, "enter");
+
+- // If this server is explicitely required to be a worker node or a
++ // If this server is explicitly required to be a worker node or a
+ // submaster, check whether the requesting host is allowed to connect
+ if (p->Request()->login.role[0] != 'i' &&
+ (fMgr->SrvType() == kXPD_MasterWorker || fMgr->SrvType() == kXPD_Master)) {
+--- a/proof/proofplayer/src/TPacketizerFile.cxx
++++ b/proof/proofplayer/src/TPacketizerFile.cxx
+@@ -109,7 +109,7 @@
+ return;
+ }
+
+- // Check if the files not explicitely assigned have to be processed
++ // Check if the files not explicitly assigned have to be processed
+ Int_t procnotass = 1;
+ if (TProof::GetParameter(input, "PROOF_ProcessNotAssigned", procnotass) == 0) {
+ if (procnotass == 0) {
+--- a/proof/proofplayer/src/TProofPlayer.cxx
++++ b/proof/proofplayer/src/TProofPlayer.cxx
+@@ -1636,7 +1636,7 @@
+ } else {
+ listOfMissingFiles = new TList;
+ }
+- // Do the lookup; we only skip it if explicitely requested so.
++ // Do the lookup; we only skip it if explicitly requested so.
+ TString lkopt;
+ if (TProof::GetParameter(fInput, "PROOF_LookupOpt", lkopt) != 0 || lkopt != "none")
+ dset->Lookup(kTRUE, &listOfMissingFiles);
+--- a/proof/proofx/src/TXSocket.cxx
++++ b/proof/proofx/src/TXSocket.cxx
+@@ -2094,7 +2094,7 @@
+ Int_t tryreconnect = gEnv->GetValue("TXSocket.Reconnect", 1);
+ if (tryreconnect == 0 || fXrdProofdVersion < 1005) {
+ if (tryreconnect == 0)
+- Info("Reconnect","%p: reconnection attempts explicitely disabled!", this);
++ Info("Reconnect","%p: reconnection attempts explicitly disabled!", this);
+ else
+ Info("Reconnect","%p: server does not support reconnections (protocol: %d < 1005)",
+ this, fXrdProofdVersion);
+--- a/test/stress.cxx
++++ b/test/stress.cxx
+@@ -656,7 +656,7 @@
+ helist->Write();
+ hcut->Write();
+
+- // now loop on eventlist explicitely and fill helist again
++ // now loop on eventlist explicitly and fill helist again
+ Float_t pxr;
+ ntuple->SetBranchAddress("px",&pxr);
+ TH1F *helistc = (TH1F*)helist->Clone();
+--- a/test/threads.cxx
++++ b/test/threads.cxx
+@@ -35,7 +35,7 @@
+ c1->SetGrid();
+ pad1->Draw();
+
+- // creating a histogram is explicitely locked by a global mutex
++ // creating a histogram is explicitly locked by a global mutex
+ TThread::Lock();
+ TH1F *main = new TH1F("main","Main contributor",100,-4,4);
+ TThread::UnLock();
+--- a/proof/proofd/src/XrdProofdManager.cxx
++++ b/proof/proofd/src/XrdProofdManager.cxx
+@@ -338,7 +338,7 @@
+ // Policy: check first the general directive for groups; a user of a specific group
+ // (both UNIX or PROOF groups) can be rejected by prefixing a '-'.
+ // The group check fails if active (the allowedgroups directive has entries) and at
+- // least of the two groups (UNIX or PROOF) are explicitely denied.
++ // least of the two groups (UNIX or PROOF) are explicitly denied.
+ // The result of the group check is superseeded by any explicit speicification in the
+ // allowedusers, either positive or negative.
+ //
+@@ -352,13 +352,13 @@
+ // User 'katy' is allowed because part of PROOF group 'student';
+ // users 'jack' and 'john' are denied because not part of PROOF group 'student' (no 'allowedusers' directive)
+ // 3. xpd.allowedgroups alfa,-student
+- // User 'katy' is denied because part of PROOF group 'student' which is explicitely denied;
++ // User 'katy' is denied because part of PROOF group 'student' which is explicitly denied;
+ // users 'jack' and 'john' are allowed becasue part of UNIX group 'alfa' (no 'allowedusers' directive)
+ // 4. xpd.allowedgroups alfa,-student
+ // xpd.allowedusers katy,-jack
+- // User 'katy' is allowed because explicitely allowed by the 'allowedusers' directive;
+- // user 'jack' is denied because explicitely denied by the 'allowedusers' directive;
+- // user 'john' is allowed because part of 'alfa' and not explicitely denied by the 'allowedusers' directive
++ // User 'katy' is allowed because explicitly allowed by the 'allowedusers' directive;
++ // user 'jack' is denied because explicitly denied by the 'allowedusers' directive;
++ // user 'john' is allowed because part of 'alfa' and not explicitly denied by the 'allowedusers' directive
+ // (the allowedgroups directive is in this case ignored for users 'katy' and 'jack').
+
+ bool grpok = 1;
+@@ -428,7 +428,7 @@
+ usrok = 1;
+ e = "";
+ }
+- // We fail if either the user is explicitely denied or it is not explicitely allowed
++ // We fail if either the user is explicitly denied or it is not explicitly allowed
+ // and the group is denied
+ if (usrok == -1 || (!grpok && usrok != 1)) return -1;
+ }
+@@ -935,7 +935,7 @@
+
+ // Groups
+ if (!fGroupsMgr)
+- // Create default group, if none explicitely requested
++ // Create default group, if none explicitly requested
+ fGroupsMgr = new XrdProofGroupMgr;
+
+ if (fGroupsMgr)
+--- a/geom/gdml/src/TGDMLParse.cxx
++++ b/geom/gdml/src/TGDMLParse.cxx
+@@ -19,7 +19,7 @@
+ --------------------------------------------------------------------
+
+ This class contains the implementation of the GDML parser associated to
+- all the supported GDML elements. User should never need to explicitely
++ all the supported GDML elements. User should never need to explicitly
+ instaciate this class. It is internally used by the TGeoManager.
+
+ Each element process has a 'Binding' to ROOT. The 'binding' is specific
diff --git a/debian/patches/47-fix-typo-enviroment-environment.patch b/debian/patches/47-fix-typo-enviroment-environment.patch
new file mode 100644
index 0000000..f4c9b99
--- /dev/null
+++ b/debian/patches/47-fix-typo-enviroment-environment.patch
@@ -0,0 +1,117 @@
+--- a/cint/doc/ref.txt
++++ b/cint/doc/ref.txt
+@@ -1926,7 +1926,7 @@
+ G__value G__calc(const char* expression) // precompiled library environment
+
+ G__calc() API evaluates C/C++ expression and returns its' value.
+-In interpreter enviroment, type of the return value is automatically
++In interpreter environment, type of the return value is automatically
+ converted to suitable type without explicit type casting.
+ In precompiled library environment, it returns G__value object which
+ can be converted to long or double type object by G__double() or G__int()
+@@ -2571,7 +2571,7 @@
+ G__value G__exec_text(const char* unmamedmacro); // from precompiled code
+
+ G__exec_text() API evaluates C/C++ statements and returns its' value.
+-In interpreter enviroment, type of the return value is automatically
++In interpreter environment, type of the return value is automatically
+ converted to suitable type without explicit type casting.
+ In compiled code , it returns G__value object which can be converted
+ to long or double type object by G__double() or G__int() API.
+--- a/core/meta/src/TCint.cxx
++++ b/core/meta/src/TCint.cxx
+@@ -1291,7 +1291,7 @@
+ // The 'name' is known to the interpreter, this function returns
+ // the internal version of this name (usually just resolving typedefs)
+ // This is used in particular to synchronize between the name used
+- // by rootcint and by the run-time enviroment (TClass)
++ // by rootcint and by the run-time environment (TClass)
+ // Return 0 if the name is not known.
+
+ R__LOCKGUARD(gCINTMutex);
+--- a/io/xml/src/TXMLPlayer.cxx
++++ b/io/xml/src/TXMLPlayer.cxx
+@@ -13,7 +13,7 @@
+ //
+ // Class for xml code generation
+ // It should be used for generation of xml steramers, which could be used outside root
+-// enviroment. This means, that with help of such streamers user can read and write
++// environment. This means, that with help of such streamers user can read and write
+ // objects from/to xml file, which later can be accepted by ROOT.
+ //
+ // At the moment supported only classes, which are not inherited from TObject
+--- a/net/alien/src/TAlienFile.cxx
++++ b/net/alien/src/TAlienFile.cxx
+@@ -64,7 +64,7 @@
+ // "alien:///alice/test.root"
+ // If you want to write a file on specific storage element use the syntax
+ // "alien:///alice/test.root?&se=Alice::CERN::Storage"
+- // The default SE is specified by the enviroment variable alien_CLOSE_SE
++ // The default SE is specified by the environment variable alien_CLOSE_SE
+ //
+ // If you read a file, the closest file image to alien_CLOSE_SE is taken.
+ // If the file cannot opened from the closest image, the next image is tried,
+--- a/proof/clarens/inc/TXmlRpc.h
++++ b/proof/clarens/inc/TXmlRpc.h
+@@ -39,7 +39,7 @@
+ class TXmlRpc : public TObject {
+ private:
+ TClSession *fSession; //Clarens session info
+- xmlrpc_env *fEnv; //call enviroment
++ xmlrpc_env *fEnv; //call environment
+ TString fService; //our service
+
+ public:
+--- a/sql/odbc/src/TODBCServer.cxx
++++ b/sql/odbc/src/TODBCServer.cxx
+@@ -53,7 +53,7 @@
+ // Configuring unixODBC under Linux: http://www.unixodbc.org/odbcinst.html
+ // Remarks: for variants 1 & 2 it is enough to create/configure
+ // odbcinst.ini file. For variant 3 file odbc.ini should be created.
+- // Path to this files can be specified in enviromental variables like
++ // Path to this files can be specified in environmental variables like
+ // export ODBCINI=/home/my/unixODBC/etc/odbc.ini
+ // export ODBCSYSINI=/home/my/unixODBC/etc
+ //
+@@ -70,7 +70,7 @@
+ // 1) Two additional DLLs are required: mfc71.dll & msver71.dll
+ // They can be found either in MS VC++ 7.1 Free Toolkit or
+ // downloaded from other Internet sites
+- // 2) ORACLE_HOME enviroment variable should be specified and point to
++ // 2) ORACLE_HOME environment variable should be specified and point to
+ // location, where Instant Client files are extracted
+ // 3) Run odbc_install.exe from account with administrative rights
+ // 3) In $ORACLE_HOME/network/admin/ directory appropriate *.ora files
+--- a/sql/oracle/inc/TOracleStatement.h
++++ b/sql/oracle/inc/TOracleStatement.h
+@@ -40,7 +40,7 @@
+ char* namebuf;
+ };
+
+- Environment *fEnv; // enviroment
++ Environment *fEnv; // environment
+ Connection *fConn; // connection to Oracle
+ Statement *fStmt; // executed statement
+ ResultSet *fResult; // query result (rows)
+--- a/tmva/test/setup.sh
++++ b/tmva/test/setup.sh
+@@ -48,7 +48,7 @@
+ root_in_ld=$?
+ if [ ! $LD_LIBRARY_PATH ]; then
+ if [ $root_in_ld -ne 0 ]; then
+- echo "Warning: so far you haven't setup your ROOT enviroment properly (no LD_LIBRARY_PATH): TMVA will not work"
++ echo "Warning: so far you haven't setup your ROOT environment properly (no LD_LIBRARY_PATH): TMVA will not work"
+ fi
+ fi
+ export LD_LIBRARY_PATH=$PWD/lib:${LD_LIBRARY_PATH}
+--- a/cmake/modules/SearchInstalledSoftware.cmake
++++ b/cmake/modules/SearchInstalledSoftware.cmake
+@@ -531,7 +531,7 @@
+ if(NOT builtin_xrootd)
+ find_package(XROOTD)
+ if(NOT XROOTD_FOUND)
+- message(STATUS "XROOTD not found. Set enviroment variable XRDSYS to point to your XROOTD installation")
++ message(STATUS "XROOTD not found. Set environment variable XRDSYS to point to your XROOTD installation")
+ message(STATUS " Alternatively, you can also enable the option 'builtin_xrootd' to build XROOTD internally'")
+ message(STATUS " For the time being switching OFF 'xrootd' option")
+ set(xrootd OFF CACHE BOOL "" FORCE)
diff --git a/debian/patches/48-fix-typo-deafult-default.patch b/debian/patches/48-fix-typo-deafult-default.patch
new file mode 100644
index 0000000..7d4c14c
--- /dev/null
+++ b/debian/patches/48-fix-typo-deafult-default.patch
@@ -0,0 +1,108 @@
+--- a/cint/cint/src/newlink.cxx
++++ b/cint/cint/src/newlink.cxx
+@@ -5123,7 +5123,7 @@
+ *
+ * 25-07-07
+ *
+- * Create the deafult cons, dests, etc as ifunc entries before writing
++ * Create the default cons, dests, etc as ifunc entries before writing
+ * them to the file
+ **************************************************************************/
+ void G__make_default_ifunc(G__ifunc_table_internal *ifunc_copy)
+--- a/graf2d/qt/src/TQtWidget.cxx
++++ b/graf2d/qt/src/TQtWidget.cxx
+@@ -751,7 +751,7 @@
+ // it saves the double buffer of this object using the default save
+ // format defined the file extension
+ // If the "fileName" has no extension the "default" format is to be used instead
+- // The deafult format is "PNG".
++ // The default format is "PNG".
+ // It can be changed with the TQtWidget::SetSaveFormat method
+ //
+ return Save(QString(fileName));
+@@ -764,7 +764,7 @@
+ // it saves the double buffer of this object using the default save
+ // format defined the file extension
+ // If the "fileName" has no extension the "default" format is to be used instead
+- // The deafult format is "PNG".
++ // The default format is "PNG".
+ // It can be changed with the TQtWidget::SetSaveFormat method
+ //
+ QString fileNameExtension = QFileInfo(fileName).suffix().toUpper();
+--- a/graf3d/gl/inc/TGLCamera.h
++++ b/graf3d/gl/inc/TGLCamera.h
+@@ -77,8 +77,8 @@
+ Bool_t fExternalCenter; //! use external center insead of scene center
+ Bool_t fFixDefCenter; //! use fixed default center
+ TGLVector3 fExtCenter; //! external camera center
+- TGLVector3 fDefCenter; //! deafult camera center
+- TGLVector3 fFDCenter; //! fixed deafult camera center
++ TGLVector3 fDefCenter; //! default camera center
++ TGLVector3 fFDCenter; //! fixed default camera center
+ TGLVector3 *fCenter; //! current camera center
+
+ mutable Double_t fNearClip; //! last applied near-clip
+--- a/gui/ged/src/HelpSMText.cxx
++++ b/gui/ged/src/HelpSMText.cxx
+@@ -13,7 +13,7 @@
+
+ const char gHelpSMTopLevel[] =
+ "The Style Manager handles a list of styles in the ROOT session. It loads\n"
+-"by default the five styles provided by ROOT: Deafult, Plain, Bold, Video,\n"
++"by default the five styles provided by ROOT: Default, Plain, Bold, Video,\n"
+ "and Pub. If this list does not contain a style with the characteristics\n"
+ "you want, you can create a new one and than apply it.\n"
+ "\n"
+--- a/gui/gui/src/TGFrame.cxx
++++ b/gui/gui/src/TGFrame.cxx
+@@ -566,7 +566,7 @@
+ void TGFrame::Resize(UInt_t w, UInt_t h)
+ {
+ // Resize the frame.
+- // If w=0 && h=0 - Resize to deafult size
++ // If w=0 && h=0 - Resize to default size
+
+ if (w != fWidth || h != fHeight) {
+ TGDimension siz(0,0);
+@@ -590,7 +590,7 @@
+ void TGFrame::MoveResize(Int_t x, Int_t y, UInt_t w, UInt_t h)
+ {
+ // Move and/or resize the frame.
+- // If w=0 && h=0 - Resize to deafult size
++ // If w=0 && h=0 - Resize to default size
+
+ // we do it anyway as we don't know if it's only a move or only a resize
+ TGDimension siz(0,0);
+--- a/net/auth/src/THostAuth.cxx
++++ b/net/auth/src/THostAuth.cxx
+@@ -34,7 +34,7 @@
+ //______________________________________________________________________________
+ THostAuth::THostAuth() : TObject()
+ {
+- // Deafult constructor.
++ // Default constructor.
+
+ Create(0, 0);
+ }
+--- a/net/net/src/TNetFile.cxx
++++ b/net/net/src/TNetFile.cxx
+@@ -862,7 +862,7 @@
+ // Check and save the host FQDN ...
+ fHost = turl.GetHostFQDN();
+
+- // Remote port: the deafult should be 1094 because we are here
++ // Remote port: the default should be 1094 because we are here
+ // only if the protocol is "root://"
+ fPort = turl.GetPort();
+ }
+--- a/proof/proofd/src/proofd.cxx
++++ b/proof/proofd/src/proofd.cxx
+@@ -102,7 +102,7 @@
+ // -noauth do not require client authentication //
+ // -p port# specifies a different port to listen on //
+ // -s <sshd_port> specifies the port number for the sshd daemon //
+-// (deafult is 22) //
++// (default is 22) //
+ // -S keytabfile use this keytab file, instead of the default //
+ // (option only supported when compiled with //
+ // Kerberos5 support) //
diff --git a/debian/patches/49-fix-typo-continous-continuous.patch b/debian/patches/49-fix-typo-continous-continuous.patch
new file mode 100644
index 0000000..4ebfb60
--- /dev/null
+++ b/debian/patches/49-fix-typo-continous-continuous.patch
@@ -0,0 +1,121 @@
+--- a/docbook/users-guide/MathLibraries.xml
++++ b/docbook/users-guide/MathLibraries.xml
+@@ -254,7 +254,7 @@
+ double x = unr.Sample();
+ </programlisting>
+ <itemizedlist>
+-<listitem><para>For continous 1D distribution object via the class <emphasis role="bold"><code>TUnuranContDist</code></emphasis> that can be created for example from a <emphasis role="bold"><code>TF1</code></emphasis> function providing the pdf (probability density function) . The user can optionally provide additional information via <emphasis role="bold"><code>TUnuranContDist</code></emphasis><code>::SetDomain(min,max)</code> like the <code>domain()</code> for generating numbers in a restricted region. </para></listitem>
++<listitem><para>For continuous 1D distribution object via the class <emphasis role="bold"><code>TUnuranContDist</code></emphasis> that can be created for example from a <emphasis role="bold"><code>TF1</code></emphasis> function providing the pdf (probability density function) . The user can optionally provide additional information via <emphasis role="bold"><code>TUnuranContDist</code></emphasis><code>::SetDomain(min,max)</code> like the <code>domain()</code> for generating numbers in a restricted region. </para></listitem>
+ </itemizedlist>
+ <programlisting language="c++">
+ //1D case: create a distribution from two TF1 object pointers pdfFunc
+--- a/math/mathmore/inc/Math/Interpolator.h
++++ b/math/mathmore/inc/Math/Interpolator.h
+@@ -74,7 +74,7 @@
+
+ /**
+ Constructs an interpolator class from vector of data points \f$ (x_i, y_i )\f$ and with Interpolation::Type type.
+- The method will compute a continous interpolating function \f$ y(x) \f$ such that \f$ y_i = y ( x_i )\f$.
++ The method will compute a continuous interpolating function \f$ y(x) \f$ such that \f$ y_i = y ( x_i )\f$.
+ The defult interpolation type is Cubic spline
+ */
+ Interpolator(const std::vector<double> & x, const std::vector<double> & y, Interpolation::Type type = Interpolation::kCSPLINE);
+--- a/math/unuran/inc/TUnuranContDist.h
++++ b/math/unuran/inc/TUnuranContDist.h
+@@ -28,7 +28,7 @@
+
+ //______________________________________________________________
+ /**
+- TUnuranContDist class describing one dimensional continous distribution.
++ TUnuranContDist class describing one dimensional continuous distribution.
+ It is used by TUnuran to generate random numbers according to this distribution via
+ TUnuran::Sample()
+
+--- a/math/unuran/src/TUnuran.cxx
++++ b/math/unuran/src/TUnuran.cxx
+@@ -172,7 +172,7 @@
+
+ bool TUnuran::SetContDistribution(const TUnuranContDist & dist )
+ {
+- // internal method to set in unuran the function pointer for a continous univariate distribution
++ // internal method to set in unuran the function pointer for a continuous univariate distribution
+ if (fUdistr != 0) unur_distr_free(fUdistr);
+ fUdistr = unur_distr_cont_new();
+ if (fUdistr == 0) return false;
+--- a/math/unuran/src/TUnuranSampler.cxx
++++ b/math/unuran/src/TUnuranSampler.cxx
+@@ -71,12 +71,12 @@
+ ret = DoInitDiscrete1D(method);
+ }
+ else {
+- if (fLevel>1) Info("TUnuranSampler::Init","Initialize one-dim continous distribution with method %s",method.Data());
++ if (fLevel>1) Info("TUnuranSampler::Init","Initialize one-dim continuous distribution with method %s",method.Data());
+ ret = DoInit1D(method);
+ }
+ }
+ else {
+- if (fLevel>1) Info("TUnuranSampler::Init","Initialize multi-dim continous distribution with method %s",method.Data());
++ if (fLevel>1) Info("TUnuranSampler::Init","Initialize multi-dim continuous distribution with method %s",method.Data());
+ ret = DoInitND(method);
+ }
+ // set print level in UNURAN (must be done after having initialized) -
+--- a/math/unuran/src/UnuranDistrAdapter.h
++++ b/math/unuran/src/UnuranDistrAdapter.h
+@@ -19,7 +19,7 @@
+ #include <cmath>
+
+ /**
+- Free functions adapter needed by UNURAN for onedimensional continous distributions
++ Free functions adapter needed by UNURAN for onedimensional continuous distributions
+ */
+
+ #include "TUnuranContDist.h"
+--- a/tmva/inc/TMVA/Interval.h
++++ b/tmva/inc/TMVA/Interval.h
+@@ -31,7 +31,7 @@
+ // //
+ // Interval definition, continuous and discrete //
+ // //
+-// Interval(min,max) : a continous interval [min,max] //
++// Interval(min,max) : a continuous interval [min,max] //
+ // Interval(min,max,n): a "discrete interval" [min,max], i.e the n numbers: //
+ // min, min+step, min+2*step,...., min+(n-1)*step, min+n*step=max //
+ // e.g.: Interval(1,5,5)=1,2,3,4,5 //
+@@ -89,7 +89,7 @@
+ static MsgLogger* fgLogger; // message logger
+ MsgLogger& Log() const { return *fgLogger; }
+
+- ClassDef(Interval,0) // Interval definition, continous and discrete
++ ClassDef(Interval,0) // Interval definition, continuous and discrete
+ };
+
+ } // namespace TMVA
+--- a/tmva/src/Interval.cxx
++++ b/tmva/src/Interval.cxx
+@@ -30,7 +30,7 @@
+ // //
+ // Interval definition, continuous and discrete //
+ // //
+-// Interval(min,max) : a continous interval [min,max] //
++// Interval(min,max) : a continuous interval [min,max] //
+ // Interval(min,max,n): a "discrete interval" [min,max], i.e the n numbers: //
+ // min, min+step, min+2*step,...., min+(n-1)*step, min+n*step=max //
+ // e.g.: Interval(1,5,5)=1,2,3,4,5 //
+@@ -44,7 +44,7 @@
+ <ul>
+ <li> Interval definition, continuous and discrete
+ <ul>
+- <li> Interval(min,max) : a continous interval [min,max]
++ <li> Interval(min,max) : a continuous interval [min,max]
+ <li> Interval(min,max,n): a "discrete interval" [min,max], i.e the n numbers:<br>
+ min, min+step, min+2*step,...., min+(n-1)*step=max <br>
+ e.g.: Interval(1,5,5)=1,2,3,4,5 <br>
+@@ -87,7 +87,7 @@
+
+ // defines minimum and maximum of an interval
+ // when nbins > 0, interval describes a discrete distribution (equally distributed in the interval)
+- // when nbins == 0, interval describes a continous interval
++ // when nbins == 0, interval describes a continuous interval
+ //
+ if (fMax - fMin < 0) Log() << kFATAL << "maximum lower than minimum" << Endl;
+ if (nbins < 0) {
diff --git a/debian/patches/50-fix-typo-completly-completely.patch b/debian/patches/50-fix-typo-completly-completely.patch
new file mode 100644
index 0000000..954a637
--- /dev/null
+++ b/debian/patches/50-fix-typo-completly-completely.patch
@@ -0,0 +1,104 @@
+diff --git a/etc/proof/xpd.cf.sample b/etc/proof/xpd.cf.sample
+index be3e530..0982351 100644
+--- a/etc/proof/xpd.cf.sample
++++ b/etc/proof/xpd.cf.sample
+@@ -100,7 +100,7 @@ xrd.protocol xproofd:1093 libXrdProofd.so
+ # Format:
+ # xpd.shutdown <opt> <delay>
+ # where:
+-# <opt> is the type of action to be taken when a client completly
++# <opt> is the type of action to be taken when a client completely
+ # disconnets; the options are:
+ # 0 remain connected
+ # 1 terminate when idle
+diff --git a/graf2d/doc/v520/index.html b/graf2d/doc/v520/index.html
+index fc9d99c..f39e921 100644
+--- a/graf2d/doc/v520/index.html
++++ b/graf2d/doc/v520/index.html
+@@ -15,7 +15,7 @@
+ mode were wrong.
+ <li> In FillRectangleInternal when the rectangle to be drawn had its width or
+ its height equal to 0, they were set to the current image width or height.
+- This was not a good solution because this obscured completly the picture.
++ This was not a good solution because this obscured completely the picture.
+ In particular, some markers being drawn with a filled rectangle, they
+ obscured the picture when they were really small because in that case the
+ rectangle drawn had width=height=0. Now, when a rectangle has its width or
+diff --git a/man/man1/proofd.1 b/man/man1/proofd.1
+index 3318326..0585aba 100644
+--- a/man/man1/proofd.1
++++ b/man/man1/proofd.1
+@@ -163,7 +163,7 @@ distribution. This script uses \fIsyslog-facility\fR(1), from the
+ \fBLinux\fR \fIsyslog\fR(1) distribution, and may run on other
+ platforms as well \- but no warrenties mind you!
+ .PP
+-Step 9 is completly up to the user.
++Step 9 is completely up to the user.
+ .SH "EXAMPLE"
+ That's it. To test PROOF try the following:
+ .nf
+diff --git a/man/man1/xproofd.1 b/man/man1/xproofd.1
+index 04eb596..a443d47 100644
+--- a/man/man1/xproofd.1
++++ b/man/man1/xproofd.1
+@@ -170,7 +170,7 @@ distribution. This script uses \fIsyslog-facility\fR(1), from the
+ \fBLinux\fR \fIsyslog\fR(1) distribution, and may run on other
+ platforms as well \- but no warrenties mind you!
+ .PP
+-Step 9 is completly up to the user.
++Step 9 is completely up to the user.
+ .SH "EXAMPLE"
+ That's it. To test PROOF try the following:
+ .nf
+diff --git a/math/mathmore/inc/Math/GSLSimAnnealing.h b/math/mathmore/inc/Math/GSLSimAnnealing.h
+index 780d876..adfdc0b 100644
+--- a/math/mathmore/inc/Math/GSLSimAnnealing.h
++++ b/math/mathmore/inc/Math/GSLSimAnnealing.h
+@@ -65,7 +65,7 @@ public:
+ protected:
+
+ /**
+- derived classes might need to re-define completly the class
++ derived classes might need to re-define completely the class
+ */
+ GSLSimAnFunc() :
+ fFunc(0)
+diff --git a/net/rpdutils/src/globus.cxx b/net/rpdutils/src/globus.cxx
+index 0834c7d..81be6e7 100644
+--- a/net/rpdutils/src/globus.cxx
++++ b/net/rpdutils/src/globus.cxx
+@@ -560,7 +560,7 @@ int GlbsToolCheckProxy(char **subjname)
+ }
+
+ #else
+- // Old version: completly different ...
++ // Old version: completely different ...
+ char * proxy_type;
+ proxy_cred_desc * pcd = 0;
+ time_t time_after;
+diff --git a/tmva/test/TMVAGAexample.cxx b/tmva/test/TMVAGAexample.cxx
+index c244692..f6b9eac 100644
+--- a/tmva/test/TMVAGAexample.cxx
++++ b/tmva/test/TMVAGAexample.cxx
+@@ -35,7 +35,7 @@ class MyFitness : public IFitterTarget {
+ // to (int). In this case the variable-range has to be chosen +1 ( to get 0..5, take Interval(0,6) )
+ // since the introduction of "Interval" ranges can be defined with a third parameter
+ // which gives the number of bins within the interval. With that technique discrete values
+- // can be achieved easier. The random selection out of this discrete numbers is completly uniform.
++ // can be achieved easier. The random selection out of this discrete numbers is completely uniform.
+ //
+ Double_t EstimatorFunction( std::vector<Double_t> & factors ){
+ //return (10.- (int)factors.at(0) *factors.at(1) + (int)factors.at(2));
+diff --git a/tmva/test/TMVAGAexample2.cxx b/tmva/test/TMVAGAexample2.cxx
+index bf17bf0..d487c36 100644
+--- a/tmva/test/TMVAGAexample2.cxx
++++ b/tmva/test/TMVAGAexample2.cxx
+@@ -35,7 +35,7 @@ class MyFitness : public IFitterTarget {
+ // to (int). In this case the variable-range has to be chosen +1 ( to get 0..5, take Interval(0,6) )
+ // since the introduction of "Interval" ranges can be defined with a third parameter
+ // which gives the number of bins within the interval. With that technique discrete values
+- // can be achieved easier. The random selection out of this discrete numbers is completly uniform.
++ // can be achieved easier. The random selection out of this discrete numbers is completely uniform.
+ //
+ Double_t EstimatorFunction( std::vector<Double_t> & factors ){
+ //return (10.- (int)factors.at(0) *factors.at(1) + (int)factors.at(2));
diff --git a/debian/patches/51-fix-typo-commited-committed.patch b/debian/patches/51-fix-typo-commited-committed.patch
new file mode 100644
index 0000000..502f162
--- /dev/null
+++ b/debian/patches/51-fix-typo-commited-committed.patch
@@ -0,0 +1,22 @@
+--- a/cint/reflex/doc/ChangeLog.reflex
++++ b/cint/reflex/doc/ChangeLog.reflex
+@@ -348,7 +348,7 @@
+ * stl_hash.h: removed namespace define for icc compilers
+
+ 2005-06-17 Pere
+- * CollectionProxy.h: commited changes from Markus
++ * CollectionProxy.h: committed changes from Markus
+
+ 2005-06-10 Pere
+ * TypeBuilder.cpp(.h) added EnumTypeBuilder() function
+--- a/roofit/roofitcore/src/RooWorkspace.cxx
++++ b/roofit/roofitcore/src/RooWorkspace.cxx
+@@ -1005,7 +1005,7 @@
+ }
+ delete iter ;
+
+- // Remove all commited objects from the sandbox
++ // Remove all committed objects from the sandbox
+ _sandboxNodes.removeAll() ;
+
+ // Mark transaction as finished
diff --git a/debian/patches/52-fix-typo-choosen-chosen.patch b/debian/patches/52-fix-typo-choosen-chosen.patch
new file mode 100644
index 0000000..25b12a4
--- /dev/null
+++ b/debian/patches/52-fix-typo-choosen-chosen.patch
@@ -0,0 +1,186 @@
+--- a/docbook/users-guide/WritingGUI.xml
++++ b/docbook/users-guide/WritingGUI.xml
+@@ -127,7 +127,7 @@
+ fMain->MapWindow();
+ }
+ void MyMainFrame::DoDraw() {
+- <emphasis role="italic">// Draws function graphics in randomly choosen interval</emphasis>
++ <emphasis role="italic">// Draws function graphics in randomly chosen interval</emphasis>
+ TF1 *f1 = new TF1("f1","sin(x)/x",0,gRandom->Rndm()*10);
+ f1->SetLineWidth(3);
+ f1->Draw();
+--- a/gui/guibuilder/src/TGuiBldDragManager.cxx
++++ b/gui/guibuilder/src/TGuiBldDragManager.cxx
+@@ -5472,7 +5472,7 @@
+ //______________________________________________________________________________
+ void TGuiBldDragManager::DoClassMenu(Int_t id)
+ {
+- // Process a method choosen via frame context menu
++ // Process a method chosen via frame context menu
+
+ if (!fFrameMenu || ((id != kMethodMenuAct) && (id != kToggleMenuAct))) {
+ return;
+--- a/hist/hist/src/TFormula.cxx
++++ b/hist/hist/src/TFormula.cxx
+@@ -3718,7 +3718,7 @@
+ //
+ // pdata[operand={Var,Par,Const}][offset]
+ // pdata[fOperOffsets0[i]][fOperOffset1[i+1]]
+- // 2.) The fastest evaluation function is choosen at the end
++ // 2.) The fastest evaluation function is chosen at the end
+ // a.) fOptimal := pointer to the fastest function for given evaluation string
+ // switch(GetActionOptimized(0)){
+ // case kData : {fOptimal= (TFormulaPrimitive::TFuncG)&TFormula::EvalPrimitive0; break;}
+--- a/math/mathcore/inc/Math/RootFinder.h
++++ b/math/mathcore/inc/Math/RootFinder.h
+@@ -45,7 +45,7 @@
+ @defgroup RootFinders One-dimensional Root-Finding algorithms
+ Various implementation esists in MathCore and MathMore
+ The user interacts with a proxy class ROOT::Math::RootFinder which creates behing
+- the choosen algorithms which are implemented using the ROOT::Math::IRootFinderMethod interface
++ the chosen algorithms which are implemented using the ROOT::Math::IRootFinderMethod interface
+
+ @ingroup NumAlgo
+ */
+--- a/math/mathmore/inc/Math/GSLMinimizer1D.h
++++ b/math/mathmore/inc/Math/GSLMinimizer1D.h
+@@ -70,7 +70,7 @@
+ <A HREF="http://www.gnu.org/software/gsl/manual/html_node/One-dimensional-Minimization.html">GSL online doc</A>
+
+ The algorithms uspported are only bracketing algorithm which do not use derivatives information.
+-The algorithms which can be choosen at construction time are GOLDENSECTION, whic is the simplest method
++The algorithms which can be chosen at construction time are GOLDENSECTION, whic is the simplest method
+ but the slowest and BRENT (the default one) which combines the golden section with a parabolic interpolation.
+
+
+--- a/math/mathmore/src/GSLIntegrator.cxx
++++ b/math/mathmore/src/GSLIntegrator.cxx
+@@ -273,7 +273,7 @@
+
+ double GSLIntegrator::Integral( ) {
+ // Eval for indefined integrals: use QAGI method
+- // if method was choosen NO_ADAPTIVE WS does not exist create it
++ // if method was chosen NO_ADAPTIVE WS does not exist create it
+
+ if (!CheckFunction()) return 0;
+
+@@ -289,7 +289,7 @@
+
+ double GSLIntegrator::IntegralUp( double a ) {
+ // Integral between [a, + inf]
+- // if method was choosen NO_ADAPTIVE WS does not exist create it
++ // if method was chosen NO_ADAPTIVE WS does not exist create it
+
+ if (!CheckFunction()) return 0;
+
+@@ -305,7 +305,7 @@
+
+ double GSLIntegrator::IntegralLow( double b ) {
+ // Integral between [-inf, + b]
+- // if method was choosen NO_ADAPTIVE WS does not exist create it
++ // if method was chosen NO_ADAPTIVE WS does not exist create it
+
+ if (!CheckFunction()) return 0;
+
+--- a/math/mlp/src/TMultiLayerPerceptron.cxx
++++ b/math/mlp/src/TMultiLayerPerceptron.cxx
+@@ -50,7 +50,7 @@
+ </UL>
+ <P>Neural Networks are more and more used in various fields for data
+ analysis and classification, both for research and commercial
+-institutions. Some randomly choosen examples are:</P>
++institutions. Some randomly chosen examples are:</P>
+ <UL>
+ <LI><P>image analysis</P>
+ <LI><P>financial movements predictions and analysis</P>
+@@ -64,7 +64,7 @@
+ package</A> originaly written by Jerome Schwindling. MLPfit remains
+ one of the fastest tool for neural networks studies, and this ROOT
+ add-on will not try to compete on that. A clear and flexible Object
+-Oriented implementation has been choosen over a faster but more
++Oriented implementation has been chosen over a faster but more
+ difficult to maintain code. Nevertheless, the time penalty does not
+ exceed a factor 2.</P>
+ <UL>
+--- a/net/net/src/TSocket.cxx
++++ b/net/net/src/TSocket.cxx
+@@ -1304,7 +1304,7 @@
+
+ R__LOCKGUARD2(gSocketAuthMutex);
+
+- // Url to be passed to choosen constructor
++ // Url to be passed to chosen constructor
+ TString eurl(url);
+
+ // Parse protocol, if any
+--- a/test/RootShower/RootShower.cxx
++++ b/test/RootShower/RootShower.cxx
+@@ -1071,13 +1071,13 @@
+ fHisto_dEdX->Fill(fEvent->GetParticle(i)->GetELoss());
+ for (j=0;j<fEvent->GetParticle(i)->GetNTracks();j++)
+ fEvent->GetParticle(i)->GetTrack(j)->Draw();
+- // show track by track if "show process" has been choosen
++ // show track by track if "show process" has been chosen
+ // into the menu
+ if (fShowProcess) {
+ fCA->Modified();
+ fCA->Update();
+ // create one gif image by step if "Animated GIF"
+- // has been choosen into the menu
++ // has been chosen into the menu
+ if (fCreateGIFs) {
+ fCA->SaveAs("RSEvent.gif+");
+ }
+--- a/test/guitest.cxx
++++ b/test/guitest.cxx
+@@ -1946,7 +1946,7 @@
+ if (mode<10) {
+ fContents->SetViewMode((EListViewMode)mode);
+ } else {
+- delete this; // Close menu entry choosen
++ delete this; // Close menu entry chosen
+ }
+ }
+
+--- a/tmva/inc/TMVA/DecisionTreeNode.h
++++ b/tmva/inc/TMVA/DecisionTreeNode.h
+@@ -233,7 +233,7 @@
+ Float_t GetNEvents_unweighted( void ) const { return fTrainInfo->fNEvents_unweighted; }
+
+
+- // set the choosen index, measure of "purity" (separation between S and B) AT this node
++ // set the chosen index, measure of "purity" (separation between S and B) AT this node
+ void SetSeparationIndex( Float_t sep ){ fTrainInfo->fSeparationIndex =sep ; }
+ // return the separation index AT this node
+ Float_t GetSeparationIndex( void ) const { return fTrainInfo->fSeparationIndex; }
+--- a/tmva/src/DecisionTree.cxx
++++ b/tmva/src/DecisionTree.cxx
+@@ -162,7 +162,7 @@
+ fRegType = new RegressionVariance();
+ if ( nCuts <=0 ) {
+ fNCuts = 200;
+- Log() << kWARNING << " You had choosen the training mode using optimal cuts, not\n"
++ Log() << kWARNING << " You had chosen the training mode using optimal cuts, not\n"
+ << " based on a grid of " << fNCuts << " by setting the option NCuts < 0\n"
+ << " as this doesn't exist yet, I set it to " << fNCuts << " and use the grid"
+ << Endl;
+--- a/tmva/src/TActivationChooser.cxx
++++ b/tmva/src/TActivationChooser.cxx
+@@ -75,7 +75,7 @@
+ TMVA::TActivationChooser::CreateActivation(EActivationType type) const
+ {
+ // instantiate the correct activation object according to the
+- // type choosen (given as the enumeration type)
++ // type chosen (given as the enumeration type)
+
+ switch (type) {
+ case kLinear: return new TActivationIdentity();
+@@ -93,7 +93,7 @@
+ TMVA::TActivationChooser::CreateActivation(const TString& type) const
+ {
+ // instantiate the correct activation object according to the
+- // type choosen (given by a TString)
++ // type chosen (given by a TString)
+
+ if (type == fLINEAR) return CreateActivation(kLinear);
+ else if (type == fSIGMOID) return CreateActivation(kSigmoid);
diff --git a/debian/patches/53-fix-typo-backgroud-Background.patch b/debian/patches/53-fix-typo-backgroud-Background.patch
new file mode 100644
index 0000000..cd00c74
--- /dev/null
+++ b/debian/patches/53-fix-typo-backgroud-Background.patch
@@ -0,0 +1,11 @@
+--- a/tmva/src/MethodBase.cxx
++++ b/tmva/src/MethodBase.cxx
+@@ -2080,7 +2080,7 @@
+ // where PDF(x) is the PDF of the classifier's signal or background distribution
+
+ if ((reftype == Types::kSignal && !fMVAPdfS) || (reftype == Types::kBackground && !fMVAPdfB)) {
+- Log() << kWARNING << "<GetRarity> Required MVA PDF for Signal or Backgroud does not exist: "
++ Log() << kWARNING << "<GetRarity> Required MVA PDF for Signal or Background does not exist: "
+ << "select option \"CreateMVAPdfs\"" << Endl;
+ return 0.0;
+ }
diff --git a/debian/patches/54-fix-typo-auxilliary-auxiliary.patch b/debian/patches/54-fix-typo-auxilliary-auxiliary.patch
new file mode 100644
index 0000000..97f4887
--- /dev/null
+++ b/debian/patches/54-fix-typo-auxilliary-auxiliary.patch
@@ -0,0 +1,144 @@
+--- a/core/textinput/src/textinput/TextInputContext.cpp
++++ b/core/textinput/src/textinput/TextInputContext.cpp
+@@ -7,7 +7,7 @@
+ //
+ //===----------------------------------------------------------------------===//
+ //
+-// This file defines the internal interface for TextInput's auxilliary
++// This file defines the internal interface for TextInput's auxiliary
+ // objects.
+ //
+ // Axel Naumann <axel at cern.ch>, 2011-05-12
+--- a/core/textinput/src/textinput/TextInputContext.h
++++ b/core/textinput/src/textinput/TextInputContext.h
+@@ -7,7 +7,7 @@
+ //
+ //===----------------------------------------------------------------------===//
+ //
+-// This file defines the internal interface for TextInput's auxilliary
++// This file defines the internal interface for TextInput's auxiliary
+ // objects.
+ //
+ // Axel Naumann <axel at cern.ch>, 2011-05-12
+--- a/graf3d/ftgl/inc/FTFace.h
++++ b/graf3d/ftgl/inc/FTFace.h
+@@ -41,16 +41,16 @@
+ virtual ~FTFace();
+
+ /**
+- * Attach auxilliary file to font (e.g., font metrics).
++ * Attach auxiliary file to font (e.g., font metrics).
+ *
+- * @param fontFilePath auxilliary font file path.
++ * @param fontFilePath auxiliary font file path.
+ * @return <code>true</code> if file has opened
+ * successfully.
+ */
+ bool Attach( const char* fontFilePath);
+
+ /**
+- * Attach auxilliary data to font (e.g., font metrics) from memory
++ * Attach auxiliary data to font (e.g., font metrics) from memory
+ *
+ * @param pBufferBytes the in-memory buffer
+ * @param bufferSizeInBytes the length of the buffer in bytes
+--- a/graf3d/ftgl/inc/FTFont.h
++++ b/graf3d/ftgl/inc/FTFont.h
+@@ -55,18 +55,18 @@
+ virtual ~FTFont();
+
+ /**
+- * Attach auxilliary file to font e.g font metrics.
++ * Attach auxiliary file to font e.g font metrics.
+ *
+ * Note: not all font formats implement this function.
+ *
+- * @param fontFilePath auxilliary font file path.
++ * @param fontFilePath auxiliary font file path.
+ * @return <code>true</code> if file has been attached
+ * successfully.
+ */
+ bool Attach( const char* fontFilePath);
+
+ /**
+- * Attach auxilliary data to font e.g font metrics, from memory
++ * Attach auxiliary data to font e.g font metrics, from memory
+ *
+ * Note: not all font formats implement this function.
+ *
+--- a/html/src/THtml.cxx
++++ b/html/src/THtml.cxx
+@@ -785,7 +785,7 @@
+ or to run on just a few classes:
+ <pre>
+ root[] <a href="http://root.cern.ch/root/html/THtml.html">THtml</a> html; // create a <a href="http://root.cern.ch/root/html/THtml.html">THtml</a> object
+- root[] html.MakeIndex(); // create auxilliary files (style sheet etc) and indices
++ root[] html.MakeIndex(); // create auxiliary files (style sheet etc) and indices
+ root[] html.MakeClass("TMyClass"); // create documentation for TMyClass only
+ </pre>
+ To "beautify" (i.e. create links to documentation for class names etc) some text
+--- a/proof/proof/inc/TProof.h
++++ b/proof/proof/inc/TProof.h
+@@ -307,7 +307,7 @@
+ ClassDef(TMergerInfo,0) // Basic info on merger, i.e. worker serving as merger
+ };
+
+-// Small auxilliary class for merging progress notification
++// Small auxiliary class for merging progress notification
+ class TProofMergePrg {
+ private:
+ TString fExp;
+--- a/proof/proof/src/TDataSetManager.cxx
++++ b/proof/proof/src/TDataSetManager.cxx
+@@ -492,7 +492,7 @@
+ // L, locateonly: only locate the selected files
+ // S, stageonly: issue a stage request for the selected files not yet staged
+ //
+- // 'auxilliary' field
++ // 'auxiliary' field
+ // V, verbose: notify the actions
+ //
+ // Returns 0 on success, -1 if any failure occurs.
+--- a/proof/proofd/inc/XrdProofdAux.h
++++ b/proof/proofd/inc/XrdProofdAux.h
+@@ -18,7 +18,7 @@
+ // //
+ // Authors: G. Ganis, CERN, 2007 //
+ // //
+-// Small auxilliary classes used in XrdProof //
++// Small auxiliary classes used in XrdProof //
+ // //
+ //////////////////////////////////////////////////////////////////////////
+ #include <list>
+--- a/proof/proofd/src/XrdProofdAux.cxx
++++ b/proof/proofd/src/XrdProofdAux.cxx
+@@ -15,7 +15,7 @@
+ // //
+ // Authors: G. Ganis, CERN, 2007 //
+ // //
+-// Small auxilliary classes used in XrdProof //
++// Small auxiliary classes used in XrdProof //
+ // //
+ //////////////////////////////////////////////////////////////////////////
+ #include "XrdProofdPlatform.h"
+--- a/tutorials/proof/ProofAux.C
++++ b/tutorials/proof/ProofAux.C
+@@ -2,7 +2,7 @@
+
+ //////////////////////////////////////////////////////////////
+ //
+-// Selector used for auxilliary actions in the PROOF tutorials
++// Selector used for auxiliary actions in the PROOF tutorials
+ //
+ //////////////////////////////////////////////////////////////
+
+--- a/tutorials/proof/ProofAux.h
++++ b/tutorials/proof/ProofAux.h
+@@ -1,6 +1,6 @@
+ //////////////////////////////////////////////////////////////
+ //
+-// Selector used for auxilliary actions in the PROOF tutorials
++// Selector used for auxiliary actions in the PROOF tutorials
+ //
+ //////////////////////////////////////////////////////////////
+
diff --git a/debian/patches/55-fix-typo-authentification-authentication.patch b/debian/patches/55-fix-typo-authentification-authentication.patch
new file mode 100644
index 0000000..028cd27
--- /dev/null
+++ b/debian/patches/55-fix-typo-authentification-authentication.patch
@@ -0,0 +1,39 @@
+diff --git a/build/package/debian/root-system-rootd.default b/build/package/debian/root-system-rootd.default
+index 294dd0f..3e8b814 100644
+--- a/build/package/debian/root-system-rootd.default
++++ b/build/package/debian/root-system-rootd.default
+@@ -54,7 +54,7 @@ SSH_PORT=
+ # debugging purposes. Only a value of "yes" enables.
+ #ROOTD_FOREGROUND=
+
+-# Disable authentification (-noauth)
++# Disable authentication (-noauth)
+ # do not require client authentication. This shouldn't be enabled
+ # unless you know what you're doing. Only a value of "yes" enables.
+ #ROOTD_NO_AUTH=
+diff --git a/build/package/debian/root-system-rootd.init.in b/build/package/debian/root-system-rootd.init.in
+index 7f9677c..6899422 100644
+--- a/build/package/debian/root-system-rootd.init.in
++++ b/build/package/debian/root-system-rootd.init.in
+@@ -51,7 +51,7 @@ test ! "x$ROOTD_DEBUG" = "x" && DAEMON_OPTS="$DAEMON_OPTS -d $ROOTD_DEBUG"
+ test ! "x$ROOTD_ACCESS_RULES" = "x" && DAEMON_OPTS="$DAEMON_OPTS -D $ROOTD_ACCESS_RULES"
+ # Run in foreground (shouldn't be done in init script)
+ test "x$ROOTD_FOREGROUND" = "xyes" && DAEMON_OPTS="$DAEMON_OPTS -f"
+-# No client authentification (security issue)
++# No client authentication (security issue)
+ test "x$ROOTD_NO_AUTH" = "xyes" && DAEMON_OPTS="$DAEMON_OPTS -noauth"
+ # files can only be opened read-only
+ test "x$ROOTD_READ_ONLY" = "xyes" && DAEMON_OPTS="$DAEMON_OPTS -r"
+diff --git a/net/krb5auth/src/Krb5Auth.cxx b/net/krb5auth/src/Krb5Auth.cxx
+index 555d483..c5df15a 100644
+--- a/net/krb5auth/src/Krb5Auth.cxx
++++ b/net/krb5auth/src/Krb5Auth.cxx
+@@ -485,7 +485,7 @@ Int_t Krb5Authenticate(TAuthenticate *auth, TString &user, TString &det,
+
+ if (gDebug > 1)
+ Info("Krb5Authenticate",
+- "Sending kerberos authentification to %s",
++ "Sending kerberos authentication to %s",
+ serv_host.Data());
+
+ retval = krb5_sendauth(context, &auth_context, (krb5_pointer)&sockd,
diff --git a/debian/patches/56-fix-typo-appropiate-appropriate.patch b/debian/patches/56-fix-typo-appropiate-appropriate.patch
new file mode 100644
index 0000000..70d376c
--- /dev/null
+++ b/debian/patches/56-fix-typo-appropiate-appropriate.patch
@@ -0,0 +1,122 @@
+--- a/README/INSTALL
++++ b/README/INSTALL
+@@ -213,7 +213,7 @@
+
+ %_topdir <some where you can write>/redhat
+
+- Then you should make the appropiate directories:
++ Then you should make the appropriate directories:
+
+ mkdir <some where you can write>/redhat
+ mkdir <some where you can write>/redhat/SOURCES
+--- a/config/root-help.el.in
++++ b/config/root-help.el.in
+@@ -608,7 +608,7 @@
+
+ ;;____________________________________________________________________
+ (defun root-insert-linkdef ()
+- "Insert lines appropiate for a linkdef file into current buffer
++ "Insert lines appropriate for a linkdef file into current buffer
+
+ The user will be prompted for classes to add to the linkdef file. An
+ empty string ends the input."
+--- a/man/man1/proofd.1
++++ b/man/man1/proofd.1
+@@ -27,7 +27,7 @@
+ .SH "SETTING UP PROOF"
+ Since you need to handle sensitive system files, you need to have root
+ (the user, not the program!) privileges. Also, it's recommended that
+-you read the appropiate \fIman\fR(1) pages first. These are
++you read the appropriate \fIman\fR(1) pages first. These are
+ \fIinetd\fR(8) (the internet daemon), \fIsysklogd\fR(8) and
+ \fIsyslog\fR(3) (the system logger daemon), and \fIinit\fR(8) (the
+ SYSV process control initializer).
+@@ -87,7 +87,7 @@
+ /etc/init.d/inetd restart
+
+ .fi
+-or whatever is appropiate for your system.
++or whatever is appropriate for your system.
+
+ .TP
+ 5
+@@ -145,7 +145,7 @@
+ /etc/init.d/sysklogd restart
+
+ .fi
+-or whatever is appropiate for your system.
++or whatever is appropriate for your system.
+
+ .TP
+ 9
+--- a/man/man1/root-config.1
++++ b/man/man1/root-config.1
+@@ -53,7 +53,7 @@
+ .fi
+ .RE
+ where you should substitute \fBFoo\fR with whatever, and list the
+-appropiate source files in the \fB_SOURCES\fR variable. In you
++appropriate source files in the \fB_SOURCES\fR variable. In you
+ \ficonfigure.in\fR file, put:
+ .RS
+ .nf
+--- a/man/man1/rootn.exe.1
++++ b/man/man1/rootn.exe.1
+@@ -5,7 +5,7 @@
+ rootn.exe \- ROOT interpretor memory managed backend
+ .SH DESCRIPTION
+ This executable is linked with \fBlibNew\fR, unlike \fIroot.exe\fR,
+-which makes it appropiate for if one wants to use memory mapped file,
++which makes it appropriate for if one wants to use memory mapped file,
+ \fBTMapFile\fR, and so on. In all other aspects, it's the same as
+ the \fIroot\fR(1) executable.
+ .SH "SEE ALSO"
+--- a/man/man1/xproofd.1
++++ b/man/man1/xproofd.1
+@@ -34,7 +34,7 @@
+ .SH "SETTING UP PROOF"
+ Since you need to handle sensitive system files, you need to have root
+ (the user, not the program!) privileges. Also, it's recommended that
+-you read the appropiate \fIman\fR(1) pages first. These are
++you read the appropriate \fIman\fR(1) pages first. These are
+ \fIinetd\fR(8) (the internet daemon), \fIsysklogd\fR(8) and
+ \fIsyslog\fR(3) (the system logger daemon), and \fIinit\fR(8) (the
+ SYSV process control initializer).
+@@ -94,7 +94,7 @@
+ /etc/init.d/inetd restart
+
+ .fi
+-or whatever is appropiate for your system.
++or whatever is appropriate for your system.
+
+ .TP
+ 5
+@@ -152,7 +152,7 @@
+ /etc/init.d/sysklogd restart
+
+ .fi
+-or whatever is appropiate for your system.
++or whatever is appropriate for your system.
+
+ .TP
+ 9
+--- a/roofit/roofitcore/src/RooAbsPdf.cxx
++++ b/roofit/roofitcore/src/RooAbsPdf.cxx
+@@ -1679,7 +1679,7 @@
+ }
+
+
+- // Forward to appropiate implementation
++ // Forward to appropriate implementation
+ RooDataSet* data ;
+ if (protoData) {
+ data = generate(whatVars,*protoData,nEvents,verbose,randProto,resampleProto) ;
+@@ -2099,7 +2099,7 @@
+ << GetName() << "::expectedEvents() = " << expectedEvents(&whatVars)<< endl ;
+ }
+
+- // Forward to appropiate implementation
++ // Forward to appropriate implementation
+ RooDataHist* data = generateBinned(whatVars,nEvents,expectedData,extended) ;
+
+ // Rename dataset to given name if supplied
diff --git a/debian/patches/57-fix-typo-another.patch b/debian/patches/57-fix-typo-another.patch
new file mode 100644
index 0000000..71d61f9
--- /dev/null
+++ b/debian/patches/57-fix-typo-another.patch
@@ -0,0 +1,44 @@
+--- a/geom/geom/src/TGeoVolume.cxx
++++ b/geom/geom/src/TGeoVolume.cxx
+@@ -246,7 +246,7 @@
+ // The parameters order and number are the same as in the corresponding shape
+ // constructors.
+ //
+-// An other particular case where volume families are used is when we want
++// Another particular case where volume families are used is when we want
+ // that a volume positioned inside a container to match one ore more container
+ // limits. Suppose we want to position the same box inside 2 different volumes
+ // and we want the Z size to match the one of each container:
+--- a/tree/treeviewer/src/HelpTextTV.cxx
++++ b/tree/treeviewer/src/HelpTextTV.cxx
+@@ -163,7 +163,7 @@
+ const char gTVHelpUserCommands[] = "\
+ User commands can be issued directly from the textbox labeled <Command>\n\
+ from the upper-left toolbar by typing and pressing Enter at the end.\n\
+-An other way is from the right panel context menu: ExecuteCommand.\n\n\
++Another way is from the right panel context menu: ExecuteCommand.\n\n\
+ All commands can be interrupted at any time by pressing the STOP button\n\
+ from the bottom-left.\n\n\
+ You can toggle recording of the current command in the history file by\n\
+--- a/tree/treeviewer/src/TTreeViewer.cxx
++++ b/tree/treeviewer/src/TTreeViewer.cxx
+@@ -101,7 +101,7 @@
+ //
+ // User commands can be issued directly from the textbox labeled "Command"
+ // from the upper-left toolbar by typing and pressing Enter at the end.
+-// An other way is from the right panel context menu : ExecuteCommand.
++// Another way is from the right panel context menu : ExecuteCommand.
+ // All commands can be interrupted at any time by pressing the STOP button
+ // from the bottom-left
+ // You can toggle recording of the current command in the history file by
+--- a/docbook/users-guide/Histograms.xml
++++ b/docbook/users-guide/Histograms.xml
+@@ -1064,7 +1064,7 @@
+
+ <para>The method <code>SetTitle</code> has the same syntax:</para>
+
+-<programlisting language="c++">h->SetTitle("Histogram title;An other X title Axis");
++<programlisting language="c++">h->SetTitle("Histogram title;Another X title Axis");
+ </programlisting>
+
+ </sect1>
diff --git a/debian/patches/58-fix-typo-environement-environment.patch b/debian/patches/58-fix-typo-environement-environment.patch
new file mode 100644
index 0000000..28c13b3
--- /dev/null
+++ b/debian/patches/58-fix-typo-environement-environment.patch
@@ -0,0 +1,109 @@
+diff --git a/README/README.ALIEN b/README/README.ALIEN
+index 231c5f3..015c1fe 100644
+--- a/README/README.ALIEN
++++ b/README/README.ALIEN
+@@ -15,7 +15,7 @@ a) // connecting to an API service
+ TGrid::Connect("alien://pcapiserv01.cern.ch:9000","aliprod);
+
+ // connecting to an API service which is defined already by the
+- environement variables:
++ environment variables:
+ export alien_API_HOST=...
+ export alien_API_PORT=...
+ export alien_API_USER=...
+diff --git a/gui/qtgsi/inc/TQApplication.h b/gui/qtgsi/inc/TQApplication.h
+index a1a3ba6..b25e9a2 100644
+--- a/gui/qtgsi/inc/TQApplication.h
++++ b/gui/qtgsi/inc/TQApplication.h
+@@ -16,7 +16,7 @@
+ //
+ // TQApplication
+ //
+-// This class creates ROOT environement that will
++// This class creates ROOT environment that will
+ // interface with the Qt windowing system eventloop and eventhandlers.
+ // This class will be instantiated once (singleton) in a main()
+ // program.
+@@ -39,7 +39,7 @@ public:
+ virtual void LoadGraphicsLibs();
+ void SetCustomized();
+
+- ClassDef(TQApplication,0) //creates ROOT environement with the Qt windowing system
++ ClassDef(TQApplication,0) //creates ROOT environment with the Qt windowing system
+ };
+
+ #endif
+diff --git a/gui/qtgsi/inc/TQRootApplication.h b/gui/qtgsi/inc/TQRootApplication.h
+index 1db7d48..0501b16 100644
+--- a/gui/qtgsi/inc/TQRootApplication.h
++++ b/gui/qtgsi/inc/TQRootApplication.h
+@@ -16,7 +16,7 @@
+ //
+ // TQRootApplication
+ //
+-// This class creates Qt environement that will
++// This class creates Qt environment that will
+ // interface with the ROOT windowing system eventloop and eventhandlers,
+ // via a polling mechanism.
+ //
+@@ -58,7 +58,7 @@ public slots:
+ void Quit();
+
+ public:
+- ClassDef(TQRootApplication,1) //creates Qt environement interface with the ROOT windowing system
++ ClassDef(TQRootApplication,1) //creates Qt environment interface with the ROOT windowing system
+ };
+
+ #endif
+diff --git a/gui/qtgsi/test/example1/README b/gui/qtgsi/test/example1/README
+index bce0c3a..d012ed8 100644
+--- a/gui/qtgsi/test/example1/README
++++ b/gui/qtgsi/test/example1/README
+@@ -1,7 +1,7 @@
+
+ QtROOT main application example
+
+- (Initialising both Root/Qt environement)
++ (Initialising both Root/Qt environment)
+
+ 1. Build the example typing `make' on this
+ directory.
+diff --git a/gui/qtgsi/test/example1/main.cpp b/gui/qtgsi/test/example1/main.cpp
+index c3ef981..ac6878d 100644
+--- a/gui/qtgsi/test/example1/main.cpp
++++ b/gui/qtgsi/test/example1/main.cpp
+@@ -1,7 +1,7 @@
+ /**
+ * Main program
+ *
+-* Initialising both Root/Qt environement
++* Initialising both Root/Qt environment
+ *
+ * Updated 10/10/01
+ * @authors Denis Bertini <d.bertini at gsi.de>
+diff --git a/net/monalisa/src/TMonaLisaWriter.cxx b/net/monalisa/src/TMonaLisaWriter.cxx
+index 89f048c..cbb915a 100644
+--- a/net/monalisa/src/TMonaLisaWriter.cxx
++++ b/net/monalisa/src/TMonaLisaWriter.cxx
+@@ -204,7 +204,7 @@ void TMonaLisaWriter::Init(const char *monserver, const char *montag, const char
+ // case of process monitoring it can be just an identifier to classify
+ // the type of jobs e.g. "PROOF_PROCESSING".
+ // If monid is not specified, TMonaLisaWriter tries to set it in this order
+- // from environement variables:
++ // from environment variables:
+ // - PROOF_JOB_ID
+ // - GRID_JOB_ID
+ // - LCG_JOB_ID
+diff --git a/test/periodic/XSGui.cxx b/test/periodic/XSGui.cxx
+index 440aed0..adee183 100644
+--- a/test/periodic/XSGui.cxx
++++ b/test/periodic/XSGui.cxx
+@@ -240,7 +240,7 @@ XSGui::ProcessMessage(Long_t msg, Long_t param1, Long_t)
+
+ //---- Main program ----------------------------------------------------------
+
+-TROOT root("GUI", "GUI test environement");
++TROOT root("GUI", "GUI test environment");
+
+ /* ----- main ----- */
+ int main(int ac, char *av[])
diff --git a/debian/patches/59-remove-duplicate-field.patch b/debian/patches/59-remove-duplicate-field.patch
new file mode 100644
index 0000000..5cc201d
--- /dev/null
+++ b/debian/patches/59-remove-duplicate-field.patch
@@ -0,0 +1,10 @@
+diff --git a/build/package/common/root-system-xrootd.control b/build/package/common/root-system-xrootd.control
+index 941edb6..cf1c9c6 100644
+--- a/build/package/common/root-system-xrootd.control
++++ b/build/package/common/root-system-xrootd.control
+@@ -1,5 +1,4 @@
+ Package: root-plugin-net-xrootd
+-Section: science
+ Architecture: any
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Replaces: root-system-xrootd
diff --git a/debian/patches/60-remove-obsolete-package-dependency.patch b/debian/patches/60-remove-obsolete-package-dependency.patch
new file mode 100644
index 0000000..766d428
--- /dev/null
+++ b/debian/patches/60-remove-obsolete-package-dependency.patch
@@ -0,0 +1,13 @@
+diff --git a/build/package/common/ttf-root-installer.control b/build/package/common/ttf-root-installer.control
+index ccbbe01..0eabe28 100644
+--- a/build/package/common/ttf-root-installer.control
++++ b/build/package/common/ttf-root-installer.control
+@@ -1,7 +1,7 @@
+ Package: ttf-root-installer
+ Architecture: all
+ Section: contrib/fonts
+-Depends: ${misc:Depends}, wget (>= 1.9.1-4), xfonts-utils | xutils (>= 4.0.2), debconf (>= 1.2.0), ${misc:Depends}
++Depends: ${misc:Depends}, wget (>= 1.9.1-4), xfonts-utils, debconf (>= 1.2.0), ${misc:Depends}
+ Provides: root-ttf
+ Conflicts: ttf-root
+ Description: True type fonts for ROOT - installer package
diff --git a/debian/patches/61-fix-libjpeg-dev-dependency.patch b/debian/patches/61-fix-libjpeg-dev-dependency.patch
new file mode 100644
index 0000000..7ca496a
--- /dev/null
+++ b/debian/patches/61-fix-libjpeg-dev-dependency.patch
@@ -0,0 +1,22 @@
+--- a/build/package/debian/control
++++ b/build/package/debian/control
+@@ -3,7 +3,7 @@
+ Priority: optional
+ Maintainer: Antonio Salvucci <s4lb04 at gmail.com>
+ Homepage: http://root.cern.ch
+-Build-Depends: debhelper (>= 5.0.37.2), po-debconf, libssl-dev, comerr-dev, libxpm-dev, x11proto-xext-dev, libxext-dev, libfreetype6-dev, libpcre3-dev, zlib1g-dev | libz-dev, python-dev (>= 2.1), graphviz, ttf-freefont, libncurses5-dev | libcurses-dev, libgraphviz-dev, libxft-dev, python-support (>= 0.3), ruby (>= 1.8), ruby1.8-dev | ruby-dev (>= 1.8), libglu1-mesa-dev | libglu1-xorg-dev | xlibmesa-glu-dev | libglu-dev, libglew1.5-dev | libglew-dev, libftgl-dev | ftgl-dev, libxml2-dev, libgsl0-dev, libldap2-dev | libldap-dev, libavahi-compat-libdnssd-dev, libxmlrpc-c3-dev | libxmlrpc-c-dev, libcurl4-gnutls-dev | libcurl4-openssl-dev | libcurl-dev, libjpeg62-dev, libpng12-dev, libtiff4-dev, libgif-dev | libungif4-dev, libxinerama-dev, libfftw3-dev | fftw3-dev, libglobus-gss-assist-dev, libglobus-gssapi-gsi-dev, libglobus-gsi-credential-dev, libglobus-common-dev, libglobus-gsi-callback-dev, libglobus-gsi-sysconfig-dev, libglobus-gssapi-gsi-dev, libglobus-gsi-callback-dev, libglobus-gsi-cert-utils-dev, libglobus-openssl-dev, libglobus-gsi-proxy-core-dev, libglobus-callout-dev, globus-proxy-utils,krb5-user|heimdal-clients, libmysqlclient15-dev | libmysqlclient14-dev| libmysqlclient12-dev| libmysqlclient-dev, libiodbc2-dev | unixodbc-dev, libpq-dev | postgresql-dev, gfortran|fortran-compiler, libqt4-dev (>= 4.3.0) | libqt3-mt-dev (>= 3.3.0), qt4-dev-tools (>= 4.3.0) | qt3-dev-tools (>= 3.3.0), libqt4-opengl-dev, libkrb5-dev|heimdal-dev
++Build-Depends: debhelper (>= 5.0.37.2), po-debconf, libssl-dev, comerr-dev, libxpm-dev, x11proto-xext-dev, libxext-dev, libfreetype6-dev, libpcre3-dev, zlib1g-dev | libz-dev, python-dev (>= 2.1), graphviz, ttf-freefont, libncurses5-dev | libcurses-dev, libgraphviz-dev, libxft-dev, python-support (>= 0.3), ruby (>= 1.8), ruby1.8-dev | ruby-dev (>= 1.8), libglu1-mesa-dev | libglu1-xorg-dev | xlibmesa-glu-dev | libglu-dev, libglew1.5-dev | libglew-dev, libftgl-dev | ftgl-dev, libxml2-dev, libgsl0-dev, libldap2-dev | libldap-dev, libavahi-compat-libdnssd-dev, libxmlrpc-c3-dev | libxmlrpc-c-dev, libcurl4-gnutls-dev | libcurl4-openssl-dev | libcurl-dev, libjpeg-dev, libpng12-dev, libtiff4-dev, libgif-dev | libungif4-dev, libxinerama-dev, libfftw3-dev | fftw3-dev, libglobus-gss-assist-dev, libglobus-gssapi-gsi-dev, libglobus-gsi-credential-dev, libglobus-common-dev, libglobus-gsi-callback-dev, libglobus-gsi-sysconfig-dev, libglobus-gssapi-gsi-dev, libglobus-gsi-callback-dev, libglobus-gsi-cert-utils-dev, libglobus-openssl-module-dev, libglobus-gsi-proxy-core-dev, libglobus-callout-dev, globus-proxy-utils,krb5-user|heimdal-clients, libmysqlclient15-dev | libmysqlclient14-dev| libmysqlclient12-dev| libmysqlclient-dev, libiodbc2-dev | unixodbc-dev, libpq-dev | postgresql-dev, gfortran|fortran-compiler, libqt4-dev (>= 4.3.0) | libqt3-mt-dev (>= 3.3.0), qt4-dev-tools (>= 4.3.0) | qt3-dev-tools (>= 3.3.0), libqt4-opengl-dev, libkrb5-dev|heimdal-dev
+ Standards-Version: 3.8.3
+
+ Package: root-system
+--- a/build/package/lib/makebuilddepend.sh
++++ b/build/package/lib/makebuilddepend.sh
+@@ -250,7 +250,7 @@
+ # root-plugin-graf3d-asimage) echo -n ", libafterimage-dev" ;;
+ # Input the build dependencies of the libafterimage-dev package
+ root-plugin-graf2d-asimage)
+- echo -n ", libjpeg62-dev, libpng12-dev, libtiff4-dev"
++ echo -n ", libjpeg-dev, libpng12-dev, libtiff4-dev"
+ echo -n ", libgif-dev, libxinerama-dev";;
+ root-plugin-graf2d-qt) need_qt=1 ;;
+ root-plugin-graf2d-gviz) ;;
diff --git a/debian/patches/62-fix-duplicated-package-description.patch b/debian/patches/62-fix-duplicated-package-description.patch
new file mode 100644
index 0000000..003f794
--- /dev/null
+++ b/debian/patches/62-fix-duplicated-package-description.patch
@@ -0,0 +1,751 @@
+--- a/build/package/common/libroot-bindings-python.control
++++ b/build/package/common/libroot-bindings-python.control
+@@ -23,6 +23,5 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Python plug-in for ROOT. This package
+- provide a Python interface to ROOT, and a ROOT interface to Python.
++ This package contains the development files of Python plug-in for ROOT.
+
+--- a/build/package/common/libroot-geom.control
++++ b/build/package/common/libroot-geom.control
+@@ -22,5 +22,6 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains a library for defining geometries in ROOT.
++ This package contains development files of a library for defining geometries
++ in ROOT.
+
+--- a/build/package/common/libroot-graf2d-gpad.control
++++ b/build/package/common/libroot-graf2d-gpad.control
+@@ -28,5 +28,6 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains a library for canvas and pad manipulations.
++ This package contains development files of a library for canvas and pad
++ manipulations.
+
+--- a/build/package/common/libroot-graf2d-graf.control
++++ b/build/package/common/libroot-graf2d-graf.control
+@@ -7,10 +7,6 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- The ROOT system provides a set of OO frameworks with all the
+- functionality needed to handle and analyze large amounts of data
+- efficiently.
+- .
+ This package contains the Graf library for ROOT.
+
+ Package: libroot-graf2d-graf-dev
+@@ -19,14 +15,10 @@
+ Depends: libroot-graf2d-graf at libvers@ (= ${binary:Version}), libroot-hist-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+-Description: Graph library for ROOT
++Description: Graph library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- The ROOT system provides a set of OO frameworks with all the
+- functionality needed to handle and analyze large amounts of data
+- efficiently.
+- .
+- This package contains the Graf library for ROOT.
++ This package contains development files of the Graf library for ROOT.
+
+--- a/build/package/common/libroot-graf2d-postscript.control
++++ b/build/package/common/libroot-graf2d-postscript.control
+@@ -15,11 +15,11 @@
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+ Depends: libroot-graf2d-postscript at libvers@ (= ${binary:Version}), libroot-graf2d-graf-dev, ${shlibs:Depends}, ${misc:Depends}
+-Description: Postscript/PDF renderer library for ROOT
++Description: Postscript/PDF renderer library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains a library for ROOT, which allows rendering
+- postscript and PDF output.
++ This package contains developemnt files of a library for ROOT, which allows
++ rendering postscript and PDF output.
+
+--- a/build/package/common/libroot-graf3d-eve.control
++++ b/build/package/common/libroot-graf3d-eve.control
+@@ -17,10 +17,11 @@
+ Depends: libroot-graf3d-eve at libvers@ (= ${binary:Version}), libroot-geom-dev, libroot-gui-ged-dev, libroot-montecarlo-eg-dev, libroot-tree-treeplayer-dev, ${misc:Depends}
+ Replaces: root-plugin-gl
+ Breaks: root-plugin-gl (<= 5.19.01-1)
+-Description: Event display library for ROOT
++Description: Event display library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains a library for defining event displays in ROOT.
++ This package contains development files of a library for defining event
++ displays in ROOT.
+
+--- a/build/package/common/libroot-graf3d-g3d.control
++++ b/build/package/common/libroot-graf3d-g3d.control
+@@ -9,12 +9,8 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- The ROOT system provides a set of OO frameworks with all the
+- functionality needed to handle and analyze large amounts of data
+- efficiently.
+- .
+ This library contains the basic 3D shapes and classes for ROOT. For
+- a more full-blown geometry library, see libroot-geom-dev.
++ a more full-blown geometry library, see libroot-geom.
+
+ Package: libroot-graf3d-g3d-dev
+ Architecture: any
+@@ -24,16 +20,11 @@
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<= 5.19.01-1)
+ Suggests: libroot-geom-dev
+-Description: Basic 3D shapes for ROOT
+- The ROOT system provides a set of OO frameworks with all the
+- functionality needed to handle and analyze large amounts of data
+- efficiently.
+- .
++Description: Basic 3D shapes for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This library contains the basic 3D shapes and classes for ROOT. For
+- a more full-blown geometry library, see libroot-geom-dev.
+-
++ This library contains development files of the basic 3D shapes and classes
++ for ROOT. For a more full-blown geometry library, see libroot-geom-dev.
+
+--- a/build/package/common/libroot-gui-ged.control
++++ b/build/package/common/libroot-gui-ged.control
+@@ -15,11 +15,11 @@
+ Breaks: libroot-dev (<< 5.19.01-1)
+ Replaces: libroot-dev
+ Depends: libroot-gui-ged at libvers@ (= ${binary:Version}), libroot-gui-dev, libroot-tree-treeplayer-dev, ${misc:Depends}
+-Description: GUI element for editing various ROOT objecs
++Description: GUI element for editing various ROOT objecs - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains a library to show a pop-up window for editing
+- various ROOT objects.
++ This package contains development files of a library to show a pop-up window
++ for editing various ROOT objects.
+
+--- a/build/package/common/libroot-gui.control
++++ b/build/package/common/libroot-gui.control
+@@ -9,10 +9,6 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- The ROOT system provides a set of OO frameworks with all the
+- functionality needed to handle and analyze large amounts of data
+- efficiently.
+- .
+ This package contains a library for defining graphical user interfaces.
+
+ Package: libroot-gui-dev
+@@ -26,9 +22,6 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- The ROOT system provides a set of OO frameworks with all the
+- functionality needed to handle and analyze large amounts of data
+- efficiently.
+- .
+- This package contains a library for defining graphical user interfaces.
++ This package contains development files of a library for defining graphical
++ user interfaces.
+
+--- a/build/package/common/libroot-hist-spectrum.control
++++ b/build/package/common/libroot-hist-spectrum.control
+@@ -7,10 +7,6 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- The ROOT system provides a set of OO frameworks with all the
+- functionality needed to handle and analyze large amounts of data
+- efficiently.
+- .
+ This package contains the Spectrum library for ROOT.
+
+ Package: libroot-hist-spectrum-dev
+@@ -19,14 +15,10 @@
+ Depends: libroot-hist-spectrum at libvers@ (= ${binary:Version}), libroot-hist-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+-Description: Spectra analysis library for ROOT
++Description: Spectra analysis library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- The ROOT system provides a set of OO frameworks with all the
+- functionality needed to handle and analyze large amounts of data
+- efficiently.
+- .
+- This package contains the Spectrum library for ROOT.
++ This package contains development files of the Spectrum library for ROOT.
+
+--- a/build/package/common/libroot-hist.control
++++ b/build/package/common/libroot-hist.control
+@@ -8,7 +8,7 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains a library for histogrammin
++ This package contains a library for histogramming.
+
+ Package: libroot-hist-dev
+ Architecture: any
+@@ -21,5 +21,5 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains a library for histogrammin
++ This package contains development files of a library for histogramming.
+
+--- a/build/package/common/libroot-io-xmlparser.control
++++ b/build/package/common/libroot-io-xmlparser.control
+@@ -2,12 +2,12 @@
+ Section: libs
+ Architecture: any
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+-Description: Input/output of ROOT objects - runtime library
++Description: XML parser of ROOT objects - runtime library
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package provides I/O routines for ROOT objects.
++ This package provides XML parser routines for ROOT objects.
+
+ Package: libroot-io-xmlparser-dev
+ Architecture: any
+@@ -15,10 +15,11 @@
+ Depends: libroot-io-xmlparser at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev, root-plugin-xml
+ Breaks: libroot-dev (<< 5.19.01-1), root-plugin-xml (<< 5.19.01-1)
+-Description: Input/output of ROOT objects - development files
++Description: XML parser of ROOT objects - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package provides I/O routines for ROOT objects.
++ This package provides development files of XML parser routines for ROOT
++ objects.
+
+--- a/build/package/common/libroot-io.control
++++ b/build/package/common/libroot-io.control
+@@ -20,5 +20,5 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package provides I/O routines for ROOT objects.
++ This package provides development files of I/O routines for ROOT objects.
+
+--- a/build/package/common/libroot-math-foam.control
++++ b/build/package/common/libroot-math-foam.control
+@@ -2,7 +2,7 @@
+ Section: libs
+ Architecture: any
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+-Description: Compact Version of the Cellular Event Generator
++Description: Compact Version of Cellular Event Generator
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+@@ -19,7 +19,7 @@
+ Depends: libroot-math-foam at libvers@ (= ${binary:Version}), libroot-hist-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<= 5.19.01-1)
+-Description: Compact Version of the Cellular Event Generator
++Description: Compact Version of Cellular Event Generator - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+@@ -29,4 +29,7 @@
+ version of the FOAM program, with a slightly limited functionality
+ with respect to its parent version. On the other hand, mFOAM is
+ easier to use for the average user.
++ .
++ This package provides development files of the compact version of Cellular
++ Event Generator.
+
+--- a/build/package/common/libroot-math-genvector.control
++++ b/build/package/common/libroot-math-genvector.control
+@@ -16,11 +16,11 @@
+ Depends: libroot-math-genvector at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<= 5.19.01-1)
+-Description: Generalized vector library for ROOT
++Description: Generalized vector library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Genvector library for ROOT. This provides
+- a generalized vector library.
++ This package contains development files of the Genvector library for ROOT,
++ provides a generalized vector library.
+
+--- a/build/package/common/libroot-math-mathcore.control
++++ b/build/package/common/libroot-math-mathcore.control
+@@ -15,10 +15,10 @@
+ Depends: libroot-math-mathcore at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+-Description: Core mathemathics library for ROOT
++Description: Core mathemathics library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the MathCore library for ROOT.
++ This package contains development files of the MathCore library for ROOT.
+
+--- a/build/package/common/libroot-math-mathmore.control
++++ b/build/package/common/libroot-math-mathmore.control
+@@ -7,8 +7,8 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the MathMore library for ROOT. This provides
+- a partial GNU Scientific Library interface for ROOT.
++ This package contains the MathMore library for ROOT, a partial GNU
++ Scientific Library interface.
+
+ Package: libroot-math-mathmore-dev
+ Architecture: any
+@@ -16,11 +16,11 @@
+ Depends: libroot-math-mathmore at libvers@ (= ${binary:Version}), libroot-core-dev, libgsl0-dev, ${misc:Depends}
+ Breaks: libroot-mathmore-dev (<< 5.19.01-1)
+ Replaces: libroot-mathmore-dev
+-Description: Mathmore plugin for ROOT
++Description: GSL interface library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the MathMore library for ROOT. This provides
+- a partial GNU Scientific Library interface for ROOT.
++ This package contains development files of the MathMore library for ROOT,
++ a partial GNU Scientific Library interface.
+
+--- a/build/package/common/libroot-math-matrix.control
++++ b/build/package/common/libroot-math-matrix.control
+@@ -15,10 +15,10 @@
+ Depends: libroot-math-matrix at libvers@ (= ${binary:Version}), libroot-core-dev, libroot-math-mathcore-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+-Description: Matrix library for ROOT
++Description: Matrix library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Matrix library for ROOT.
++ This package contains development files of the Matrix library for ROOT.
+
+--- a/build/package/common/libroot-math-minuit.control
++++ b/build/package/common/libroot-math-minuit.control
+@@ -19,11 +19,11 @@
+ Provides: root-fitter
+ Replaces: root-plugin-minuit (<< 5.09.01-7), libroot-minuit-dev
+ Breaks: libroot-minuit-dev (<< 5.19.01-1)
+-Description: Minuit plugin for ROOT
++Description: Minuit plugin for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the MINUIT plug-in for ROOT. This provides a
+- fitting algorithm for ROOT.
++ This package contains development files of the MINUIT plug-in for ROOT,
++ provides a fitting algorithm for ROOT.
+
+--- a/build/package/common/libroot-math-mlp.control
++++ b/build/package/common/libroot-math-mlp.control
+@@ -22,6 +22,6 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the mlp plug-in for ROOT. This plugin provides
++ This package contains development files of the mlp plug-in for ROOT, provides
+ a Multi Layer Perceptron Neural Network package for ROOT.
+
+--- a/build/package/common/libroot-math-physics.control
++++ b/build/package/common/libroot-math-physics.control
+@@ -15,10 +15,10 @@
+ Depends: libroot-math-physics at libvers@ (= ${binary:Version}), libroot-math-matrix-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+-Description: Physics library for ROOT
++Description: Physics library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Physics library for ROOT.
++ This package contains development files of the Physics library for ROOT.
+
+--- a/build/package/common/libroot-math-quadp.control
++++ b/build/package/common/libroot-math-quadp.control
+@@ -24,8 +24,8 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the QuadP plug-in for ROOT. This provides the
+- user a framework in which to do Quadratic Programming. The quadratic
+- programming problem involves minimization of a quadratic function
+- subject to linear constraints.
++ This package contains development files of the QuadP plug-in for ROOT. This
++ provides the user a framework in which to do Quadratic Programming.
++ The quadratic programming problem involves minimization of a quadratic
++ function subject to linear constraints.
+
+--- a/build/package/common/libroot-math-smatrix.control
++++ b/build/package/common/libroot-math-smatrix.control
+@@ -15,10 +15,10 @@
+ Depends: libroot-math-smatrix at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+-Description: Sparse matrix library for ROOT
++Description: Sparse matrix library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Smatrix library for ROOT.
++ This package contains development files of the Smatrix library for ROOT.
+
+--- a/build/package/common/libroot-math-splot.control
++++ b/build/package/common/libroot-math-splot.control
+@@ -40,7 +40,7 @@
+ Depends: libroot-math-splot at libvers@ (= ${binary:Version}), libroot-graf2d-graf-dev, libroot-graf3d-g3d-dev, libroot-tree-treeplayer-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+-Description: Splot library for ROOT
++Description: Splot library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+@@ -71,4 +71,6 @@
+ .
+ SPlot is optimal if the control variable is uncorrelated with the
+ discriminating variables.
++ .
++ This package provides development files of Splot library for ROOT.
+
+--- a/build/package/common/libroot-misc-memstat.control
++++ b/build/package/common/libroot-misc-memstat.control
+@@ -16,11 +16,11 @@
+ Depends: libroot-misc-memstat at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+-Description: Memory statistics tool for use with ROOT
++Description: Memory statistics tool for use with ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the memory statistics tool for debugging memory
+- leaks and such.
++ This package contains the development files of memory statistics tool for
++ debugging memory leaks and such.
+
+--- a/build/package/common/libroot-misc-minicern.control
++++ b/build/package/common/libroot-misc-minicern.control
+@@ -15,10 +15,10 @@
+ Depends: libroot-misc-minicern at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+-Description: Small version of CERNLIB for use with ROOT
++Description: Small version of CERNLIB for use with ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the mini CERNLIB library for ROOT.
++ This package contains development files of the mini CERNLIB library for ROOT.
+
+--- a/build/package/common/libroot-misc-table.control
++++ b/build/package/common/libroot-misc-table.control
+@@ -15,10 +15,10 @@
+ Depends: libroot-misc-table at libvers@ (= ${binary:Version}), libroot-graf3d-g3d-dev, libroot-graf2d-gpad-dev, libroot-tree-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+-Description: Table library for ROOT
++Description: Table library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Table library for ROOT.
++ This package contains the development files of Table library for ROOT.
+
+--- a/build/package/common/libroot-montecarlo-eg.control
++++ b/build/package/common/libroot-montecarlo-eg.control
+@@ -15,10 +15,10 @@
+ Depends: libroot-montecarlo-eg at libvers@ (= ${binary:Version}), libroot-graf2d-gpad-dev, libroot-graf3d-g3d-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+-Description: Event generator library for ROOT
++Description: Event generator library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Eg library for ROOT.
++ This package contains development files of the Eg library for ROOT.
+
+--- a/build/package/common/libroot-montecarlo-vmc.control
++++ b/build/package/common/libroot-montecarlo-vmc.control
+@@ -3,7 +3,7 @@
+ Architecture: any
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Recommends: root-vmc
+-Description: Virtual Monte-Carlo (simulation) library for ROOT
++Description: Virtual Monte-Carlo library for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+@@ -16,10 +16,10 @@
+ Depends: libroot-montecarlo-vmc at libvers@ (= ${binary:Version}), libroot-geom-dev, libroot-montecarlo-eg-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+-Description: Virtual Monte-Carlo (simulation) library for ROOT
++Description: Virtual Monte-Carlo library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Vmc library for ROOT.
++ This package contains development files of the Vmc library for ROOT.
+
+--- a/build/package/common/libroot-net-auth.control
++++ b/build/package/common/libroot-net-auth.control
+@@ -16,10 +16,11 @@
+ Depends: libroot-net-auth at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<= 5.19.01-1), libroot-core-dev (<< 5.30.00-1)
+-Description: Authentication extension for ROOT
++Description: Authentication extension for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the basic authentication algorithms used by ROOT.
++ This package contains development files of the basic authentication algorithms
++ used by ROOT.
+
+--- a/build/package/common/libroot-net-ldap.control
++++ b/build/package/common/libroot-net-ldap.control
+@@ -3,13 +3,13 @@
+ Section: libs
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Replaces: root-plugin-ldap (<< 5.09.01-1)
+-Description: Ldap extension for ROOT - run-time libraries
++Description: LDAP extension for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Ldap plug-in for ROOT. This gives you
+- access to Ldap directories via ROOT.
++ This package contains the LDAP plugin for ROOT. This gives you
++ access to LDAP directories via ROOT.
+
+ Package: libroot-net-ldap-dev
+ Architecture: any
+@@ -17,12 +17,10 @@
+ Depends: libroot-net-ldap at libvers@ (= ${binary:Version}), libroot-core-dev, libldap2-dev | libldap-dev, ${misc:Depends}
+ Breaks: libroot-ldap-dev (<< 5.19.01-1)
+ Replaces: libroot-ldap-dev (<< 5.19.01-1)
+-Description: Ldap extension for ROOT
++Description: LDAP extension for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Ldap plug-in for ROOT. This gives you
+- access to Ldap directories via ROOT.
+-
++ This package contains the development files of LDAP plugin for ROOT.
+
+--- a/build/package/common/libroot-net.control
++++ b/build/package/common/libroot-net.control
+@@ -15,10 +15,10 @@
+ Depends: libroot-net at libvers@ (= ${binary:Version}), libroot-math-mathcore-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+-Description: Net library for ROOT
++Description: Net library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Net library for ROOT.
++ This package contains development files of the Net library for ROOT.
+
+--- a/build/package/common/libroot-proof-clarens.control
++++ b/build/package/common/libroot-proof-clarens.control
+@@ -4,12 +4,12 @@
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Replaces: root-plugin-clarens (<< 5.09.01-1)
+ Homepage: http://clarens.sourceforge.net
+-Description: Clarens extension for ROOT - run-time libraries
++Description: Clarens extension for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Clarens plug-in for ROOT, for use in a GRID
++ This package contains the Clarens plugin for ROOT, for use in a GRID
+ enabled analysis environment.
+ .
+ The Clarens Grid-Enabled Web Services Framework is an open source,
+@@ -28,8 +28,8 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Clarens plug-in for ROOT, for use in a GRID
+- enabled analysis environment.
++ This package contains the development files of Clarens plugin for ROOT, for
++ use in a GRID enabled analysis environment.
+ .
+ The Clarens Grid-Enabled Web Services Framework is an open source,
+ secure, high-performance "portal" for ubiquitous access to data and
+--- a/build/package/common/libroot-proof-proofplayer.control
++++ b/build/package/common/libroot-proof-proofplayer.control
+@@ -9,7 +9,7 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the PROOF extension ROOT. This provides a
++ This package contains the PROOF extension for ROOT. This provides a
+ client to use in a PROOF environment.
+
+
+@@ -20,12 +20,12 @@
+ Suggests: root-plugin-net-netx, root-plugin-proof-xproof
+ Replaces: root-plugin-proof-proofplayer (<< 5.23.05-1)
+ Breaks: root-plugin-proof-proofplayer (<< 5.23.05-1)
+-Description: PROOF plugin for ROOT
++Description: PROOF plugin for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the PROOF callable extension for ROOT. This
++ This package contains development files of the PROOF extension for ROOT. This
+ provides a client to use in a PROOF environment.
+
+
+--- a/build/package/common/libroot-proof.control
++++ b/build/package/common/libroot-proof.control
+@@ -16,11 +16,11 @@
+ Depends: libroot-proof at libvers@ (= ${binary:Version}), libroot-math-mathcore-dev, libroot-tree-dev, ${misc:Depends}
+ Replaces: root-plugin-proof
+ Breaks: root-plugin-proof (<< 5.19.01-1)
+-Description: PROOF library for ROOT
++Description: PROOF library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the PROOF library for ROOT. This provides a
+- client to use in a PROOF environment.
++ This package contains development files of the PROOF library for ROOT. This
++ provides a client to use in a PROOF environment.
+
+--- a/build/package/common/libroot-roofit.control
++++ b/build/package/common/libroot-roofit.control
+@@ -42,4 +42,6 @@
+ primarily targeted to the high-energy physicists using the ROOT
+ analysis environment, but the general nature of the package make it
+ suitable for adoption in different disciplines as well.
++ .
++ This package provides development files of RooFit.
+
+--- a/build/package/common/libroot-tmva.control
++++ b/build/package/common/libroot-tmva.control
+@@ -56,4 +56,6 @@
+ evaluation). In addition all these methods can be tested in parallel,
+ and hence their performance on a particular data set may easily be
+ compared.
++ .
++ This package provides development files of TMVA package for ROOT.
+
+--- a/build/package/common/libroot-tree-treeplayer.control
++++ b/build/package/common/libroot-tree-treeplayer.control
+@@ -14,10 +14,10 @@
+ Breaks: libroot-dev (<< 5.19.01-1)
+ Replaces: libroot-dev
+ Depends: libroot-tree-treeplayer at libvers@ (= ${binary:Version}), libroot-tree-dev, libroot-graf2d-gpad-dev, libroot-graf3d-g3d-dev, ${misc:Depends}
+-Description: Library to loop over a ROOT tree
++Description: Library to loop over a ROOT tree - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- Plug-in to loop over a ROOT tree.
++ This package provides development files to loop over a ROOT tree.
+
+--- a/build/package/common/libroot-tree.control
++++ b/build/package/common/libroot-tree.control
+@@ -16,10 +16,10 @@
+ Depends: libroot-tree at libvers@ (= ${binary:Version}), libroot-core-dev, ${misc:Depends}
+ Replaces: libroot-dev
+ Breaks: libroot-dev (<< 5.19.01-1)
+-Description: Tree library for ROOT
++Description: Tree library for ROOT - development files
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Tree library for ROOT.
++ This package contains development files of the Tree library for ROOT.
+
+--- a/build/package/common/root-plugin-graf2d-qt.control
++++ b/build/package/common/root-plugin-graf2d-qt.control
+@@ -1,12 +1,11 @@
+ Package: root-plugin-graf2d-qt
+ Architecture: any
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+-Description: Qt plugin for ROOT
++Description: Graf2d Qt plugin for ROOT
+ The ROOT system provides a set of OO frameworks with all the
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains the Qt plug-in for ROOT. This plugin
+- provides an abstraction over a display. Windows are created via Qt.
+-
++ This package contains the Graf2d Qt plug-in for ROOT. This plugin
++ provides Qt interfaces of Graf2d library.
+
+--- a/build/package/common/libroot-html.control
++++ b/build/package/common/libroot-html.control
+@@ -21,6 +21,6 @@
+ functionality needed to handle and analyze large amounts of data
+ efficiently.
+ .
+- This package contains classes to automatically extract documentation
+- from marked up sources.
++ This package contains development files of classes to automatically extract
++ documentation from marked up sources.
+
diff --git a/debian/patches/63-extend-libroot-static-description.patch b/debian/patches/63-extend-libroot-static-description.patch
new file mode 100644
index 0000000..b8f69cc
--- /dev/null
+++ b/debian/patches/63-extend-libroot-static-description.patch
@@ -0,0 +1,14 @@
+diff --git a/build/package/common/libroot-core.control b/build/package/common/libroot-core.control
+index 6661bb1..86cc2ac 100644
+--- a/build/package/common/libroot-core.control
++++ b/build/package/common/libroot-core.control
+@@ -44,5 +44,9 @@ Architecture: any
+ Depends: ${shlibs:Depends}, ${misc:Depends}
+ Recommends: libroot-core-dev
+ Description: Static archive of ROOT libraries
++ The ROOT system provides a set of OO frameworks with all the
++ functionality needed to handle and analyze large amounts of data
++ efficiently.
++ .
+ This package contains static archive of the ROOT classes.
+
diff --git a/debian/patches/64-support-mipsel.patch b/debian/patches/64-support-mipsel.patch
new file mode 100644
index 0000000..f885456
--- /dev/null
+++ b/debian/patches/64-support-mipsel.patch
@@ -0,0 +1,11 @@
+--- a/configure
++++ b/configure
+@@ -1177,7 +1177,7 @@
+ linux:alpha:*) arch=linuxalphagcc ;;
+ linux:arm*:*) arch=linuxarm ;;
+ linux:hppa*:*) arch=linux ;;
+- linux:mips:*) arch=linuxmips ;;
++ linux:mips*:*) arch=linuxmips ;;
+ linux:sparc*:*) arch=linux ;;
+ linux:parisc*:*) arch=linuxhppa ;;
+ linux:ppc64*:*) arch=linuxppc64gcc ;;
diff --git a/debian/patches/66-build-cintex-only-on-x86-x64.patch b/debian/patches/66-build-cintex-only-on-x86-x64.patch
new file mode 100644
index 0000000..0a7a8e2
--- /dev/null
+++ b/debian/patches/66-build-cintex-only-on-x86-x64.patch
@@ -0,0 +1,15 @@
+--- a/build/package/lib/makelists.sh
++++ b/build/package/lib/makelists.sh
+@@ -85,6 +85,12 @@
+ cint/cint) set_lib_names core "" root-system-bin
+ extra="ALLLIBS=${prefix}/lib/root/libCint.so" ;;
+ # extra="NOMAP=1 ALLLIBS=${prefix}/lib/root/libCint.so"
++ cint/cintex) case `uname -m` in
++ i*86 | x86_64)
++ set_lib_names core "" root-system-bin ;;
++ *)
++ continue ;;
++ esac ;;
+ cint/reflex) set_lib_names core "" libroot-core-dev
+ extra="REFLEXLIB=${prefix}/lib/root/libReflex.so" ;;
+ cint/cling) continue ;;
diff --git a/debian/patches/67-generate-iosenum.h.patch b/debian/patches/67-generate-iosenum.h.patch
new file mode 100644
index 0000000..a74ad01
--- /dev/null
+++ b/debian/patches/67-generate-iosenum.h.patch
@@ -0,0 +1,27 @@
+Generate iosenum.h if not officially provided for the arch.
+
+--- a/cint/cint/Module.mk
++++ b/cint/cint/Module.mk
+@@ -301,15 +301,17 @@
+ $(IOSENUM):
+ $(MAKEDIR)
+ @(if [ ! -r $(IOSENUMA) ]; then \
+- echo "Missing $(IOSENUMA), run: make $IOSENUMA)"; \
+- else \
+- cp $(IOSENUMA) $@; \
+- fi)
++ echo "Missing $(IOSENUMA), run: make $(IOSENUMA)"; \
++ $(MAKE) $(IOSENUMA); \
++ fi; \
++ cp $(IOSENUMA) $@)
+
+ $(IOSENUMA): $(CINTTMP)
+ @(if [ ! -r $@ ]; then \
+ echo "Making $@..."; \
+- $(CINTTMP) $(CINTTMPINC) -Iinclude $(IOSENUMC) > /dev/null; \
++ $(CINTTMP) $(CINTTMPINC) \
++ -I$(ROOT_SRCDIR)/cmake/scripts -Iinclude \
++ $(IOSENUMC) > /dev/null; \
+ mv iosenum.h $@; \
+ else \
+ touch $@; \
diff --git a/debian/patches/68-po.patch b/debian/patches/68-po.patch
new file mode 100644
index 0000000..c303a35
--- /dev/null
+++ b/debian/patches/68-po.patch
@@ -0,0 +1,215 @@
+diff --git a/build/package/debian/po/cs.po b/build/package/debian/po/cs.po
+index 3a42550..cc1588f 100644
+--- a/build/package/debian/po/cs.po
++++ b/build/package/debian/po/cs.po
+@@ -11,6 +11,7 @@ msgstr ""
+ "PO-Revision-Date: 2009-02-28 13:37+0100\n"
+ "Last-Translator: Miroslav Kure <kurem at debian.cz>\n"
+ "Language-Team: Czech <debian-l10n-czech at lists.debian.org>\n"
++"Language: cs\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff --git a/build/package/debian/po/da.po b/build/package/debian/po/da.po
+index 69cfa7b..e1a862c 100644
+--- a/build/package/debian/po/da.po
++++ b/build/package/debian/po/da.po
+@@ -20,6 +20,7 @@ msgstr ""
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+ "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+ "Language-Team: LANGUAGE <LL at li.org>\n"
++"Language: \n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=ISO-8859-1\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff --git a/build/package/debian/po/de.po b/build/package/debian/po/de.po
+index a92ae48..dbc791d 100644
+--- a/build/package/debian/po/de.po
++++ b/build/package/debian/po/de.po
+@@ -11,6 +11,7 @@ msgstr ""
+ "PO-Revision-Date: 2009-02-18 19:41+0100\n"
+ "Last-Translator: Thomas Müller <thomas_mueller_ffb at online.de>\n"
+ "Language-Team: de <debian-l10n-german at lists.debian.org>\n"
++"Language: \n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff --git a/build/package/debian/po/es.po b/build/package/debian/po/es.po
+index 9c26c01..f4d7837 100644
+--- a/build/package/debian/po/es.po
++++ b/build/package/debian/po/es.po
+@@ -32,6 +32,7 @@ msgstr ""
+ "PO-Revision-Date: 2009-02-16 17:40+0100\n"
+ "Last-Translator: Francisco Javier Cuadrado <fcocuadrado at gmail.com>\n"
+ "Language-Team: Debian l10n Spanish <debian-l10n-spanish at lists.debian.org>\n"
++"Language: \n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff --git a/build/package/debian/po/eu.po b/build/package/debian/po/eu.po
+index 57db5af..34e7b71 100644
+--- a/build/package/debian/po/eu.po
++++ b/build/package/debian/po/eu.po
+@@ -13,6 +13,7 @@ msgstr ""
+ "PO-Revision-Date: 2009-02-18 21:43+0100\n"
+ "Last-Translator: Iñaki Larrañaga Murgoitio <dooteo at euskalgnu.org>\n"
+ "Language-Team: Basque <itzulpena at euskalgnu.org>\n"
++"Language: eu\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff --git a/build/package/debian/po/fi.po b/build/package/debian/po/fi.po
+index d21199c..5ce1a41 100644
+--- a/build/package/debian/po/fi.po
++++ b/build/package/debian/po/fi.po
+@@ -6,6 +6,7 @@ msgstr ""
+ "PO-Revision-Date: 2009-03-04 19:24+0200\n"
+ "Last-Translator: Esko Arajärvi <edu at iki.fi>\n"
+ "Language-Team: Finnish <debian-l10n-finnish at lists.debian.org>\n"
++"Language: fi\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=utf-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff --git a/build/package/debian/po/fr.po b/build/package/debian/po/fr.po
+index 8ef96e4..78c3f8c 100644
+--- a/build/package/debian/po/fr.po
++++ b/build/package/debian/po/fr.po
+@@ -12,6 +12,7 @@ msgstr ""
+ "PO-Revision-Date: 2009-02-15 14:30+0100\n"
+ "Last-Translator: Christian Perrier <bubulle at debian.org>\n"
+ "Language-Team: French <debian-l10n-french at lists.debian.org>\n"
++"Language: fr\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff --git a/build/package/debian/po/gl.po b/build/package/debian/po/gl.po
+index 14072d7..47b06f4 100644
+--- a/build/package/debian/po/gl.po
++++ b/build/package/debian/po/gl.po
+@@ -11,6 +11,7 @@ msgstr ""
+ "PO-Revision-Date: 2009-02-15 21:39+0100\n"
+ "Last-Translator: marce villarino <mvillarino at users.sourceforge.net>\n"
+ "Language-Team: gl <proxecto at trasno.net>\n"
++"Language: \n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+@@ -31,8 +32,8 @@ msgid ""
+ "interest of cross-platform compatibility\". This is no longer the case, but "
+ "they are still available from third parties."
+ msgstr ""
+-"Os tipos de letra contidos neste paquete fornecíaos Microsoft «no interese da "
+-"compatibilidade entre plataformas». Xa non é o caso, pero aínda están "
++"Os tipos de letra contidos neste paquete fornecíaos Microsoft «no interese "
++"da compatibilidade entre plataformas». Xa non é o caso, pero aínda están "
+ "dispoñíbeis grazas a terceiros."
+
+ #. Type: note
+diff --git a/build/package/debian/po/it.po b/build/package/debian/po/it.po
+index 339608a..1e49281 100644
+--- a/build/package/debian/po/it.po
++++ b/build/package/debian/po/it.po
+@@ -11,6 +11,7 @@ msgstr ""
+ "PO-Revision-Date: 2009-02-21 14:42+0100\n"
+ "Last-Translator: Luca Monducci <luca.mo at tiscali.it>\n"
+ "Language-Team: Italian <debian-l10n-italian at lists.debian.org>\n"
++"Language: it\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff --git a/build/package/debian/po/ja.po b/build/package/debian/po/ja.po
+index 5746f44..70ea15f 100644
+--- a/build/package/debian/po/ja.po
++++ b/build/package/debian/po/ja.po
+@@ -10,6 +10,7 @@ msgstr ""
+ "PO-Revision-Date: 2009-09-12 04:26+0900\n"
+ "Last-Translator: Hideki Yamane (Debian-JP) <henrich at debian.or.jp>\n"
+ "Language-Team: Japanese <debian-japanese at lists.debian.org>\n"
++"Language: ja\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+@@ -41,8 +42,8 @@ msgid ""
+ "changes to the file name or packaging format."
+ msgstr ""
+ "これらのフォントは自分で利用する範囲においては自由にダウンロードして利用でき"
+-"ますが、ファイル名の変更やパッケージ形式の変更も含め、改変しての再配布は許され"
+-"ていません。"
++"ますが、ファイル名の変更やパッケージ形式の変更も含め、改変しての再配布は許さ"
++"れていません。"
+
+ #. Type: string
+ #. Description
+@@ -115,4 +116,3 @@ msgstr ""
+ "圧縮済みマイクロソフト社製コアフォントのアーカイブをずっと保存しておきたい場"
+ "合は、保存しておきたいディレクトリの名前を入力してください。この欄を空のまま"
+ "にしておくと、インストール後にファイルは削除されます。"
+-
+diff --git a/build/package/debian/po/pt.po b/build/package/debian/po/pt.po
+index cba8344..aca6ff2 100644
+--- a/build/package/debian/po/pt.po
++++ b/build/package/debian/po/pt.po
+@@ -11,6 +11,7 @@ msgstr ""
+ "PO-Revision-Date: 2009-02-24 20:04+0000\n"
+ "Last-Translator: Américo Monteiro <a_monteiro at netcabo.pt>\n"
+ "Language-Team: Portuguese <traduz at debianpt.org>\n"
++"Language: pt\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff --git a/build/package/debian/po/pt_BR.po b/build/package/debian/po/pt_BR.po
+index bab488f..e169355 100644
+--- a/build/package/debian/po/pt_BR.po
++++ b/build/package/debian/po/pt_BR.po
+@@ -12,6 +12,7 @@ msgstr ""
+ "PO-Revision-Date: 2008-07-25 19:50-0300\n"
+ "Last-Translator: Herbert Parentes Fortes Neto <h_p_f_n at yahoo.com.br>\n"
+ "Language-Team: l10n Portuguese <debian-l10n-portuguese at lists.debian.org>\n"
++"Language: \n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff --git a/build/package/debian/po/ru.po b/build/package/debian/po/ru.po
+index af67cf3..bff9dbc 100644
+--- a/build/package/debian/po/ru.po
++++ b/build/package/debian/po/ru.po
+@@ -12,12 +12,13 @@ msgstr ""
+ "PO-Revision-Date: 2009-02-16 20:34+0300\n"
+ "Last-Translator: Yuri Kozlov <yuray at komyakino.ru>\n"
+ "Language-Team: Russian <debian-l10n-russian at lists.debian.org>\n"
++"Language: ru\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "X-Generator: KBabel 1.11.4\n"
+-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
++"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
++"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+ #. Type: note
+ #. Description
+diff --git a/build/package/debian/po/sv.po b/build/package/debian/po/sv.po
+index 0427c39..84e87b9 100644
+--- a/build/package/debian/po/sv.po
++++ b/build/package/debian/po/sv.po
+@@ -11,6 +11,7 @@ msgstr ""
+ "PO-Revision-Date: 2009-02-18 13:16+0100\n"
+ "Last-Translator: Martin Bagge <brother at bsnet.se>\n"
+ "Language-Team: swedish <debian-l10n-swedish at lists.debian.org>\n"
++"Language: \n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+diff --git a/build/package/debian/po/vi.po b/build/package/debian/po/vi.po
+index 5ea98c2..754b4bd 100644
+--- a/build/package/debian/po/vi.po
++++ b/build/package/debian/po/vi.po
+@@ -10,6 +10,7 @@ msgstr ""
+ "PO-Revision-Date: 2009-02-16 22:40+1030\n"
+ "Last-Translator: Clytie Siddall <clytie at riverland.net.au>\n"
+ "Language-Team: Vietnamese <vi-VN at googlegroups.com>\n"
++"Language: vi\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
diff --git a/debian/patches/69-support-pythia8.patch b/debian/patches/69-support-pythia8.patch
new file mode 100644
index 0000000..a082177
--- /dev/null
+++ b/debian/patches/69-support-pythia8.patch
@@ -0,0 +1,25 @@
+--- a/configure
++++ b/configure
+@@ -6095,6 +6095,7 @@
+ test "x$enable_gviz" = "xyes" && pl="$pl root-plugin-graf2d-gviz"
+ test "x$enable_minuit2" = "xyes" && pl="$pl root-plugin-math-minuit2"
+ test "x$enable_pythia6" = "xyes" && pl="$pl root-plugin-montecarlo-pythia6"
++ test "x$enable_pythia8" = "xyes" && pl="$pl root-plugin-montecarlo-pythia8"
+ test "x$enable_alien" = "xyes" && pl="$pl root-plugin-net-alien"
+ test "x$enable_globus" = "xyes" && pl="$pl root-plugin-net-globus"
+ test "x$enable_krb5" = "xyes" && pl="$pl root-plugin-net-krb5"
+--- a/build/package/lib/makebuilddepend.sh
++++ b/build/package/lib/makebuilddepend.sh
+@@ -272,9 +272,9 @@
+ root-plugin-math-fumili) ;;
+ root-plugin-math-minuit2) ;;
+ root-plugin-math-mlp) ;;
+- root-plugin-montecarlo-pythia5) echo -n ", pythia5-dev" ;;
+- root-plugin-montecarlo-pythia6) echo -n ", pythia6-dev" ;;
+- root-plugin-montecarlo-pythia8) echo -n ", pythia8-dev" ;;
++ root-plugin-montecarlo-pythia5) echo -n ", libpythia5-dev" ;;
++ root-plugin-montecarlo-pythia6) echo -n ", libpythia6-dev" ;;
++ root-plugin-montecarlo-pythia8) echo -n ", libpythia8-dev" ;;
+ root-plugin-net-alien) echo -n ", libgapiui-dev" ;;
+ root-plugin-net-globus)
+ echo -n ", libglobus-gss-assist-dev"
diff --git a/debian/patches/70-ignore-macosx-headers.patch b/debian/patches/70-ignore-macosx-headers.patch
new file mode 100644
index 0000000..9634e91
--- /dev/null
+++ b/debian/patches/70-ignore-macosx-headers.patch
@@ -0,0 +1,11 @@
+--- a/build/package/lib/makelists.sh
++++ b/build/package/lib/makelists.sh
+@@ -48,7 +48,7 @@
+ # Loop over the directories, and update the file lists based on the
+ # information in Module.mk files in each subdirectory
+ #
+-l=`find . -name "Module.mk" -print0 | xargs -L 1 -0 dirname | sort -u | sed 's,./,,'`
++l=`find . -name "Module.mk" -print0 | xargs -L 1 -0 dirname | sort -u | sed 's,./,,' | grep -v macosx`
+ for d in $l ; do
+ #
+ # If there's no Module.mk file in the currently inspected
diff --git a/debian/patches/71-remove-root-plugin-proof-xproof.patch b/debian/patches/71-remove-root-plugin-proof-xproof.patch
new file mode 100644
index 0000000..426d0c0
--- /dev/null
+++ b/debian/patches/71-remove-root-plugin-proof-xproof.patch
@@ -0,0 +1,10 @@
+--- a/configure
++++ b/configure
+@@ -6155,7 +6155,6 @@
+ root-plugin-io-sql \
+ root-plugin-io-xml \
+ root-plugin-math-fumili \
+- root-plugin-proof-xproof \
+ root-plugin-tree-treeviewer \
+ root-system-proofd \
+ root-system-rootd \
diff --git a/debian/patches/72-rpath-ldflag.patch b/debian/patches/72-rpath-ldflag.patch
new file mode 100644
index 0000000..28a0c82
--- /dev/null
+++ b/debian/patches/72-rpath-ldflag.patch
@@ -0,0 +1,11 @@
+--- a/config/root-config.in
++++ b/config/root-config.in
+@@ -651,7 +651,7 @@
+ ;;
+ --ldflags)
+ ### Output linker flags
+- out="$out $auxldflags"
++ out="-Wl,-rpath,/usr/lib/root $out $auxldflags"
+ ;;
+ --libs)
+ ### Output regular ROOT libraries. If the user said --glibs --libs,
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..f343105
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,68 @@
+#01-remove-afterbase-h.patch
+02-build-libroot-misc-memstat-package.patch
+03-build-libroot-bonjour-package.patch
+04-build-libroot-html-package.patch
+05-rename-package-libroot-proof-proofplayer.patch
+06-fix-configre-and-controls.patch
+07-add-python-support.patch
+08-fix-conflicts.patch
+09-fix-spelling-allows-one-to.patch
+10-remove-obsolete-build-dep.patch
+11-fix-circular-dep.patch
+12-fix-net-auth-control.patch
+13-fix-circular-dep.patch
+15-enable-extra-ldflags.patch
+16-fix-libroot-html-control.patch
+17-remove-ld.so.conf.d-in-install-file.patch
+18-create-so-symlinks-for-plugins.patch
+19-remove-embedded-library-gl2ps.patch
+20-add-libgl2ps-build-dep.patch
+21-fix-manpage-hyphen.patch
+22-fix-typo-succes-success.patch
+23-fix-typo-preceed-preced.patch
+24-fix-typo-informations-information.patch
+25-fix-typo-childs-children.patch
+26-fix-typo-avaliable-available.patch
+27-fix-typo-writeable-writable.patch
+28-fix-typo-comand-command.patch
+29-fix-typo-unkown-unknown.patch
+30-fix-typo-wierd-weird.patch
+31-fix-typo-wheter-whether.patch
+32-fix-typo-unecessary-unnecessary.patch
+33-fix-typo-splitted-split.patch
+34-fix-typo-registerd-registered.patch
+35-fix-typo-recieve-receive.patch
+37-fix-typo-processsing-processing.patch
+38-fix-typo-ouput-output.patch
+39-fix-typo-mutiple-multiple.patch
+40-fix-typo-lenght-length.patch
+41-fix-typo-interupted-interrupted.patch
+42-fix-typo-independant-independent.patch
+43-fix-typo-inconsistant-inconsistent.patch
+45-fix-typo-expresion-expression.patch
+46-fix-typo-explicitely-explicitly.patch
+47-fix-typo-enviroment-environment.patch
+48-fix-typo-deafult-default.patch
+49-fix-typo-continous-continuous.patch
+50-fix-typo-completly-completely.patch
+51-fix-typo-commited-committed.patch
+52-fix-typo-choosen-chosen.patch
+53-fix-typo-backgroud-Background.patch
+54-fix-typo-auxilliary-auxiliary.patch
+55-fix-typo-authentification-authentication.patch
+56-fix-typo-appropiate-appropriate.patch
+57-fix-typo-another.patch
+58-fix-typo-environement-environment.patch
+59-remove-duplicate-field.patch
+60-remove-obsolete-package-dependency.patch
+61-fix-libjpeg-dev-dependency.patch
+62-fix-duplicated-package-description.patch
+63-extend-libroot-static-description.patch
+64-support-mipsel.patch
+66-build-cintex-only-on-x86-x64.patch
+67-generate-iosenum.h.patch
+68-po.patch
+69-support-pythia8.patch
+70-ignore-macosx-headers.patch
+71-remove-root-plugin-proof-xproof.patch
+72-rpath-ldflag.patch
diff --git a/build/package/debian/po/POTFILES.in b/debian/po/POTFILES.in
similarity index 100%
copy from build/package/debian/po/POTFILES.in
copy to debian/po/POTFILES.in
diff --git a/build/package/debian/po/cs.po b/debian/po/cs.po
similarity index 100%
copy from build/package/debian/po/cs.po
copy to debian/po/cs.po
diff --git a/build/package/debian/po/da.po b/debian/po/da.po
similarity index 100%
copy from build/package/debian/po/da.po
copy to debian/po/da.po
diff --git a/build/package/debian/po/de.po b/debian/po/de.po
similarity index 100%
copy from build/package/debian/po/de.po
copy to debian/po/de.po
diff --git a/build/package/debian/po/es.po b/debian/po/es.po
similarity index 100%
copy from build/package/debian/po/es.po
copy to debian/po/es.po
diff --git a/build/package/debian/po/eu.po b/debian/po/eu.po
similarity index 100%
copy from build/package/debian/po/eu.po
copy to debian/po/eu.po
diff --git a/build/package/debian/po/fi.po b/debian/po/fi.po
similarity index 100%
copy from build/package/debian/po/fi.po
copy to debian/po/fi.po
diff --git a/build/package/debian/po/fr.po b/debian/po/fr.po
similarity index 100%
copy from build/package/debian/po/fr.po
copy to debian/po/fr.po
diff --git a/build/package/debian/po/gl.po b/debian/po/gl.po
similarity index 100%
copy from build/package/debian/po/gl.po
copy to debian/po/gl.po
diff --git a/build/package/debian/po/it.po b/debian/po/it.po
similarity index 100%
copy from build/package/debian/po/it.po
copy to debian/po/it.po
diff --git a/build/package/debian/po/ja.po b/debian/po/ja.po
similarity index 100%
copy from build/package/debian/po/ja.po
copy to debian/po/ja.po
diff --git a/build/package/debian/po/pt.po b/debian/po/pt.po
similarity index 100%
copy from build/package/debian/po/pt.po
copy to debian/po/pt.po
diff --git a/build/package/debian/po/pt_BR.po b/debian/po/pt_BR.po
similarity index 100%
copy from build/package/debian/po/pt_BR.po
copy to debian/po/pt_BR.po
diff --git a/build/package/debian/po/ru.po b/debian/po/ru.po
similarity index 100%
copy from build/package/debian/po/ru.po
copy to debian/po/ru.po
diff --git a/build/package/debian/po/sv.po b/debian/po/sv.po
similarity index 100%
copy from build/package/debian/po/sv.po
copy to debian/po/sv.po
diff --git a/build/package/debian/po/templates.pot b/debian/po/templates.pot
similarity index 100%
copy from build/package/debian/po/templates.pot
copy to debian/po/templates.pot
diff --git a/build/package/debian/po/vi.po b/debian/po/vi.po
similarity index 100%
copy from build/package/debian/po/vi.po
copy to debian/po/vi.po
diff --git a/build/package/debian/root-plugin-geom-gdml.links.in b/debian/root-plugin-geom-gdml.links.in
similarity index 100%
copy from build/package/debian/root-plugin-geom-gdml.links.in
copy to debian/root-plugin-geom-gdml.links.in
diff --git a/build/package/debian/root-plugin-net-xrootd.links.in b/debian/root-plugin-net-xrootd.links.in
similarity index 100%
copy from build/package/debian/root-plugin-net-xrootd.links.in
copy to debian/root-plugin-net-xrootd.links.in
diff --git a/build/package/debian/root-system-bin.desktop.in b/debian/root-system-bin.desktop.in
similarity index 100%
copy from build/package/debian/root-system-bin.desktop.in
copy to debian/root-system-bin.desktop.in
diff --git a/build/package/debian/root-system-bin.menu.in b/debian/root-system-bin.menu.in
similarity index 100%
copy from build/package/debian/root-system-bin.menu.in
copy to debian/root-system-bin.menu.in
diff --git a/build/package/debian/root-system-bin.mime b/debian/root-system-bin.mime
similarity index 100%
copy from build/package/debian/root-system-bin.mime
copy to debian/root-system-bin.mime
diff --git a/debian/root-system-bin.overrides b/debian/root-system-bin.overrides
new file mode 100644
index 0000000..cd44699
--- /dev/null
+++ b/debian/root-system-bin.overrides
@@ -0,0 +1 @@
+package-contains-empty-directory usr/lib/root/
diff --git a/build/package/debian/root-system-bin.postinst.in b/debian/root-system-bin.postinst.in
similarity index 100%
copy from build/package/debian/root-system-bin.postinst.in
copy to debian/root-system-bin.postinst.in
diff --git a/build/package/debian/root-system-bin.preinst.in b/debian/root-system-bin.preinst.in
similarity index 100%
copy from build/package/debian/root-system-bin.preinst.in
copy to debian/root-system-bin.preinst.in
diff --git a/build/package/debian/root-system-bin.prerm.in b/debian/root-system-bin.prerm.in
similarity index 100%
copy from build/package/debian/root-system-bin.prerm.in
copy to debian/root-system-bin.prerm.in
diff --git a/build/package/debian/root-system-bin.sharedmimeinfo b/debian/root-system-bin.sharedmimeinfo
similarity index 100%
copy from build/package/debian/root-system-bin.sharedmimeinfo
copy to debian/root-system-bin.sharedmimeinfo
diff --git a/build/package/debian/root-system-bin.xpm b/debian/root-system-bin.xpm
similarity index 100%
copy from build/package/debian/root-system-bin.xpm
copy to debian/root-system-bin.xpm
diff --git a/build/package/debian/root-system-common.copyright b/debian/root-system-common.copyright
similarity index 100%
copy from build/package/debian/root-system-common.copyright
copy to debian/root-system-common.copyright
diff --git a/build/package/debian/root-system-common.dirs.in b/debian/root-system-common.dirs.in
similarity index 100%
copy from build/package/debian/root-system-common.dirs.in
copy to debian/root-system-common.dirs.in
diff --git a/build/package/debian/root-system-common.links.in b/debian/root-system-common.links.in
similarity index 100%
copy from build/package/debian/root-system-common.links.in
copy to debian/root-system-common.links.in
diff --git a/build/package/debian/root-system-doc.docs b/debian/root-system-doc.docs
similarity index 100%
copy from build/package/debian/root-system-doc.docs
copy to debian/root-system-doc.docs
diff --git a/build/package/debian/root-system-proofd.README.Debian b/debian/root-system-proofd.README.Debian
similarity index 100%
copy from build/package/debian/root-system-proofd.README.Debian
copy to debian/root-system-proofd.README.Debian
diff --git a/build/package/debian/root-system-proofd.default b/debian/root-system-proofd.default
similarity index 100%
copy from build/package/debian/root-system-proofd.default
copy to debian/root-system-proofd.default
diff --git a/build/package/debian/root-system-proofd.examples b/debian/root-system-proofd.examples
similarity index 100%
copy from build/package/debian/root-system-proofd.examples
copy to debian/root-system-proofd.examples
diff --git a/debian/root-system-proofd.init.in b/debian/root-system-proofd.init.in
new file mode 100644
index 0000000..17ed638
--- /dev/null
+++ b/debian/root-system-proofd.init.in
@@ -0,0 +1,139 @@
+#! /bin/sh
+#
+# skeleton Written by Miquel van Smoorenburg <miquels at cistron.nl>.
+# Modified for Debian
+# by Ian Murdock <imurdock at gnu.ai.mit.edu>.
+#
+# Version: @(#)skeleton 1.9 26-Feb-2001 miquels at cistron.nl
+#
+### BEGIN INIT INFO
+# Provides: root-system-proofd
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Should-Start: $network, root-file-server
+# Should-Stop: $network, root-file-server
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Parallel ROOt Facility Server
+# Description: Parallel ROOt Facility Server to let the node
+# participate in a PROOF cluster, either as slave or
+# master.
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=@prefix@/bin/proofd
+NAME=proofd
+DESC="Parallel ROOt Facility Server"
+
+test -x $DAEMON || exit 0
+
+# Include root defaults if available
+if [ -f @sysconfdir@/default/root-system-proofd ] ; then
+ . @sysconfdir@/default/root-system-proofd
+fi
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+. /lib/lsb/init-functions
+
+# Check if inetd is controlling proofd
+if test -f /var/run/inetd.pid ; then
+ # Inetd is running
+ if grep -q ^$NAME /etc/inetd.conf > /dev/null 2>&1 ; then
+ # PROOFD is controlled by inetd.
+ ENABLE_PROOFD=no
+ fi
+fi
+# Check if xinetd is controlling proofd
+if test -f /var/run/xinetd.pid ; then
+ # Inetd is running
+ if grep -q ^$NAME /etc/inetd.conf > /dev/null 2>&1 ; then
+ # PROOFD is controlled by xinetd.
+ ENABLE_PROOFD=no
+ fi
+ # old name
+ for i in proofd root-proofd root-system-proofd ; do
+ if test ! -f /etc/xinetd.d/$i ; then continue ; fi
+ if grep "disable[[:space:]]*= *[Nn][Oo]" /etc/xinetd.d/$i \
+ > /dev/null 2>&1 ; then
+ # PROOFD is controlled by xinetd.
+ ENABLE_PROOFD=no
+ break
+ fi
+ done
+fi
+
+# Check if we're enabled
+case `echo $ENABLE_PROOFD | tr '[:upper:]' '[:lower:]'` in
+ yes) ;;
+ *) exit 0;;
+esac
+
+# function to start daemon
+startit ()
+{
+ start-stop-daemon --make-pidfile --start --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS $PROOF_DIR
+ ret=$?
+ if test $ret -ne 0 ; then
+ echo "Failed"
+ exit 1
+ fi
+ pidof $DAEMON > /var/run/$NAME.pid 2> /dev/null
+ return $ret
+}
+
+# function to stop daemon
+stopit ()
+{
+ start-stop-daemon --stop --oknodo --quiet --pidfile /var/run/$NAME.pid \
+ --exec $DAEMON
+ ret=$?
+ if test $ret -ne 0 ; then
+ echo "Failed"
+ exit 1
+ fi
+ return $ret
+}
+
+# Executable code
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ startit
+ ret=$?
+ [ "$VERBOSE" != no ] && log_end_msg $ret
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ stopit
+ ret=$?
+ [ "$VERBOSE" != no ] && log_end_msg $ret
+ ;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart".
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ stopit
+ sleep 1
+ startit
+ ret=$?
+ log_end_msg $ret
+ ;;
+ *)
+ N=@sysconfdir@/init.d/root-system-$NAME
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
+#
+# EOF
+#
diff --git a/build/package/debian/root-system-proofd.links.in b/debian/root-system-proofd.links.in
similarity index 100%
copy from build/package/debian/root-system-proofd.links.in
copy to debian/root-system-proofd.links.in
diff --git a/debian/root-system-proofd.overrides b/debian/root-system-proofd.overrides
new file mode 100644
index 0000000..cd44699
--- /dev/null
+++ b/debian/root-system-proofd.overrides
@@ -0,0 +1 @@
+package-contains-empty-directory usr/lib/root/
diff --git a/build/package/debian/root-system-proofd.prerm b/debian/root-system-proofd.prerm
similarity index 100%
copy from build/package/debian/root-system-proofd.prerm
copy to debian/root-system-proofd.prerm
diff --git a/debian/root-system-rootd.default b/debian/root-system-rootd.default
new file mode 100644
index 0000000..3e8b814
--- /dev/null
+++ b/debian/root-system-rootd.default
@@ -0,0 +1,87 @@
+# Defaults for rootd initscript
+# sourced by /etc/init.d/root-system-rootd
+# installed at /etc/default/root-system-rootd by the maintainer scripts
+#
+# Please refer to the rootd(1) man(1) page for more information on
+# command line parameters.
+#
+# This is a POSIX shell fragment
+#
+# If this is set to `yes', then the server is started.
+# Anything else disables the server
+#
+# Note, that you can not run rootd via both inetd and SYSV init; at
+# least not if they are both using the same port (per default both
+# use 1094). So either disable the inetd or the SYSV init rootd, or
+# specify separate ports.
+ENABLE_ROOTD=yes
+
+# User to run as (default is `rootd')
+ROOTD_USER=rootd
+
+# Port (range to listen to) (-p)
+# specifies the port number to listen on. Use port-port2 to
+# find the first available port in the indicated range. Use 0-N
+# for range relative to default service port. (default is 1094)
+ROOTD_PORT=
+
+# SSH port (-s)
+# specifies the port number for the sshd daemon used for
+# authentication (default is 22).
+SSH_PORT=
+
+# TCP window size (-b)
+# specifies the tcp window size in bytes (e.g. see
+# http://www.psc.edu/networking/perf_tune.html). Default is
+# 65535. Only change default for pipes with a high
+# bandwidth*delay product.
+#ROOTD_WINDOW_SIZE=65535
+
+# Debug level (-d)
+# level of debug info written to syslogd 0 = no debug
+# (default), 1 = minimum, 2 = medium, 3 = maximum.
+#ROOTD_DEBUG=0
+
+# Access rules configuration file (-D)
+# read access rules from file <rootdaemonrc>. By default
+# <root_etc_dir>/system.rootdaemonrc is used for access rules;
+# for privately started daemons $HOME/.rootdaemonrc (if
+# present) is read first.
+#ROOTD_ACCESS_RULES=
+
+# Run in foreground (-f)
+# run in the foreground (output on the window); useful for
+# debugging purposes. Only a value of "yes" enables.
+#ROOTD_FOREGROUND=
+
+# Disable authentication (-noauth)
+# do not require client authentication. This shouldn't be enabled
+# unless you know what you're doing. Only a value of "yes" enables.
+#ROOTD_NO_AUTH=
+
+# Read only access (-r)
+# files can only be opened in read-only mode. Only a value of
+# "yes" enables.
+#ROOTD_READ_ONLY=
+
+#
+# Temporary director (-T <tmpdir>)
+# specifies the directory path to be used to place temporary
+# files; default is /usr/tmp. Useful when running with limited
+# privileges.
+#ROOTD_TMP=
+
+# Require password (-w)
+# do not check /etc/hosts.equiv, $HOME/.rhosts for
+# password-based authentication; by default these files are
+# checked first by calling ruserok(...); if this option is
+# specified a password is always required. Only a value of
+# "yes" enables.
+#ROOTD_REQUIRE_PASSWD=
+
+# Use this variable to pass other options to the daemon.
+DAEMON_OPTS=
+
+#
+# EOF
+#
diff --git a/build/package/debian/root-system-rootd.examples b/debian/root-system-rootd.examples
similarity index 100%
copy from build/package/debian/root-system-rootd.examples
copy to debian/root-system-rootd.examples
diff --git a/debian/root-system-rootd.init.in b/debian/root-system-rootd.init.in
new file mode 100644
index 0000000..defdf15
--- /dev/null
+++ b/debian/root-system-rootd.init.in
@@ -0,0 +1,160 @@
+#! /bin/bash
+#
+# skeleton Written by Miquel van Smoorenburg <miquels at cistron.nl>.
+# Modified for Debian
+# by Ian Murdock <imurdock at gnu.ai.mit.edu>.
+#
+# Version: @(#)skeleton 1.9 26-Feb-2001 miquels at cistron.nl
+#
+### BEGIN INIT INFO
+# Provides: root-system-rootd
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Should-Start: $network
+# Should-Stop: $network
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: ROOT file server
+# Description: Server of ROOT files via special ROOT protocol
+### END INIT INFO
+#
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=@prefix@/bin/rootd
+NAME=rootd
+DESC="ROOT file server"
+USER=rootd
+test -x $DAEMON || exit 0
+
+# Include root defaults if available
+if [ -f @sysconfdir@/default/root-system-rootd ] ; then
+ . @sysconfdir@/default/root-system-rootd
+fi
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+. /lib/lsb/init-functions
+
+# Check options from system settings
+# User to execute rootd as
+test ! "x$ROOTD_USER" = "x" && USER=$ROOTD_USER
+# Port to listen to
+test ! "x$ROOTD_PORT" = "x" && DAEMON_OPTS="$DAEMON_OPTS -p $ROOTD_PORT"
+# SSH port
+test ! "x$SSH_PORT" = "x" && DAEMON_OPTS="$DAEMON_OPTS -s $SSH_PORT"
+# TCP window size
+test ! "x$ROOTD_WINDOW_SIZE" = "x" && DAEMON_OPTS="$DAEMON_OPTS -b $ROOTD_WINDOW_SIZE"
+# Debug level
+test ! "x$ROOTD_DEBUG" = "x" && DAEMON_OPTS="$DAEMON_OPTS -d $ROOTD_DEBUG"
+# Access rules file
+test ! "x$ROOTD_ACCESS_RULES" = "x" && DAEMON_OPTS="$DAEMON_OPTS -D $ROOTD_ACCESS_RULES"
+# Run in foreground (shouldn't be done in init script)
+test "x$ROOTD_FOREGROUND" = "xyes" && DAEMON_OPTS="$DAEMON_OPTS -f"
+# No client authentication (security issue)
+test "x$ROOTD_NO_AUTH" = "xyes" && DAEMON_OPTS="$DAEMON_OPTS -noauth"
+# files can only be opened read-only
+test "x$ROOTD_READ_ONLY" = "xyes" && DAEMON_OPTS="$DAEMON_OPTS -r"
+# Temporary directory
+test ! "x$ROOTD_TMP" = "x" && DAEMON_OPTS="$DAEMON_OPTS -T $ROOTD_TMP"
+# Require passwords.
+test "x$ROOTD_REQUIRE_PASSWD" = "xyes" && DAEMON_OPTS="$DAEMON_OPTS -w"
+
+
+# Check if rootd is under inetds control
+if test -f /var/run/inetd.pid ; then
+ # Inetd is running
+ if grep -q ^$NAME /etc/inetd.conf > /dev/null 2>&1 ; then
+ # ROOTD is controlled by inetd.
+ ENABLE_ROOTD=no
+ fi
+fi
+# Check if rootd is under xinetds control
+if test -f /var/run/xinetd.pid ; then
+ # Inetd is running
+ if grep -q ^$NAME /etc/inetd.conf > /dev/null 2>&1 ; then
+ # ROOTD is controlled by xinetd.
+ ENABLE_ROOTD=no
+ fi
+ # old name
+ for i in rootd root-rootd root-system-rootd ; do
+ if test ! -f /etc/xinetd.d/$i ; then continue ; fi
+ if test grep "disable[[:space:]]*= *[Nn][Oo]" /etc/xinetd.d/$i \
+ > /dev/null 2>&1 ; then
+ # ROOTD is controlled by xinetd.
+ ENABLE_ROOTD=no
+ break
+ fi
+ done
+fi
+
+# Check if we're enabled at all
+case `echo $ENABLE_ROOTD | tr '[:upper:]' '[:lower:]'` in
+ yes) ;;
+ *) exit 0;;
+esac
+
+
+# Function to start the daemon
+startit()
+{
+ o=`start-stop-daemon --chuid $USER --start --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS`
+ ret=$?
+ test $ret -ne 0 && return 1
+ eval $o
+ # echo " (pid: $ROOTD_PID) "
+ echo $ROOTD_PID > /var/run/$NAME.pid
+ return $ret
+}
+
+# Function to stop the daemon
+stopit()
+{
+ start-stop-daemon --user $USER --stop --oknodo --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON
+ ret=$?
+ test $ret -ne 0 && return 1
+ rm -f /var/run/$NAME.pid
+ return $ret
+}
+
+# Main code
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ startit
+ ret=$?
+ [ "$VERBOSE" != no ] && log_end_msg $ret
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ stopit
+ ret=$?
+ [ "$VERBOSE" != no ] && log_end_msg $ret
+ ;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart".
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ stopit
+ sleep 1
+ startit
+ ret=$?
+ log_end_msg $ret
+ ;;
+ *)
+ N=@sysconfdir@/init.d/root-system-$NAME
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
+#
+# EOF
+#
diff --git a/debian/root-system-rootd.overrides b/debian/root-system-rootd.overrides
new file mode 100644
index 0000000..cd44699
--- /dev/null
+++ b/debian/root-system-rootd.overrides
@@ -0,0 +1 @@
+package-contains-empty-directory usr/lib/root/
diff --git a/debian/root-system-rootd.postinst b/debian/root-system-rootd.postinst
new file mode 100644
index 0000000..af817a5
--- /dev/null
+++ b/debian/root-system-rootd.postinst
@@ -0,0 +1,97 @@
+#! /bin/sh
+
+set -e
+
+case "$1" in
+ configure)
+ # Install user rootd for anonymous file access in /var/spool/rootd
+ # directory.
+ # The lines below are taken from the mysql-server package, and
+ # modified to reflects the needs of rootd.
+
+ # Make sure we can add a user properly
+ if [ ! -x "`which adduser`" ]; then
+ echo "I need adduser(8) from the adduser package !";
+ exit 1;
+ fi
+ if [ ! -x "`which addgroup`" ]; then
+ echo "I need addgroup(8) from the adduser package !";
+ exit 1;
+ fi
+ if [ ! -x "`which usermod`" ]; then
+ echo "I need usermod(8) from the passwd package !";
+ exit 1;
+ fi
+
+ # Now we have to ensure the following state:
+ # /etc/passwd: rootd:x:Anonymous rootd:/var/spool/rootd:/bin/false
+ # /etc/group: rootd:x:72:rootd
+ if ! getent group rootd > /dev/null; then
+ addgroup --system rootd
+ fi
+ if ! getent passwd rootd > /dev/null; then
+ #echo Adding system user: rootd.
+ adduser \
+ --system \
+ --disabled-login \
+ --ingroup rootd \
+ --gecos "Anonymous rootd" \
+ --shell /bin/false \
+ --home /var/spool/rootd \
+ rootd >/dev/null
+ fi
+
+ # creating rootd home directory
+ if ! test -d /var/spool/rootd; then
+ mkdir /var/spool/rootd
+ fi
+
+ # modifying the user
+ # usermod -c "Anonymous rootd" rootd > /dev/null
+ # usermod -d "/var/spool/rootd" rootd > /dev/null
+ # usermod -g "rootd" rootd > /dev/null
+ # usermod -s "/bin/false" rootd > /dev/null
+
+ # Since the home directory was created before putting the user
+ # into the rootd group and moreover we cannot guarantee that
+ # the permissions were correctly *before* calling this script,
+ # we fix them now.
+ #echo
+ #echo "SECURITY: Fixing permission of /var/spool/rootd !"
+ #echo "(I.e. replacing GIDs other than root and rootd with rootd.)"
+ #echo
+ chown rootd:rootd /var/spool/rootd
+ find /var/spool/rootd \
+ -not \( -group root -or -group rootd \) \
+ -exec chgrp rootd {} \;
+
+ # Create the tmp and pub directories in /var/spool/rootd and
+ # make them world read- and writable.
+ if [ ! -d /var/spool/rootd/tmp ] ; then
+ mkdir -p /var/spool/rootd/tmp
+ chmod 1777 /var/spool/rootd/tmp
+ fi
+
+ if [ ! -d /var/spool/rootd/pub ] ; then
+ mkdir -p /var/spool/rootd/pub
+ chmod 1777 /var/spool/rootd/pub
+ fi
+
+ # Nothing to be done here
+ # if [ "$1" = "upgrade" ]
+ # then
+ # start-stop-daemon --stop --quiet --oknodo \
+ # --pidfile /var/run/root.pid \
+ # --exec @prefix@/sbin/root 2>/dev/null || true
+ # fi
+ ;;
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 0
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
diff --git a/debian/root-system-rootd.prerm b/debian/root-system-rootd.prerm
new file mode 100644
index 0000000..2bc3be6
--- /dev/null
+++ b/debian/root-system-rootd.prerm
@@ -0,0 +1,57 @@
+#! /bin/sh
+# prerm script for root-rootd
+#
+# see: dh_installdeb(1)
+
+# Do not set - If we cannot remove the rootd user, it is OK
+set -e
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+case "$1" in
+ remove)
+ if grep ^rootd /etc/inetd.conf > /dev/null 2>&1 ; then
+ update-inetd --remove rootd
+ fi
+ # Remove the rootd user and group
+ # Taken from mysql-server package and modified for ROOT
+ # rm -rf /var/spool/rootd
+ if getent passwd rootd > /dev/null; then
+ deluser --remove-home rootd
+ reason=$?
+ if [ $reason -ne 0 ] ; then
+ # Could not remove user. Ignore.
+ echo "Couldn't remove user rootd, check it. Reason"
+ case $reason in
+ 1) echo "can't update password file" ;;
+ 2) echo "bad command syntax" ;;
+ 6) echo "specified user doesn't exist" ;;
+ 8) echo "user currently logged in" ;;
+ 10) echo "can't update group file" ;;
+ 12) echo "can't remove home directory" ;;
+ *) echo "Unrecognized exit code $reason" ;;
+ esac
+ fi
+ fi
+ ;;
+ upgrade|deconfigure)
+ # Nothing to be done here
+ ;;
+ failed-upgrade)
+ ;;
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 0
+ ;;
+esac
+
+# Now we set fail-on-sub-error so that the debhelper stuff is done correctly.
+# set -e
+
+
+exit 0
+
+
diff --git a/build/package/debian/root-system-xrootd.default b/debian/root-system-xrootd.default
similarity index 100%
copy from build/package/debian/root-system-xrootd.default
copy to debian/root-system-xrootd.default
diff --git a/debian/root-system-xrootd.init.in b/debian/root-system-xrootd.init.in
new file mode 100644
index 0000000..3bc2eff
--- /dev/null
+++ b/debian/root-system-xrootd.init.in
@@ -0,0 +1,224 @@
+#! /bin/sh
+#
+# skeleton Written by Miquel van Smoorenburg <miquels at cistron.nl>.
+# Modified for Debian
+# by Ian Murdock <imurdock at gnu.ai.mit.edu>.
+#
+# Version: @(#)skeleton 1.9 26-Feb-2001 miquels at cistron.nl
+#
+### BEGIN INIT INFO
+# Provides: root-system-xrootd
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Should-Start: $network, $named
+# Should-Stop: $network, $named
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Extended ROOT file server
+# Description: Extended Server of ROOT files via special ROOT
+# protocol, and Open Load Balancer server.
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+XDAEMON=@prefix@/bin/xrootd
+ODAEMON=@prefix@/bin/olbd
+CDAEMON=@prefix@/bin/cmsd
+XNAME=xrootd
+ONAME=olbd
+CNAME=cmsd
+DESC="Extended ROOT file server"
+XDESC="Extended ROOT file server"
+ODESC="Open Load Balancer server"
+CDESC="Cluster Management System server"
+USER=root
+test -x $DAEMON || exit 0
+
+# Include root defaults if available
+if [ -f @sysconfdir@/default/root-system-xrootd ] ; then
+ . @sysconfdir@/default/root-system-xrootd
+fi
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+. /lib/lsb/init-functions
+
+# Check enables
+enable_xrootd=`echo $ENABLE_XROOTD | tr '[:upper:]' '[:lower:]'`
+enable_olbd=`echo $ENABLE_OLBD| tr '[:upper:]' '[:lower:]'`
+enable_cmsd=`echo $ENABLE_CMSD| tr '[:upper:]' '[:lower:]'`
+
+# xrood options
+# Configuration file
+if test "x$XROOTD_CONFIG_FILE" != "x" ; then
+ XDAEMON_OPTS="$XDAEMON_OPTS -c $XROOTD_CONFIG_FILE"
+fi
+# Log file
+if test "x$XROOTD_LOG_FILE" != "x" ; then
+ XDAEMON_OPTS="$XDAEMON_OPTS -l $XROOTD_LOG_FILE"
+fi
+# port to listen to
+if test "x$XROOTD_PORT" != "x" ; then
+ XDAEMON_OPTS="$XDAEMON_OPTS -p $XROOTD_PORT"
+fi
+# Redirection
+if test "x$XROOTD_REDIRECTOR" != "xyes" ; then
+ XDAEMON_OPTS="$XDAEMON_OPTS -r"
+fi
+# Base directory
+if test "x$XROOTD_BASEDIR" != "xyes" ; then
+ XDAEMON_OPTS="$XDAEMON_OPTS $XROOTD_BASEDIR"
+fi
+
+# olbd options
+# Confguration file
+if test "x$OLBD_CONFIG_FILE" != "x" ; then
+ ODAEMON_OPTS="$ODAEMON_OPTS -c $OLBD_CONFIG_FILE"
+fi
+# Log file
+if test "x$OLBD_LOG_FILE" != "x" ; then
+ ODAEMON_OPTS="$ODAEMON_OPTS -l $OLBD_LOG_FILE"
+fi
+# Port to listen to
+if test "x$OLBD_PORT" != "x" ; then
+ ODAEMON_OPTS="$ODAEMON_OPTS -p $OLBD_PORT"
+fi
+# Redirection.
+if test "x$OLBD_REDIRECTOR" != "xyes" ; then
+ ODAEMON_OPTS="$ODAEMON_OPTS -r"
+fi
+
+# cmsd options
+# Confguration file
+if test "x$CMSD_CONFIG_FILE" != "x" ; then
+ CDAEMON_OPTS="$CDAEMON_OPTS -c $CMSD_CONFIG_FILE"
+fi
+# Log file
+if test "x$CMSD_LOG_FILE" != "x" ; then
+ CDAEMON_OPTS="$CDAEMON_OPTS -l $CMSD_LOG_FILE"
+fi
+# Port to listen to
+if test "x$CMSD_PORT" != "x" ; then
+ CDAEMON_OPTS="$CDAEMON_OPTS -p $CMSD_PORT"
+fi
+
+# User
+if test "x$XROOTD_USER" = "xroot" ; then
+ :
+elif test "x$XROOTD_USER" != "x" ; then
+ USER=$XROOTD_USER
+fi
+
+# Check if we're enabled
+case $enable_rootd:$enable_olbd:$enable_cmsd in
+ yes:*:*) ;;
+ *:yes:*) ;;
+ *:*:yes) ;;
+ *) exit 0;;
+esac
+
+# function to start the main server
+startitx ()
+{
+ [ "$VERBOSE" != no ] && log_progress_msg "$XNAME"
+ start-stop-daemon --make-pidfile --chuid $USER --start --quiet \
+ --pidfile /var/run/$XNAME.pid --exec $XDAEMON \
+ --background -- $XDAEMON_OPTS
+}
+startito ()
+{
+ [ "$VERBOSE" != no ] && log_progress_msg "$ONAME"
+ start-stop-daemon --make-pidfile --chuid $USER --start --quiet \
+ --pidfile /var/run/$ONAME.pid --exec $ODAEMON \
+ --background -- $ODAEMON_OPTS
+}
+startitc ()
+{
+ [ "$VERBOSE" != no ] && log_progress_msg "$CNAME"
+ start-stop-daemon --make-pidfile --chuid $USER --start --quiet \
+ --pidfile /var/run/$CNAME.pid --exec $CDAEMON \
+ --background -- $CDAEMON_OPTS
+}
+
+stopitx()
+{
+ start-stop-daemon --user $USER --stop --oknodo --quiet --pidfile \
+ /var/run/$XNAME.pid --exec $XDAEMON
+}
+stopito()
+{
+ start-stop-daemon --user $USER --stop --oknodo --quiet --pidfile \
+ /var/run/$ONAME.pid --exec $ODAEMON
+}
+stopitc()
+{
+ start-stop-daemon --user $USER --stop --oknodo --quiet --pidfile \
+ /var/run/$CNAME.pid --exec $CDAEMON
+}
+
+# executable code
+case "$1" in
+ start)
+ ret=0
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC"
+ if test "x$enable_xrootd" = "xyes" ; then
+ startitx
+ ret=$?
+ fi
+ if test $ret -eq 0 && test "x$enable_olbd" = "xyes" ; then
+ startito
+ ret=$?
+ fi
+ [ "$VERBOSE" != no ] && log_end_msg $ret
+ [ $ret -ne 0 ] && exit $ret
+ ;;
+ stop)
+ ret=0
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC"
+ if test "x$enable_xrootd" = "xyes" ; then
+ [ "$VERBOSE" != no ] && log_progress_msg "$XNAME"
+ stopitx
+ ret=$?
+ fi
+ if test "x$enable_olbd" = "xyes" ; then
+ [ "$VERBOSE" != no ] && log_progress_msg "$ONAME"
+ stopito
+ ret=$?
+ fi
+ [ "$VERBOSE" != no ] && log_end_msg $ret
+ [ $ret -ne 0 ] && exit $ret
+ ;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart".
+ #
+ ret=0
+ [ "$VERBOSE" != no ] && log_daemon_msg "Restarting $DESC"
+ if test "x$enable_xrootd" = "xyes" ; then
+ stopitx
+ startitx
+ ret=$?
+ fi
+ if test $ret -eq 0 && test "x$enable_olbd" = "xyes" ; then
+ stopito
+ startito
+ ret=$?
+ fi
+ [ "$VERBOSE" != no ] && log_end_msg $ret
+ [ $ret -ne 0 ] && exit $ret
+ ;;
+ *)
+ N=@sysconfdir@/init.d/root-system-$XNAME
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
+#
+# EOF
+#
diff --git a/build/package/debian/root-system-xrootd.links.in b/debian/root-system-xrootd.links.in
similarity index 100%
copy from build/package/debian/root-system-xrootd.links.in
copy to debian/root-system-xrootd.links.in
diff --git a/build/package/debian/root.conf b/debian/root.conf
similarity index 100%
copy from build/package/debian/root.conf
copy to debian/root.conf
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..ab38366
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,850 @@
+#!/usr/bin/make -f
+
+# Uncomment this to turn on verbose mode.
+export DH_VERBOSE=1
+
+PREFIX = /usr
+SYSCONFDIR = /etc
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+DEB_BUILD_GNU_SYSTEM ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_SYSTEM)
+DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
+
+CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS)
+CFLAGS := $(shell dpkg-buildflags --get CFLAGS) $(CPPFLAGS)
+CXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS) $(CPPFLAGS)
+LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)
+
+EXTRA_CFLAGS := $(CFLAGS)
+EXTRA_CXXFLAGS := $(CXXFLAGS)
+EXTRA_LDFLAGS := -Wl,-rpath,$(PREFIX)/lib/root/ $(LDFLAGS)
+
+export CPPFLAGS EXTRA_CFLAGS EXTRA_CXXFLAGS EXTRA_LDFLAGS
+
+ifeq ($(DEB_HOST_ARCH_CPU),powerpc)
+PLATFORM = linux
+else
+PLATFORM =
+endif
+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
+BUILDOPT = --build=debug
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+INSTALL_PROGRAM = -s
+endif
+ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+MAKEFLAGS += -j$(NUMJOBS)
+endif
+UNUR = --enable-unuran
+#ifneq (,$(findstring alpha, $(DEB_BUILD_ARCH)))
+#UNUR = --disable-unuran
+#endif
+#XRD = --enable-xrootd
+#ifneq (,$(findstring sparc, $(DEB_BUILD_ARCH)))
+XRD = --disable-xrootd
+#endif
+
+DTMP = debian/tmp
+PKGDOCDIR = $(PREFIX)/share/doc/root
+CINTDIR = $(PREFIX)/lib/root/$(SOVERS)
+ICONTHEME = $(PREFIX)/share/icons/hicolor/48x48
+CONFOPTIONS :=--enable-bonjour \
+ --enable-cintex \
+ --enable-clarens \
+ --enable-editline \
+ --enable-explicitlink \
+ --enable-gdml \
+ --enable-globus \
+ --enable-gsl-shared \
+ --enable-gviz \
+ --enable-fftw3 \
+ --enable-krb5 \
+ --enable-ldap \
+ --enable-qt \
+ --enable-qtgsi \
+ --enable-mathcore \
+ --enable-mathmore \
+ --enable-memstat \
+ --enable-minuit2 \
+ --enable-mysql \
+ --enable-peac \
+ --enable-pgsql \
+ --enable-pythia8 \
+ --enable-odbc \
+ --enable-reflex \
+ --enable-roofit \
+ --enable-ruby \
+ --enable-shadowpw \
+ --enable-shared \
+ --enable-soversion \
+ --enable-table \
+ --disable-rpath \
+ --disable-afs \
+ --disable-srp \
+ --disable-builtin-afterimage \
+ --disable-builtin-ftgl \
+ --disable-builtin-freetype \
+ --disable-builtin-glew \
+ --disable-builtin-pcre \
+ --disable-builtin-zlib \
+ --disable-alien \
+ --disable-chirp \
+ --disable-dcache \
+ --disable-gfal \
+ --disable-monalisa \
+ --disable-oracle \
+ --disable-pythia6 \
+ --disable-rfio \
+ --disable-sapdb \
+ --fail-on-missing \
+ --with-globus=/usr \
+ --with-globus-incdir=/usr/include/globus \
+ --with-globus-libdir=/usr/lib \
+ --with-pythia8-incdir=/usr/include/pythia8 \
+ $(UNUR) \
+ $(XRD) \
+ $(BUILDOPT)
+#
+# Things for the future
+#
+# --enable-mathcore libroot
+# --enable-cintex libroot
+# --enable-reflex libroot
+# --with-globus=/opt/globus
+# --disable-builtin-gsl
+# --disable-builtin \
+
+VERSION := $(shell cat build/version_number | tr '/-' '.~')
+MAJOR := $(shell echo $(VERSION) | tr '.' ' ' | cut -f1 -d' ')
+MINOR := $(shell echo $(VERSION) | tr '.' ' ' | cut -f2 -d' ')
+SOVERS := $(MAJOR).$(MINOR)
+PKGLIST := $(shell ./configure $(PLATFORM) --pkglist $(CONFOPTIONS) | sed -n -e 's/packages: //p')
+ESSENTIALS := libroot-core-dev \
+ libroot-core \
+ root-system-bin \
+ root-system-common \
+ ttf-root-installer
+PLUGINS := libroot-geom \
+ libroot-graf2d-gpad \
+ libroot-graf2d-graf \
+ libroot-graf2d-postscript \
+ libroot-graf3d-eve \
+ libroot-graf3d-g3d \
+ libroot-graf3d-gl \
+ libroot-gui \
+ libroot-gui-ged \
+ libroot-hist \
+ libroot-hist-spectrum \
+ libroot-html \
+ libroot-io \
+ libroot-io-xmlparser \
+ libroot-math-foam \
+ libroot-math-genvector \
+ libroot-math-mathcore \
+ libroot-math-mathmore \
+ libroot-math-matrix \
+ libroot-math-minuit \
+ libroot-math-mlp \
+ libroot-math-quadp \
+ libroot-math-physics \
+ libroot-math-smatrix \
+ libroot-math-splot \
+ libroot-math-unuran \
+ libroot-misc-minicern \
+ libroot-misc-memstat \
+ libroot-misc-table \
+ libroot-montecarlo-eg \
+ libroot-montecarlo-vmc \
+ libroot-net \
+ libroot-net-auth \
+ libroot-net-bonjour \
+ libroot-net-ldap \
+ libroot-proof \
+ libroot-proof-proofplayer \
+ libroot-tmva \
+ libroot-tree \
+ libroot-tree-treeplayer \
+ root-plugin-geom-geombuilder \
+ root-plugin-geom-geompainter \
+ root-plugin-graf2d-asimage \
+ root-plugin-graf2d-gviz \
+ root-plugin-graf2d-qt \
+ root-plugin-graf2d-x11 \
+ root-plugin-graf2d-gvi \
+ root-plugin-graf3d-x3d \
+ root-plugin-gui-fitpanel \
+ root-plugin-gui-guibuilder \
+ root-plugin-gui-qt \
+ root-plugin-gui-sessionviewer \
+ root-plugin-hist-hbook \
+ root-plugin-hist-histpainter \
+ root-plugin-hist-spectrumpainter \
+ root-plugin-io-sql \
+ root-plugin-io-xml \
+ root-plugin-math-fftw3 \
+ root-plugin-math-fumili \
+ root-plugin-math-minuit2 \
+ root-plugin-net-krb5 \
+ root-plugin-net-netx \
+ root-plugin-sql-odbc \
+ root-plugin-tree-treeviewer \
+ root-system-proofd \
+ root-system-doc \
+ root-system-rootd
+EXTRAS := libroot-proof-clarens \
+ libroot-bindings-python \
+ libroot-roofit \
+ libroot-bindings-ruby \
+ root-plugin-geom-gdml \
+ root-plugin-io-castor \
+ root-plugin-io-chirp \
+ root-plugin-io-dcache \
+ root-plugin-montecarlo-pythia8 \
+ root-plugin-net-globus \
+ root-plugin-net-bonjour \
+ root-plugin-net-alien \
+ root-plugin-net-srp \
+ root-plugin-proof-peac \
+ root-plugin-sql-maxdb \
+ root-plugin-sql-mysql \
+ root-plugin-sql-oracle \
+ root-plugin-sql-pgsql
+PLUGINLIST := $(filter-out $(EXTRAS) $(ESSENTIALS), $(PKGLIST))
+EXTRALIST := $(filter-out $(PLUGINS) $(ESSENTIALS), $(PKGLIST))
+PLUGINLIST := $(PLUGINLIST:libroot%=libroot%-dev)
+EXTRALIST := $(EXTRALIST:libroot%=libroot%-dev)
+PLUGINHEAD := $(filter-out $(lastword $(PLUGINLIST)), $(PLUGINLIST))
+PLUGINLIST := $(PLUGINHEAD:%=%,) $(lastword $(PLUGINLIST))
+EXTRAHEAD := $(filter-out $(lastword $(EXTRALIST)), $(EXTRALIST))
+EXTRALIST := $(EXTRAHEAD:%=%,) $(lastword $(EXTRALIST))
+TEMPLATES := $(wildcard debian/*.in)
+SPKGLIST := $(filter-out root-system-doc root-system-common ttf-root-installer, $(PKGLIST:libroot%=libroot%$(SOVERS))) $(filter libroot%, $(PKGLIST:libroot%=libroot%-dev)) libroot-static
+IPKGLIST := root-system-doc ttf-root-installer root-system-common root-system
+DPKGLIST := $(SPKGLIST:%=%,) root-system-doc, root-ttf
+#root-plugins root-extra-plugins
+SPKGOPTS := $(SPKGLIST:%=-p%)
+IPKGOPTS := $(IPKGLIST:%=-p%)
+PKGOPTS := $(IPKGOPTS) $(SPKGOPTS)
+HAVERUBY := $(filter libroot-bindings-ruby, $(PKGLIST))
+ifeq ($(HAVERUBY), libroot-bindings-ruby)
+RUBYARCHDIR := $(shell ruby -rrbconfig -e 'puts Config::CONFIG["archdir"]' | sed 's,/,,')
+else
+RUBYARCHDIR :=
+endif
+HAVEPYTHON := $(filter libroot-bindings-python, $(PKGLIST))
+ifeq ($(HAVEPYTHON), libroot-bindings-python)
+PYVERS := $(shell pyversions -vs)
+PYVER := $(shell python -c 'import sys; print "%d.%d" % (sys.version_info[0], sys.version_info[1])')
+PYTHONDIR := /usr/lib/python-support/root/python$(PYVER)
+else
+PYTHONDIR :=
+endif
+
+# This has to be exported to make some magic below work.
+export DH_OPTIONS
+
+show_pkgs:
+ @printf "SPKGLIST:\n $(foreach i, $(SPKGLIST), \t$(i)\n)"
+ @printf "IPKGLIST:\n $(foreach i, $(IPKGLIST), \t$(i)\n)"
+ @printf "PLUGINLIST:\n $(foreach i, $(PLUGINLIST), \t$(i)\n)"
+ @printf "EXTRALIST:\n $(foreach i, $(EXTRALIST), \t$(i)\n)"
+ @printf "HAVERUBY: $(HAVERUBY)\nRUBYARCHDIR: $(RUBYARCHDIR)"
+ @printf "HAVEPYTHON: $(HAVEPYTHON)\nPYTHONDIR: $(PYTHONDIR)"
+
+../root-system_$(VERSION).orig.tar.gz:
+ dh_testdir
+ ./debian/get-orig-source --upstream-version $(VERSION) $@
+
+get-orig-source: ../root-system_$(VERSION).orig.tar.gz
+
+show_libpkgs:
+ @echo "$(SPKGLIST)"
+ @echo "$(patsubst %, -p%, $(filter libroot%$(SOVERS),$(SPKGLIST)))"
+
+show_conf:
+ ./configure $(PLATFORM) --pkglist $(CONFOPTIONS)
+
+debian/%:debian/%.in debian/rules
+ @echo "Making $@ from $< "
+ @sed -e 's, at prefix@,$(PREFIX),g' \
+ -e 's, at sysconfdir@,$(SYSCONFDIR),g' \
+ -e 's, at pkgdocdir@,$(PKGDOCDIR),g' \
+ -e 's, at rubyarchdir@,$(RUBYARCHDIR),g' \
+ -e 's, at pythondir@,$(PYTHONDIR),g' \
+ -e 's, at libvers@,$(SOVERS),g' < $< > $@
+
+debian/control:debian/control.in debian/rules
+ @echo "Making $@ (special)"
+ @cp $< $@.tmp
+ @echo "Packages are $(PKGLIST)"
+ @for p in $(PKGLIST) ; do \
+ if test -f build/package/common/$$p.control ; then \
+ echo "Adding package $$p to control file" ; \
+ cat build/package/common/$$p.control >> $@.tmp ; fi ; done
+ @builddep="$(shell ./build/package/lib/makebuilddepend.sh $(PKGLIST))" && \
+ sed -e 's, at prefix@,$(PREFIX),g' \
+ -e 's, at libvers@,$(SOVERS),g' \
+ -e 's, at sysconfdir@,$(SYSCONFDIR),g' \
+ -e 's, at pkgdocdir@,$(PKGDOCDIR),g' \
+ -e "s/@builddepends@/$${builddep}/" \
+ -e 's/@pyvers@/$(PYVER)/g' \
+ -e 's/@pkglist@/$(DPKGLIST)/' \
+ -e 's/@plugins@/$(PLUGINLIST:%,=% (>= $${binary:Version}),) (>= $${binary:Version})/' \
+ -e 's/@extras@/$(EXTRALIST:%,=% (>= $${binary:Version}),) (>= $${binary:Version})/' < $@.tmp > $@
+ rm -rf $@.tmp
+
+.PRECIOUS: debian/html.C
+
+debian/html.C:
+ rm -f $@
+ @echo "{" >> $@
+ @echo " /* magic line from Rene */" >> $@
+ @echo " gEnv->SetValue(\"Root.PluginPath\"," >> $@
+ @echo " \"$(CURDIR)/etc/plugins\");" >> $@
+ @echo " gEnv->SetValue(\"Root.TTFontPath\"," >> $@
+ @echo " \"/usr/share/fonts/truetype/freefont/:$(CURDIR)/fonts\");" >> $@
+ @echo " gSystem->AddIncludePath(\"$(CURDIR)/include\");" >> $@
+ @echo " gSystem->AddIncludePath(\"$(CURDIR)/cint/cint/include\");" >> $@
+ @echo " gSystem->AddIncludePath(\"$(CURDIR)/cint/cint/stl\");" >> $@
+ @echo " gROOT->GetPluginManager()->" >> $@
+ @echo " LoadHandlersFromPluginDirs(\"\");" >> $@
+ @echo " gROOT->GetPluginManager()->" >> $@
+ @echo " AddHandler(\"TVirtualPS\",\"image\"," >> $@
+ @echo " \"TImageDump\",\"Postscript\"," >> $@
+ @echo " \"TImageDump()\");" >> $@
+ @echo " gROOT->GetPluginManager()->" >> $@
+ @echo " AddHandler(\"TVirtualStreamerInfo\"," >> $@
+ @echo " \"*\",\"TStreamerInfo\"," >> $@
+ @echo " \"RIO\",\"TStreamerInfo()\");" >> $@
+ @echo " gROOT->GetPluginManager()->" >> $@
+ @echo " AddHandler(\"TVirtualGraphPainter\", \"*\"," >> $@
+ @echo " \"TGraphPainter\",\"GraphPainter\",">> $@
+ @echo " \"TGraphPainter()\");" >> $@
+ @echo " THtml html;" >> $@
+ @echo " html.SetProductName(\"ROOT\");" >> $@
+ @echo " html.SetEtcDir(\"$(CURDIR)/etc/html\");" >> $@
+ @echo " html.SetHomepage(\"http://root.cern.ch\");" >> $@
+ @echo " html.LoadAllLibs();" >> $@
+ @echo " html.SetBatch(kTRUE);" >> $@
+ @echo " html.MakeAll();" >> $@
+ @echo "}" >> $@
+
+htmldoc:debian/html.C build-arch-cint-stamp
+ # Download html doc.
+ LD_LIBRARY_PATH=$(CURDIR)/lib:$(CURDIR)/cint/cint/include:$(CURDIR)/cint/cint/stl:$(CURDIR)/include:$(LD_LIBRARY_PATH) ROOTSYS=$(CURDIR) \
+ $(CURDIR)/bin/root.exe -l -b -q $^
+
+ # Use local images.
+ for i in $(CURDIR)/etc/html/* ; do \
+ sed -i -e 's,http://root.cern.ch/drupal/sites/default/files/,,' \
+ -e 's,http://root.cern.ch/drupal/sites/all/themes/newsflash/images/blue/,,' \
+ -e 's,http://root.cern.ch/drupal/sites/all/themes/newsflash/images/,,' $$i ; \
+ done
+ # rm -f debian/html.C
+ #for i in info.png root-banner.png rootdrawing-logo.png ; do \
+ # cp $(CURDIR)/debian/$$i $(CURDIR)/htmldoc/$$i ; done
+ @touch htmldoc-stamp
+
+htmldoc-stamp: htmldoc
+
+configure-stamp:$(TEMPLATES:%.in=%) config.status
+config.status: configure
+ dh_testdir
+ tar -xvzf math/unuran/src/unuran*
+ #if change, correct unurar version
+ mv unuran-1.8.0-root ./math/unuran/src/.
+ sed -i -e 's/auxilliary/auxiliary/' \
+ math/unuran/src/unuran-1.8.0-root/src/urng/urng_default.c \
+ math/unuran/src/unuran-1.8.0-root/src/parser/make_stringparser.pl
+ sed -i -e 's/splitted/split/g' \
+ math/unuran/src/unuran-1.8.0-root/src/methods/tdr_ps_init.ch \
+ math/unuran/src/unuran-1.8.0-root/src/methods/tdr_gw_init.ch \
+ math/unuran/src/unuran-1.8.0-root/src/methods/arou.c \
+ math/unuran/src/unuran-1.8.0-root/src/methods/tabl_init.ch
+ sed -i -e 's/unkown/unknown/' \
+ math/unuran/src/unuran-1.8.0-root/src/distributions/c_burr.c
+
+ debconf-updatepo --podir=build/package/debian/po
+ #cp /usr/share/misc/config.guess graf2d/asimage/src/libAfterImage/
+ #cp /usr/share/misc/config.sub graf2d/asimage/src/libAfterImage/
+
+ # Add here commands to configure the package.
+ ./configure $(PLATFORM) \
+ --prefix=$(PREFIX) \
+ --mandir=$(PREFIX)/share/man/man1 \
+ --docdir=$(PKGDOCDIR) \
+ --cintincdir=$(CINTDIR) \
+ --etcdir=$(SYSCONFDIR)/root \
+ --with-sys-iconpath=$(PREFIX)/share/pixmaps \
+ --libdir=$(PREFIX)/lib/root/$(SOVERS) \
+ $(CONFOPTIONS)
+ touch math/unuran/src/headers.d
+ touch configure-stamp
+
+# --fontdir=%_datadir/root/fonts/truetype
+#Architecture
+build: build-arch build-indep
+
+build-arch: build-arch-cint-stamp
+build-arch-stamp: configure-stamp
+
+ # Add here commands to compile the arch part of the package.
+ #$(MAKE) ASTEPETAG= XROOTDETAG= UNURANETAG=
+ $(MAKE) $(MAKEFLAGS) UNURANETAG=
+ $(MAKE) $(MAKEFLAGS) static UNURANETAG=
+ touch build-arch-stamp
+
+build-arch-cint-stamp:build-arch-stamp
+ $(MAKE) all-cintdlls
+ touch build-arch-cint-stamp
+
+build-indep: build-indep-stamp
+build-indep-stamp: configure-stamp
+
+ # Add here commands to compile the indep part of the package.
+ #$(MAKE) doc
+ touch build-indep-stamp
+
+clean: $(TEMPLATES:%.in=%)
+ dh_testdir
+ dh_testroot
+
+ rm -rf math/unuran/src/unuran-1.8.0-root
+ rm -f *.tmp
+
+ #rm -f graf2d/asimage/src/libAfterImage/config.guess
+ #rm -f graf2d/asimage/src/libAfterImage/config.sub
+ rm -f debian/pyversions debian/pycombat debian/html.C
+ rm -f build-arch-stamp build-indep-stamp build-arch-cint-stamp \
+ config.status configure-stamp config.log htmldoc-stamp
+ rm -rf minuit2/src/Minuit-1_7_6
+ rm -rf freetype/src/freetype-2.1.9
+ #-rm -rf asimage/src/libAfterImage
+ rm -rf debian/*.files debian/*.install
+ rm -f macros/html.C
+ rm -f memstat.root
+ rm -f *.Cexec
+ rm -f cint/MAKEINFO
+ rm -f etc/daemons/proofd.rc.d
+ rm -f etc/daemons/proofd.xinetd
+ rm -f etc/daemons/rootd.rc.d
+ rm -f etc/daemons/rootd.xinetd
+ rm -f etc/daemons/olbd.rc.d
+ rm -f qtgsi/src/G__QtGSI.cxx qtgsi/src/G__QtGSI.h
+ rm -f qt/src/moc_*.cxx
+ rm -f G__genreflex_rootcint.h
+ rm -f graf2d/asimage/src/libAfterImage/Makefile
+ rm -f graf2d/asimage/src/libAfterImage/afterimage-config
+ rm -f graf2d/asimage/src/libAfterImage/afterimage-libs
+ rm -f graf2d/asimage/src/libAfterImage/config.h
+ rm -f graf2d/asimage/src/libAfterImage/config.log
+ rm -f graf2d/asimage/src/libAfterImage/config.status
+ rm -f graf2d/asimage/src/libAfterImage/libAfterImage.a
+ find . -name ".#*" | xargs rm -rf
+ find . \( -name "G__*.cxx" \
+ -or -name "G__*.h" \
+ -or -name "G__*.c" \) \
+ -and -not -name "G__ci.h" \
+ -and -not -name G__postprocess.h \
+ -and -not -name "G__main.c" \
+ -and -not -name "G__setup.c" \
+ -and -not -name "G__ci_fproto.h" \
+ -and -not -name "G__security.h" \
+ | xargs rm -rf
+ # Add here commands to clean up after the build process.
+ [ ! -f config/Makefile.config ] || $(MAKE) distclean \
+ UNURANETAG= \
+ UNURKEEP=yes
+ # OK to ignore errors for these - makecintdll.sh might fail
+ -for i in climits complex deque exception list map2 map multimap2 \
+ multimap multiset queue set stack stdexcept valarray \
+ vectorbool vector ; do \
+ build/unix/makecintdll.sh clean $$i ; done
+ rm -rf bin lib include htmldoc \
+ system.rootrc \
+ config/Makefile.config \
+ README/Changelog \
+ etc/system.rootrc \
+ etc/system.rootauthrc \
+ etc/system.rootdaemonrc \
+ etc/root.mimes \
+ build/misc/root-help.el \
+ debian/*.files \
+ debian/*.install \
+ debian/shlibs.local \
+ graf2d/freetype/src/freetype-2.1.3 \
+ cint/cint/lib/posix/a.out \
+ cint/cint/lib/posix/mktypes \
+ cint/cint/include/*.so* \
+ cint/cint/include/*.dll \
+ cint/cint/include/sys/*.so* \
+ cint/cint/include/sys/*.dll \
+ cint/cint/stl/*.so* \
+ cint/cint/stl/*.dll \
+ core/pcre/src/pcre-6.4 \
+ math/unuran/src/unuran-*-root/config.status \
+ math/unuran/src/unuran-*-root/config.log \
+ htmldoc \
+ math/unuran/src/unuran-*-root/config.h \
+ math/unuran/src/unuran-*-root/Makefile \
+ math/unuran/src/unuran-*-root/libtool \
+ math/unuran/src/unuran-*-root/stamp-h1 \
+ math/unuran/src/unuran-*-root/src/Makefile \
+ math/unuran/src/unuran-*-root/src/distr/Makefile \
+ math/unuran/src/unuran-*-root/src/utils/Makefile \
+ math/unuran/src/unuran-*-root/src/distributions/Makefile \
+ math/unuran/src/unuran-*-root/src/tests/Makefile \
+ math/unuran/src/unuran-*-root/src/methods/Makefile \
+ math/unuran/src/unuran-*-root/src/specfunct/Makefile \
+ math/unuran/src/unuran-*-root/src/urng/Makefile \
+ math/unuran/src/unuran-*-root/src/uniform/Makefile \
+ math/unuran/src/unuran-*-root/src/parser/Makefile
+ # touch graf2d/asimage/src/headers.d
+ rm -f $(filter-out debian/control, $(TEMPLATES:%.in=%))
+ dh_clean
+
+pkglists:
+ rm -rf debian/*.files debian/*.install
+ build/package/lib/makelists.sh debian debian/tmp \
+ $(VERSION) $(PREFIX) $(SYSCONFDIR) $(PKGDOCDIR)
+# @for i in debian/libroot* ; do \
+# if test -d $$i ; then continue ; fi ; \
+# case $$i in \
+# *-dev.*|*.in|libroot*$(SOVERS).*) continue ;; \
+# *) echo "Renaming $$i to version specific" ; \
+# cp $$i `echo $$i | sed 's/libroot\(.*\)\.\(.*\)/libroot\1$(SOVERS).\2/'` ;; esac ; \
+# done
+
+install: install-indep install-arch
+#install-indep: htmldoc-stamp
+install-indep: install-arch
+ dh_testdir
+ dh_testroot
+ dh_prep -i -X$(DTMP)
+ dh_installdirs -i
+
+ # Add here commands to install the indep part of the package into
+ # debian/<package>-doc.
+ #INSTALLDOC#
+
+ # dh_install $(IPKGOPTS) --sourcedir=$(DTMP)
+ dh_install -i --sourcedir=$(DTMP)
+ #inserted comment htmldoc line
+ #cp -a htmldoc/ $(CURDIR)/debian/root-system-doc/usr/share/doc/root/html
+ #mkdir -p $(CURDIR)/debian/root-system-doc/usr/share/doc/root/html
+ #rm -f $(CURDIR)/debian/root-system-doc/usr/share/doc/root/html/tmva/LICENSE
+ # Make sym-link so that web-page refers to installed tutorials dir.
+ #cd $(CURDIR)/debian/root-system-doc/usr/share/doc/root/html; \
+ # ln -s ../tutorials
+
+ # Fix some permissions
+ -find debian/root-system-common/$(PREFIX)/share/root/icons \
+ -perm 0755 -and -not -type d | xargs chmod a-x
+
+ # Install sha256sums for ttf installer
+ cp -a debian/ttf-root-installer.sha256sums \
+ debian/ttf-root-installer/var/lib/ttf-root-installer/sha256sums
+
+ mkdir -p debian/root-system-common/usr/share/lintian/overrides/
+ echo "font-in-non-font-package usr/share/root/fonts/symbol.ttf" \
+ >> debian/root-system-common/usr/share/lintian/overrides/root-system-common
+ mkdir -p debian/ttf-root-installer/usr/share/lintian/overrides/
+ echo "package-contains-empty-directory usr/share/root/fonts/" \
+ >> debian/ttf-root-installer/usr/share/lintian/overrides/ttf-root-installer
+
+ # New Ld.so.conf file
+ # cp debian/root-system-common.conf \
+ # debian/root-system-common/$(SYSCONFDIR)/ld.so.conf.d
+
+
+install-arch: build-arch
+ dh_testroot
+ dh_prep -s -X$(DTMP)
+ # Need to clean this, because we don't want to use the
+ # symblic links made later on.
+ rm -rf $(DTMP)$(PREFIX)/lib/root
+ dh_installdirs -s
+
+ # Add here commands to install the arch part of the package into
+ # $(DTMP).
+ #$(MAKE) install DESTDIR=$(CURDIR)/$(DTMP) \
+ # ASTEPETAG= XROOTDETAG= UNURANETAG=
+ $(MAKE) install DESTDIR=$(CURDIR)/$(DTMP) UNURANETAG=
+
+ # Install desktop entry and icon
+ mkdir -p $(DTMP)$(PREFIX)/share/applications
+ mkdir -p $(DTMP)$(PREFIX)/share/pixmaps
+ mkdir -p $(DTMP)$(ICONTHEME)/apps
+ mkdir -p $(DTMP)$(ICONTHEME)/mimetypes
+ cp debian/root-system-bin.desktop $(DTMP)$(PREFIX)/share/applications
+ cp build/package/debian/root-system-bin.xpm \
+ $(DTMP)$(PREFIX)/share/pixmaps/root-system-bin.xpm
+ cp build/package/debian/root-system-bin.png \
+ $(DTMP)$(ICONTHEME)/apps/root-system-bin.png
+ #cp build/package/debian/application-x-root.png \
+ # $(DTMP)$(ICONTHEME)/mimetypes/application-x-root.png
+
+ #library path patch
+ #mkdir -p $(DTMP)/etc/ld.so.conf.d
+ #cp debian/root.conf $(DTMP)/etc/ld.so.conf.d
+
+ # Make root-config output '/usr/lib/root' instead of
+ # '/usr/lib/root/<version>'
+ sed 's,$(PREFIX)/lib/root/$(SOVERS),$(PREFIX)/lib/root,' \
+ < $(DTMP)$(PREFIX)/bin/root-config > root-config.tmp
+ mv root-config.tmp $(DTMP)$(PREFIX)/bin/root-config
+
+ # Make default ZIP mode be new library (system library),
+ # remove ROOT plug-in library from load path, since this file
+ # is supposed to be version independent.
+ # and set start-up url of TBrowser embedded HTML renderer to
+ # be local install of documentation
+ sed -e 's,Root\.ZipMode:.*,Root.ZipMode: 1,' \
+ -e 's,\(.*\.DynamicPath:.*\):$(PREFIX)/lib/root[^:]*\(.*\),\1\2,' \
+ -e 's,\(Browser.StartUrl: *\).*,\1http://localhost/doc/root/html/index.html,'\
+ < $(DTMP)$(SYSCONFDIR)/root/system.rootrc > rootrc.tmp
+ mv rootrc.tmp $(DTMP)$(SYSCONFDIR)/root/system.rootrc
+
+ # Rename proofserv, xrdgsiproxy, xrdpwdadmin, xrdcp, and xrd in
+ # /usr/bin to end in `.bin' and make wrapper script in /usr/bin
+ for i in proofserv xrdgsiproxy xrdpwdadmin xrdcp xrd ; do \
+ if test -f $(DTMP)$(PREFIX)/bin/$$i && \
+ test -f build/package/common/$$i.in ; then \
+ mv $(DTMP)$(PREFIX)/bin/$$i \
+ $(DTMP)$(PREFIX)/bin/$$i.bin ; \
+ sed -e 's, at prefix@,$(PREFIX),g' \
+ -e 's, at libvers@,$(SOVERS),g' \
+ < build/package/common/$$i.in \
+ > $(DTMP)$(PREFIX)/bin/$$i ; \
+ chmod 755 $(DTMP)$(PREFIX)/bin/$$i ; \
+ else \
+ echo $i missing in $(DTMP)$(PREFIX)/bin ; fi ; done
+
+ # Make the empty proof log file
+ mkdir -p $(DTMP)$(PREFIX)/share/root/proof/log
+ touch $(DTMP)$(PREFIX)/share/root/proof/log/proof.log
+
+ # Let usr/include/root/cfortran.h point to usr/include/cfortran.h
+ rm -rf $(DTMP)$(PREFIX)/include/root/cfortran.h
+ (cd $(DTMP)$(PREFIX)/include/root && ln -s ../cfortran.h cfortran.h)
+
+ # Remove some unwanted files
+ rm -rf $(DTMP)$(PREFIX)/share/doc/root/INSTALL
+ rm -rf $(DTMP)$(PREFIX)/share/doc/root/LICENSE
+ rm -rf $(DTMP)$(PREFIX)/share/doc/root/COPYING.CINT
+ rm -rf $(DTMP)$(PREFIX)/share/doc/root/cfortran.doc
+ rm -rf $(DTMP)$(PREFIX)/share/root/fonts/LICENSE
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/posix/a.out
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/posix/mktypes
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/dll_stl/setup
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/G__*
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/dll_stl/G__*
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/dll_stl/rootcint_*
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/posix/exten.o
+ rm -rf $(DTMP)$(CINTDIR)/cint/include/makehpib
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/WildCard/ARCHIVE
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/cintocx
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/gl/setup.bat
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/posix/setup.bat
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/posix/setupsc.bat
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/posix/winposix.c
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/posix/winposix.h
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/wintcldl83
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/win32api
+ rm -rf $(DTMP)$(CINTDIR)/cint/lib/vcstream
+
+ # Remove MacOSX service descriptions
+ rm -rf $(DTMP)$(SYSCONFDIR)/root/*.plist
+
+ # Remove Xinetd and Red Hat Init scripts from /etc
+ rm -rf $(DTMP)$(SYSCONFDIR)/root/*.xinetd
+ rm -rf $(DTMP)$(SYSCONFDIR)/root/proofd
+ rm -rf $(DTMP)$(SYSCONFDIR)/root/rootd
+ rm -rf $(DTMP)$(SYSCONFDIR)/root/xrootd
+ rm -rf $(DTMP)$(SYSCONFDIR)/root/olbd
+
+ # Remove sample configurations for PROOF
+ rm -rf $(DTMP)/$(PREFIX)/share/root/proof/etc/*.sample
+
+ # Remove the CVS directories if present
+ find $(DTMP) -name "CVS" | xargs rm -fr
+ find $(DTMP) -name ".cvsignore" | xargs rm -fr
+
+ # Fix some permissions
+ -find $(DTMP)$(CINTDIR)/cint \
+ -perm 755 -and -not -type d | xargs chmod a-x
+ -chmod a+x $(DTMP)$(CINTDIR)/cint/lib/pthread/setup
+ -chmod a+x $(DTMP)$(CINTDIR)/cint/lib/WildCard/setup
+ -chmod a-x $(DTMP)$(PREFIX)/lib/root/$(SOVERS)/*.py
+ -chmod a-x $(DTMP)$(SYSCONFDIR)/root/html/*
+ # -chmod a+x $(DTMP)$(PREFIX)/lib/root/$(SOVERS)/GDMLROOT.py
+
+ # Remove she-bang line from a python scripts
+ -for i in $(DTMP)$(PREFIX)/lib/root/$(SOVERS)/*.py ; do \
+ sed -e 's,#!/usr/bin/env python[0-9.]*,#,' \
+ -e 's,#!/usr/bin/python[0-9.]*,#,' \
+ < $$i > $$i.tmp ; \
+ mv $$i.tmp $$i ; \
+ done
+
+ # Make file lists
+ mkdir -p $(DTMP)$(PREFIX)/lib/root
+ ./debian/rules pkglists
+
+ # --sourcedir=$(DTMP) $(SPKGOPTS)
+
+ # only x86/x64 build cintex
+ case `uname -m` in \
+ i*86 | x86_64) ;; \
+ *) sed -i -e '/PyCintex/d' \
+ debian/libroot-bindings-python-dev.install;; \
+ esac
+
+ dh_install -s \
+ --list-missing \
+ --sourcedir=$(DTMP) \
+ -X$(PREFIX)/include/root/config.h \
+ -X$(PREFIX)/include/root/rootcint.pri \
+ -X$(PREFIX)/include/root/rootcintrule.pri \
+ -X$(PREFIX)/include/root/rootlibs.pri \
+ -X$(PREFIX)/include/root/precompile.h \
+ -X$(PREFIX)/include/root/precompile.h.gch \
+ -X$(PREFIX)/include/root/TQtWidget.cw \
+ -X$(PREFIX)/share/root/fonts \
+ -X$(PREFIX)/share/doc/root \
+ -X$(PREFIX)/share/man/man1/system.rootdaemonrc.1 \
+ -X$(PREFIX)/bin/thisroot.sh \
+ -X$(PREFIX)/bin/thisroot.csh \
+ -X$(PREFIX)/share/root/icons/ \
+ -X$(SYSCONFDIR)/root/rootd \
+ -X$(SYSCONFDIR)/root/daemons/ \
+ -X$(SYSCONFDIR)/root/proof/ \
+ -X$(SYSCONFDIR)/root/html \
+ -X$(SYSCONFDIR)/root/RadioNuclides.txt \
+ -X$(SYSCONFDIR)/root/gdb-backtrace-script \
+ -X$(SYSCONFDIR)/root/gdb-backtrace.sh \
+ -X$(SYSCONFDIR)/root/hostcert.conf \
+ -X$(SYSCONFDIR)/root/pdg_table.txt \
+ -X$(SYSCONFDIR)/root/root.mimes \
+ -X$(SYSCONFDIR)/root/system.rootrc \
+ -X$(SYSCONFDIR)/root/system.rootauthrc \
+ -X$(SYSCONFDIR)/root/system.rootdaemonrc \
+ -X$(PREFIX)/lib/root/$(SOVERS)/libAfterImage.a \
+ -X$(PREFIX)/lib/root/$(SOVERS)/PyCintex.pyc \
+ -X$(PREFIX)/lib/root/$(SOVERS)/PyCintex.pyo \
+ -X$(PREFIX)/lib/root/$(SOVERS)/ROOT.pyc \
+ -X$(PREFIX)/lib/root/$(SOVERS)/ROOT.pyo \
+ -X$(PREFIX)/lib/root/$(SOVERS)/cint7 \
+ -X$(PREFIX)/include/root/Minuit2
+# $(foreach i, \
+# $(wildcard $(DTMP)/$(PREFIX)/lib/root/lib*.so.$(SOVERS)), \
+# -X$(i:$(DTMP)/%=%) )
+
+ for i in debian/*.overrides ; do \
+ if test ! -f $$i ; then continue; fi; \
+ b=`basename $$i .overrides` ; \
+ echo "Installing Lintian override $$i in debian/$$b/usr/share/lintian/overrides/$$b" ; \
+ mkdir -p debian/$$b/usr/share/lintian/overrides/ ; \
+ cp $$i debian/$$b/usr/share/lintian/overrides/$$b ; \
+ done
+
+ # Install Lintian overrides: call to ldconfig
+ for i in $(filter libroot%$(SOVERS), $(SPKGLIST)) ; do \
+ t=debian/$$i/usr/share/lintian/overrides/ ; \
+ mkdir -p $$t ; \
+ echo "$$i: postinst-has-useless-call-to-ldconfig" >> $$t/$$i; \
+ echo "$$i: postrm-has-useless-call-to-ldconfig" >> $$t/$$i; \
+ done
+
+ # try to fix lintian's rpath error.
+ for i in bin rootd proofd ; do \
+ mkdir -p debian/root-system-$$i/usr/lib/root/ ; \
+ echo "/usr/lib/root/" >> debian/root-system-$$i.install ; \
+ done
+
+ # This is for alternatives registration, if one want's to install
+ # Richard Kreckels cint package next to ROOT
+ # mv debian/root-system-bin/$(PREFIX)/bin/cint \
+ # debian/root-system-bin/$(PREFIX)/bin/cint.root
+ # mv debian/root-system-bin/$(PREFIX)/bin/makecint \
+ # debian/root-system-bin/$(PREFIX)/bin/makecint.root
+ # mv debian/root-system-bin/$(PREFIX)/share/man/man1/cint.1 \
+ # debian/root-system-bin/$(PREFIX)/share/man/man1/cint.root.1
+ # mv debian/root-system-bin/$(PREFIX)/share/man/man1/makecint.1 \
+ # debian/root-system-bin/$(PREFIX)/share/man/man1/makecint.root.1
+
+# Must not depend on anything. This is to be called by
+# binary-arch/binary-indep
+# in another 'make' thread.
+binary-common:
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+ dh_installmenu
+ dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+ dh_installmime
+ dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+ dh_strip
+ dh_compress \
+ -Xusr/share/doc/root/test \
+ -Xusr/share/doc/root/tutorials \
+ -Xusr/share/doc/root/html
+ dh_fixperms
+# dh_perl
+
+# Build architecture independent packages using the common target.
+binary-indep: build-indep install-indep
+ $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common
+ dh_installdeb -i
+ dh_gencontrol -i
+ dh_md5sums -i
+ dh_builddeb -i
+
+# Build architecture dependent packages using the common target.
+binary-arch: install-arch
+ $(MAKE) -f debian/rules DH_OPTIONS=-s binary-common
+ifeq ($(HAVEPYTHON), libroot-bindings-python)
+ # We make this here, so that we get the right python version on the
+ # system compiling.
+ echo "$(PYVER)-" > debian/pyversions
+endif
+ dh_pysupport -plibroot-bindings-python-dev
+ # $(PREFIX)/lib/root/$(SOVERS) $(PREFIX)/lib/root
+ dh_pysupport -plibroot-core-dev \
+ $(PREFIX)/lib/root/$(SOVERS)/python/genreflex
+ifeq ($(HAVEPYTHON), libroot-bindings-python)
+ # dh_pysupport will only write this field if the package is
+ # named something like 'python-*', so we make it ourselves.
+ echo "python:Provides=python$(PYVER)-pyroot" >> debian/libroot-bindings-python-dev.substvars
+endif
+ dh_makeshlibs -V \
+ $(patsubst %, -p%, $(filter libroot%$(SOVERS),$(SPKGLIST)))
+ dh_makeshlibs -V -n \
+ $(patsubst %, -p%, $(filter root-plugin%,$(SPKGLIST)))
+ dh_installdeb -s
+ dh_shlibdeps -s $(SPKGLIST:%=-L%) \
+ -l$(shell echo $(SPKGLIST:%=$(CURDIR)/debian/%$(PREFIX)/lib/root/$(SOVERS)) | tr ' ' ':') -- --warnings=1
+ dh_gencontrol -s
+ dh_md5sums -s
+ dh_builddeb -s
+
+binary: binary-arch binary-indep
+.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch get-orig-source
+
+#
+# EOF
+#
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/build/package/debian/ttf-root-installer.config b/debian/ttf-root-installer.config
similarity index 100%
copy from build/package/debian/ttf-root-installer.config
copy to debian/ttf-root-installer.config
diff --git a/debian/ttf-root-installer.copyright b/debian/ttf-root-installer.copyright
new file mode 100644
index 0000000..5b5d331
--- /dev/null
+++ b/debian/ttf-root-installer.copyright
@@ -0,0 +1,38 @@
+This package was orginally created by Christian Holm Christensen <cholm at nbi.dk> on
+Mon, 21 Feb 2005 16:28:37 +0100.
+The current maintainer is Lifeng Sun <lifongsun at gmail.com>.
+
+Copyright:
+
+Upstream Authors: The ROOT Team consiting of Rene Brun
+<Rene.Brun at cern.ch> and Fons Rademakers <Fons.Rademakers at cern.ch>,
+and Christian Holm Christensen <cholm at nbi.dk>
+
+License:
+
+Copyright: 1994, 1995, 1996, 1997, 1998, 1999 ROOT Team
+ 2000, 2001, 2002, 2003, 2004, 2005 ROOT Team
+ 2006 ROOT Team
+
+ This library is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
+ USA
+
+On Debian systems, the complete text of the GNU Lesser General Public
+License, version 2.1, can be found in
+/usr/share/common-licenses/LGPL-2.1.
+
+Please also refer to
+/usr/share/doc/ttf-root-installer/root/LICENSE.fonts for the licensing
+terms of the fonts themselves.
diff --git a/build/package/debian/ttf-root-installer.dirs b/debian/ttf-root-installer.dirs
similarity index 100%
copy from build/package/debian/ttf-root-installer.dirs
copy to debian/ttf-root-installer.dirs
diff --git a/build/package/debian/ttf-root-installer.postinst.in b/debian/ttf-root-installer.postinst.in
similarity index 100%
copy from build/package/debian/ttf-root-installer.postinst.in
copy to debian/ttf-root-installer.postinst.in
diff --git a/build/package/debian/ttf-root-installer.prerm.in b/debian/ttf-root-installer.prerm.in
similarity index 100%
copy from build/package/debian/ttf-root-installer.prerm.in
copy to debian/ttf-root-installer.prerm.in
diff --git a/build/package/debian/ttf-root-installer.sha256sums b/debian/ttf-root-installer.sha256sums
similarity index 100%
copy from build/package/debian/ttf-root-installer.sha256sums
copy to debian/ttf-root-installer.sha256sums
diff --git a/build/package/debian/ttf-root-installer.templates b/debian/ttf-root-installer.templates
similarity index 100%
copy from build/package/debian/ttf-root-installer.templates
copy to debian/ttf-root-installer.templates
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..0e3d8c1
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,3 @@
+version=3
+opts=pasv,uversionmangle=s/-rc/~rc/ ftp://root.cern.ch/root/root_v(.*).source.tar.gz debian ./debian/get-orig-source
+
--
root-system: CERN's ROOT Data Analysis Framework
More information about the debian-science-commits
mailing list