            __  _  _  _ _________________________________________
           | /.|_)|_)/ \         DJGPP Package manager           |
           |/_||  |  \_/            by Richard Dawe              |
           |_ http://www.phekda.freeserve.co.uk/richdawe/zippo/ _|

zippo 0.1.6 To-Dos & Random Gibber
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

$Id: todo.txt,v 1.38 2002/03/10 21:14:47 richdawe Exp $

- Verbosity? i.e. add some messages, different levels

- Sort out the error handling - it's terrible right now
. DSM parsing now provides info.

- RAR?
. This has freeware unrar sources.

- bzip2 support? This has been ported to DJGPP.

- Need freeware untarring source too - djtarx? Probably could just use sources
  from GNU tar, because zippo is GPL'd.
. Ah, but libzippo is LGPL'd, so we need LGPL (or compatible) tar library.

- Query by package type?
. Add more flexible query options.

- More stringent checking of versions.

- Type as part of requirement? Default to binaries here - makes most sense.
. Maybe later, when things are a little more developed.

- Querying, etc., should work with available packages also if none found in
  installed database? Maybe this should occur with the '-p' option, i.e. if
  spec'd file doesn't exist, then query available ones. But what if file
  exists, but isn't package? OK, use '-q' option because the package is either
  installed or in the available database.
+++NAAH

- How to add packages to available database? Should be fairly easy - copy DSM
  into db-avail/. Ah, which directory? First in DSM path would make sense.
  This should be the root path, if the config is correct.

. Later: should the install just write out a DSM with all the settings in it?
  This could include any prefix used, etc. This would then be a "pure" DSM with
  no comments, etc. in it.

- Is it possible to have two versions of a package installed and satisfy the
  dependencies? I think the package list may have to be sorted by name &
  version to make this function correctly.

- Manifests not found, no error given sometimes?

- Duplicate DSMs? How is this resolved? Take the one with the later version?
. dsm-version should be the version of the DSM? Where would info about DSM
  spec version go?
. dsm-version      -> DSM specification version
. dsm-file-version -> file version

- Remove the distinction between different types of archive. This is pretty
  pointless really. It can remain in the DSM standard though.
. Maybe I should remove it from there too, but let the extension spec the
  archive type?

- Sort package list according to package name?
. Later: The sort order should be user selectable? Certainly have the install
  order logged somewhere.

- Does 'requires: foo == 1.2.3' work if multiple versions of foo (including
  1.2.3) are installed?
+++YES, seems to - see tests/dep/multi.c.

- Add options to modify paths on CLI.

- Add some kind of checking on dsm-file-version? Should it do something?
. It's already parsed in the same way as other versions, so it is checked.
+++OK

- Add support for digital signatures - RSA, DSA, etc.?

- Move modifiers to bitfields from enum; remove QM_ALLDEPS, because the
  bitfield can then take care of it.

- Replace AC_CHECK_FUNCS plus object includes in makefile by AC_REPLACE_FUNCS.

- Preserve some files and not others? e.g. config files?
. keep-file directive - overrides overwriting directives.

- Timestamps on files? Only overwrite if existing file is older!
. Better to use MD5 hash; also store file attributes.
. How about using MD5 to check for changed files? Uninstall refuses to delete
  files with changed signature?
. See discussion on zippo-workers.

- When using package lists (linked-lists) and removing elements, check that
  the head element isn't being removed!

- Support for .zipporc, _zipporc in home directory, to override system global
  file?
. How would this work? Parse global and then home directory one, use home dir
  settings in preference?
. This is a lot easier, now we have a new parser.

- Make file query use file creation logs from install rather than manifests
  => more accurate.
. Create manifests in share/zippo/db, rather than relying on manifest/*.mft,
  since not all packages have this (e.g. emacs).
. Later: we can use the MD5 file to get a list of files, although we'd need
  to strip the prefix off each filename.

- When querying an installed package, the prefix should be obtained from the
  installed db (the install log), so the user doesn't need to use the
  --prefix option.
. Prefix handling needs to be tidied up a lot.

- Use bison for parsing?
. Yep, switch DSM parser to use it in the future.

- distclean to clean up Makefiles generated by config script.

- When using zippo on Linux, how should it extract the files? What case
  filenames should it use? Should it automatically lowercase them? Command-line
  option / config option?

- Checking & errors on directory with /dev in it.
. Added isspecialpath() function - needs appropriate usage.

- DSM writing HOWTO

- Use GNU gettext for internationalisation.

- Call package_free() when dsm_parse() fails? Avoid memory leaks.
. What about packlist_free() - should that free package structs too?
+++DONE

- Option to install DSMs into available database?

- Auto set-up on NT? Generate registry key file, auto-insert into registry
  (via start command)? (for user's environment).

- DSM for ActiveState's Perl for Win32? So that automake can be installed?
  It seems to work OK with AS's Perl.
. Done, but need version numbers too?

- zippo + MSS on CD-ROM -> error, because cannot create log file
. Partial fix, probably could do better.

- If installing a ZIP file, search for the matching DSM and then install using
  that, if no DSM in the ZIP file.

- Add licence details to DSMs - licence should be compulsory part of DSM?
. Probably should generate warning if 'license' not present, but there's no
  real support in DSM error code for warnings right now.

- Make a maintainer's target for building source distributions.

- build system needs rewriting - now it builds too much, dependency
  detection is flawed etc.

- Make dsm_free_file_error_list(), etc. set pointers to NULL after freeing
  memory, to avoid memory corruption-type bugs.
+++DONE

- Discuss extending the DSM spec w.r.t.:

. Adding 'configuration-file' directive / file permissions & install/uninstall
  actions on a per-file basis => --purge, --erase for uninstall (see
  Laurynas's mail that mentions dpkg's options).

- Keeping track of files - allow them to belong to multiple packages, to cope
  with broken packages that include files they shouldn't.

- Allow types in deps, so (weird example) sources conflicts-with binary is
  allowed (bizarre semantics?).

- Audit verbosity, error messages & levels.

- Add support for installing group DSMs?

- Fix 'install' to do text docs too.
. Fixed temporarily, but should be done better.

- Support for letters in version numbers, to handle e.g. bzip2 0.9.5d.

- Document regexp matches - confusing treatment of '.' in regexp vs.
  user strings?

- Support operation on several packages simultaneously. Upgrade is probably
  only useful when you can do this, e.g. upgrading gcc release.

- Support for scripts, built-in scripting language.

- Sort out allowed characters in zipporc.
. Added more, still have all allowed characters?

- Fix popt warnings on Linux - const char ** on argv.

- Add package building utils (see discussion with Tim van Holder
  on zippo-workers).

- Add test/dsm to the test suite
+++DONE

- Types in package comparison - xref, etc. should compare types explicitly.
  Maybe package_vercmp() should take a flag to indicate whether type should
  be included in comparison.

- Need order of precedence in verdiff() for alpha, beta, etc. These can't
  be compared in the same way as numbers.

- Add shell-style wildcards for package queries.
. Coded, now need to document how packages are matched.

- Obsolete simple match type, since this is just a simple case of
  user-specifier and can be handled by the same code.

- Upgrading to previous version of a package - need to look at 'replaces: <'
  in package of same name - reverse dependency - installed vs. new.

- Move ZIP integrity check to after dep check on install, upgrade.
. Naah, just return all errors before aborting.
+++DONE

- Update all DSMs to invoke install-info like this:

    install-info --info-dir=<prefix>/info \
    --info-file=<prefix>/info/thingy.info

  as post-install and post-uninstall step. We need to define substitution
  syntax for scripting commands.

- '--syncdb' needs to look for removed packages too, I think.

- 'Makefile.in' should contain rule to build 'config.hin' from 'config.in'?
+++NO, handled by scripts/mkconfig.sh.

- '-qal' doesn't have headers between file lists?
+++NO, seems to work OK.

- Continue adding bz2 framework.

- Warn about versions that only have a major version component.

- Add a test for dependencies like:

    requires: libfoo >= 4.*
    requires: libfoo < 5

- Type of dependencies doesn't default to binary anymore => deps broken!
. Actually, we need to specify types in dependencies, but default to
  the same type as the parent package.
. provides directives shouldn't have a type? But how to match
  provides vs. requires on a provision?

- Munch CRLFs at the end of line, when dumping text docs in
  --pre-install-readme, etc.
. Hmmm, which package did that happen with? It seems to display OK now.

- Type on deps without ver number?
+++DONE

- Don't be case sensitive on extraction of changelogs, etc.
+++DONE

- How does --syncdb cope if more than one DSM matches a manifest name
  for a package that it needs to synchronise?

- Uses of packlist_find() do not free memory after done with list?

- Make 'dsmcheck' if 'short-description' and 'long-description' have
  a line length greater than 80 characters (once formatted).
. Check other directives too?

- Check that 'package == numbers' works in 'requires', etc.

Richard Dawe <rich@phekda.freeserve.co.uk> 2002-03-10

Graphics generously designed & Copyright (C) 2000, 2001 by Krogg.
