summaryrefslogtreecommitdiff
path: root/TODO
blob: 3bece837237d65d503b0fb4a4069370c8b6cfb5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
ROADMAP
=======

1.15.x (squeeze)
~~~~~~

 * Review this file and remove or update the old entries.

 * Look for FIXME and XXX items in the source.

 * Triage as much bugs as possible to get the bug count below 300 ;) and
   merge as much patches as possible.

 * Create dedicated manual pages for .changes and .dsc documenting the
   format of the files. (deb-foo might not be apprioriate as those are
   not inside of the .deb file, but changes(5) seems too generic.)
   Explain that backwards incompatible change involve a major version bump
   (1.x => 2.x) while minor version bump will be used for backwards
   compatible extension (e.g. new fields).

 * Make dpkg bootstrappable.

 * Code cleanup:
   - Get rid of static variables inside functions.
   - Coalesce admindir / infodir / foodir generation.
   - Get rid of setjmp (at least in the general case, keep for dpkg itself?)
   - Coalesce hash and checksum functions.
   - Split modstatdb_rw into mode and flags.
   - Move fd and block function out of mlib.
   - Cleanup status chars -> strings hardcoded mappings all over the place.
     (Fix tied field enum with its dselect description (pkgdisplay.cc))
   - Refactor src/processarc.c.
   - Make sure all vsnprintf callers are checking the return value, as the
     system version will not ohsite on us.
   - Fix naming consistency of next/prev members.
   - Do more unused header include removal.
   - Get rid of unuseful "unsigned" modifiers.
   - Use internerr instead of assert, and print more meaninful messages.
   - Make actionfunction return int, and avoid global exitcode variables.
   - Move ACTION and OBSOLETE, etc to ‘myopt.h’.
   - Use max/min in dselect instead of lesserint/greaterint.
   - Refactor packageslump into generic code.
   - Refactor subprocess execution (argument building etc).
   - Replace raw write and read calls with safe variants (signals etc).
   - Use MD5HASHLEN.
   - Fix compress_type being shadowed.
   - Fix stat variables being shadowed (bugs!!).
   - Make deb build version a version instead of doing checks over a string.
   - Use enums for currently hardcoded literals (tdus, dependtry, etc).

 * Deprecate --force-not-root flag (remove modstatdb_rw rootneeded flags).

 * Test and reenable --command-fd.

 * Check --no-act for log_action().

 * Man pages:
   - Add example to dpkg-scanfoo manpages?
   - Merge synopsis lines in dpkg-triggers.
   - Check all '<>' use bold instead.
   - Check all command vs action.
   - Check usage of '|' instead of ', '.
   - Check position of short option before long option.
   - Use [option...] instead of [options] and friends?
   - Fix dpkg man page, refs to dpkg-deb and dpkg-split, etc.
   - Fix «commandline» vs «command line».
   - Fix «.  ».

 * L10n:
   - Standardize translated error messages in the perl code to avoid useless
     work for translators.
   - Check http://d-i.alioth.debian.org/spellcheck/level5/index.html

 * Discuss and implement
   http://www.hadrons.org/~guillem/debian/docs/origin.proposal

 * Add non-regression tests for Dpkg::Source::*

 * Cleanup libcompat:
   - Add fnmatch, IRIX5 doesn't have it.
   - Fix scandir, leaks on malloc and realloc.

 * Add multiarch support.

 * Merge stuff back:
   - debsums (metadata storage).
   - ucf (cleverer conffile handling).
   - debconf (dpkg-*configure and add new status):
     + dpkg --reconfigure <pkg> <pkg>
       <pkg>.postinst reconfigure <ver>
       Fail if pkg is not in the configured state.
   - dpkg-cross (multiarch + dpkg cross compilation support).
   - dpkg-sig (dak fixed, import code, needs reply, #340306).
   - apt: deb-*/ dirs, apt-extracttemplates (libdpkg).
   - (maybe parts of wajig, aptitude, synaptic, ept, ...).

 * Start exposing libdpkg.
   - Split dpkg.h into dpkg-priv.h.
   - Add needed includes to all header files.

 * Add UTF-8 support to all programs.

 * Modify database to store per-file flags.
   - Store checksums and stat data in per-file flags.
   - Add md5sums and/or sha1sums package support. (#155676)

 * Allow packages to register additional files, declare ownership of files for
   dpkg -S and -L without having dpkg act on this (.psuedolist?).

 * Some kind of test-suite (Esteban).

 * Make dpkg-checkbuilddeps easier to use by other programs such as pbuilder
   or sbuild, so that they can start using the new architecture wildcards
   automatically.
   - Support for output format. (#214566)

 * Remove conffile background support? (#38334)

 * Make dpkg-deb --build check for duped conffiles. (#131633)

 * Propagate --admindir to programs run from maintainer scritpts. (#97076)

 * Fix conflicting action -%c, when short is 0.

 * We should set our own obstack_alloc_failed_handler.

 * Fix quotes? <http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html>

1.16.x (squeeze + 1)
~~~~~~

 * Remove compatibility symlinks
   /usr/sbin/{update-alternatives,dpkg-divert,dpkg-statoverride}.
 * Remove install-info wrapper.


TODO
====

Old TODO entries from Scott:

start-stop-daemon
* capabilities support
* don't close FD's

dpkg
* allow external program to specify how to handle conffiles
* try to remove directories again after removing conffiles
* verify Enhances works (ie don't trigger some assertion)
* add test to see if a file should really be installed and optionally
  skip it
* dpkg --call-maint-script=<script> --maint-script-arg=<arg>
  --maint-script-arg=<arg> <pkg> <pkg>
    dpkg will not allow <script> to be one of {pre,post}{inst,rm}.  Only
    unknown scripts can be called this way.  dpkg will also not keep track
    of any state for these scripts.

Fix:
<joeyh_> package a conflicted with old versions of package b. package b
      conficted with old versions of package a. I had the old versions of both
      installed, and told dpkg to install the new versions of a and b
      simulantaneously. It refused.

dselect:
* support Enhances

------------------------------------------------------------------------------

Old TODO entries from IWJ:

Here are some currently-known inadequacies:

urgent
 * Conflicts << installation ordering
 * Version numbers in pre-depends stuff
 * Search for all pre-depends things at once, bomb out if any not found
 * _always_ show section in --yet-to-unpack
 * automatically do --yet-to-unpack in installation methods
 * check depending packages when installing new version.
 * Several things ought to be configurable but aren't.
 * Filenames containing newlines.  Conffile names containing spaces.
 * dpkg --status for virtual packages
 * openpgp signatures in the package archive

other stuff unlikely to get done soon
 * Automatically remove <file>.gz if <file> can't be found ? and maybe,
   remove <file> if <file.gz> can't be found? Big mess when we start
   thinking about bz2 :/
 * Local version number (using non-numeric epoch, perhaps, or better yet,
   a --local option in dpkg, so that it marks this package as a local install
   (when running dpkg -i)? Keeps it from being listed as obsolete, and maybe
   from being considered for auto-upgrades (apt-get needs to know about this
   too)
 * Filename field generated by --record-avail 
 * understand Replaces in dselect
 * diversions list as control archive entry
 * single maintainer script, and new package getting there first
 * local conffiles, aswell as local files that dpkg should check before
   overwriting
 * hooks
 * dselect per-half focus and keybindings improvements.
   !missing bug report #1555!

 * floppy map (where are the files)
 * how to change case of package names
 * `fake' or `null' packages
 * dpkg --query | -Q