-
Notifications
You must be signed in to change notification settings - Fork 4
/
TODO
162 lines (153 loc) · 8.98 KB
/
TODO
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
TODO
====
KNOWN PENDING ISSUES
--------------------
This is the list of known pending issues which still *HAVE* to be
resolved during release engineering. Please do not just list any
*CANDO* items.
- jbj: make a complete pass through rpm.org check-ins and make sure they
have exactly zero "features" that are not already in rpm-5.0. With
full attribution of course ...
- jbj: finish Requires: sanitycheck(N) = E:V-R runtime probe.
- jbj: finish BuildRequires: vcheck(N) = E:V-R runtime probe.
- jbj: write up added featlets/bugtures in %docdir notes.
- jbj: handle SourceN: foo-V-R.src.rpm unpacking.
- jbj: fix (or at least document) the /sbin/ldconfig optimization flaw.
- jbj: finish --trust with --import (or punt to 5.1).
- jbj: add build script templates for install scriptlets (or punt to 5.1).
- jbj: change RPM_I18NSTRING_TYPE wiring to use arbitrary tag.
- jbj: markReplacedFiles() subtly rewrites header back into rpmdb
with altered RPMTAG_FILESTATES data. get/del/add sequence
is needed instead.
- jbj: VSFlags (and --nodigest/--nosignature) is now global rather than
persistently per-transaction. That means its no longer possible to
have two transactions, one which verifies signatures while the other
does not. Per-transaction VSFlags never made much sense imho, but
some may care. Establishing a end-user, not a per-application or
per-transaction, package integrity/security policy is the only
rational end-point.
- jbj: there's a buildroot compatibility issue that needs to be addressed
in (at least) doco. The problem is common to rpm-4_5 and HEAD.
Issue at
http://qa.mandriva.com/show_bug.cgi?id=34705
- jbj: Heh, --import has *always* used the wrong data type for
Summary/Description/Group. The header that carries the pubkey
lacks RPMTAG_ARCH/RPMTAG_OS as well. Re-importing all pubkeys is
one solution, but perhaps a "just works" slam-dunk hack is needed
during --rebuildb, or with header extensions. When this issue is
resolved, then rpm can/should use implicit, rather than explicit, data
types for tag data.
- jbj: add libTomCrypt signature verification.
- jbj: add per-implementation crypto hashes.
- jbj: add per-implementation symmetric ciphers.
- jbj: permit per-file encryption with password caching through keyutils.
- jbj: generalize the Leopard XAR format to ar (as in *.deb), tar, and cpio.
- afb: add read-only support for 070707 cpio so we can piggy-back on pkg
- jbj: eliminate the oddball *.src.rpm paths, nuke rpmInstallSourcePackage.
- jbj: VPATH-like generalization to fold-in splitted-source-directory patch.
- jbj: add per file RPMTAG_ENTROPY a la Shannon to start making the choice
of compression scheme computible.
- jbj: explicitly compute sums of header and package sizes to help
distro maintainers understand their cdrom/dvd and memory footprint
needs.
- jbj: split rpmtsRun() into 2 pieces, moving the file resolution
computation into its own method.
- jbj: redesign the bleeping callback, which is good for nothing but pushing
script kiddie progress bars across the screen.
- jbj: arbitrary "%foo -p /bar" scriptlets as pair'ed RPMTAG_{FOO,FOOPROG}.
- jbj: arbitrary triggers, like scriptlets, but with a condition check too.
- jbj: the hash *ahem* algorithm at rpmdb/fprint.c:186 fpHashFunction() is
pathetic. FYI, the fingerprint hash is in the top 10 pigs when
profiling rpm installs, so better has immediate performance benefits.
rpmio/lookup3.c is possibly better. The other important usage case
is restructuring the multi-level add package "provides" lookup in
lib/rpmal.c (but that likely needs to be thrown into a Berkeley DB
table to minimize memory footprint).
- jbj: using qsort to insure that nearly sorted lists of join keys in
an rpmdb remain sorted is stoopid: quicksort on nearly sorted lists
is slower than alternative implementations like mergesort.
- jbj: eliminate internal --initdb (useless) and --verifydb (peculier
to Berkeley DB and adequately/equivalently achievable with db_verify).
- jbj: NSS has many memory leaks that are not free'd by NSS_Shutdown().
- jbj: this leak needs fixing somewhen:
==3436== 12 bytes in 1 blocks are definitely lost in loss record 3 of 9
==3436== at 0x4805525: malloc (vg_replace_malloc.c:149)
==3436== by 0x4934365: argvSplit (argv.c:207)
==3436== by 0x48F89F9: tagLoadATags (tagname.c:31)
==3436== by 0x48F969E: _tagValue (tagname.c:361)
==3436== by 0x48F9805: tagValue (tagname.c:403)
==3436== by 0x48878F9: rpmdsSysinfo (rpmds.c:1600)
==3436== by 0x48A5BDE: rpmtsCreate (rpmts.c:1302)
==3436== by 0x3EFA: main (rpmqv.c:540)
- jbj: eliminate %patch-as-macro-in-C implementation.
- jbj: convert unused syntax (like Disttag:/Repotag:/Cvsid:) to arbitrary tags
- jbj: convert %prep/%build/%install/%check/%clean to arbitrary srpm tags.
- jbj: use devtool.sh as a model for an arbitrary state machine that
runs arbitrary scripts in deterministic order, checking error codes.
Rewrite rpmbuild.c accordingly.
- jbj: hmmm, arbitrary Foo: (except for Class:) ends up in binary *.rpm's,
while %foo (like %track) ends up in *.src.rpm's. I'll pretend that's
a feature until a means to more precisely specify arbitrary tag
copying into binary/source rpm's is devised.
- jbj: rpm --help using popt-1.13 with non-utf8 needs some work.
POPT_fprintf using iconv(3) is the common element so far.
- jbj: MacPorts is going to universal binaries (the Mac OS X equivalent
of multilib) with a "fat" arch in *.rpm packages. Better can be done,
including insturmenting running lipo(1) automagically during install.
- jbj: build/build.c doScript() was a crack-soaked proof-of-concept build
system script invoker with macro templates that I threw together on
a Saturday afternoon in November, 1999. Noone has ever bothered to
rewrite the goop sadly, far better could and should be done.
- jbj: users continually expect the ability to create "noarch" subpkgs even
though rpm has only a single build (and arch is a constant for that build).
Permitting noarch subpkgs is no more complicated than applying an
explict sanity check that, indeed, the subpkg contents are "noarch".
- jbj: both --yaml and --xml are in need of QA regression tests.
2 of 1300 packages fail to YAML load correctly. One of the
failure cases was irregular white space in %description,
the other case involved RPM_I18NSTRING_TYPE.
- jbj: XOR operator needed, such that Requires: LSB ^ !LSB has valid
truth table
- jbj: RFE: capture arbitrary 'defines' from the ENV, and the invocation
command line, each to end up in binary *.rpm's to show more of build
time options
- jbj: rewrite pgpReadPkts to return array of clearsign'd segments instead.
- jbj: teach argvSplit about escaped seperator characters.
- jasonc: spec file parser: one cannot represent a "odd" file path in a
Provides such as:
Provides: /path/with spaces/and,commas/foo.bar
currently because both spaces and commas can be used to indicate
multiple provides entries (Mac OS X is great at finding these types of
"problems")
- rse: XAR 1.5.2 doesn't build under Solaris 10 as <fts.h> and the
BSD4.4 fts(3) API is completely missing there.
- jbj: "make dist" no workie with XAR internal. layering in automake is
preferred way forward.
- jbj: /usr/lib64 is reported not expanded into rpm.pc pkgconfig fle and
___init.py___.
- jbj: distributing per-platform configuration needs to be done. At a minimum,
the cpu-os.macros.tar.gz file needs distributing with the rpm tarball.
- jbj: verify whether RPMv3 installs (or not).
- jbj: use txar to convert RPMv3 -> rpmv4 (headerReload needs adding).
- jbj: configure --parentdirs/--noparentdirs win persistent run-time macro
and stop discussing in public.
- jbj: permit building w/o changelogs. instead use a header extension to
pull changelogs from a URL, with a default of
file:///usr/share/doc/N-V/Changelog
Use YAML for extra credit.
- jbj: verify(...) probe likely needs to supply _SOME_ information for
failure cases, at least with -vv.
- jbj: verify(...) with prelinking likely needs more "stuff" in QVA_t:
D: rpmdb: read h# 512 Header V3 DSA signature: OK, key ID 1ac70ce6
prelink: Couldn't write file to standard output: Broken pipe
- jbj: handle +bing -bang =boom args within rpmgi.c.
RPM 5.2 ROADMAP ISSUES
----------------------
- jbj: drill in "+foo" ports-like find the real store by prefixing
secret sauce path. Its wired into --install/--upggrade only to
minimize risk. a small refactoring moves same to rpmgi ...
where it becomes available for --query, so rpm -qT --aid +bash
has a prayer of constructing the minimal transaction to install bash.
- jbj: ever better would be to add "=bash" token to construct (and
loop check) the minimal transaction to install bash using headers
from rpmdb. -- added as a aide to memory per IRC thread