add libsolv-constantids manpage
authorMichael Schroeder <mls@suse.de>
Fri, 7 Jun 2013 13:20:51 +0000 (15:20 +0200)
committerMichael Schroeder <mls@suse.de>
Fri, 7 Jun 2013 13:20:51 +0000 (15:20 +0200)
doc/libsolv-bindings.txt
doc/libsolv-constantids.3 [new file with mode: 0644]
doc/libsolv-constantids.txt [new file with mode: 0644]

index 696d88f..840214e 100644 (file)
@@ -186,7 +186,7 @@ Constant string Ids
   The keyname Id of the name of the solvable.
 
 *...*::
-  see the libsolv-knownid manpage for a list of fixed Ids.
+  see the libsolv-constantids manpage for a list of fixed Ids.
 
 
 THE POOL CLASS
diff --git a/doc/libsolv-constantids.3 b/doc/libsolv-constantids.3
new file mode 100644 (file)
index 0000000..04b2f8a
--- /dev/null
@@ -0,0 +1,901 @@
+'\" t
+.\"     Title: libsolv-constantids
+.\"    Author: [see the "Author" section]
+.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+.\"      Date: 06/07/2013
+.\"    Manual: LIBSOLV
+.\"    Source: libsolv
+.\"  Language: English
+.\"
+.TH "LIBSOLV\-CONSTANTIDS" "3" "06/07/2013" "libsolv" "LIBSOLV"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+libsolv-constantids \- fixed Ids for often used strings
+.SH "DESCRIPTION"
+.sp
+Constant Ids are Ids of strings that are often needed\&. They are defined to ease programming and reduce the number of pool_str2id calls\&. The constant Ids are part of the binary ABI of libsolv, a minor version update will only add new constants and not change existing Ids to maintain compatible\&. The on\-disk solv format works does not use the fixed Ids, but instead references the strings, so solv files can still be read when the ABI is broken\&.
+.SH "SPECIAL STRINGS"
+.PP
+\fBID_EMPTY ""\fR
+.RS 4
+The empty string\&. It will always have Id 1\&.
+.RE
+.PP
+\fBSYSTEM_SYSTEM "system:system"\fR
+.RS 4
+The name of the always installed "system" solvable\&.
+.RE
+.SH "SOLVABLE ATTRIBUTES"
+.sp
+These are Ids for keyname of attributes\&. They can be used in the lookup and storage functions to select the correct attribute in the solvable\&. The describtions below describe the intended semantics of the values stored in the attribute with the keyname\&.
+.PP
+\fBSOLVABLE_NAME "solvable:name"\fR
+.RS 4
+The name of the package\&.
+.RE
+.PP
+\fBSOLVABLE_ARCH "solvable:arch"\fR
+.RS 4
+The architecture of the package\&. See the Solvable Architecture section for predefined architecture Id values\&.
+.RE
+.PP
+\fBSOLVABLE_EVR "solvable:evr"\fR
+.RS 4
+The version of the package\&. It usually consists of some combination of the Epoch, the Version, and the Release of the solvable\&.
+.RE
+.PP
+\fBSOLVABLE_VENDOR "solvable:vendor"\fR
+.RS 4
+A vendor string\&. Usually the company or group that created the binary package\&.
+.RE
+.PP
+\fBSOLVABLE_PROVIDES "solvable:provides"\fR
+.RS 4
+Stores an array of dependency Ids that describe the capabilities that the package provides\&.
+.RE
+.PP
+\fBSOLVABLE_OBSOLETES "solvable:obsoletes"\fR
+.RS 4
+Stores an array of dependency Ids that describe the packages that this package replaces\&.
+.RE
+.PP
+\fBSOLVABLE_CONFLICTS "solvable:conflicts"\fR
+.RS 4
+Stores an array of dependency Ids that describe the capabilities that this package conflicts with, i\&.e\&. that can\(cqt be installed together with this package\&.
+.RE
+.PP
+\fBSOLVABLE_REQUIRES "solvable:requires"\fR
+.RS 4
+Stores an array of dependency Ids that describe the capabilities that also must be installed when this package is installed\&.
+.RE
+.PP
+\fBSOLVABLE_RECOMMENDS "solvable:recommends"\fR
+.RS 4
+Stores an array of dependency Ids that describe the capabilities that also should be installed when this package is installed\&. It\(cqs not an error if not all capabilites can be met\&.
+.RE
+.PP
+\fBSOLVABLE_SUGGESTS "solvable:suggests"\fR
+.RS 4
+Stores an array of dependency Ids that describe the capabilities that also useful to have installed when this package is installed\&. This is intended to provide a hint to the user about other packages\&.
+.RE
+.PP
+\fBSOLVABLE_SUPPLEMENTS "solvable:supplements"\fR
+.RS 4
+Stores an array of dependency Ids that define that this package should be installed if one of the capabilities is met\&. This is like the recommends attribute, but works in the reverse way\&.
+.RE
+.PP
+\fBSOLVABLE_ENHANCES "solvable:enhances"\fR
+.RS 4
+Stores an array of dependency Ids that define that this package is useful to have installed if one of the capabilities is met\&. This is like the suggests attribute, but works in the reverse way\&.
+.RE
+.PP
+\fBSOLVABLE_SUMMARY "solvable:summary"\fR
+.RS 4
+The summary should be a short string without any newlines that describes what a package does\&.
+.RE
+.PP
+\fBSOLVABLE_DESCRIPTION "solvable:description"\fR
+.RS 4
+The description should be a more verbose description about what a package does\&. It may consist of multiple lines\&.
+.RE
+.PP
+\fBSOLVABLE_DISTRIBUTION "solvable:distribution"\fR
+.RS 4
+The distribution is a short string that describes the OS and OS version this package is built for\&.
+.RE
+.PP
+\fBSOLVABLE_AUTHORS "solvable:authors"\fR
+.RS 4
+A list of authors of this package\&. This attribute was used in SUSE packages\&.
+.RE
+.PP
+\fBSOLVABLE_PACKAGER "solvable:packager"\fR
+.RS 4
+The person who created the binary package, see also the vendor attribute\&.
+.RE
+.PP
+\fBSOLVABLE_GROUP "solvable:group"\fR
+.RS 4
+The package group that this package belongs to\&. See also the keywords attribute\&.
+.RE
+.PP
+\fBSOLVABLE_URL "solvable:url"\fR
+.RS 4
+An URL that points to more information about the package\&.
+.RE
+.PP
+\fBSOLVABLE_KEYWORDS "solvable:keywords"\fR
+.RS 4
+list of keyword string IDs used for tagging this package\&.
+.RE
+.PP
+\fBSOLVABLE_LICENSE "solvable:license"\fR
+.RS 4
+The jicense of this package\&.
+.RE
+.PP
+\fBSOLVABLE_BUILDTIME "solvable:buildtime"\fR
+.RS 4
+The seconds since the unix epoch when the binary package was created\&.
+.RE
+.PP
+\fBSOLVABLE_BUILDHOST "solvable:buildhost"\fR
+.RS 4
+The name of the host on which the binary package was created\&.
+.RE
+.PP
+\fBSOLVABLE_EULA "solvable:eula"\fR
+.RS 4
+If this attribute is present the user should be asked to accept the end user license agreement before the package gets installed\&.
+.RE
+.PP
+\fBSOLVABLE_CPEID "solvable:cpeid"\fR
+.RS 4
+A Common Platform Enumeration string describes the platform this package is intended for\&. See also the distribution attribute\&.
+.RE
+.PP
+\fBSOLVABLE_MESSAGEINS "solvable:messageins"\fR
+.RS 4
+A message that should be displayed to the user when the package gets installed\&.
+.RE
+.PP
+\fBSOLVABLE_MESSAGEDEL "solvable:messagedel"\fR
+.RS 4
+A message that should be displayed to the user when the package gets erased\&.
+.RE
+.PP
+\fBSOLVABLE_INSTALLSIZE "solvable:installsize"\fR
+.RS 4
+The disk space in bytes needed when installing the package\&.
+.RE
+.PP
+\fBSOLVABLE_DISKUSAGE "solvable:diskusage"\fR
+.RS 4
+A SUSE extension that stores for each directory the needed amount of disk space in kilobytes and inodes\&.
+.RE
+.PP
+\fBSOLVABLE_FILELIST "solvable:filelist"\fR
+.RS 4
+A list of files that the package contains\&.
+.RE
+.PP
+\fBSOLVABLE_INSTALLTIME "solvable:installtime"\fR
+.RS 4
+The seconds since the unix epoch when the binary package was installed on the system\&.
+.RE
+.PP
+\fBSOLVABLE_MEDIADIR "solvable:mediadir"\fR
+.RS 4
+The directory on the repository that contains the package\&. If this attribute is set to void, the package architecture is used as directory\&.
+.RE
+.PP
+\fBSOLVABLE_MEDIAFILE "solvable:mediafile"\fR
+.RS 4
+The filename on the repository that contains the package\&. If this attribute is set to void, the canonical file name of the package is used (i\&.e\&. a combination of the name, version, architecture)\&.
+.RE
+.PP
+\fBSOLVABLE_MEDIANR "solvable:medianr"\fR
+.RS 4
+The media number\&. This is an integer describing on which of a multi\-part media set this package is on\&.
+.RE
+.PP
+\fBSOLVABLE_MEDIABASE "solvable:mediabase"\fR
+.RS 4
+This attribute can be used to overwrite the repositories base url\&.
+.RE
+.PP
+\fBSOLVABLE_DOWNLOADSIZE "solvable:downloadsize"\fR
+.RS 4
+The size of the binary package in bytes\&.
+.RE
+.PP
+\fBSOLVABLE_SOURCEARCH "solvable:sourcearch"\fR
+.RS 4
+The architecture of the source package that this package belongs to\&.
+.RE
+.PP
+\fBSOLVABLE_SOURCENAME "solvable:sourcename"\fR
+.RS 4
+The name of the source package that this package belongs to\&. If set to void, the package name attribute is used instead\&.
+.RE
+.PP
+\fBSOLVABLE_SOURCEEVR "solvable:sourceevr"\fR
+.RS 4
+The version of the source package that this package belongs to\&. If set to void, the package version attribute is used instead\&.
+.RE
+.PP
+\fBSOLVABLE_TRIGGERS "solvable:triggers"\fR
+.RS 4
+A list of package triggers for this package\&. Used in the transaction ordering code\&.
+.RE
+.PP
+\fBSOLVABLE_CHECKSUM "solvable:checksum"\fR
+.RS 4
+The checksum of the binary package\&. See the Data Types section for a list of supported algorithms\&.
+.RE
+.PP
+\fBSOLVABLE_PKGID "solvable:pkgid"\fR
+.RS 4
+A string identifying a package\&. For rpm packages, this is the md5sum over the package header and the payload\&.
+.RE
+.PP
+\fBSOLVABLE_HDRID "solvable:hdrid"\fR
+.RS 4
+A string identifying a package\&. For rpm packages, this is the sha1sum over just the package header\&.
+.RE
+.PP
+\fBSOLVABLE_LEADSIGID "solvable:leadsigid"\fR
+.RS 4
+A string identifying the signature part of a package\&. For rpm packages, this is the md5sum from the start of the file up to the package header (i\&.e\&. it includes the lead, the signature header, and the padding)\&.
+.RE
+.PP
+\fBSOLVABLE_HEADEREND "solvable:headerend"\fR
+.RS 4
+The offset of the payload in rpm binary packages\&. You can use this information to download just the header if you want to display information not included in the repository metadata\&.
+.RE
+.PP
+\fBSOLVABLE_CHANGELOG "solvable:changelog"\fR
+.RS 4
+The array containing all the changelog structures\&.
+.RE
+.PP
+\fBSOLVABLE_CHANGELOG_AUTHOR "solvable:changelog:author"\fR
+.RS 4
+The author of a changelog entry\&.
+.RE
+.PP
+\fBSOLVABLE_CHANGELOG_TIME "solvable:changelog:time"\fR
+.RS 4
+The seconds since the unix epoch when the changelog entry was written\&.
+.RE
+.PP
+\fBSOLVABLE_CHANGELOG_TEXT "solvable:changelog:text"\fR
+.RS 4
+The text of a changelog entry\&.
+.RE
+.SH "SPECIAL SOLVABLEATTRIBUTES"
+.PP
+\fBRPM_RPMDBID "rpm:dbid"\fR
+.RS 4
+The rpm database id of this (installed) package\&. Usually a small integer number\&.
+.RE
+.PP
+\fBSOLVABLE_PATCHCATEGORY "solvable:patchcategory"\fR
+.RS 4
+The category field for patch solvables\&. Should be named \(lqupdate:category\(rq instead\&.
+.RE
+.PP
+\fBUPDATE_REBOOT "update:reboot"\fR
+.RS 4
+If this attribute is present the sytem should be rebooted after the update is installed\&.
+.RE
+.PP
+\fBUPDATE_RESTART "update:restart"\fR
+.RS 4
+If this attribute is present the software managemer should be run again after the update is installed\&.
+.RE
+.PP
+\fBUPDATE_RELOGIN "update:relogin"\fR
+.RS 4
+If this attribute is present the user should log off and on again after the update is installed\&.
+.RE
+.PP
+\fBUPDATE_MESSAGE "update:message"\fR
+.RS 4
+A message that should be shown to the user to warn him about anything non\-standard\&.
+.RE
+.PP
+\fBUPDATE_SEVERITY "update:severity"\fR
+.RS 4
+The severity of the update\&.
+.RE
+.PP
+\fBUPDATE_RIGHTS "update:rights"\fR
+.RS 4
+Any legal or other rights of the update\&.
+.RE
+.PP
+\fBUPDATE_COLLECTION "update:collection"\fR
+.RS 4
+The array containing the package list of the update\&.
+.RE
+.PP
+\fBUPDATE_COLLECTION_NAME "update:collection:name"\fR
+.RS 4
+The name of the to be updated package\&.
+.RE
+.PP
+\fBUPDATE_COLLECTION_EVR "update:collection:evr"\fR
+.RS 4
+The version of the to be updated package\&.
+.RE
+.PP
+\fBUPDATE_COLLECTION_ARCH "update:collection:arch"\fR
+.RS 4
+The architecture of the to be updated package\&.
+.RE
+.PP
+\fBUPDATE_COLLECTION_FILENAME "update:collection:filename"\fR
+.RS 4
+The file name of the to be updated package\&.
+.RE
+.PP
+\fBUPDATE_REFERENCE "update:reference"\fR
+.RS 4
+The array containing the reference list of the update\&.
+.RE
+.PP
+\fBUPDATE_REFERENCE_TYPE "update:reference:type"\fR
+.RS 4
+The type of the reference, e\&.g\&. bugzilla\&.
+.RE
+.PP
+\fBUPDATE_REFERENCE_HREF "update:reference:href"\fR
+.RS 4
+The URL of the reference\&.
+.RE
+.PP
+\fBUPDATE_REFERENCE_ID "update:reference:id"\fR
+.RS 4
+The identification string of the reference, e\&.g\&. the bug number\&.
+.RE
+.PP
+\fBUPDATE_REFERENCE_TITLE "update:reference:title"\fR
+.RS 4
+The title of the reference, e\&.g\&. the bug summary\&.
+.RE
+.PP
+\fBPRODUCT_REFERENCEFILE "product:referencefile"\fR
+.RS 4
+A reference to another product file\&.
+.RE
+.PP
+\fBPRODUCT_SHORTLABEL "product:shortlabel"\fR
+.RS 4
+A identification string of the product\&.
+.RE
+.PP
+\fBPRODUCT_DISTPRODUCT "product:distproduct"\fR
+.RS 4
+A SUSE Code\-10 product name\&.
+.RE
+.PP
+\fBPRODUCT_DISTVERSION "product:distversion"\fR
+.RS 4
+A SUSE Code\-10 product version\&.
+.RE
+.PP
+\fBPRODUCT_TYPE "product:type"\fR
+.RS 4
+The type of the product, e\&.g\&. \(lqbase\(rq\&.
+.RE
+.PP
+\fBPRODUCT_URL "product:url"\fR
+.RS 4
+An array of product URLs\&.
+.RE
+.PP
+\fBPRODUCT_URL_TYPE "product:url:type"\fR
+.RS 4
+An array of product URL types\&.
+.RE
+.PP
+\fBPRODUCT_FLAGS "product:flags"\fR
+.RS 4
+An array of product flags\&.
+.RE
+.PP
+\fBPRODUCT_PRODUCTLINE "product:productline"\fR
+.RS 4
+A product line string\&.
+.RE
+.PP
+\fBPRODUCT_REGISTER_TARGET "product:regtarget"\fR
+.RS 4
+A target for proudct registering\&.
+.RE
+.PP
+\fBPRODUCT_REGISTER_RELEASE "product:regrelease"\fR
+.RS 4
+A release string for proudct registering\&.
+.RE
+.PP
+\fBPUBKEY_KEYID "pubkey:keyid"\fR
+.RS 4
+The keyid of a pubkey, consiting of 8 bytes in hex\&.
+.RE
+.PP
+\fBPUBKEY_FINGERPRINT "pubkey:fingerprint"\fR
+.RS 4
+The fingerprint of a pubkey, usualy a sha1sum in hex\&. Old V3 RSA keys use an md5sum instead\&.
+.RE
+.PP
+\fBPUBKEY_EXPIRES "pubkey:expires"\fR
+.RS 4
+The seconds since the unix epoch when the pubkey expires\&.
+.RE
+.PP
+\fBSOLVABLE_ISVISIBLE "solvable:isvisible"\fR
+.RS 4
+An attribute describing if the package should be listed to the user or not\&. Used for SUSE patterns\&.
+.RE
+.PP
+\fBSOLVABLE_CATEGORY "solvable:category"\fR
+.RS 4
+The category of a pattern\&.
+.RE
+.PP
+\fBSOLVABLE_INCLUDES "solvable:includes"\fR
+.RS 4
+A list of other patterns that this pattern includes\&.
+.RE
+.PP
+\fBSOLVABLE_EXTENDS "solvable:extends"\fR
+.RS 4
+A list of other patterns that this pattern extends\&.
+.RE
+.PP
+\fBSOLVABLE_ICON "solvable:icon"\fR
+.RS 4
+The icon of a pattern\&.
+.RE
+.PP
+\fBSOLVABLE_ORDER "solvable:order"\fR
+.RS 4
+An ordering clue of a pattern\&.
+.RE
+.PP
+\fBSUSETAGS_SHARE_NAME "susetags:share:name"\fR
+.RS 4
+Internal attribute to implement susetags shared records\&. Holds the name of the solvable used for sharing attributes\&.
+.RE
+.PP
+\fBSUSETAGS_SHARE_EVR "susetags:share:evr"\fR
+.RS 4
+Internal attribute to implement susetags shared records\&. Holds the version of the solvable used for sharing attributes\&.
+.RE
+.PP
+\fBSUSETAGS_SHARE_ARCH "susetags:share:arch"\fR
+.RS 4
+Internal attribute to implement susetags shared records\&. Holds the architecture of the solvable used for sharing attributes\&.
+.RE
+.SH "SOLVABLE ARCHITECTURES"
+.sp
+Predefined architecture values for commonly used architectures\&.
+.PP
+\fBARCH_SRC "src"\fR
+.RS 4
+Used for binary packages that contain the package sources\&.
+.RE
+.PP
+\fBARCH_NOSRC "nosrc"\fR
+.RS 4
+Used for binary packages that contain some of thepackage sources, but not all files (because of restrictions)\&.
+.RE
+.PP
+\fBARCH_NOARCH "noarch"\fR
+.RS 4
+This package can be installed on any architecture\&. Used for rpm\&.
+.RE
+.PP
+\fBARCH_ALL "all"\fR
+.RS 4
+This package can be installed on any architecture\&. Used for Debian\&.
+.RE
+.PP
+\fBARCH_ANY "any"\fR
+.RS 4
+This package can be installed on any architecture\&. Used for Archlinux and Haiku\&.
+.RE
+.SH "DEPENDENCY IDS"
+.sp
+Namespaces are special modifiers that change the meaning of a dependency\&. Namespace dependencies are created with the REL_NAMESPACE flag\&. To make custom namespaces work you have to implement a namespace callback function\&.
+.sp
+The dependency markers partition the dependency array in two parts with different semantics\&.
+.PP
+\fBNAMESPACE_INSTALLED "namespace:installed"\fR
+.RS 4
+The dependency only selects installed packages\&.
+.RE
+.PP
+\fBNAMESPACE_MODALIAS "namespace:modalias"\fR
+.RS 4
+The dependency is a special modalias dependency that matches installed hardware\&.
+.RE
+.PP
+\fBNAMESPACE_SPLITPROVIDES "namespace:splitprovides"\fR
+.RS 4
+The dependency is a special splitprovides dependency used to implement updates that include a package split\&. A splitprovoide dependency contains a filename and a package name, it is matched if a package with the provided package name is installed that contains the filename\&. This namespace is implemented in libsolv, so you do not need a callback\&.
+.RE
+.PP
+\fBNAMESPACE_LANGUAGE "namespace:language"\fR
+.RS 4
+The dependency describes a language\&. The callback should return true if the language was selected by the user\&.
+.RE
+.PP
+\fBNAMESPACE_FILESYSTEM "namespace:filesystem"\fR
+.RS 4
+The dependency describes a filesystem\&. The callback should return true if the filesystem is needed\&.
+.RE
+.PP
+\fBNAMESPACE_OTHERPROVIDERS "namespace:otherproviders"\fR
+.RS 4
+This is a hack to allow self\-conflicting packages\&. It is not needed with current rpm version, so do not use this namespace\&.
+.RE
+.PP
+\fBNAMESPACE_PRODUCTBUDDY "namespace:productbuddy"\fR
+.RS 4
+This is a another hack to implement the SUSE product buddy system\&. Please ignore\&.
+.RE
+.PP
+\fBSOLVABLE_PREREQMARKER "solvable:prereqmarker"\fR
+.RS 4
+This marker partitions the normal require dependencies from the prerequires\&. It is not needed for dependency solving, but it is used by the transaction ordering algorthim when a dependency cycle needs to be broken (non\-prereq deps get broken first)\&.
+.RE
+.PP
+\fBSOLVABLE_FILEMARKER "solvable:filemarker"\fR
+.RS 4
+This marker partitions the package provides dependencies from the synthetic file provides dependencies added by pool_addfileprovides()\&.
+.RE
+.SH "DATA TYPES"
+.sp
+Each attribute data is stored with a type, so that the lookup functions know how to interpret the data\&. The following types are available:
+.PP
+\fBREPOKEY_TYPE_VOID "repokey:type:void"\fR
+.RS 4
+No data is stored with this attribute\&. Thus you can only test if the attribute exists or not\&. Useful to store boolean values\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_CONSTANT "repokey:type:constant"\fR
+.RS 4
+The data is a constant 32bit number\&. The number is stored in the key area, so using it does not cost extra storage space (but you need the extra key space)\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_CONSTANTID "repokey:type:constantid"\fR
+.RS 4
+The data is a constant Id\&. The Id is stored in the key area, so using it does not cost extra storage space (but you need the extra key space)\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_ID "repokey:type:id"\fR
+.RS 4
+The data is an Id\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_NUM "repokey:type:num"\fR
+.RS 4
+The data is an unsigned 64bit number\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_U32 "repokey:type:num32"\fR
+.RS 4
+The data is an unsigned 32bit number\&. Obsolete, do not use\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_DIR "repokey:type:dir"\fR
+.RS 4
+The data is an Id of a directory\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_STR "repokey:type:str"\fR
+.RS 4
+The data is a regular string\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_BINARY "repokey:type:binary"\fR
+.RS 4
+The data is a binary blob\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_IDARRAY "repokey:type:idarray"\fR
+.RS 4
+The data is an array of non\-zero Ids\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_REL_IDARRAY "repokey:type:relidarray"\fR
+.RS 4
+The data is an array of non\-zero Ids ordered so that it needs less space\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_DIRSTRARRAY "repokey:type:dirstrarray"\fR
+.RS 4
+The data is an tuple consisting of a directory Id and a basename\&. Used to store file names\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_DIRNUMNUMARRAY "repokey:type:dirnumnumarray"\fR
+.RS 4
+The data is an triple consisting of a directory Id and two 32bit unsigned integers\&. Used to store disk usage information\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_MD5 "repokey:type:md5"\fR
+.RS 4
+The data is a binary md5sum\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_SHA1 "repokey:type:sha1"\fR
+.RS 4
+The data is a binary sha1sum\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_SHA256 "repokey:type:sha256"\fR
+.RS 4
+The data is a binary sha256sum\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_FIXARRAY "repokey:type:fixarray"\fR
+.RS 4
+The data is an array of structures that have all the same layout (i\&.e\&. the same keynames and keytypes in the same order)\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_FLEXARRAY "repokey:type:flexarray"\fR
+.RS 4
+The data is an array of structures that have a different layout\&.
+.RE
+.PP
+\fBREPOKEY_TYPE_DELETED "repokey:type:deleted"\fR
+.RS 4
+The data does not exist\&. Used to mark an attribute that was deleted\&.
+.RE
+.SH "REPOSITORY METADATA"
+.sp
+This attributes contain meta information about the repository\&.
+.PP
+\fBREPOSITORY_SOLVABLES "repository:solvables"\fR
+.RS 4
+This attribute holds the array including all of the solvables\&. It is only used in the on\-disk solv files, internally the solvables are stored in the pool\(cqs solvable array for fast access\&.
+.RE
+.PP
+\fBREPOSITORY_DELTAINFO "repository:deltainfo"\fR
+.RS 4
+This attribute holds the array including all of the delta packages\&.
+.RE
+.PP
+\fBREPOSITORY_EXTERNAL "repository:external"\fR
+.RS 4
+This attribute holds the array including all of the data to construct stub repodata areas to support on\-demand loading of metadata\&.
+.RE
+.PP
+\fBREPOSITORY_KEYS "repository:keys"\fR
+.RS 4
+This should really be named "repository:external:keys", it contains an array if Ids that consists of (keyname, keytype) pairs that describe the keys of the stub\&.
+.RE
+.PP
+\fBREPOSITORY_LOCATION "repository:location"\fR
+.RS 4
+This is used to provide a file name in the stub\&.
+.RE
+.PP
+\fBREPOSITORY_ADDEDFILEPROVIDES "repository:addedfileprovides"\fR
+.RS 4
+This attribute holds an array of filename Ids, that tell the library, that all of the Ids were already added to the solvable provides\&.
+.RE
+.PP
+\fBREPOSITORY_RPMDBCOOKIE "repository:rpmdbcookie"\fR
+.RS 4
+An attribute that stores a sha256sum over the file stats of the Packages database\&. It\(cqs used to detect rebuilds of the database, as in that case the database Ids of every package are newly distributed\&.
+.RE
+.PP
+\fBREPOSITORY_TIMESTAMP "repository:timestamp"\fR
+.RS 4
+The seconds since the unix epoch when the repository was created\&.
+.RE
+.PP
+\fBREPOSITORY_EXPIRE "repository:expire"\fR
+.RS 4
+The seconds after the timestamp when the repository will expire\&.
+.RE
+.PP
+\fBREPOSITORY_UPDATES "repository:updates"\fR
+.RS 4
+An array of structures describing what this repository updates\&.
+.RE
+.PP
+\fBREPOSITORY_DISTROS "repository:distros"\fR
+.RS 4
+Also an array of structures describing what this repository updates\&. Seems to be the newer name of REPOSITORY_UPDATES\&.
+.RE
+.PP
+\fBREPOSITORY_PRODUCT_LABEL "repository:product:label"\fR
+.RS 4
+Should really be called "repository:updates:label"\&. What distribution is updated with this repository\&.
+.RE
+.PP
+\fBREPOSITORY_PRODUCT_CPEID "repository:product:cpeid"\fR
+.RS 4
+The cpeid of the platform updated by this repository\&. Is both used in REPOSITORY_UPDATES and REPOSITORY_DISTROS to maximize confusion\&.
+.RE
+.PP
+\fBREPOSITORY_REPOID "repository:repoid"\fR
+.RS 4
+An array of Id strings describing this repository\&.
+.RE
+.PP
+\fBREPOSITORY_KEYWORDS "repository:keywords"\fR
+.RS 4
+An array of Id strings describing keywords of this repository\&.
+.RE
+.PP
+\fBREPOSITORY_REVISION "repository:revision"\fR
+.RS 4
+One or more(?) arbitrary revision strings describing the revision of the repository\&.
+.RE
+.PP
+\fBREPOSITORY_TOOLVERSION "repository:toolversion"\fR
+.RS 4
+Some string describing somewhat the version of libsolv used to create the solv file\&.
+.RE
+.SH "REPOSITORY METADATA FOR SUSETAGS REPOS"
+.sp
+Attributes describing repository files in a susetags repository\&. \fBSUSETAGS_DATADIR "susetags:datadir"\fR:: The directory that contains the packages\&.
+.PP
+\fBSUSETAGS_DESCRDIR "susetags:descrdir"\fR
+.RS 4
+The directory that contains the repository file resources\&.
+.RE
+.PP
+\fBSUSETAGS_DEFAULTVENDOR "susetags:defaultvendor"\fR
+.RS 4
+The default vendor used when a package does not specify a vendor\&.
+.RE
+.PP
+\fBSUSETAGS_FILE "susetags:file"\fR
+.RS 4
+An array of file resources of the repository\&.
+.RE
+.PP
+\fBSUSETAGS_FILE_NAME "susetags:file:name"\fR
+.RS 4
+The filename of the resource\&.
+.RE
+.PP
+\fBSUSETAGS_FILE_TYPE "susetags:file:type"\fR
+.RS 4
+The type of the resource, e\&.g\&. \(lqMETA\(rq\&.
+.RE
+.PP
+\fBSUSETAGS_FILE_CHECKSUM "susetags:file:checksum"\fR
+.RS 4
+The file checksum of the resource\&.
+.RE
+.SH "REPOSITORY METADATA FOR RPMMD REPOS"
+.PP
+\fBREPOSITORY_REPOMD "repository:repomd"\fR
+.RS 4
+An array of file resources of the repository\&.
+.RE
+.PP
+\fBREPOSITORY_REPOMD_TYPE "repository:repomd:type"\fR
+.RS 4
+The type of the resource, e\&.g\&. \(lqprimary\(rq\&.
+.RE
+.PP
+\fBREPOSITORY_REPOMD_LOCATION "repository:repomd:location"\fR
+.RS 4
+The location (aka filename) of the resource
+.RE
+.PP
+\fBREPOSITORY_REPOMD_TIMESTAMP "repository:repomd:timestamp"\fR
+.RS 4
+The seconds since the unix epoch when the resource was created\&.
+.RE
+.PP
+\fBREPOSITORY_REPOMD_CHECKSUM "repository:repomd:checksum"\fR
+.RS 4
+The file checksum of the resource\&.
+.RE
+.PP
+\fBREPOSITORY_REPOMD_OPENCHECKSUM "repository:repomd:openchecksum"\fR
+.RS 4
+The checksum over the uncompressed contents of the resource\&.
+.RE
+.PP
+\fBREPOSITORY_REPOMD_SIZE "repository:repomd:size"\fR
+.RS 4
+The size of the resource file\&.
+.RE
+.SH "DELTA PACKAGE ATTRIBUTES"
+.PP
+\fBDELTA_PACKAGE_NAME "delta:pkgname"\fR
+.RS 4
+The target package name for the delta package\&. Applying the delta will recreate the target package\&.
+.RE
+.PP
+\fBDELTA_PACKAGE_EVR "delta:pkgevr"\fR
+.RS 4
+The version of the target package\&.
+.RE
+.PP
+\fBDELTA_PACKAGE_ARCH "delta:pkgarch"\fR
+.RS 4
+The architecture of the target package\&.
+.RE
+.PP
+\fBDELTA_LOCATION_DIR "delta:locdir"\fR
+.RS 4
+The directory in the repository that contains the delta package\&.
+.RE
+.PP
+\fBDELTA_LOCATION_NAME "delta:locname"\fR
+.RS 4
+The first part of the file name of the delta package\&.
+.RE
+.PP
+\fBDELTA_LOCATION_EVR "delta:locevr"\fR
+.RS 4
+The version part of the file name of the delta package\&.
+.RE
+.PP
+\fBDELTA_LOCATION_SUFFIX "delta:locsuffix"\fR
+.RS 4
+The suffix part of the file name of the delta package\&.
+.RE
+.PP
+\fBDELTA_DOWNLOADSIZE "delta:downloadsize"\fR
+.RS 4
+The size of the delta rpm file\&.
+.RE
+.PP
+\fBDELTA_CHECKSUM "delta:checksum"\fR
+.RS 4
+The checksum of the delta rpm file\&.
+.RE
+.PP
+\fBDELTA_BASE_EVR "delta:baseevr"\fR
+.RS 4
+The version of the package the delta was build against\&.
+.RE
+.PP
+\fBDELTA_SEQ_NAME "delta:seqname"\fR
+.RS 4
+The first part of the delta sequence, the base package name\&.
+.RE
+.PP
+\fBDELTA_SEQ_EVR "delta:seqevr"\fR
+.RS 4
+The evr part of the delta sequence, the base package evr\&. Identical to the DELTA_BASE_EVR attribute\&.
+.RE
+.PP
+\fBDELTA_SEQ_NUM "delta:seqnum"\fR
+.RS 4
+The last part of the delta sequence, the content selection string\&.
+.RE
+.SH "AUTHOR"
+.sp
+Michael Schroeder <mls@suse\&.de>
diff --git a/doc/libsolv-constantids.txt b/doc/libsolv-constantids.txt
new file mode 100644 (file)
index 0000000..7e4f885
--- /dev/null
@@ -0,0 +1,676 @@
+LIBSOLV-CONSTANTIDS(3)
+======================
+:man manual: LIBSOLV
+:man source: libsolv
+
+
+NAME
+----
+libsolv-constantids - fixed Ids for often used strings
+
+
+DESCRIPTION
+-----------
+Constant Ids are Ids of strings that are often needed. They are defined
+to ease programming and reduce the number of pool_str2id calls. The
+constant Ids are part of the binary ABI of libsolv, a minor version 
+update will only add new constants and not change existing Ids to
+maintain compatible. The on-disk solv format works does not use the
+fixed Ids, but instead references the strings, so solv files can still
+be read when the ABI is broken.
+
+
+SPECIAL STRINGS
+---------------
+*ID_EMPTY ""*::
+  The empty string. It will always have Id 1.
+
+*SYSTEM_SYSTEM "system:system"*::
+  The name of the always installed "system" solvable.
+
+
+SOLVABLE ATTRIBUTES
+-------------------
+These are Ids for keyname of attributes. They can be used in the
+lookup and storage functions to select the correct attribute in the
+solvable. The describtions below describe the intended semantics
+of the values stored in the attribute with the keyname.
+
+*SOLVABLE_NAME "solvable:name"*::
+  The name of the package.
+
+*SOLVABLE_ARCH "solvable:arch"*::
+  The architecture of the package. See the Solvable Architecture section
+  for predefined architecture Id values.
+
+*SOLVABLE_EVR "solvable:evr"*::
+  The version of the package. It usually consists of some combination of
+  the Epoch, the Version, and the Release of the solvable.
+
+*SOLVABLE_VENDOR "solvable:vendor"*::
+  A vendor string. Usually the company or group that created the binary
+  package.
+
+*SOLVABLE_PROVIDES "solvable:provides"*::
+  Stores an array of dependency Ids that describe the capabilities
+  that the package provides.
+
+*SOLVABLE_OBSOLETES "solvable:obsoletes"*::
+  Stores an array of dependency Ids that describe the packages that this
+  package replaces.
+
+*SOLVABLE_CONFLICTS "solvable:conflicts"*::
+  Stores an array of dependency Ids that describe the capabilities that
+  this package conflicts with, i.e. that can't be installed together with
+  this package.
+
+*SOLVABLE_REQUIRES "solvable:requires"*::
+  Stores an array of dependency Ids that describe the capabilities that
+  also must be installed when this package is installed.
+
+*SOLVABLE_RECOMMENDS "solvable:recommends"*::
+  Stores an array of dependency Ids that describe the capabilities that
+  also should be installed when this package is installed. It's not an
+  error if not all capabilites can be met.
+
+*SOLVABLE_SUGGESTS "solvable:suggests"*::
+  Stores an array of dependency Ids that describe the capabilities that
+  also useful to have installed when this package is installed. This is
+  intended to provide a hint to the user about other packages.
+
+*SOLVABLE_SUPPLEMENTS "solvable:supplements"*::
+  Stores an array of dependency Ids that define that this package should
+  be installed if one of the capabilities is met. This is like the
+  recommends attribute, but works in the reverse way.
+
+*SOLVABLE_ENHANCES "solvable:enhances"*::
+  Stores an array of dependency Ids that define that this package is
+  useful to have installed if one of the capabilities is met. This is like
+  the suggests attribute, but works in the reverse way.
+
+*SOLVABLE_SUMMARY "solvable:summary"*::
+  The summary should be a short string without any newlines that describes
+  what a package does.
+
+*SOLVABLE_DESCRIPTION "solvable:description"*::
+  The description should be a more verbose description about what a
+  package does. It may consist of multiple lines.
+
+*SOLVABLE_DISTRIBUTION "solvable:distribution"*::
+  The distribution is a short string that describes the OS and OS version
+  this package is built for.
+
+*SOLVABLE_AUTHORS "solvable:authors"*::
+  A list of authors of this package. This attribute was used in SUSE
+  packages.
+
+*SOLVABLE_PACKAGER "solvable:packager"*::
+  The person who created the binary package, see also the vendor attribute.
+
+*SOLVABLE_GROUP "solvable:group"*::
+  The package group that this package belongs to. See also the keywords
+  attribute.
+
+*SOLVABLE_URL "solvable:url"*::
+  An URL that points to more information about the package.
+
+*SOLVABLE_KEYWORDS "solvable:keywords"*::
+  list of keyword string IDs used for tagging this package.
+
+*SOLVABLE_LICENSE "solvable:license"*::
+  The jicense of this package.
+
+*SOLVABLE_BUILDTIME "solvable:buildtime"*::
+  The seconds since the unix epoch when the binary package was created.
+
+*SOLVABLE_BUILDHOST "solvable:buildhost"*::
+  The name of the host on which the binary package was created.
+
+*SOLVABLE_EULA "solvable:eula"*::
+  If this attribute is present the user should be asked to accept the end
+  user license agreement before the package gets installed.
+
+*SOLVABLE_CPEID "solvable:cpeid"*::
+  A Common Platform Enumeration string describes the platform this package
+  is intended for. See also the distribution attribute.
+
+*SOLVABLE_MESSAGEINS "solvable:messageins"*::
+  A message that should be displayed to the user when the package gets
+  installed.
+
+*SOLVABLE_MESSAGEDEL "solvable:messagedel"*::
+  A message that should be displayed to the user when the package gets
+  erased.
+
+*SOLVABLE_INSTALLSIZE "solvable:installsize"*::
+  The disk space in bytes needed when installing the package.
+
+*SOLVABLE_DISKUSAGE "solvable:diskusage"*::
+  A SUSE extension that stores for each directory the needed amount of
+  disk space in kilobytes and inodes.
+
+*SOLVABLE_FILELIST "solvable:filelist"*::
+  A list of files that the package contains.
+
+*SOLVABLE_INSTALLTIME "solvable:installtime"*::
+  The seconds since the unix epoch when the binary package was installed
+  on the system.
+
+*SOLVABLE_MEDIADIR "solvable:mediadir"*::
+  The directory on the repository that contains the package. If this
+  attribute is set to void, the package architecture is used as
+  directory.
+
+*SOLVABLE_MEDIAFILE "solvable:mediafile"*::
+  The filename on the repository that contains the package. If this
+  attribute is set to void, the canonical file name of the package is
+  used (i.e.  a combination of the name, version, architecture).
+
+*SOLVABLE_MEDIANR "solvable:medianr"*::
+  The media number. This is an integer describing on which of a multi-part
+  media set this package is on.
+
+*SOLVABLE_MEDIABASE "solvable:mediabase"*::
+  This attribute can be used to overwrite the repositories base url.
+
+*SOLVABLE_DOWNLOADSIZE "solvable:downloadsize"*::
+  The size of the binary package in bytes.
+
+*SOLVABLE_SOURCEARCH "solvable:sourcearch"*::
+  The architecture of the source package that this package belongs to.
+
+*SOLVABLE_SOURCENAME "solvable:sourcename"*::
+  The name of the source package that this package belongs to. If set
+  to void, the package name attribute is used instead.
+
+*SOLVABLE_SOURCEEVR "solvable:sourceevr"*::
+  The version of the source package that this package belongs to. If set
+  to void, the package version attribute is used instead.
+
+*SOLVABLE_TRIGGERS "solvable:triggers"*::
+  A list of package triggers for this package. Used in the transaction
+  ordering code.
+
+*SOLVABLE_CHECKSUM "solvable:checksum"*::
+  The checksum of the binary package. See the Data Types section for
+  a list of supported algorithms.
+
+*SOLVABLE_PKGID "solvable:pkgid"*::
+  A string identifying a package. For rpm packages, this is the md5sum
+  over the package header and the payload.
+
+*SOLVABLE_HDRID "solvable:hdrid"*::
+  A string identifying a package. For rpm packages, this is the sha1sum
+  over just the package header.
+
+*SOLVABLE_LEADSIGID "solvable:leadsigid"*::
+  A string identifying the signature part of a package. For rpm packages,
+  this is the md5sum from the start of the file up to the package header
+  (i.e. it includes the lead, the signature header, and the padding).
+
+*SOLVABLE_HEADEREND "solvable:headerend"*::
+  The offset of the payload in rpm binary packages. You can use this
+  information to download just the header if you want to display
+  information not included in the repository metadata.
+
+*SOLVABLE_CHANGELOG "solvable:changelog"*::
+  The array containing all the changelog structures.
+
+*SOLVABLE_CHANGELOG_AUTHOR "solvable:changelog:author"*::
+  The author of a changelog entry.
+
+*SOLVABLE_CHANGELOG_TIME "solvable:changelog:time"*::
+  The seconds since the unix epoch when the changelog entry was written.
+
+*SOLVABLE_CHANGELOG_TEXT "solvable:changelog:text"*::
+  The text of a changelog entry.
+
+
+SPECIAL SOLVABLEATTRIBUTES
+--------------------------
+*RPM_RPMDBID "rpm:dbid"*::
+  The rpm database id of this (installed) package. Usually a small
+  integer number.
+
+*SOLVABLE_PATCHCATEGORY "solvable:patchcategory"*::
+  The category field for patch solvables. Should be named
+  ``update:category'' instead.
+
+*UPDATE_REBOOT "update:reboot"*::
+  If this attribute is present the sytem should be rebooted after
+  the update is installed.
+
+*UPDATE_RESTART "update:restart"*::
+  If this attribute is present the software managemer should be run
+  again after the update is installed.  
+
+*UPDATE_RELOGIN "update:relogin"*::
+  If this attribute is present the user should log off and on again
+  after the update is installed.
+
+*UPDATE_MESSAGE "update:message"*::
+  A message that should be shown to the user to warn him about anything
+  non-standard.
+
+*UPDATE_SEVERITY "update:severity"*::
+  The severity of the update.
+
+*UPDATE_RIGHTS "update:rights"*::
+  Any legal or other rights of the update.
+
+*UPDATE_COLLECTION "update:collection"*::
+  The array containing the package list of the update.
+  
+*UPDATE_COLLECTION_NAME "update:collection:name"*::
+  The name of the to be updated package.
+
+*UPDATE_COLLECTION_EVR "update:collection:evr"*::
+  The version of the to be updated package.
+
+*UPDATE_COLLECTION_ARCH "update:collection:arch"*::
+  The architecture of the to be updated package.
+
+*UPDATE_COLLECTION_FILENAME "update:collection:filename"*::
+  The file name of the to be updated package.
+
+*UPDATE_REFERENCE "update:reference"*::
+  The array containing the reference list of the update.
+
+*UPDATE_REFERENCE_TYPE "update:reference:type"*::
+  The type of the reference, e.g. bugzilla.
+
+*UPDATE_REFERENCE_HREF "update:reference:href"*::
+  The URL of the reference.
+
+*UPDATE_REFERENCE_ID "update:reference:id"*::
+  The identification string of the reference, e.g. the bug number.
+
+*UPDATE_REFERENCE_TITLE "update:reference:title"*::
+  The title of the reference, e.g. the bug summary.
+
+*PRODUCT_REFERENCEFILE "product:referencefile"*::
+  A reference to another product file.
+
+*PRODUCT_SHORTLABEL "product:shortlabel"*::
+  A identification string of the product.
+
+*PRODUCT_DISTPRODUCT "product:distproduct"*::
+  A SUSE Code-10 product name.
+
+*PRODUCT_DISTVERSION "product:distversion"*::
+  A SUSE Code-10 product version.
+
+*PRODUCT_TYPE "product:type"*::
+  The type of the product, e.g. ``base''.
+
+*PRODUCT_URL "product:url"*::
+  An array of product URLs.
+
+*PRODUCT_URL_TYPE "product:url:type"*::
+  An array of product URL types.
+
+*PRODUCT_FLAGS "product:flags"*::
+  An array of product flags.
+
+*PRODUCT_PRODUCTLINE "product:productline"*::
+  A product line string.
+
+*PRODUCT_REGISTER_TARGET "product:regtarget"*::
+  A target for proudct registering.
+
+*PRODUCT_REGISTER_RELEASE "product:regrelease"*::
+  A release string for proudct registering.
+
+*PUBKEY_KEYID "pubkey:keyid"*::
+  The keyid of a pubkey, consiting of 8 bytes in hex.
+
+*PUBKEY_FINGERPRINT "pubkey:fingerprint"*::
+  The fingerprint of a pubkey, usualy a sha1sum in hex. Old V3 RSA keys
+  use an md5sum instead.
+
+*PUBKEY_EXPIRES "pubkey:expires"*::
+  The seconds since the unix epoch when the pubkey expires.
+
+*SOLVABLE_ISVISIBLE "solvable:isvisible"*::
+  An attribute describing if the package should be listed to the user
+  or not. Used for SUSE patterns.
+
+*SOLVABLE_CATEGORY "solvable:category"*::
+  The category of a pattern.
+
+*SOLVABLE_INCLUDES "solvable:includes"*::
+  A list of other patterns that this pattern includes.
+
+*SOLVABLE_EXTENDS "solvable:extends"*::
+  A list of other patterns that this pattern extends.
+
+*SOLVABLE_ICON "solvable:icon"*::
+  The icon of a pattern.
+
+*SOLVABLE_ORDER "solvable:order"*::
+  An ordering clue of a pattern.
+
+*SUSETAGS_SHARE_NAME "susetags:share:name"*::
+  Internal attribute to implement susetags shared records. Holds the
+  name of the solvable used for sharing attributes.
+
+*SUSETAGS_SHARE_EVR "susetags:share:evr"*::
+  Internal attribute to implement susetags shared records. Holds the
+  version of the solvable used for sharing attributes.
+
+*SUSETAGS_SHARE_ARCH "susetags:share:arch"*::
+  Internal attribute to implement susetags shared records. Holds the
+  architecture of the solvable used for sharing attributes.
+
+
+SOLVABLE ARCHITECTURES
+----------------------
+Predefined architecture values for commonly used architectures.
+
+*ARCH_SRC "src"*::
+  Used for binary packages that contain the package sources.
+
+*ARCH_NOSRC "nosrc"*::
+  Used for binary packages that contain some of thepackage sources,
+  but not all files (because of restrictions).
+
+*ARCH_NOARCH "noarch"*::
+  This package can be installed on any architecture. Used for rpm.
+
+*ARCH_ALL "all"*::
+  This package can be installed on any architecture. Used for Debian.
+
+*ARCH_ANY "any"*::
+  This package can be installed on any architecture. Used for Archlinux
+  and Haiku.
+
+
+DEPENDENCY IDS
+--------------
+Namespaces are special modifiers that change the meaning of a dependency.
+Namespace dependencies are created with the REL_NAMESPACE flag. To make
+custom namespaces work you have to implement a namespace callback function.
+
+The dependency markers partition the dependency array in two parts with
+different semantics.
+
+*NAMESPACE_INSTALLED "namespace:installed"*::
+  The dependency only selects installed packages.
+
+*NAMESPACE_MODALIAS "namespace:modalias"*::
+  The dependency is a special modalias dependency that matches installed
+  hardware.
+
+*NAMESPACE_SPLITPROVIDES "namespace:splitprovides"*::
+  The dependency is a special splitprovides dependency used to implement
+  updates that include a package split. A splitprovoide dependency contains
+  a filename and a package name, it is matched if a package with the
+  provided package name is installed that contains the filename.
+  This namespace is implemented in libsolv, so you do not need a callback.
+
+*NAMESPACE_LANGUAGE "namespace:language"*::
+  The dependency describes a language. The callback should return true
+  if the language was selected by the user.
+
+*NAMESPACE_FILESYSTEM "namespace:filesystem"*::
+  The dependency describes a filesystem. The callback should return true
+  if the filesystem is needed.
+
+*NAMESPACE_OTHERPROVIDERS "namespace:otherproviders"*::
+  This is a hack to allow self-conflicting packages. It is not needed
+  with current rpm version, so do not use this namespace.
+
+*NAMESPACE_PRODUCTBUDDY "namespace:productbuddy"*::
+  This is a another hack to implement the SUSE product buddy system.
+  Please ignore.
+
+*SOLVABLE_PREREQMARKER "solvable:prereqmarker"*::
+  This marker partitions the normal require dependencies from the
+  prerequires. It is not needed for dependency solving, but it is
+  used by the transaction ordering algorthim when a dependency cycle
+  needs to be broken (non-prereq deps get broken first).
+
+*SOLVABLE_FILEMARKER "solvable:filemarker"*::
+  This marker partitions the package provides dependencies from the
+  synthetic file provides dependencies added by pool_addfileprovides().
+
+
+DATA TYPES
+----------
+Each attribute data is stored with a type, so that the lookup functions
+know how to interpret the data. The following types are available:
+*REPOKEY_TYPE_VOID "repokey:type:void"*::
+  No data is stored with this attribute. Thus you can only test if
+  the attribute exists or not. Useful to store boolean values.
+
+*REPOKEY_TYPE_CONSTANT "repokey:type:constant"*::
+  The data is a constant 32bit number. The number is stored in the key
+  area, so using it does not cost extra storage space (but you need the
+  extra key space).
+
+*REPOKEY_TYPE_CONSTANTID "repokey:type:constantid"*::
+  The data is a constant Id. The Id is stored in the key area,
+  so using it does not cost extra storage space (but you need the
+  extra key space).
+
+*REPOKEY_TYPE_ID "repokey:type:id"*::
+  The data is an Id.
+
+*REPOKEY_TYPE_NUM "repokey:type:num"*::
+  The data is an unsigned 64bit number.
+
+*REPOKEY_TYPE_U32 "repokey:type:num32"*::
+  The data is an unsigned 32bit number. Obsolete, do not use.
+
+*REPOKEY_TYPE_DIR "repokey:type:dir"*::
+  The data is an Id of a directory.
+
+*REPOKEY_TYPE_STR "repokey:type:str"*::
+  The data is a regular string.
+
+*REPOKEY_TYPE_BINARY "repokey:type:binary"*::
+  The data is a binary blob.
+
+*REPOKEY_TYPE_IDARRAY "repokey:type:idarray"*::
+  The data is an array of non-zero Ids.
+
+*REPOKEY_TYPE_REL_IDARRAY "repokey:type:relidarray"*::
+  The data is an array of non-zero Ids ordered so that it needs less
+  space.
+
+*REPOKEY_TYPE_DIRSTRARRAY "repokey:type:dirstrarray"*::
+  The data is an tuple consisting of a directory Id and a basename.
+  Used to store file names.
+
+*REPOKEY_TYPE_DIRNUMNUMARRAY "repokey:type:dirnumnumarray"*::
+  The data is an triple consisting of a directory Id and two 32bit
+  unsigned integers. Used to store disk usage information.
+
+*REPOKEY_TYPE_MD5 "repokey:type:md5"*::
+  The data is a binary md5sum.
+
+*REPOKEY_TYPE_SHA1 "repokey:type:sha1"*::
+  The data is a binary sha1sum.
+
+*REPOKEY_TYPE_SHA256 "repokey:type:sha256"*::
+  The data is a binary sha256sum.
+
+*REPOKEY_TYPE_FIXARRAY "repokey:type:fixarray"*::
+  The data is an array of structures that have all the same layout
+  (i.e. the same keynames and keytypes in the same order).
+
+*REPOKEY_TYPE_FLEXARRAY "repokey:type:flexarray"*::
+  The data is an array of structures that have a different layout.
+
+*REPOKEY_TYPE_DELETED "repokey:type:deleted"*::
+  The data does not exist. Used to mark an attribute that was deleted.
+
+
+REPOSITORY METADATA
+-------------------
+This attributes contain meta information about the repository.
+
+*REPOSITORY_SOLVABLES "repository:solvables"*::
+  This attribute holds the array including all of the solvables. It is
+  only used in the on-disk solv files, internally the solvables are
+  stored in the pool's solvable array for fast access.
+
+*REPOSITORY_DELTAINFO "repository:deltainfo"*::
+  This attribute holds the array including all of the delta packages.
+
+*REPOSITORY_EXTERNAL "repository:external"*::
+  This attribute holds the array including all of the data to construct
+  stub repodata areas to support on-demand loading of metadata.
+
+*REPOSITORY_KEYS "repository:keys"*::
+  This should really be named "repository:external:keys", it contains an
+  array if Ids that consists of (keyname, keytype) pairs that describe the
+  keys of the stub.
+
+*REPOSITORY_LOCATION "repository:location"*::
+  This is used to provide a file name in the stub.
+
+*REPOSITORY_ADDEDFILEPROVIDES "repository:addedfileprovides"*::
+  This attribute holds an array of filename Ids, that tell the library,
+  that all of the Ids were already added to the solvable provides.
+
+*REPOSITORY_RPMDBCOOKIE "repository:rpmdbcookie"*::
+  An attribute that stores a sha256sum over the file stats of the
+  Packages database. It's used to detect rebuilds of the database,
+  as in that case the database Ids of every package are newly
+  distributed.
+
+*REPOSITORY_TIMESTAMP "repository:timestamp"*::
+  The seconds since the unix epoch when the repository was created.
+
+*REPOSITORY_EXPIRE "repository:expire"*::
+  The seconds after the timestamp when the repository will expire.
+
+*REPOSITORY_UPDATES "repository:updates"*::
+  An array of structures describing what this repository updates.
+
+*REPOSITORY_DISTROS "repository:distros"*::
+  Also an array of structures describing what this repository updates.
+  Seems to be the newer name of REPOSITORY_UPDATES.
+
+*REPOSITORY_PRODUCT_LABEL "repository:product:label"*::
+  Should really be called "repository:updates:label". What distribution
+  is updated with this repository.
+
+*REPOSITORY_PRODUCT_CPEID "repository:product:cpeid"*::
+  The cpeid of the platform updated by this repository. Is both used
+  in REPOSITORY_UPDATES and REPOSITORY_DISTROS to maximize confusion.
+
+*REPOSITORY_REPOID "repository:repoid"*::
+  An array of Id strings describing this repository.
+
+*REPOSITORY_KEYWORDS "repository:keywords"*::
+  An array of Id strings describing keywords of this repository.
+
+*REPOSITORY_REVISION "repository:revision"*::
+  One or more(?) arbitrary revision strings describing the revision
+  of the repository.
+
+*REPOSITORY_TOOLVERSION "repository:toolversion"*::
+  Some string describing somewhat the version of libsolv used to create
+  the solv file.
+
+
+REPOSITORY METADATA FOR SUSETAGS REPOS
+--------------------------------------
+Attributes describing repository files in a susetags repository.
+*SUSETAGS_DATADIR "susetags:datadir"*::
+  The directory that contains the packages.
+
+*SUSETAGS_DESCRDIR "susetags:descrdir"*::
+  The directory that contains the repository file resources.
+
+*SUSETAGS_DEFAULTVENDOR "susetags:defaultvendor"*::
+  The default vendor used when a package does not specify a vendor.
+
+*SUSETAGS_FILE "susetags:file"*::
+  An array of file resources of the repository.
+
+*SUSETAGS_FILE_NAME "susetags:file:name"*::
+  The filename of the resource.
+
+*SUSETAGS_FILE_TYPE "susetags:file:type"*::
+  The type of the resource, e.g. ``META''.
+
+*SUSETAGS_FILE_CHECKSUM "susetags:file:checksum"*::
+  The file checksum of the resource.
+
+
+REPOSITORY METADATA FOR RPMMD REPOS
+-----------------------------------
+*REPOSITORY_REPOMD "repository:repomd"*::
+  An array of file resources of the repository.
+
+*REPOSITORY_REPOMD_TYPE "repository:repomd:type"*::
+  The type of the resource, e.g. ``primary''.
+
+*REPOSITORY_REPOMD_LOCATION "repository:repomd:location"*::
+  The location (aka filename) of the resource
+
+*REPOSITORY_REPOMD_TIMESTAMP "repository:repomd:timestamp"*::
+  The seconds since the unix epoch when the resource was created.
+
+*REPOSITORY_REPOMD_CHECKSUM "repository:repomd:checksum"*::
+  The file checksum of the resource.
+
+*REPOSITORY_REPOMD_OPENCHECKSUM "repository:repomd:openchecksum"*::
+  The checksum over the uncompressed contents of the resource.
+
+*REPOSITORY_REPOMD_SIZE "repository:repomd:size"*::
+  The size of the resource file.
+
+
+DELTA PACKAGE ATTRIBUTES
+------------------------
+*DELTA_PACKAGE_NAME "delta:pkgname"*::
+  The target package name for the delta package. Applying the delta
+  will recreate the target package.
+
+*DELTA_PACKAGE_EVR "delta:pkgevr"*::
+  The version of the target package.
+
+*DELTA_PACKAGE_ARCH "delta:pkgarch"*::
+  The architecture of the target package.
+
+*DELTA_LOCATION_DIR "delta:locdir"*::
+  The directory in the repository that contains the delta package.
+
+*DELTA_LOCATION_NAME "delta:locname"*::
+  The first part of the file name of the delta package.
+
+*DELTA_LOCATION_EVR "delta:locevr"*::
+  The version part of the file name of the delta package.
+
+*DELTA_LOCATION_SUFFIX "delta:locsuffix"*::
+  The suffix part of the file name of the delta package.
+
+*DELTA_DOWNLOADSIZE "delta:downloadsize"*::
+  The size of the delta rpm file.
+
+*DELTA_CHECKSUM "delta:checksum"*::
+  The checksum of the delta rpm file.
+
+*DELTA_BASE_EVR "delta:baseevr"*::
+  The version of the package the delta was build against.
+
+*DELTA_SEQ_NAME "delta:seqname"*::
+  The first part of the delta sequence, the base package name.
+
+*DELTA_SEQ_EVR "delta:seqevr"*::
+  The evr part of the delta sequence, the base package evr. Identical
+  to the DELTA_BASE_EVR attribute.
+
+*DELTA_SEQ_NUM "delta:seqnum"*::
+  The last part of the delta sequence, the content selection string.
+
+
+Author
+------
+Michael Schroeder <mls@suse.de>
+