openSUSE:Standards Rpm Metadata Patches
Repomd Patch Format
|This format is only used on Code10 based distributions (SLE 10.x and SUSE Linux 10.x)|
For a correct and complete example files, look at the attachment below
If you haven't done so already, please read the rationale concerning patches first.
The rest of this page is INCOMPLETE !!!
The patch xml representation starts with a normal header and <patch>:
<?xml version="1.0" encoding="UTF-8"?> <patch xmlns="http://novell.com/package/metadata/suse/patch" xmlns:patch="http://novell.com/package/metadata/suse/patch" xmlns:yum="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" xmlns:suse="http://novell.com/package/metadata/suse/common" patchid="foo-12321" timestamp="2342342" engine="1.0">
- patchid is the internal (as far as maintenance is concerned) name
- timestamp is the build date of the patch
Name, version, etc.
It then continues with normal repomd stuff for name, version, etc.
<yum:name>foo</yum:name> <summary lang="en">install if you have lots of foo</summary> <description lang="en">fixes Bug #231312</description> <yum:version epoch="0" ver="1" rel="2"/> <arch>i586</arch>
So we're looking at patch foo-1.2.i586 here.
A patch can have a full set of dependencies as explained here.
Most important for patches are two conditions
- Is this patch needed at all (The why) ?
- Which packages are needed (The what) ?
The why question is answered by a freshen dependency:
<suse:freshen><suse:entry kind="package" name="blah"/></suse:freshen>
This means: If package blah is installed, consider this patch.
(If package blah is not installed, this patch is not further considered).
The what is answered by normal requires dependency:
<rpm:requires><rpm:entry kind="package" name="blah" ver="5" rel="6" flags="GE"/></rpm:requires>
Both (freshens and requires) dependencies together express:
= If package blah is installed, it should be blah =>= 5.6
It is important to note that the freshen is completely independent from the requires.
All depedencies carry a kind attribute to denote if the dependency targets a patch or a package.
There are currently three categories defined security, recommended, optional.
- Inst-source-utils - This package contains createpatch, which will create a repo for SLE10 systems. Using in conjunction with the package makepatchrpm, you can make a patch repository.