11th July
	- (Hongli Lai) Fix KDE trace message in instalDesktop.
	- (Hongli Lai) Converted apkg-defs's encoding to UTF-8.
	- (Hongli Lai) makeinstaller: move code for unsettting build_root
	  to the end.
	- (Hongli Lai) package -p doesn't work anymore due to stub format
	  change. Fixed stub.template.
	- Removed pointless lilac colour
	- More unbreaking, this time for uninstall
	- No point suppressing stderr in stub extract options
	- Unbreak extract option (more tar network weirdness)

10th July
	- (Hongli Lai) _trace/_warn/_err: quoting fixes.
	- (Hongli Lai) Fixed KDE part of installDesktop.
	- (Curtis Knight) Extra tracing code
	- Fixed typo in dialog skeleton s/VERSONS/VERSIONS/
	- Updated createDBEntry() to use SOFTWAREVERSION
	- Don't try to add development library symlink if
	  already present
	- Fixed uninstall code to use SoftwareVersion, don't
	  remove symlink if not installed
	- Added new function docs to the index
	- Unbroke supports/dependencies, package verify
	- Removed lurid green from verify success message
	
7th July
	- s/-eq/==/ in package
	- New error for when you run package uninstall using sudo, with a
	  package installed as user.
	- New function, assertNotReached()
	- More tracing code
	- Portability fix to old versions of wc, use --chars not -m
	- local scoping in locateCommand()

6th July
	- Lots more tracing code
	- added breakpoint() function, it just launches an xterm
	- Unbroke dependancy tree walking
	- Bumped version to 0.2.6 in preparation for next release
	- Fix broken linker cache handling
	- (Hongli Lai) makeinstaller now unsets $build_root after
	  extractions.
	- (Hongli Lai) installDesktop and installExe warn for missing
	  files.

5th July
	- Removed adding of OnlyShowIn to gnome2 desktop entries, it's needed
	  only for gnome1.4
	- Remove convenience symlinks only when the directory is really empty.
	- More intelligent behaviour when user gives package an unknown command
	- Create .so symlink for ld in installLib()
	- Delete the VERSION global var and replace with SOFTWAREVERSION and
	  INTERFACEVERSION
	- Added more tracing code to installLib()
	- New function, justRootName()
	- require now returns the exit code of the package it installed,
	  documented it
	- Removed some dead code from require()
	- add tracing code to require()
	- don't attempt to recurse into payloads when there is no payloads file
	
4th July
	- (Hongli Lai) Tell the user what's going on in updater.template.
	- (Hongli Lai) stripDupedItems: sed 's//\n/' doesn't work! Fixed.
	- (Hongli Lai) Fixed QT skeleton.
	- (Hongli Lai) categories.xml: Renamed installBin to installExe.
	- (Hongli Lai) Renamed 'which' to 'command -v' in installExe.
	- (Hongli Lai) Uninstall won't complain about missing files.
	- (Hongli Lai) Fixed various bugs in installDesktop.
	- (Hongli Lai) PERMANENTLY RESOLVED THE DATABASE CORRUPTION BUG!!!
	- Allow ':'in key names in parseKeys
	- Strip leading and trailing whitespace in key and value
	- Alter substitution style to $()
	- Don't display duplicate headers in ttyfe
	- More tracing code
	- Rewrite parts of parseKeys() to avoid multi-line expansion

30th June
	- Added %s to BAD_SKELETON string
	- scan only for ASCII rather than match exactly against "ASCII text" for
	  bad skeleton detection

27th June
	- Fix warning on stderr when no dependancies (sic) file was present
	- Rename installBin() to installExe(), update output text to match
	- Make installBin less aggressive about creating stub scripts

26th June
	- Change 'copying files' output message to not list each file
	  individually.
	- Fix documentation buglet in installBin

24th June
	- Variable expansion in the RootName key
	- versionFromRootName now returns 1 if no version was found in the
	  given parameter
	- makeinstaller warns you if you don't have a version in the root name
	- [Meta] substitutions should allow all-uppercase also
	- Refactor parts of makeinstaller to allow proper variable substitution
	- copyFiles() correctly returns a bad exit code when the copy fails now
	- Add what is possibly the most disgusting programmatic construct ever
	  invented to the extraction process to work around the general
	  brokenness of bash. Hurt me harder! HARDER!

21st June
	- Added requireFile() function, simpler than having a fully blown
	  skeleton for interpreters.
	- More sanity checks to makeinstaller, this time for keys in the [Meta]
	  section and ensuring there is an extractions section.

20th June
	- (Hongli Lai) More documentation.

19th June
	- Change libstdc++ interface codes   
	- Fix bug in countDownVersions()
	- require() now normalizes "3" to "3.0"
	
18th June
	- s/Packager/Skeleton-Author/ in skeletons
	- Fixed libstdc++ skeleton ref

17th June
	- Check that the skeleton is of the correct type (catches errors where
	  skeleton_ref points to a package root name, rather than a skeleton
	  root name)

16th June
	- Quick hack for the libstdc++ skeleton

15th June
	- (Hongli Lai) New function: grepBeginsWith.
	- (Hongli Lai) Fixed bugs in makedoc.pl:
	  * Don't ignore 'Returns:' if there are no other parameters.
	  * Don't strip leading and trailing whitespace from examples.

14th June
	- Fixed example in getKey
	- Fixed bug in getKey, so only the keyname at the start of the block is matched
	- (Hongli Lai) More documentation.

8th June
	- Rearranged parameters to updateEnv
	- Corrected quote positions in updateEnv
	- More tracing
	- makeinstaller now checks that you have an uninstall script and a description,
	  and warns you if you don't
	- Fixes in getSection, now properly aborts if the section wasn't found

7th June
	- makeinstaller properly appends GLIBC_ prefix to required
	  versions, to form the correct version symbols. glibc
	  autodetection should now be complete, but it needs to be tested
	  on older distros.
	- Tidied up output on failure to find correct symbols a bit.
	- Fixed bug in _checkForGlibcVersions()
	- The "InstallerFile" key in specfiles is now optional, if 
	  missing the file name will be $shortname-$version.package
	- Changed the extract() api
	  THIS HAS BROKEN THE SPECFILE FORMAT
	- Added tracing statements to makeinstaller
	- Documented extract(), however it isn't available via the API docs yet

3rd June   
	- nm should use a -D argument to work with stripped c libraries
	- added _findGlibcSymbols() function as internal, added doc to 
	  private library
	- makeinstaller extracts all used libc verneed entries, and 
	  places them into backend.template 
	- Hide internal functions in findGlibcSymbols()
	- add new function, _checkForGlibcVersions which actually scans
	  the system, requireLibC now uses it.
	- requireLibC now shows status of the test using the front end
	- requireLibC accepts no arguments
	- Centralised termination code in backend.template, works around 
	  wierd bash bug
	- ttyfe now indents multi-line fail messages properly

2nd June
	- Add a requireLibC() function to detect verneed entries

1st June
	- Added support for the CIA logbot to CVS
	- Cleaned up skeleton copying in makeinstaller
	- Some bugfixes.
	- Database entry lo longer created on fail
	- Merged getKey and getKeyStdin, documented it
	- Added tracing
	- package returns non-zero on error


31st May
        - Bulletproofed mkdirs some more, more useful fail message now
	- (Hongli Lai) makedoc.pl now generates hyperlinks for functions
	  and variables.
	- (Hongli Lai) Documented prune().
	- Updated the foobar module
	- Protected copyFiles from shopt e
	- Work around bizarre misfeature in tar or bzip (not sure which)
	  that would make it barf on the format of our root names in
	  decompressPayload()
	- Tightened scoping in installBin()
	- Protect require() against bad API calls
	- Much improved error handling
	- getKey can accept input from stdin
	- (Hongli Lai) Comments in examples are now colored.

28th May
	- Pipe is removed before being created, so we avoid talking to
	  dead clients.

27th May
	- Skeletons no longer have to enumerate all interfaces manually,
	  instead require() now extrapolates all interface numbers from
	  the ones provided using countDownVersions() and stripDupedItems()
	- countDownVersions() now accepts multiple parameters

26th May
	- Documented joinLines
	- Flipped description and parameter description in doc html
	- Rearranged the backend.template file to be more sane.
	- Moved some versioning functions from script-utils to bashlib
	- Added getMinor() function
	- Added countDownVersions() and stripDupedItems(), with docs
	- Updated all the skeleton files to the new system,
	  a few need some more work.

24th May
	- Documented outputTest.
	- output() is now an internal function
	- Added pushOptE() and popOptE() functions in preparation
	  for package scripts being run `set -e`
	- Package scripts are now run with `set -e` so they fail if
	  any function in them fails. All functions that can be
	  called direct from these scripts should use the opt_e stack
	- Moved updateEnv() in the documentation to the installing
	  category
	- require() no longer tries to terminate the front end
	- Renamed ___abort to ___end and altered exit code to zero
	  in the backend template

23rd May
	- require() works for new skeleton formats
	- makeinstaller updated to use new skeleton system

22nd May
	- Made logging functions write direct to /dev/tty to avoid
	  output mangling.
	- Logging funcs work outside of functions again

18th May 2003:
	- (Hongli Lai) makedoc.pl: Added a bit more error checking.
	- (Hongli Lai) More functions documented.

16th May 2003:
	- Fixed silly missed instance of locateSkeleton rename
	- Updated GTK skeleton
	- checkForPackage unsets the version variables

15th May 2003
	- Changed home install directory to ~/.local
	- Added some function docs
	- locateSkeleton() and skel_dirs variable are now private

12th May 2003
	- Cleaned up the GNOME2 support code, fixed a bug whereby
	  there was a mismatch in vendor names causing errors on install and
	  two incomplete .desktop files.
	- Fix bug in makedoc.pl

9th May 2003
	- More cleanups to installer.template and the variable namespace
	- Added release HOWTO

8th May 2003
	- Cleaned up installer.template a bit

------------------------ 0.2.5 was released ------------------------------------

6th May 2003
	- Fixed bug in removeSectionLine (sed separator)
	- Ensure dirIsEmpty always calls popd
	- Added Filip to authors list
	- Updating for 0.2.5 release
	- Added message about rsync being down
	- New logging framework (trace, warn, err)
	- Added some trace messages

27th April 2003
	- (Hongli Lai): prepareBuild: force the compiler to generate
	  i586 code (with i686 optimizations) if the architecture is x86.
	- Added some comments, renamed installScriptFinished() to
	  _installScriptFinished() as it is an internal function.
	- Make resolveLink() use _readlink internal function so
	  we don't depend on tetex.
	- Hide warning on uninstall from rm (foo is a directory)
	- safeSed now uses fd swaps rather than buffering

20th April 2003
	- (Curtis Knight) installInfo: joined and reworked function with
	  __installinfo - which also removed popd error on package removal
	- (Curtis Knight) installInfo, installBin: added status output for
	  copying of files
	- (Curtis Knight) apkg-defs: added/changed variable names to
	  intl_INSTALLING_BIN and intl_INSTALLING_LIB to be consistent
	- (Hongli Lai) Uninstalling packages that were installed by
	  retrieve() now actually works correctly.

19th April 2003
	- (Hongli Lai) stub.template: moved skipLines to the second line
	  and removed the quotes. Otherwise 'package info -p' won't work.
	- (Hongli Lai) makeinstaller now cleans up $build_root too.
	- (Hongli Lai) New function: resolveLink.
	- (Hongli Lai) Make testForLib use resolveLink and test for the
	  actual existance of a library returned by ldconfig.

18th April 2003
	- (Hongli Lai) apkg-bashlib: new function escapeFilename.
	- (Hongli Lai) backup support for copyFiles.
	- (Hongli Lai) make mkdirs, installBin, installInfo and
	  installDesktop use escapeFilename.
	- (Hongli Lai) checkDiskspace: code for handling non-existant
	  directories.
	- (Hongli Lai) apkg-ttyfe: added timeout function.
	- (Hongli Lai) Setup documentation system (doc/makedoc.pl)
	- (Curtis Knight) installDesktop: made special case for Red Hat and
	  GNOME 1 desktop - do not add compatibility 'OnlyShowIn' .desktop key
	- (Curtis Knight) installDesktop: pulled out initialization code
	  to create installDesktopInitialize function
	- (Curtis Knight) installDesktopInitialize: creates base directories
	  for all available desktops and reworked back into installDesktop
	- (Curtis Knight) created installIcon, installSound, installIconTheme
	  which reference XDG specifications - Icon Theme & Base Directory
	- (Curtis Knight) apkg-defs: added text for installing sounds or icons

16th April 2003
	- (Hongli Lai) stub/installer.template: quoting fixes.

14th April 2003
	- (Curtis Knight) installDesktop: added modifying 'Exec' key to Debian
	  Menu System Support - previous code was moved to setupDesktopFile
	- (Curtis Knight) installDesktop: added 'X-Autopackage' and additional
	  KDE desktop entry keys to Debian Menu System Support if defined in
	  .desktop file
	- (Curtis Knight) installDesktop: checks for an executable update-menus
	  before updating menus in Debian Menu System Support
	- (Curtis Knight) installDesktop: Debian Menu System Support has the
	  same copy file output status as the copyFiles function
	- (Curtis Knight) apkg-defs: updated reference for Desktop Action
	  Menus to the setupDesktopFile function instead of the previous
	  installDesktop function

13th April 2003
	- (Curtis Knight) Added the ability to  check for available
	  diskspace before expanding .package archive
	- (Curtis Knight) Grouped subbed data,  made all the subbed in
	  data methods the same and added quoting
	- (Curtis Knight) Added checkDiskSpace function
	- (Hongli Lai) New functiions: installGnome2AppEntry,
	  installGnome2Mime, getGnome2Prefix.
	- (Hongli Lai) stub.template: quoting fixes.
	- Moved the disk space checking code around, checks for the directory
	  now
	- Disk space for dependancies (not tested, doesn't abort install)
	- (Curtis Knight) installDesktop: modifying files after copying to destination
	- (Curtis Knight) installDesktop: checks for 'Red Hat' distro before doing
	  OnlyShowIn key in .desktop file for GNOME 2 desktop
	- (Curtis Knight) added setupDesktopFile function which groups the processes
	  done after copying file to destination (used to be done on source file)

12th April 2003
	- (Hongli Lai) makeinstaller,backend.template,stub.template,
	  installer.template: Clean up all of it's mess when something fails.
	- (Hongli Lai) installDesktop: fix KDE 2 installation with
	  desktop-file-install.
	- (Hongli Lai) stub.template: update shm detection.
	- Help screen, beginngs of dual install detection
	- Fixed protocol error in the TTYFE (should return OK even for TERMINATE)
	- Changed "failed" colour to red in prepareBuild()
	- Removed use of mktemp in prepareBuild()
	- Unbroke the -x option to extract the contents
	- Updated MANPATH support
	- Fixed bug in unforging of dependancies

10th April 2003
	- (Hongli Lai) prune: fix quoting errors.

8th April 2003
	- (Hongli Lai) addSectionLine: '| sort' belongs outside the quote
	  mark.
	- (Hongli Lai) installDesktop: removed code for adding Category=.
	  We shouldn't try to "fix" legacy .desktop files.
	  Also removed all the code that adds "ShowOnlyIn=old" in the
	  .desktop file (except for GNOME 1). Otherwise the desktop entry
	  doesn't show up in *any* menu at all.

7th April 2003
	- (Hongli Lai) Make stub.template also check for -help and --help.
	- (Hongli Lai) makeinstaller now cleans up it's mess when
	  something fails.
	- (Hongli Lai) 'package' now checks if the file specified by -p
	  really is a valid Autopackage file.
	- (Hongli Lai) apkg-defs: added intl_QUERY_PACKAGE_INVALID_FORMAT
	- (Hongli Lai) testForLib: removed checking for trailing '.so'
	  because it prevents you from checking libraries like
	  'libogg.so.0'
	- (Hongli Lai) installBin: removed creating versioned launcher
	  symlink.
	- (Hongli Lai) mkdirs: 'Dir *' belongs in $apkg_filelist, not
	  $apkg_logfile. Bad Mike! Baaaad Mike!
	- (Curtis Knight) addSectionLine: reordered parameters such that it
	  can add a line of text to a section without needing to match
	  some text; fixed references to function.

6th  April 2003
	- (Dave Wickham) Added prune function to bashlib
	- Split mkdirs into an internal function _mkdirs() which just creates the dirs and
	  spits out the paths it created, and mkdirs() which is logs it to the install logs
	  and should be used in package scripts
	- childtest touches a test file now, so the skeleton works properly
	- Added copyright for Curtis to apkg-script-utils
	- Fixed bug in uninstall whereby if a package root name shared part of one being
	  uninstalled (ie was deeper in the heirarchy) they'd both have their info removed
	  from the database.

5th  April 2003
	- Moved prefix selection from a user interaction to a command line option
	- Various other things (oops :)

31st March 2003
	- (Curtis Knight) Preparation for docbookification

30th March 2003
	- (Curtis Knight) apkg-bashlib: added addSectionLine function
	- (Curtis Knight) apkg-bashlib: added removeSectionLine function
	- (Curtis Knight) apkg-defs: added .desktop action menu text - Update, Verify, Remove
	- (Hongli Lai) make drawHeader* faster and actually work.
	- Fixed database creation code

29th March 2003
	- More fixups for the payload/metadata split
	- GUI indenting
	- Global UI session to prevent incorrectly quitting between prep and install
	- Protocol version back to 1
	- Group ids are now computed as an md5sum of the root name
	- Decompress on demand, at last! :)
	- Moved progress bar stuff out of the stub and into the script-utils lib

20th March 2003
	- Made CVS less broken.
	- Payload recursion code

13th March 2003
	- (Curtis Knight) installDesktop:
	- Initial support for XDG Desktop Menu Specification (detect & install).
	- Initial support for XDG Desktop Entry Specification by
	  adding APKG .desktop action menus [RMB] - Update, Verify, Remove.
	- A single .desktop file can be converted for legacy and XDG DMS use.
	- Integrated Debian Menu System into installDesktop function.
	- Organized function such that all detection logic [esp. KDE] is located
	  in 'Checks' while 'Support' does the necessary action.
	- File logging works for Debian Menu System - .desktop entries are written
	  to one menu file per package (shortname).
	- Created two functions: addSectionLine and removeSectionLine.
	- apkg-defs: Added text for .desktop action menus.

8th March 2003
	- (Curtis Knight) Updated installDesktop to use Debian Menu System
	  when it is available by translating the desktop files.
	  Removed Mandrake specific installDesktop section.

7th March 2003
	- (Curtis Knight) Convert makeinstaller to use getopts.
	  Updated makeinstaller help text for multiple spec filenames.
	  Setup mentions refresh-skel instead of update-skel.

6th March 2003
	- (Hongli Lai) installDesktop: check wether user ID is root
	  instead of checking for write access to the target dir.
	- (Hongli Lai) prepareBuild: Exit if configure fails. Quoting
	  fixes.
          Added support for the following variables (useful for
 	  debugging):
	  $APKG_BUILD_VERBOSE: determines whether to redirect output
          to /dev/null or not.
	  $APKG_BUILD_SKIP_CONFIGURE: skips configuring.
 	  $APKG_BUILD_SKIP_MAKE: skips make.
	- (Hongli Lai) makeinstaller now works if no arguments are
	  given. Quoting fixes.

5th March 2003
	- Bugfixes to the front-end swapping code
	- ttyfe indents things properly now, and draws headers to make it
	  super-clear which package is performing the output
	- Removed some of the extra output in the stub
	- makeinstaller can build multiple packages at once now
	- makeinstaller uses blue headers

3rd March 2003
	- Local dependancy resolution
	- TTYFE performs session tracking now
	- Pipe handoff to subpackages, nested packages can share the GUI
	  properly now
	- Misc bugfixes

2nd March 2003
	- (Hongli Lai) Make makeinstaller look for autopackage/default.spec
	  if no arguments are given.
	- (Hongli Lai) build-release: quoting fixes.
	- makeinstaller uses the new in-package structure
	- A few bugfixes

28th Feburary 2003
	- Preparing for the full metadata/payload split
	- makeinstaller now requires an arg specifying what
	  specfile to use, ie:

		makeinstaller foobar

	  neesd a specfile in ./autopackage/foobar.spec

27th February 2003
	- Groups implementation complete in testcase and the ttyfe
	- Make the output* methods return the result properly
 	- Updated autopackage API to new protocol, wrote second test case
	  for that API
	- Misc fixes for packages that don't install things (ie metapackages)
	- Moved backend file (that is the common header for all install scripts)
	  out of makeinstaller and into a new file, backend.template

24th February 2003
	- Continuing work on GUI revamp and test cases, path tilde
	  expansion now tested.

22nd February 2003
	- Started adding UI unit tests, polishing the ui protocol
	- Added drawHeaderBlue to bashlib, and some background colour
	  control functions
	- The TTYFE now blocks on wait like it should, it queues interaction
	  requests so they can be "played back" at the appropriate time
	- TTYFE has concept of "groups" now, but protocol doesn't

14th February 2003
	- (Hongli Lai) apkg-ttyfe: Mostly fixed Ctrl+C issues.
	  stub.template: check for (meta)data extraction return code.
	- Updated package retrieval code to new skeletons system
	- Killed remappers

13th February 2003
	- (Hongli Lai) Fixed the skeleton update script so that it
	  actually works. Mike, that script doesn't use apkg-funclib!!!

12th February 2003
	- Switched skeleton database to rsync

11th February 2003
 	- (Curtis L. Knight) MD5 integrity checking


10th February 2003
	- (Curtis L. Knight) created function locateCommand to find an
	  executable on a target system - a combined function of 'which'
	  and 'whereis' commands: locateCommand in apkg-bashlib.
	  installDesktop was modified to use this function.
	- (Hongli Lai) apkg-dep: farewell database corruptions, may we
	  never meet again!
	  installer.stub: removed the database corruption warning.
	- (Julien Oliver) Misc bugfixes

	- Fixed scoping bug in mkdirs
	- Finished off the makeinstaller side of the new skeleton design


5th February 2003
	- (Hongli Lai) stub.template, makeinstaller: the metadata payload
	  is now compressed with gzip, for faster decompression.
	  Changed tar's "j" arguments to "--bzip2" for compatibility with
	  older versions of tar.

3rd February 2003
	- (Hongli Lai) stub.template: extract to shared memory if available.
	- (Hongli Lai) Update some copyright information.
	- (Jeremy Dreese) "package info" can read the database as well
	  as files.
	- Fixed libxml skeleton. It now works with both libxml1 and libxml2.
	- The new skeleton design is partly implemented.


2nd February 2003
	- (Hongli Lai) makeinstaller, stub.template: first stage of
	  data/metadata seperation. While the stub contains 2 archives
	  now, no code has been written yet to take advantage of this.
	  The current behavior is pretty much like the old behavior.
	- (Hongli Lai) installer.template: make message() use $DIALOG
	  and make Autopackage report better messages when download
	  succeeds or fails.
	- (Hongli Lai) apkg-io, apkg-tty: make aborting the install
	  actually work.
	- Fixed some bugs in scanLDLibPath()
	- Refactored testForLib

30th January 2003
	- (Hongli Lai) The glibc.sh test script actually works correctly
	  now!

28th January 2003
	- (Hongli Lai) Integrate installDesktop with libprefixdb's
	  pdbrun tool.

------------------------ 0.2.1 was released ---------------------------------

22nd January 2003
	- (Curtis Knight) KDE detection code merged
	- Removed bad symlinks from setup script
	- Fixed Mandrake kde menus check
	- Changed which to whereis to work around kde not being in root path
	  on suse (we need to make a better solution for this)

19th January 2003
	- (Hongli Lai) Removed KDE 3 detection code since it's exactly
	  the same as the KDE 2 detection code.

18th January 2003
	- (Dave Wickham) Correction to previous patch
	- Minor style corrections in installDesktop()
	- resolveName now supports dual databases
	- package uninstalls now have an error for when you don't have
	  sufficient perms to uninstall the package
	- Stop user from being able to override lockdowns (oops)

16th January 2003
	- (Dave Wickham) -x extract flag on stub	

15th January 2003
	- (Hongli Lai) installBin now creates a versioned launcher symlink.

13th January 2003
	- (Curtis Knight) installDesktop Mandrake support

12th January 2003
	- (Curtis Knight) More package error handling behaviour changes

11th January 2003
	- (Hongli Lai) apkg-bashlib: rewrote getAllButLastArgument.
	  Renamed to getAllButLastArg. Renamed getLastArgument to getLastArg.
	- (Hongli Lai) apkg-script-utils: Renamed getLastArgument to getLastArg.
	- (Hongli Lai) Fixed a quoting bug in copyFiles that makes
	  shell wildcards behave wrongly.
	- (Hongli Lai) installBin now creates bootstrap scripts if necessery.
	- (Hongli Lai) installDesktop modifies the Exec field to include PATH= and
	  LD_LIBRARY_PATH=
	- (Hongli Lai) installLib and installBin don't have a destination argument now.

	- (Curtis Knight) Modify no parameters behaviour in package
	- (Curtis Knight) compareVersions improvements
	- Made LGPL Licensing clear

10th January 2003
	- (Hongli Lai) installDesktop now wraps the exec command in sh -C

9th January 2003
	- (Julien Oliver) Home directory/non-root installs
	    Just finished integrating this huge patch from Julien, meaning
	    that users can install packages without needing to be root.
	    Still need proper support from the libprefixdb side of things
	    however.

	- package uninstall orders output on errors correctly

5th January 2003
	- libxml is now @gnome.org/libxml
	- dialog is now @advancedresearch.org/dialog

21st December 2002
	- (Jeremy Dreese) Allow testForLib to scan LD_LIBRARY_PATH

20th December 2002
	- Config file versioning
	- User databases

19th December 2002
	- Default prefixes can now be chosen, ie a line in the config file will
	  allow you to make each package install to its own directory.
	- Eliminate libtool warnings
	- Trap ctrl-c and cleanly abort

18th December 2002
	- (Jeremy Dreese) Respect TMP take 2
	- Moved some functions from apkg-funclib to apkg-script-utils
	- (Jacob Coby) Progress bar on extract

17th December 2002
	- safeSed added to the bashlib. It replaces constructs of the form,
	  cat file | sed 'regex' > file, and avoids issues with pipe
	  asynchronity.
	- (Jacob Coby) Make unforgeDependancy safe, more debug info on dep database
	  corruption

16th December 2002
	- (Jeremy Dreese) Respect $TMP variable
	- (Jeremy Dreese) Several quoting fixes

13th December 2002
	- (Jacob Coby) Move "package install" logic into retrieve
	- Protocol versioning

12th December 2002
	- (Jacob Coby) "package install" command line option
	- Root lockdown code. Basic frontend/backend protocol synch
	  To enable this, set autopackage_deny_install to true in /etc/autopackage

11th December 2002
	- (Jeremy Dreese) Allow installations to prefixes with spaces in them.
	- Some other quoting fixes
	- Beginnings of root lockdown code

10th December 2002
	- Added support for .desktop path fixup when installing as root
	  (ie no more huge .desktop Exec lines). This is in preparation for
	  the introduction of launcher scripts.
	- Support for restricting installations: by setting
	  autopackage_can_install to false, you will prevent a .package from
	  installing. This check is perfomed in the front ends currently, not
	  so sure that's the best place to put them.

8th  December 2002
	- Added lpad to bashlib
	- stub.template now has code to display percentage complete during
	  compression. This means really huge packages won't flood the
	  screen with dots anymore.

7th  December 2002
	- installLib: grep ld.so.conf directly instead of using cat's
	  output. Quote $dest variables. Changed 'grep "$dest"' to
	  'grep "^$dest$"' in order to avoid wrong detection.
	- Fixed TODO bug #1 (changed payload_dir to source_dir).
	- chmod 700 the source directories.

------------------------ 0.2 was released ---------------------------------------

5th  December 2002
	- Made build-release script! Huzzah!
	- Fixed bug in testForLib which stopped it detecting some libraries
	- Fixed library symlinking bug

4th  December 2002
	- Fixed bug in verify code (checkPackage interface changed)
	- Fixed stupid race condition in setup script (note: don't write to file
	  at same time as reading it)

3rd  December 2002
	- Added glibc.sh script

2nd  December 2002
	- Prevent the user installing the same package twice (for now).
	  This is to work around database corruption created when a package
	  is installed twice without an intermediate uninstall
	- Added manpath configuration option

1st  December 2002
	- Fixed redhat8 bug properly this time :p
	- glibc skeleton file
	- foobar has some fake dependancies now
	
30th November 2002
	- Fixed redhat8 bug, some quoting fixes

29th November 2002
	- Fixed some bugs on redhat 8, we still have one outstanding, menu related

28th November 2002
	- Fixed installDesktop() bug where it was messing up GNOME2 paths
	- Fixed uninstallInfo() so it actually removes the info file (d'oh)
	- Fixed genst specfile so it runs properly
	- testForLib accepts version numbers

	- Arguments can be passed through to skeleton files now.
	  This is useful so one skeleton file can be made far more flexible,
	  for instance the GTK skeleton would now be capable of testing for
	  patchlevels on libgtk+ and any extra modules linked in etc.
	  This was one of the major items on the TODO list for 0.2

27th November 2002
	- Shamelessly trying to write some ChangeLog entries. (*gasp*)
	- apkg-bashlib: new function endsWithNewline.
	- installMan uses endsWithNewline, so it doesn't leave redundant
          newlines behind in man.config.
	- installDesktop now detects GNOME and KDE even without the
	  *-devel packages.
	- uninstallInfo now works (at last!!! w0000t!)	

26th November 2002
	- We now route all our output through the FE again (we got lax beforehand)
	- Two new functions in bashlib: getLastArgument and getAllButLastArgument
	- .package files have a debug mode now, run it with the -d switch to be put
	  into a bash shell just before control is passed to apkg-installer
        - installLib can deal with multiple libs at once properly again
        - libfoo version was changed
        - library links are properly uninstalled now

25th November 2002
        - Checked in automake fixes to foobar
        - Linker cache entries are removed on uninstall
        - manpath is now updated and unupdated properly

------------------ HERE STARTS PROPER CHANGELOG MAINTENANCE ---------------------

27th October 2002
        0.1.5 was released a few days ago, to much excitement (cough).

        - Rearranged funclib, split it up into smaller pieces
        - Made prepare/unprepare cycle a lot faster

19th October 2002
     It works again now ;) Me and Hongli have fixed several bugs related to
     allowing multiple packages to be built at once, without interfering.

     Hongli added readline support to the ttyfe as well, which is pretty neat.
     Quite a few other changes I've probably forgotten about. Oh yeah, the
     preparation/unprepare script in makeinstaller has been cleaned up and
     improved.

     We also have a foobar program now to play with, this'll make adding new
     features somewhat easier, thanks to Hongli again.

     libprefixdb is in CVS.

3rd October 2002
     Hongli has been working on libprefixdb - lots of discussion
     about how to tackle various problems on the mailing list. In terms of
     code I've been allowing you to set your own skeleton directories, and
     general code cleanup has been the result.


20th September 2002
     Bloody hell. Why did I keep forgetting to update the changelog?
     Oh well. This is the current state of play. The website is up,
     the code is fairly clean, and this will be my last entry before
     public release.

     Contrary to what this file says, I have actually worked on it quite
     a bit since then. Not as much as I'd have liked, but unfortunately
     I suffered a blip in spare time. Writing the website took quite a
     bit of time. I have written the setup script to make it easy for
     newbies to setup their machine for autopackage.


...... time passed ......

23rd July 2002
     Progress has been slow in the last few days. The new jobs, and
     finding accomodation have taken their toll. Some work on the
     remapper has been done, however it's still not finished. That's
     my work for tonight....

     OK, remapper is now done. Will probably need to be redesigned at
     some point, but for now it's good enough :) Getting psyched up
     ready for release now... only a few more days I think and it's
     time to start working on the website.

     Updated the TODO list.

19th July 2002
     Finished internationalization! Huzzah! Apparently there is no
     central location where you can go to get translators to look at
     your project. What's needed is something like what the KDE crew
     do, having teams of translators that you "register" with to get
     your software into their languages. There are already mailing
     lists of translators. It just needs somebody to get down and do
     it.

     Began work on the remapper. The remapper is just a script that
     takes a file type as a parameter and echos where it should be
     put. I'm not sure how well this design would hold up.... I guess
     the only solution is to wait and see. In particular, one problem
     (which is generic to all package managers) is how to allow users
     to install without root access. RPM and to my knowledge DPKG
     simply ignore this problem all together: if you're not root, you
     can't install software - period. I'd like autopackage to be a
     little bit more flexible than that ideally, so you can at least
     get most of the files into your ~ if you don't have root. In
     fact, it can already do this and will adjust permissions to suit
     (assuming the package database is world-writeable). But what to
     do about man pages/docs etc?

18th July 2002
     Improved testForLib function: it nows verifies that the
     cache is correct. Fixed a couple of bugs.

     Phew! Started internationalization. So far, done apkg-verify and
     makeinstaller.

17th July 2002
     Worked on verification. Need to clean up dialog test to remove
     references to output methods (and to insulate against this type
     of mistake).

16th July 2002
     Lots of progress today. Dependancies are virtually
     complete, the uninstaller has received a lot of work too - it
     deals better with errors now. Packages in the database now have a
     dependancies file, listing what they need, and a supports file,
     which lists what other packages need them. Installing or
     uninstalling a package will update these files as needed, and if
     you try to uninstall a package that still supports others, you'll
     receive a warning about it.

     Next up, verification. Somebody on /. pointed out that actually
     occasionally needing a package verification wasn't as lame as I
     thought it was. His point was that people rarely pay attention to
     warnings, and saying "well you shouldn't have ignored the
     warning" doesn't get browny points from users. However, if they
     break something and can then easily auto-repair it, for some
     reason they find this dead impressive. <shrug> He's right I
     guess, but I'd still rather be able to avoid it if possible. Oh well.

15th July 2002
     The format of the skeletons directory is now:
	 skeletons/rootname/skeleton
     If installing to home directory, permissions are set correctly
     now.

     The new dependancy system works, but I need to ensure the [Test]
     section of the skeleton is copied to the info file, so we can
     verify later. Also need to process the retrieve command, and
     place that into the info file too

14th July 2002
     Began major reorg of the dependancies system. Documented the
     format of the specfile and skeleton files. makeinstaller now
     scans the specfile for the require keyword, and includes the
     necessary skeleton files in the package. Need to implement the
     require function, and also change skeleton tree layout - instead
     of the skeleton being the version number, the vnum should also be
     a directory.

     Made first announcement on slashdot. 

13th July 2002
     Uninstallation works (at least in simple cases). Rejigged the
     copy* methods to use one copyFile method now. Need to look into
     how we make copying arbitrary files easier - I think a more
     abstract system is needed, whereby the locations for certain
     files are pulled from a database, and then the copyFiles method
     is used directly, rather than having the intermediate
     copyExecutables, copyData and copyDocs. This would require
     modifications to the extract method too.

12th July 2002	
     Can now get strings from the user, which will be bound to a
     named variable. Defaults must be provided. Used to get prefix in
     genst test package. Starting to write copy* methods.

     Copy routines work - the first autopackage is installed today, at
     5pm. Next up, uninstalling ;) I need to clean up my system
     somehow. Also the copyDoc function copies to SuSE 7.3 specific
     locations. Need to design a way of mapping the files to the
     correct (distro-specific) locations.

11th July 2002
     TTYFE now binds gets strings and binds results correctly -
     written get() routine but not tested.

10th July 2002
     Started on the data retrieval mechanism. It works like this: the
     installation script can ask for several SELECTs, which
     essentially request information from the user. A SELECT usually
     will have a default value, and will always have a binding
     variable, however it does not necessarily retrieve the
     information straight away. This is to allow for event driven
     interfaces such as GUIs, where the user may fill out fields at
     their leisure in any order, before proceeding.

     When the script wants to start using the data it SELECTed, it
     must do a SELECT WAIT, which will pause the script until all data
     entries are satisfied. Note: it is possible that there will be a
     record mode, in which the values of SELECTs are stored for later
     automated installations. For this reason, every binding variable
     must be unique, you cannot  reselect 2 different datums to the
     same variable.

     TO DO: test out user interface protocols, add support for
     different data types, write tty user interface code to support them.
