New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding header tag formats to generate UUIDS #269
Comments
The rpm_uuid.patch is now applied to an RPM tree at rpm5@c8c72fb |
Changing indices to be octets (rather than integers) is a prerequisite to using UUID's as a join key. There are many problems (endianness, exposure of hdrNum/tagNum in the RPM API) that need to be solved to use a UUID as an octet string for LMDB (and for BDB). See other issues for work-in-progress. Ideally, a UUIDv1 (which has time ordered properties) should be used as the retrieval key throughout all RPM backend databases. One of the immediately obvious and useful side effects is that "rpm -qa" will present results in install order by default, which is more deterministic (and less confusing imho) than random hash bucket iteration returns. |
Meanwhile this patch adds a --queryformat modifier to generate UUID's from tag values, which is an entirely orthogonal and mostly non-intrusive usage case than converting hdrNum/tagNum to an octet string. |
UUID's provide a common format for identification and database retrieval.
The attached patch adds header tag formats to RPM queries.
The UUIDv3/UUIDv5 name spaces can be configured through optional macros (defaults below)
For reference, the actual text used for, say, Sha1header, in a namespace UUID looks like
Essentially a prefix (to make the namespace unique) of %_uuid_auth and %_uuid_path followed by a tag name and a tag value. The string is then digested with MD5/SHA1 and encoded in a UUIDv3/UUIDv5 respectively.
UUID's will be the starting point for a RPM+LMDB implementation used as header retrieval keys.
You will need the acinclude.m4 file from issue #257 to use the patch below. Adding the hires timestamps from issue #197 would improve the UUIDv1 granularity (not implemented).
The text was updated successfully, but these errors were encountered: