Imported Upstream version 1.16.10
[services/dpkg.git] / TODO
1 RoadMap
2 =======
3
4   <http://wiki.debian.org/Teams/Dpkg/RoadMap>
5
6 TODO
7 ====
8
9 1.16.x
10 ~~~~~~
11
12  * Review this file and remove or update the old entries.
13
14  * Look for FIXME and XXX items in the source.
15
16  * Triage as much bugs as possible to get the bug count below 300 ;) and
17    merge as much patches as possible.
18
19  * Create dedicated manual pages for .changes and .dsc documenting the
20    format of the files. (deb-foo might not be apprioriate as those are
21    not inside of the .deb file, but changes(5) seems too generic.)
22    Explain that backwards incompatible change involve a major version bump
23    (1.x => 2.x) while minor version bump will be used for backwards
24    compatible extension (e.g. new fields).
25
26  * Build:
27    - Check availability of warning flags at configure time.
28
29  * Code cleanup / bug fixes:
30    - Get rid of static variables inside functions.
31    - Coalesce admindir / infodir / foodir generation.
32    - Coalesce hash and checksum functions.
33    - Split modstatdb_rw into mode and flags.
34    - Move fd function out of mlib.
35    - Cleanup status chars -> strings hardcoded mappings all over the place.
36      (Fix tied field enum with its dselect description (pkgdisplay.cc))
37    - Refactor src/processarc.c.
38    - Split dpkg.h into independent headers.
39    - Do more unused header include removal.
40    - Add needed includes to all header files.
41    - Get rid of unuseful "unsigned" modifiers.
42    - Use internerr instead of assert, and print more meaninful messages.
43    - Use enums for currently hardcoded literals (replacingfilesandsaid,
44      saidread, rok, filetriggers_edited, etc).
45    - Do not use nfmalloc (and friends) for non in-core db memory.
46    - Call nffreeall on exit (need to detangle nfmalloc from non-db first).
47    - Add a size parameter to the buffer api to avoid some useless
48      pipe+fork+copy.
49    - Handle instdir '/' separator consistently.
50    - Check if caching selinux context for second call is possible.
51    - Add missing newlines in --version output.
52    - Handle symlinks in statcmd.c statdb_node_apply().
53    - Fix dpkg termination on SIGPIPE from status-fd.
54
55  * libcompat cleanup:
56    - Add fnmatch, IRIX5 doesn't have it.
57
58  * Man pages:
59    - Add example to dpkg-scanfoo manpages?
60    - Merge synopsis lines in dpkg-triggers.
61    - Check all command vs action.
62    - Check usage of '|' instead of ', '.
63    - Check position of short option before long option.
64    - Fix dpkg man page, refs to dpkg-deb and dpkg-split, etc.
65    - Fix «.  ».
66
67  * L10n:
68    - Check dpkg-divert strings for new and fixable ones.
69    - Standardize translated error messages in the perl code to avoid useless
70      work for translators.
71    - Check http://d-i.alioth.debian.org/spellcheck/level5/index.html
72
73  * Discuss and implement
74    http://www.hadrons.org/~guillem/debian/docs/origin.proposal
75
76  * Deprecate --force-not-root flag (remove modstatdb_rw rootneeded flags).
77
78  * Test and reenable --command-fd.
79
80  * Check --no-act for log_action().
81
82  * Add non-regression tests for Dpkg::Source::*
83
84  * Add UTF-8 support to all programs.
85
86  * Allow packages to register additional files, declare ownership of files for
87    dpkg -S and -L without having dpkg act on this (.psuedolist?).
88
89  * Make dpkg-checkbuilddeps easier to use by other programs such as pbuilder
90    or sbuild, so that they can start using the new architecture wildcards
91    automatically.
92    - Support for output format. (#214566)
93
94  * Fix conflicting action -%c, when short is 0.
95
96  * We should set our own obstack_alloc_failed_handler.
97
98  * Remove compatibility symlinks
99    /usr/sbin/{update-alternatives,dpkg-divert,dpkg-statoverride}.
100  * Remove install-info wrapper.
101
102
103 ------------------------------------------------------------------------------
104
105 Old TODO entries from Scott:
106
107 start-stop-daemon
108 * capabilities support
109 * don't close FD's
110
111 dpkg
112 * allow external program to specify how to handle conffiles
113 * try to remove directories again after removing conffiles
114 * verify Enhances works (ie don't trigger some assertion)
115 * add test to see if a file should really be installed and optionally
116   skip it
117 * dpkg --call-maint-script=<script> --maint-script-arg=<arg>
118   --maint-script-arg=<arg> <pkg> <pkg>
119     dpkg will not allow <script> to be one of {pre,post}{inst,rm}.  Only
120     unknown scripts can be called this way.  dpkg will also not keep track
121     of any state for these scripts.
122
123 Fix:
124 <joeyh_> package a conflicted with old versions of package b. package b
125       conficted with old versions of package a. I had the old versions of both
126       installed, and told dpkg to install the new versions of a and b
127       simulantaneously. It refused.
128
129 dselect:
130 * support Enhances
131
132 ------------------------------------------------------------------------------
133
134 Old TODO entries from IWJ:
135
136 Here are some currently-known inadequacies:
137
138 urgent
139  * Conflicts << installation ordering
140  * Version numbers in pre-depends stuff
141  * Search for all pre-depends things at once, bomb out if any not found
142  * _always_ show section in --yet-to-unpack
143  * automatically do --yet-to-unpack in installation methods
144  * check depending packages when installing new version.
145  * Several things ought to be configurable but aren't.
146  * Filenames containing newlines.  Conffile names containing spaces.
147  * dpkg --status for virtual packages
148  * openpgp signatures in the package archive
149
150 other stuff unlikely to get done soon
151  * Automatically remove <file>.gz if <file> can't be found ? and maybe,
152    remove <file> if <file.gz> can't be found? Big mess when we start
153    thinking about bz2 :/
154  * Local version number (using non-numeric epoch, perhaps, or better yet,
155    a --local option in dpkg, so that it marks this package as a local install
156    (when running dpkg -i)? Keeps it from being listed as obsolete, and maybe
157    from being considered for auto-upgrades (apt-get needs to know about this
158    too)
159  * Filename field generated by --record-avail 
160  * understand Replaces in dselect
161  * diversions list as control archive entry
162  * single maintainer script, and new package getting there first
163  * local conffiles, as well as local files that dpkg should check before
164    overwriting
165  * hooks
166  * dselect per-half focus and keybindings improvements.
167    !missing bug report #1555!
168
169  * floppy map (where are the files)
170  * how to change case of package names
171  * `fake' or `null' packages
172  * dpkg --query | -Q