pakke 0.2.2 To-Dos & Random Gibber
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

$Id: todo.txt,v 1.49 2002/10/16 17:43:44 richdawe Exp $

- Verbosity? i.e. add some messages, different levels
. Audit verbosity, error messages & levels.

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

- RAR?
. This has freeware unrar sources.

- bzip2 support? This has been ported to DJGPP.
. Continue adding bz2 framework.

- Need freeware untarring source too - djtarx? Probably could just use sources
  from GNU tar, because pakke is GPL'd.
. Ah, but libpakke 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.

- 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.

. Option to install DSMs into available database?

. 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
+++OK

- 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.

- Add options to modify paths on CLI.

- 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 pakke-workers.

- When using package lists (linked-lists) and removing elements, check that
  the head element isn't being removed!
. packlist_dedupe() needs to cope with the case where the head is a duplicate.
+++DONE

- Make file query use file creation logs from install rather than manifests
  => more accurate.
. Create manifests in share/pakke/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.
. Added 'maintainer-distclean' target.
+++OK

- When using pakke 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.

- 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?

- pakke + 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.
+++DONE

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

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

- 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?).

- 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 pakkerc.
. 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 pakke-workers).

- 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.
+++DONE

- 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.

- 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.

- 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.
. Fileutils 4.1 alpha 1, when piped through less.

- 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' check if 'short-description' and 'long-description' have
  a line length greater than 80 characters (once formatted).
. Check other directives too?

- Scripts: dsm2ver - make .ver out of .dsm; mkmft - make a manifest from
  files in current directory - optionally get manifest filename from
  .dsm.
+++DONE

- Check that FTP downloading works.
+++DONE

- Add support for downloading from mirrors.
+++DONE

- Add support for --syncdb downloading of ds*.zip.
+++DONE

- Does libpakke cope when there's no manifest path?

- configure test for locating 'basename', to build without warnings
  on Linux. <unistd.h> on DJGPP, <libgen.h> on POSIX?
+++DONE

- Use termios rather than getch().

- Write test for isspecialpath().
+++DONE

- doc/Makefile should have dependencies on version.txi.
+++OK

- '--initdb' should copy wget too.

- Allow HTTP/FTP mirror to be specified on command-line.

- Allow HTTP/FTP mirrors to always be used in non-interactive mode
  via a command-line switch.

- Use RATS to audit code for possible buffer overruns. (There are
  quite a few - e.g.: lazy use of strcpy()).

- Make dsmcheck detect duplicate DSMs, to help catch the case
  where you copy one DSM file for a package, e.g. binary, to another
  which should be a sources DSM, but forget to change the dsm-type.

- Fix problems with handling of $(MAKEFLAGS) on recursion.
+++DONE, removed usages of -$(MAKEFLAGS), since they were bogus.

- HOWTO for HTTP/FTP downloading.

- Use __dpmi_yield() in package checking, to hog processor less.

- --syncdb when dsXXXXXX.zip doesn't exist?

- Cope with duff downloads into the package directory: zero-length files,
  ZIPs with bad CRCs, etc.

- Add a diff option to upgrade, a` la dpkg.

- Weird message on editing & syncing binutils 2.12.1 (binaries)'s DSM?
". Matched package: $B_NAME -> binutils 2.12.1 (binaries)"

- Write DSM for readline.

Richard Dawe <rich@phekda.freeserve.co.uk>
