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=/info \ --info-file=/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. on DJGPP, 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