summaryrefslogtreecommitdiffstats
path: root/TODO
blob: 3a3bab29fcc6fa3fcc73b9f5c69dabaa3d650a0c (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
RoadMap
=======

  <https://wiki.debian.org/Teams/Dpkg/RoadMap>

TODO
====


Recurring
---------

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


Projects
--------

 * Merge functionality from debsigs-verify, debsigs:
   - Redesign OpenPGP signatures support within .deb archive and its policy.

 * Add UTF-8 support to all programs.

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


Tasks
-----

 * C/C++ code cleanup / bug fixes:
   - Get rid of static variables inside functions.
   - Coalesce hash and checksum functions.
   - Split modstatdb_rw into mode and flags.
   - Move fd 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/unpack.c.
   - Split dpkg.h into independent headers.
   - Do more unused header include removal.
   - Add needed includes to all header files.
   - Get rid of useless "unsigned" modifiers.
   - Use enums for currently hardcoded literals (replacingfilesandsaid,
     filetriggers_edited, etc).
   - Do not use nfmalloc (and friends) for non in-core db memory.
   - Call nffreeall on exit (need to detangle nfmalloc from non-db first).
   - Add a size parameter to the buffer API to avoid some useless
     pipe+fork+copy.
   - Handle instdir '/' separator consistently.
   - Check if caching selinux context for second call is possible.
   - Add missing newlines in --version output.
   - Handle symlinks in statcmd.c statdb_node_apply().
   - Fix dpkg termination on SIGPIPE from status-fd.

 * libcompat cleanup:
   - Add fnmatch, IRIX5 doesn't have it.

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

 * L10n:
   - Check dpkg-divert strings for new and fixable ones.
   - Standardize translated error messages in the perl code to avoid useless
     work for translators.

 * s-s-d: Add POSIX capabilities support.

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

 * dpkg: Test and re-enable --command-fd.

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

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

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

 * dpkg-checkbuilddeps: Make it 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)

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

 * libdpkg: We should set our own obstack_alloc_failed_handler.

 * dpkg: Declarative diversions, as a control archive entry.

 * dpkg: --status for virtual packages.

 ? dpkg: --query, -Q.

 * dpkg: Filename field generated by --record-avail.

 ? dpkg: Allow external program to specify how to handle conffiles.

 ? dpkg: Add --call-maint-script=<script> --maint-script-arg=<arg>
             --maint-script-arg=<arg> <pkg> <pkg>
   Where dpkg would not allow <script> to be one of {pre,post}{inst,rm}.
   Only unknown scripts can be called this way. dpkg would also not keep
   track of any state for these scripts.

 ? dpkg: _Always_ show section in --yet-to-unpack.

 * dpkg: Fix:
   <joeyh_> package a conflicted with old versions of package b. package b
            conflicted 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 simultaneously. It refused.

 * dselect: Automatically do --yet-to-unpack in installation methods.

 * dselect: Make it understand Replaces.

 * dselect: Per-half focus and keybindings improvements.
   !missing bug report #1555!


Inadequacies (ponder, some might be fine)
------------

 * Conflicts << installation ordering.

 * Search for all pre-depends things at once, bomb out if any not found.

 * Check depending packages when installing new version.

 * Several things ought to be configurable but are not.

 * Filenames containing newlines.

 * Conffile names containing spaces.

 * Handling of case in package names.

 * 'fake' or 'null' packages (useful for equivs or fink system packages).

 * Local conffiles, as well as local files that dpkg should check before
   overwriting.