1
Revision history for Perl extension RPM.
3
0.01 Thu May 4 12:04:34 2000
4
- original version; created by h2xs 1.19
6
0.1 Mon May 22 00:59:54 PDT 2000
9
Classes for RPM::Header and RPM::Database are (more or less) done.
10
RPM::Constants appears to have everything that is expected to be
11
needed (i.e., any changes should result in shortening the list of
12
exported symbols, rather than lengthening it). A basic top-level
13
RPM namespace is present, but doesn't yet do anything useful. Some
14
basic test scripts are in place, but more are (always) needed.
16
0.2 Mon May 29 17:59:20 PDT 2000
19
Class for RPM::Error added. The code is in the RPM.xs file, but
20
the docs and accessors are done in RPM/Error.pm.
22
All sub-classes moved to RPM/.
24
More documentation added, especially to RPM::Constants.
26
RPM::Constants had about a dozen or so trimmed out.
28
Found error in Database.xs where the FIRSTKEY/NEXTKEY pair would
29
have returned string-ified references instead of package names,
30
because of not taking the first array element. I really plan to
31
change the RPM::Header::FETCH interface.
33
Added two utility functions under the RPM::* space for getting O/S
34
and architecture names.
36
Put in the start of thread-safing the module. But this part of the
37
API is still pretty black in the Lockheed Skunkworks sense of the
38
word, so it isn't at all complete.
40
0.25 Mon Jun 5 00:54:59 PDT 2000
43
Fixes to the thread-safing code. When built against a 5.6.0 configured
44
for threading, several problems were found. All (current) tests now
45
pass on that configuration.
47
Added a file, IMPORTANT.perl, to the distribution that explains the
48
nature of a condition that can prevent the extension from working on
49
any version of Perl not installed from an rpm.
51
Still more trimming of tokens out of Constants.pm that are not of use
52
by the interface being provided. Filled in a few more in terms of
55
Found a case in RPM::Header that would cause core-dumps: Any tags found
56
by the iterator that were not exported for the API by the rpm lib
57
could cause a null pointer to be passed through to an entry point that
58
was several lines past where I had normally checked for the null. This
59
meant that source RPMs would almost certainly break, since the
60
offending tags only showed up when I started testing against SRPMS.
61
Now, the iterators skip over these internal tags. The normal FETCH
62
method already tested for this, but the interators were sneaking past
65
Added a method to the RPM::Header class, is_source(), that returns a
66
true value (1) if the header is associated with a source RPM.
68
0.26 Fri Jul 14 01:03:02 PDT 2000
71
Added NVR() method to RPM::Header for obvious reasons of convenience.
72
Also added cmpver method, which calls into the rpmCompareVersion() API
73
hook to compare two headers' version/release data with an internal
74
algorithm that handles numerical and alpha content in the tags.
76
Took out all remaining warn()'s and croak()'s, replacing them with
77
rpm_error() calls. Most notable in the error-return cases of
78
RPM::Database::init and ::rebuild.
80
More thread-safing, in particular the heretofore-ignored RPM::Constants
83
Added a sample script in utils, called rpmprune. It has a --help
84
summary and a man page, see those for details.
86
0.27 Tue Aug 8 00:02:22 PDT 2000
89
Added filenames() method to RPM::Header. This re-assembles the list of
90
filenames from the components in the tags, BASENAMES, DIRNAMES and
93
Added scalar_tag() method to RPM::Header. This returns a 0/1 value
94
based on whether the return value for a given flag is an array ref or
95
scalar (respectively). Can be called with either a string or a number
96
argument. Can be called as a static (class) method.
98
Added RPM/Error.xs and integrated into the build. All the XS code for
99
RPM::Error that was previously in RPM.xs has been moved here.
101
Added export of %RPM to RPM::Database. If requested, this is a hash
102
pre-tied to the RPM::Database package (and thus the rpm database). One
103
may also request $RPM and get an object referencing a tied hash.
105
The return values from fetches on header objects has been completely
106
revised. Tags are now explicitly defined as scalar or list in nature.
107
The scalar_tag() method above is a part of this. The return value from
108
a scalar tag is now a plain scalar. There is no more need for $_->[0]
109
on scalar returns. Lists are still returned as list references, and
110
undef is still used to signify problems. Tests have been added to
111
t/02_headers.t for this, and tests in t/01_database.t were updated to
112
use the new syntax. This does not obsolete the RPM::Header::NVR method,
113
as that is a much faster means of fetching those three items than a
114
stock fetch of the three individual tags would be.
116
More tags/values documented in RPM::Constants.
118
0.28 Fri Aug 18 01:29:35 PDT 2000
121
Considerable additions made to the documentation in RPM::Constants, as
122
well as a few corrections. The prototype of the constant() function
123
was changed, as well.
125
Several bugs were addressed in RPM::Header, most notably: Error returns
126
now correctly return a value of "undef"; A blocking issue surrounding
127
multiple RPM::Header objects from ftp:// sources is fixed; the mode
128
with which files are opened was also changed to allow for reading off
129
of STDIN. The error-return issue was also applied to RPM::Database.
131
RPM::Header now has a source_name() accessor method that returns the
132
file name (or URI) that the header was read from. This is null if the
133
header came from the database.
135
0.29 Wed Oct 4 22:29:56 PDT 2000
138
The only change of note in this release is compatibility with version
139
4.0 of RPM. Additionally, some flags to the C compiler to work with
140
the gcc that is distributed with Red Hat Linux 7. This version has
141
been tested on both 6.2 and 7 systems.
143
0.291 Fri Oct 13 01:45:18 PDT 2000
146
The flags that are created from the rpm version are now passed for
149
A thread-safing bug was found and fixed in Header.xs. An unused
150
variable was removed.
152
Makefile.PL has some large-scale work, including the addition of a
153
template spec file following the __DATA__ token, code to expand this
154
file using the values that MakeMaker has derived for the package,
155
generation of make rules to construct *.rpm and *.srpm files, and
156
generation of "rpmrc" and "rpmmacro" files to use in invoking rpm
157
(to force all operation into the local dir area).
159
0.292 Mon Nov 13 22:40:15 PST 2000
162
Some unused variables were found in several places.
164
Moved away from the self-tie mechanism and instead handle the data
165
opacity in a completely different fashion. This simplified some code,
166
muddled some, but ultimately led to the removal of several #define
167
macros, more unused variable removal, and (hopefully) more stable
170
Addressed a problem in both RPM::Database and RPM::Header XS code
171
wherein destructors were not getting called when objects were
172
implicitly or explicitly freed.
174
Added more tests to the test suite.
176
Changed the names of some of the find_* routines in RPM::Database.
177
See the manual page. The old names were confusing me, despite my
178
direct familiarity with the code!
180
The find_* functions in RPM::Database may now take a RPM::Header
181
object as their argument, and will use the package's name for the
184
It's still leaking RPM::Header objects in the RPM::Database routines.
185
The alternative is a nasty mix of "attempt to free unreferenced
186
scalar" errors and core dumps.
188
0.30 Wed Mar 7 22:13:40 PST 2001
191
Much of the leakage of RPM::Header objects is now gone, due mostly to
192
changing the prototype of rpmdb_FETCH to returning a SV* instead of
193
a RPM::Header reference. The various class DESTROY methods seem to be
194
getting called in the correct order, now.
196
Caught a case in the RPM::Header class where attempting to reference
197
an element of a non-existent tag would trigger auto-vivification on
198
that key, which in turn was leading to some bad calls being made to
201
Re-did the av-assignment in rpmhdr_create. This should save on SV*
202
creation, though it might not have been a leak. Still, this method
203
is more efficient overall.
205
Newer versions of rpm 4.0 tickled a bug in which a database offset
206
value might get sent in without being initialized first. This was
207
caught and fixed. Also related to the 3.0/4.0 rift, some variables
208
only used for 3.0.X are now declared within #ifdef's to defeat 'unused'
211
The current state of the module will be released to allow for use by
212
other parties, without the wait for any ongoing development milestones
215
0.31 Fri Apr 27 01:45:37 PDT 2001
218
Re-worked most of RPM/Constants.xs to accomodate the change from
219
#define to enum values in 4.0.2. This will be released as an
220
interim version, since Red Hat is shipping 7.1 with this version of
223
0.32 Tue May 15 00:54:20 PDT 2001
226
Found and fixed a bug in RPM/Database.xs that was causing more of
227
the "Attempt to free unreferenced scalar" messages. In the process,
228
noticed that caching of values during iteration wasn't actually
229
working as designed. The resulting fix should improve database look-ups
232
Two more places found (one in RPM/Header.xs, one in RPM/Database.xs)
233
that were contributing to memory leakage.
235
A lot of changes to RPM/Constants.xs in terms of reducing the number
236
and length of string-compares made in constant look-ups. This is most
237
noticable in the RPM* set of constants, where the breakdown is the
238
most granular. On the main dev box (a P-1/233MHz) this sped up the
239
full test suite by over 25%.