X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=doc%2Flibsolv-bindings.3;h=87e949a2f3e6929c9280dba0ff22b3eecd8f97e3;hb=f78f5de33f216051d91b9ff143ace8f4579afecf;hp=5b5ae593b265c1f65bef79f971525e1704d0b0ef;hpb=942edde6eabe28079f72e9d57c64ac1d92adcf16;p=platform%2Fupstream%2Flibsolv.git diff --git a/doc/libsolv-bindings.3 b/doc/libsolv-bindings.3 index 5b5ae59..87e949a 100644 --- a/doc/libsolv-bindings.3 +++ b/doc/libsolv-bindings.3 @@ -1,13 +1,13 @@ '\" t .\" Title: Libsolv-Bindings .\" Author: [see the "Author" section] -.\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 06/11/2013 +.\" Generator: DocBook XSL Stylesheets v1.78.0 +.\" Date: 04/04/2014 .\" Manual: LIBSOLV .\" Source: libsolv .\" Language: English .\" -.TH "LIBSOLV\-BINDINGS" "3" "06/11/2013" "libsolv" "LIBSOLV" +.TH "LIBSOLV\-BINDINGS" "3" "04/04/2014" "libsolv" "LIBSOLV" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -72,7 +72,7 @@ Swig encapsulates all objects as tied hashes, thus the attributes can be accesse .RE .\} .sp -An special exception to this are iterator objects, they are encapsulated as tied arrays so that it is possible to iterate with a for() statement: +A special exception to this are iterator objects, they are encapsulated as tied arrays so that it is possible to iterate with a for() statement: .sp .if n \{\ .RS 4 @@ -99,7 +99,7 @@ my \fI@problems\fR \fB=\fR \fI$solver\fR\fB\->solve(\e\fR\fI@jobs\fR\fB)\fR; .RE .\} .sp -Due to a bug in swig, stringification does not work for libsolv\(cqs object\&. Instead you have to call the object\(cqs str() method\&. +Due to a bug in swig, stringification does not work for libsolv\(cqs objects\&. Instead, you have to call the object\(cqs str() method\&. .sp .if n \{\ .RS 4 @@ -156,7 +156,7 @@ Attributes can be accessed as usual: .\} .nf \fIpool\fR\fB\&.appdata = 42\fR -\fBprint "appdata is %\fR\fId\fR\fB" % (\fR\fIpool\fR\fB\&.appdata)\fR +\fBprint "appdata is %d" % (\fR\fIpool\fR\fB\&.appdata)\fR .fi .if n \{\ .RE @@ -174,13 +174,13 @@ Iterators also work as expected: .RE .\} .sp -Arrays are passed an returned as list objects: +Arrays are passed and returned as list objects: .sp .if n \{\ .RS 4 .\} .nf -\fIjobs\fR \fB=\fR \fI[\fR\fB]\fR +\fIjobs\fR \fB= []\fR \fIproblems\fR \fB=\fR \fIsolver\fR\fB\&.solve(\fR\fIjobs\fR\fB)\fR .fi .if n \{\ @@ -263,13 +263,13 @@ Iterators also work as expected: .RE .\} .sp -Arrays are passed an returned as array objects: +Arrays are passed and returned as array objects: .sp .if n \{\ .RS 4 .\} .nf -\fIjobs\fR \fB=\fR \fI[\fR\fB]\fR +\fIjobs\fR \fB= []\fR \fIproblems\fR \fB=\fR \fIsolver\fR\fB\&.solve(\fR\fIjobs\fR\fB)\fR .fi .if n \{\ @@ -390,7 +390,7 @@ my \fI$pool\fR \fB= solv::Pool\->new()\fR; .RE .\} .sp -Create a new pool instance\&. In most cases you just need one pool\&. +Create a new pool instance\&. In most cases you just need one pool\&. Note that the returned object "owns" the pool, i\&.e\&. if the object is freed, the pool is also freed\&. You can use the disown method to break this ownership relation\&. .SS "ATTRIBUTES" .sp .if n \{\ @@ -452,6 +452,21 @@ Look up a Repository by its id\&. .\} .sp Define which repository contains all the installed packages\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fBconst char *errstr;\fR /* read only */ +my \fI$err\fR \fB=\fR \fI$pool\fR\fB\->{errstr}\fR; +\fIerr\fR \fB=\fR \fIpool\fR\fB\&.errstr\fR +\fIerr\fR \fB=\fR \fIpool\fR\fB\&.errstr\fR +.fi +.if n \{\ +.RE +.\} +.sp +Return the last error string that was stored in the pool\&. .SS "CONSTANTS" .PP \fBPOOL_FLAG_PROMOTEEPOCH\fR @@ -476,7 +491,7 @@ An implicit obsoletes is the internal mechanism to remove the old package on an .PP \fBPOOL_FLAG_OBSOLETEUSESCOLORS\fR .RS 4 -Rpm\(cqs multilib implementation (used in RedHat and Fedora) distinguishes between 32bit and 64bit packages (the terminology is that they have a different color)\&. If obsolteusescolors is set, packages with different colors will not obsolete each other\&. +Rpm\(cqs multilib implementation (used in RedHat and Fedora) distinguishes between 32bit and 64bit packages (the terminology is that they have a different color)\&. If obsoleteusescolors is set, packages with different colors will not obsolete each other\&. .RE .PP \fBPOOL_FLAG_IMPLICITOBSOLETEUSESCOLORS\fR @@ -518,7 +533,22 @@ Make the addfileprovides method only add files from the standard locations (i\&. .RE .\} .sp -Free a pool\&. This is currently done with a method instead of relying on reference counting or garbage collection because it\(cqs hard to track every reference to a pool\&. +Force a free of the pool\&. After this call, you must not access any object that still references the pool\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fBvoid disown()\fR +\fI$pool\fR\fB\->disown()\fR; +\fIpool\fR\fB\&.disown()\fR +\fIpool\fR\fB\&.disown()\fR +.fi +.if n \{\ +.RE +.\} +.sp +Break the ownership relation betwen the binding object and the pool\&. After this call, the pool will not get freed even if the object goes out of scope\&. This also means that you must manually call the free method to free the pool data\&. .sp .if n \{\ .RS 4 @@ -988,7 +1018,20 @@ Lookup functions\&. Return the data element stored in the specified solvable\&. .RS 4 .\} .nf -\fBDataiterator Dataiterator(Id\fR \fIsolvid\fR\fB, Id\fR \fIkeyname\fR\fB, const char *\fR\fImatch\fR\fB, int\fR \fIflags\fR\fB)\fR +\fBDataiterator Dataiterator(Id\fR \fIkeyname\fR\fB, const char *\fR\fImatch\fR \fB= 0, int\fR \fIflags\fR \fB= 0)\fR +my \fI$di\fR \fB=\fR \fI$pool\fR\fB\->Dataiterator(\fR\fI$keyname\fR\fB,\fR \fI$match\fR\fB,\fR \fI$flags\fR\fB)\fR; +\fIdi\fR \fB=\fR \fIpool\fR\fB\&.Dataiterator(\fR\fIkeyname\fR\fB,\fR \fImatch\fR\fB,\fR \fIflags\fR\fB)\fR +\fIdi\fR \fB=\fR \fIpool\fR\fB\&.Dataiterator(\fR\fIkeyname\fR\fB,\fR \fImatch\fR\fB,\fR \fIflags\fR\fB)\fR +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fBDataiterator Dataiterator_solvid(Id\fR \fIsolvid\fR\fB, Id\fR \fIkeyname\fR\fB, const char *\fR\fImatch\fR \fB= 0, int\fR \fIflags\fR \fB= 0)\fR my \fI$di\fR \fB=\fR \fI$pool\fR\fB\->Dataiterator(\fR\fI$solvid\fR\fB,\fR \fI$keyname\fR\fB,\fR \fI$match\fR\fB,\fR \fI$flags\fR\fB)\fR; \fIdi\fR \fB=\fR \fIpool\fR\fB\&.Dataiterator(\fR\fIsolvid\fR\fB,\fR \fIkeyname\fR\fB,\fR \fImatch\fR\fB,\fR \fIflags\fR\fB)\fR \fIdi\fR \fB=\fR \fIpool\fR\fB\&.Dataiterator(\fR\fIsolvid\fR\fB,\fR \fIkeyname\fR\fB,\fR \fImatch\fR\fB,\fR \fIflags\fR\fB)\fR @@ -1009,7 +1052,7 @@ my \fI$di\fR \fB=\fR \fI$pool\fR\fB\->Dataiterator(\fR\fI$solvid\fR\fB,\fR \fI$k .RE .\} .sp -Iterate over the matching data elements\&. See the Dataiterator class for more information\&. +Iterate over the matching data elements\&. See the Dataiterator class for more information\&. The Dataiterator method iterates over all solvables in the pool, whereas the Dataiterator_solvid only iterates over the specified solvable\&. .SS "ID METHODS" .sp The following methods deal with Ids, i\&.e\&. integers representing objects in the pool\&. They are considered \(lqlow level\(rq, in most cases you would not use them but instead the object orientated methods\&. @@ -1611,10 +1654,23 @@ Create a Selection consisting of all packages in the repository\&. .RS 4 .\} .nf -\fBDataiterator Dataiterator(Id\fR \fIp\fR\fB, Id\fR \fIkey\fR\fB, const char *\fR\fImatch\fR\fB, int\fR \fIflags\fR\fB)\fR -my \fI$di\fR \fB=\fR \fI$repo\fR\fB\->Dataiterator(\fR\fI$solvid\fR\fB,\fR \fI$keyname\fR\fB,\fR \fI$match\fR\fB,\fR \fI$flags\fR\fB)\fR; -\fIdi\fR \fB=\fR \fIrepo\fR\fB\&.Dataiterator(\fR\fIsolvid\fR\fB,\fR \fIkeyname\fR\fB,\fR \fImatch\fR\fB,\fR \fIflags\fR\fB)\fR -\fIdi\fR \fB=\fR \fIrepo\fR\fB\&.Dataiterator(\fR\fIsolvid\fR\fB,\fR \fIkeyname\fR\fB,\fR \fImatch\fR\fB,\fR \fIflags\fR\fB)\fR +\fBDataiterator Dataiterator(Id\fR \fIkey\fR\fB, const char *\fR\fImatch\fR \fB= 0, int\fR \fIflags\fR \fB= 0)\fR +my \fI$di\fR \fB=\fR \fI$repo\fR\fB\->Dataiterator(\fR\fI$keyname\fR\fB,\fR \fI$match\fR\fB,\fR \fI$flags\fR\fB)\fR; +\fIdi\fR \fB=\fR \fIrepo\fR\fB\&.Dataiterator(\fR\fIkeyname\fR\fB,\fR \fImatch\fR\fB,\fR \fIflags\fR\fB)\fR +\fIdi\fR \fB=\fR \fIrepo\fR\fB\&.Dataiterator(\fR\fIkeyname\fR\fB,\fR \fImatch\fR\fB,\fR \fIflags\fR\fB)\fR +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fBDataiterator Dataiterator_meta(Id\fR \fIkey\fR\fB, const char *\fR\fImatch\fR \fB= 0, int\fR \fIflags\fR \fB= 0)\fR +my \fI$di\fR \fB=\fR \fI$repo\fR\fB\->Dataiterator_meta(\fR\fI$keyname\fR\fB,\fR \fI$match\fR\fB,\fR \fI$flags\fR\fB)\fR; +\fIdi\fR \fB=\fR \fIrepo\fR\fB\&.Dataiterator_meta(\fR\fIkeyname\fR\fB,\fR \fImatch\fR\fB,\fR \fIflags\fR\fB)\fR +\fIdi\fR \fB=\fR \fIrepo\fR\fB\&.Dataiterator_meta(\fR\fIkeyname\fR\fB,\fR \fImatch\fR\fB,\fR \fIflags\fR\fB)\fR .fi .if n \{\ .RE @@ -1632,7 +1688,7 @@ my \fI$di\fR \fB=\fR \fI$repo\fR\fB\->Dataiterator(\fR\fI$solvid\fR\fB,\fR \fI$k .RE .\} .sp -Iterate over the matching data elements in this repository\&. See the Dataiterator class for more information\&. +Iterate over the matching data elements in this repository\&. See the Dataiterator class for more information\&. The Dataiterator() method iterates over all solvables in a repository, whereas the Dataiterator_meta method only iterates over the repository\(cqs meta data\&. .sp .if n \{\ .RS 4 @@ -1685,9 +1741,9 @@ Add a single empty solvable to the repository\&. Returns a Solvable object, see .\} .nf \fBbool add_solv(const char *\fR\fIname\fR\fB, int\fR \fIflags\fR \fB= 0)\fR -\fI$repo\fR\fB\->add_solv(\fR\fI$name\fR\fB,\fR \fI$flags\fR\fB)\fR; -\fIrepo\fR\fB\&.add_solv(\fR\fIname\fR\fB,\fR \fIflags\fR\fB)\fR -\fIrepo\fR\fB\&.add_solv(\fR\fIname\fR\fB,\fR \fIflags\fR\fB)\fR +\fI$repo\fR\fB\->add_solv(\fR\fI$name\fR\fB)\fR; +\fIrepo\fR\fB\&.add_solv(\fR\fIname\fR\fB)\fR +\fIrepo\fR\fB\&.add_solv(\fR\fIname\fR\fB)\fR .fi .if n \{\ .RE @@ -1698,9 +1754,9 @@ Add a single empty solvable to the repository\&. Returns a Solvable object, see .\} .nf \fBbool add_solv(FILE *\fR\fIfp\fR\fB, int\fR \fIflags\fR \fB= 0)\fR -\fI$repo\fR\fB\->add_solv(\fR\fI$fp\fR\fB,\fR \fI$flags\fR\fB)\fR; -\fIrepo\fR\fB\&.add_solv(\fR\fIfp\fR\fB,\fR \fIflags\fR\fB)\fR -\fIrepo\fR\fB\&.add_solv(\fR\fIfp\fR\fB,\fR \fIflags\fR\fB)\fR +\fI$repo\fR\fB\->add_solv(\fR\fI$fp\fR\fB)\fR; +\fIrepo\fR\fB\&.add_solv(\fR\fIfp\fR\fB)\fR +\fIrepo\fR\fB\&.add_solv(\fR\fIfp\fR\fB)\fR .fi .if n \{\ .RE @@ -1713,9 +1769,9 @@ Read a \(lqsolv\(rq file and add its contents to the repository\&. These files c .\} .nf \fBbool add_rpmdb(int\fR \fIflags\fR \fB= 0)\fR -\fI$repo\fR\fB\->add_rpmdb(\fR\fI$flags\fR\fB)\fR; -\fIrepo\fR\fB\&.add_rpmdb(\fR\fIflags\fR\fB)\fR -\fIrepo\fR\fB\&.add_rpmdb(\fR\fIflags\fR\fB)\fR +\fI$repo\fR\fB\->add_rpmdb()\fR; +\fIrepo\fR\fB\&.add_rpmdb()\fR +\fIrepo\fR\fB\&.add_rpmdb()\fR .fi .if n \{\ .RE @@ -1726,9 +1782,9 @@ Read a \(lqsolv\(rq file and add its contents to the repository\&. These files c .\} .nf \fBbool add_rpmdb_reffp(FILE *\fR\fIreffp\fR\fB, int\fR \fIflags\fR \fB= 0)\fR -\fI$repo\fR\fB\->add_rpmdb_reffp(\fR\fI$reffp\fR\fB,\fR \fI$flags\fR\fB)\fR; -\fIrepo\fR\fB\&.add_rpmdb_reffp(\fR\fI$reffp\fR\fB,\fR \fIflags\fR\fB)\fR -\fIrepo\fR\fB\&.add_rpmdb_reffp(\fR\fI$reffp\fR\fB,\fR \fIflags\fR\fB)\fR +\fI$repo\fR\fB\->add_rpmdb_reffp(\fR\fI$reffp\fR\fB)\fR; +\fIrepo\fR\fB\&.add_rpmdb_reffp(\fR\fIreffp\fR\fB)\fR +\fIrepo\fR\fB\&.add_rpmdb_reffp(\fR\fIreffp\fR\fB)\fR .fi .if n \{\ .RE @@ -1740,10 +1796,10 @@ Add the contents of the rpm database to the repository\&. If a solv file contain .RS 4 .\} .nf -\fBbool add_rpm(const char *\fR\fIname\fR\fB, int\fR \fIflags\fR \fB= 0)\fR -\fI$repo\fR\fB\->add_rpm(\fR\fI$name\fR\fB,\fR \fI$flags\fR\fB)\fR; -\fIrepo\fR\fB\&.add_rpm(\fR\fIname\fR\fB,\fR \fIflags\fR\fB)\fR -\fIrepo\fR\fB\&.add_rpm(\fR\fIname\fR\fB,\fR \fIflags\fR\fB)\fR +\fBSolvable add_rpm(const char *\fR\fIfilename\fR\fB, int\fR \fIflags\fR \fB= 0)\fR +my \fI$solvable\fR \fB=\fR \fI$repo\fR\fB\->add_rpm(\fR\fI$filename\fR\fB)\fR; +\fIsolvable\fR \fB=\fR \fIrepo\fR\fB\&.add_rpm(\fR\fIfilename\fR\fB)\fR +\fIsolvable\fR \fB=\fR \fIrepo\fR\fB\&.add_rpm(\fR\fIfilename\fR\fB)\fR .fi .if n \{\ .RE @@ -1770,10 +1826,10 @@ Add all pubkeys contained in the rpm database to the repository\&. Note that new .RS 4 .\} .nf -\fBbool add_pubkey(const char *\fR\fIkeyfile\fR\fB, int\fR \fIflags\fR \fB= 0)\fR -\fI$repo\fR\fB\->add_pubkey(\fR\fI$keyfile\fR\fB)\fR; -\fIrepo\fR\fB\&.add_pubkey(\fR\fI$keyfile\fR\fB)\fR -\fIrepo\fR\fB\&.add_pubkey(\fR\fI$keyfile\fR\fB)\fR +\fBSolvable add_pubkey(const char *\fR\fIkeyfile\fR\fB, int\fR \fIflags\fR \fB= 0)\fR +my \fI$solvable\fR \fB=\fR \fI$repo\fR\fB\->add_pubkey(\fR\fI$keyfile\fR\fB)\fR; +\fIsolvable\fR \fB=\fR \fIrepo\fR\fB\&.add_pubkey(\fR\fIkeyfile\fR\fB)\fR +\fIsolvable\fR \fB=\fR \fIrepo\fR\fB\&.add_pubkey(\fR\fIkeyfile\fR\fB)\fR .fi .if n \{\ .RE @@ -1786,9 +1842,9 @@ Add a pubkey from a file to the repository\&. .\} .nf \fBbool add_rpmmd(FILE *\fR\fIfp\fR\fB, const char *\fR\fIlanguage\fR\fB, int\fR \fIflags\fR \fB= 0)\fR -\fI$repo\fR\fB\->add_rpmmd(\fR\fI$fp\fR\fB,\fR \fI$language\fR\fB)\fR; -\fIrepo\fR\fB\&.add_rpmmd(\fR\fIfp\fR\fB,\fR \fIlanguage\fR\fB)\fR -\fIrepo\fR\fB\&.add_rpmmd(\fR\fIfp\fR\fB,\fR \fIlanguage\fR\fB)\fR +\fI$repo\fR\fB\->add_rpmmd(\fR\fI$fp\fR\fB,\fR \fIundef\fR\fB)\fR; +\fIrepo\fR\fB\&.add_rpmmd(\fR\fIfp\fR\fB,\fR \fINone\fR\fB)\fR +\fIrepo\fR\fB\&.add_rpmmd(\fR\fIfp\fR\fB,\fR \fInil\fR\fB)\fR .fi .if n \{\ .RE @@ -1875,10 +1931,10 @@ Add the contents of the debian repository metadata (the "packages" file) to the .RS 4 .\} .nf -\fBbool add_deb(const char *\fR\fIfilename\fR\fB, int\fR \fIflags\fR \fB= 0)\fR -\fI$repo\fR\fB\->add_deb(\fR\fI$filename\fR\fB)\fR; -\fIrepo\fR\fB\&.add_deb(\fR\fIfilename\fR\fB)\fR -\fIrepo\fR\fB\&.add_deb(\fR\fIfilename\fR\fB)\fR +\fBSolvable add_deb(const char *\fR\fIfilename\fR\fB, int\fR \fIflags\fR \fB= 0)\fR +my \fI$solvable\fR \fB=\fR \fI$repo\fR\fB\->add_deb(\fR\fI$filename\fR\fB)\fR; +\fIsolvable\fR \fB=\fR \fIrepo\fR\fB\&.add_deb(\fR\fIfilename\fR\fB)\fR +\fIsolvable\fR \fB=\fR \fIrepo\fR\fB\&.add_deb(\fR\fIfilename\fR\fB)\fR .fi .if n \{\ .RE @@ -1892,8 +1948,8 @@ Add the metadata of a single deb package to the repository\&. .nf \fBbool add_mdk(FILE *\fR\fIfp\fR\fB, int\fR \fIflags\fR \fB= 0)\fR \fI$repo\fR\fB\->add_mdk(\fR\fI$fp\fR\fB)\fR; -\fIrepo\fR\fB\&.add_mdk(\fR\fI$fp\fR\fB)\fR -\fIrepo\fR\fB\&.add_mdk(\fR\fI$fp\fR\fB)\fR +\fIrepo\fR\fB\&.add_mdk(\fR\fIfp\fR\fB)\fR +\fIrepo\fR\fB\&.add_mdk(\fR\fIfp\fR\fB)\fR .fi .if n \{\ .RE @@ -1907,8 +1963,8 @@ Add the contents of the mageia/mandriva repository metadata (the "synthesis\&.hd .nf \fBbool add_mdk_info(FILE *\fR\fIfp\fR\fB, int\fR \fIflags\fR \fB= 0)\fR \fI$repo\fR\fB\->add_mdk(\fR\fI$fp\fR\fB)\fR; -\fIrepo\fR\fB\&.add_mdk(\fR\fI$fp\fR\fB)\fR -\fIrepo\fR\fB\&.add_mdk(\fR\fI$fp\fR\fB)\fR +\fIrepo\fR\fB\&.add_mdk(\fR\fIfp\fR\fB)\fR +\fIrepo\fR\fB\&.add_mdk(\fR\fIfp\fR\fB)\fR .fi .if n \{\ .RE @@ -1922,8 +1978,8 @@ Extend the packages from the synthesis file with the info\&.xml and files\&.xml .nf \fBbool add_arch_repo(FILE *\fR\fIfp\fR\fB, int\fR \fIflags\fR \fB= 0)\fR \fI$repo\fR\fB\->add_arch_repo(\fR\fI$fp\fR\fB)\fR; -\fIrepo\fR\fB\&.add_arch_repo(\fR\fI$fp\fR\fB)\fR -\fIrepo\fR\fB\&.add_arch_repo(\fR\fI$fp\fR\fB)\fR +\fIrepo\fR\fB\&.add_arch_repo(\fR\fIfp\fR\fB)\fR +\fIrepo\fR\fB\&.add_arch_repo(\fR\fIfp\fR\fB)\fR .fi .if n \{\ .RE @@ -1937,8 +1993,8 @@ Add the contents of the archlinux repository metadata (the "\&.db\&.tar" file) t .nf \fBbool add_arch_local(const char *\fR\fIdir\fR\fB, int\fR \fIflags\fR \fB= 0)\fR \fI$repo\fR\fB\->add_arch_local(\fR\fI$dir\fR\fB)\fR; -\fIrepo\fR\fB\&.add_arch_local(\fR\fI$dir\fR\fB)\fR -\fIrepo\fR\fB\&.add_arch_local(\fR\fI$dir\fR\fB)\fR +\fIrepo\fR\fB\&.add_arch_local(\fR\fIdir\fR\fB)\fR +\fIrepo\fR\fB\&.add_arch_local(\fR\fIdir\fR\fB)\fR .fi .if n \{\ .RE @@ -2261,6 +2317,33 @@ Return a tuple containing the on\-media location and an optional media number fo .RS 4 .\} .nf +\fBDataiterator Dataiterator(Id\fR \fIkeyname\fR\fB, const char *\fR\fImatch\fR \fB= 0, int\fR \fIflags\fR \fB= 0)\fR +my \fI$di\fR \fB=\fR \fI$solvable\fR\fB\->Dataiterator(\fR\fI$keyname\fR\fB,\fR \fI$match\fR\fB,\fR \fI$flags\fR\fB)\fR; +\fIdi\fR \fB=\fR \fIsolvable\fR\fB\&.Dataiterator(\fR\fIkeyname\fR\fB,\fR \fImatch\fR\fB,\fR \fIflags\fR\fB)\fR +\fIdi\fR \fB=\fR \fIsolvable\fR\fB\&.Dataiterator(\fR\fIkeyname\fR\fB,\fR \fImatch\fR\fB,\fR \fIflags\fR\fB)\fR +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fBfor my\fR \fI$d\fR \fB(\fR\fI@$di\fR\fB)\fR +\fBfor\fR \fId\fR \fBin\fR \fIdi\fR\fB:\fR +\fBfor\fR \fId\fR \fBin\fR \fIdi\fR +.fi +.if n \{\ +.RE +.\} +.sp +Iterate over the matching data elements\&. See the Dataiterator class for more information\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf \fBvoid add_deparray(Id\fR \fIkeyname\fR\fB, DepId\fR \fIdep\fR\fB, Id\fR \fImarker\fR \fB= \-1)\fR; \fI$solvable\fR\fB\->add_deparray(\fR\fI$keyname\fR\fB,\fR \fI$dep\fR\fB)\fR; \fIsolvable\fR\fB\&.add_deparray(\fR\fIkeyname\fR\fB,\fR \fIdep\fR\fB)\fR @@ -2276,6 +2359,21 @@ Add a new dependency to the attributes stored in keyname\&. .RS 4 .\} .nf +\fBvoid unset(Id\fR \fIkeyname\fR\fB)\fR; +\fI$solvable\fR\fB\->unset(\fR\fI$keyname\fR\fB)\fR; +\fIsolvable\fR\fB\&.unset(\fR\fIkeyname\fR\fB)\fR +\fIsolvable\fR\fB\&.unset(\fR\fIkeyname\fR\fB)\fR +.fi +.if n \{\ +.RE +.\} +.sp +Delete data stored for the specific keyname\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf \fBbool installable()\fR; \fI$solvable\fR\fB\->installable()\fR \fIsolvable\fR\fB\&.installable()\fR @@ -2306,6 +2404,36 @@ Return true if the solvable is installed on the system\&. .RS 4 .\} .nf +\fBbool identical(Solvable *\fR\fIother\fR\fB)\fR +\fI$solvable\fR\fB\->identical(\fR\fI$other\fR\fB)\fR +\fI$solvable\fR\fB\&.identical(\fR\fIother\fR\fB)\fR +\fI$solvable\fR\fB\&.identical?(\fR\fIother\fR\fB)\fR +.fi +.if n \{\ +.RE +.\} +.sp +Return true if the two solvables are identical\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fBint evrcmp(Solvable *\fR\fIother\fR\fB)\fR +\fI$solvable\fR\fB\->evrcmp(\fR\fIother\fR\fB)\fR +\fI$solvable\fR\fB\&.evrcmp(\fR\fIother\fR\fB)\fR +\fI$solvable\fR\fB\&.evrcmp(\fR\fIother\fR\fB)\fR +.fi +.if n \{\ +.RE +.\} +.sp +Returns \-1 if the epoch/version/release of the solvable is less then the one from the other solvable, 1 if it is greater, and 0 if they are equal\&. Note that "equal" does not mean that the evr is identical\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf \fBSelection Selection(int\fR \fIsetflags\fR \fB= 0)\fR my \fI$sel\fR \fB=\fR \fI$solvable\fR\fB\->Selection()\fR; \fIsel\fR \fB=\fR \fIsolvable\fR\fB\&.Selection()\fR @@ -2525,16 +2653,15 @@ The solvable containing the value that was matched\&. .\} .sp The id of the solvable that matched\&. -.SS "METHODS" .sp .if n \{\ .RS 4 .\} .nf -\fBId key_id()\fR; -\fI$d\fR\fB\->key_id()\fR -\fId\fR\fB\&.key_id()\fR -\fId\fR\fB\&.key_id()\fR +\fBId\fR \fIkey_id\fR; +\fI$d\fR\fB\->{\fR\fIkey_id\fR\fB}\fR +\fId\fR\fB\&.key_id\fR +\fId\fR\fB\&.key_id\fR .fi .if n \{\ .RE @@ -2544,10 +2671,10 @@ The id of the solvable that matched\&. .RS 4 .\} .nf -\fBconst char *key_idstr()\fR; -\fI$d\fR\fB\->key_idstr()\fR -\fId\fR\fB\&.key_idstr()\fR -\fId\fR\fB\&.key_idstr()\fR +\fBconst char *\fR\fIkey_idstr\fR; +\fI$d\fR\fB\->{\fR\fIkey_idstr\fR\fB}\fR +\fId\fR\fB\&.key_idstr\fR +\fId\fR\fB\&.key_idstr\fR .fi .if n \{\ .RE @@ -2559,10 +2686,10 @@ The keyname that matched, either as id or string\&. .RS 4 .\} .nf -\fBId type_id()\fR; -\fI$d\fR\fB\->type_id()\fR -\fId\fR\fB\&.type_id()\fR -\fId\fR\fB\&.type_id()\fR +\fBId\fR \fItype_id\fR; +\fI$d\fR\fB\->{\fR\fItype_id\fR\fB}\fR +\fId\fR\fB\&.type_id\fR +\fId\fR\fB\&.type_id\fR .fi .if n \{\ .RE @@ -2572,10 +2699,10 @@ The keyname that matched, either as id or string\&. .RS 4 .\} .nf -\fBconst char *type_idstr()\fR; -\fI$d\fR\fB\->type_idstr()\fR; -\fId\fR\fB\&.type_idstr()\fR -\fId\fR\fB\&.type_idstr()\fR +\fBconst char *\fR\fItype_idstr\fR; +\fI$d\fR\fB\->{\fR\fItype_idstr\fR\fB}\fR; +\fId\fR\fB\&.type_idstr\fR +\fId\fR\fB\&.type_idstr\fR .fi .if n \{\ .RE @@ -2587,10 +2714,10 @@ The key type of the value that was matched, either as id or string\&. .RS 4 .\} .nf -\fBId id()\fR; -\fI$d\fR\fB\->id()\fR -\fId\fR\fB\&.id()\fR -\fId\fR\fB\&.id()\fR +\fBId\fR \fIid\fR; +\fI$d\fR\fB\->{id}\fR +\fId\fR\fB\&.id\fR +\fId\fR\fB\&.id\fR .fi .if n \{\ .RE @@ -2600,10 +2727,10 @@ The key type of the value that was matched, either as id or string\&. .RS 4 .\} .nf -\fBId idstr()\fR; -\fI$d\fR\fB\->idstr()\fR -\fId\fR\fB\&.idstr()\fR -\fId\fR\fB\&.idstr()\fR +\fBId\fR \fIidstr\fR; +\fI$d\fR\fB\->{idstr}\fR +\fId\fR\fB\&.idstr\fR +\fId\fR\fB\&.idstr\fR .fi .if n \{\ .RE @@ -2615,10 +2742,10 @@ The Id of the value that was matched (only valid for id types), either as id or .RS 4 .\} .nf -\fBconst char *str()\fR; -\fI$d\fR\fB\->str()\fR -\fId\fR\fB\&.str()\fR -\fId\fR\fB\&.str()\fR +\fBconst char *\fR\fIstr\fR; +\fI$d\fR\fB\->{str}\fR +\fId\fR\fB\&.str\fR +\fId\fR\fB\&.str\fR .fi .if n \{\ .RE @@ -2630,10 +2757,10 @@ The string value that was matched (only valid for string types)\&. .RS 4 .\} .nf -\fBunsigned long long num()\fR; -\fI$d\fR\fB\->num()\fR -\fId\fR\fB\&.num()\fR -\fId\fR\fB\&.num()\fR +\fBunsigned long long\fR \fInum\fR; +\fI$d\fR\fB\->{num}\fR +\fId\fR\fB\&.num\fR +\fId\fR\fB\&.num\fR .fi .if n \{\ .RE @@ -2645,10 +2772,10 @@ The numeric value that was matched (only valid for numeric types)\&. .RS 4 .\} .nf -\fBunsigned int num2()\fR; -\fI$d\fR\fB\->num2()\fR -\fId\fR\fB\&.num2()\fR -\fId\fR\fB\&.num2()\fR +\fBunsigned int\fR \fInum2\fR; +\fI$d\fR\fB\->{num2}\fR +\fId\fR\fB\&.num2\fR +\fId\fR\fB\&.num2\fR .fi .if n \{\ .RE @@ -2660,6 +2787,22 @@ The secondary numeric value that was matched (only valid for types containing tw .RS 4 .\} .nf +\fBunsigned int\fR \fIbinary\fR; +\fI$d\fR\fB\->{binary}\fR +\fId\fR\fB\&.binary\fR +\fId\fR\fB\&.binary\fR +.fi +.if n \{\ +.RE +.\} +.sp +The value in binary form, useful for checksums and other data that cannot be represented as a string\&. +.SS "METHODS" +.sp +.if n \{\ +.RS 4 +.\} +.nf \fBDatapos pos()\fR; my \fI$pos\fR \fB=\fR \fI$d\fR\fB\->pos()\fR; \fIpos\fR \fB=\fR \fId\fR\fB\&.pos()\fR @@ -2707,17 +2850,17 @@ Selections are a way to easily deal with sets of packages\&. There are multiple .PP \fBSELECTION_NAME\fR .RS 4 -Create the selection by matching package names +Create the selection by matching package names\&. .RE .PP \fBSELECTION_PROVIDES\fR .RS 4 -Create the selection by matching package provides +Create the selection by matching package provides\&. .RE .PP \fBSELECTION_FILELIST\fR .RS 4 -Create the selection by matching package files +Create the selection by matching package files\&. .RE .PP \fBSELECTION_CANON\fR @@ -2972,7 +3115,7 @@ Allow to break the dependencies of the matching packages\&. Handle with care\&. .PP \fBSOLVER_MULTIVERSION\fR .RS 4 -Mark the matched packages for multiversion install\&. If they get to be installed because of some other job, the installation will keep the old version of the package installed (for rpm by using \(lq\-i\(rq instead of \(lq\-U\(rq)\&. +Mark the matched packages for multiversion install\&. If they get to be installed because of some other job, the installation will keep the old version of the package installed (for rpm this is done by using \(lq\-i\(rq instead of \(lq\-U\(rq)\&. .RE .PP \fBSOLVER_LOCK\fR @@ -2982,7 +3125,7 @@ Do not change the state of the matched packages, i\&.e\&. when they are installe .PP \fBSOLVER_DISTUPGRADE\fR .RS 4 -Update the matching installed packages to the best version included in one of the repositories\&. After this operation, all come from one of the available repositories except orphaned packages\&. Orphaned packages are packages that have no relation to the packages in the repositories, i\&.e\&. no package in the repositories have the same name or obsolete the orphaned package\&. This action brings the installed packages in sync with the ones in the repository\&. It also turns of arch/vendor/version locking for the affected packages to simulate a fresh installation\&. This means that distupgrade can actually downgrade packages if only lower versions of a package are available in the repositories\&. +Update the matching installed packages to the best version included in one of the repositories\&. After this operation, all come from one of the available repositories except orphaned packages\&. Orphaned packages are packages that have no relation to the packages in the repositories, i\&.e\&. no package in the repositories have the same name or obsolete the orphaned package\&. This action brings the installed packages in sync with the ones in the repository\&. By default it also turns of arch/vendor/version locking for the affected packages to simulate a fresh installation\&. This means that distupgrade can actually downgrade packages if only lower versions of a package are available in the repositories\&. You can tweak this behavior with the SOLVER_FLAG_DUP_ solver flags\&. .RE .PP \fBSOLVER_DROP_ORPHANED\fR @@ -3238,6 +3381,26 @@ Allow the solver to change the name of an installed package, i\&.e\&. install a Allow the solver to erase installed packages to fulfill the jobs\&. This flag also includes the above flags\&. You may want to set this flag if you only have SOLVER_ERASE jobs, as in that case it\(cqs better for the user to check the transaction overview instead of approving every single package that needs to be erased\&. .RE .PP +\fBSOLVER_FLAG_DUP_ALLOW_DOWNGRADE\fR +.RS 4 +Like SOLVER_FLAG_ALLOW_DOWNGRADE, but used in distupgrade mode\&. +.RE +.PP +\fBSOLVER_FLAG_DUP_ALLOW_ARCHCHANGE\fR +.RS 4 +Like SOLVER_FLAG_ALLOW_ARCHCHANGE, but used in distupgrade mode\&. +.RE +.PP +\fBSOLVER_FLAG_DUP_ALLOW_VENDORCHANGE\fR +.RS 4 +Like SOLVER_FLAG_ALLOW_VENDORCHANGE, but used in distupgrade mode\&. +.RE +.PP +\fBSOLVER_FLAG_DUP_ALLOW_NAMECHANGE\fR +.RS 4 +Like SOLVER_FLAG_ALLOW_NAMECHANGE, but used in distupgrade mode\&. +.RE +.PP \fBSOLVER_FLAG_NO_UPDATEPROVIDE\fR .RS 4 If multiple packages obsolete an installed package, the solver checks the provides of every such package and ignores all packages that do not provide the installed package name\&. Thus, you can have an official update candidate that provides the old name, and other packages that also obsolete the package but are not considered for updating\&. If you cannot use this feature, you can turn it off by setting this flag\&. @@ -3465,6 +3628,63 @@ The problem can be solved by allowing to replace the package with some other pac .RS 4 The problem can be solved by allowing to replace the package with some other package that has a different name\&. .RE +.sp +Reason constants +.PP +\fBSOLVER_REASON_UNRELATED\fR +.RS 4 +The package status did not change as it was not related to any job\&. +.RE +.PP +\fBSOLVER_REASON_UNIT_RULE\fR +.RS 4 +The package was installed/erased/kept because of a unit rule, i\&.e\&. a rule where all literals but one were false\&. +.RE +.PP +\fBSOLVER_REASON_KEEP_INSTALLED\fR +.RS 4 +The package was chosen when trying to keep as many packages installed as possible\&. +.RE +.PP +\fBSOLVER_REASON_RESOLVE_JOB\fR +.RS 4 +The decision happened to fulfill a job rule\&. +.RE +.PP +\fBSOLVER_REASON_UPDATE_INSTALLED\fR +.RS 4 +The decision happened to fulfill a package update request\&. +.RE +.PP +\fBSOLVER_REASON_CLEANDEPS_ERASE\fR +.RS 4 +The package was erased when cleaning up dependencies from other erased packages\&. +.RE +.PP +\fBSOLVER_REASON_RESOLVE\fR +.RS 4 +The package was installed to fulfill package dependencies\&. +.RE +.PP +\fBSOLVER_REASON_WEAKDEP\fR +.RS 4 +The package was installed because of a weak dependency (Recommends or Supplements)\&. +.RE +.PP +\fBSOLVER_REASON_RESOLVE_ORPHAN\fR +.RS 4 +The decision about the package was made when deciding the fate of orphaned packages\&. +.RE +.PP +\fBSOLVER_REASON_RECOMMENDED\fR +.RS 4 +This is a special case of SOLVER_REASON_WEAKDEP\&. +.RE +.PP +\fBSOLVER_REASON_SUPPLEMENTED\fR +.RS 4 +This is a special case of SOLVER_REASON_WEAKDEP\&. +.RE .SS "ATTRIBUTES" .sp .if n \{\ @@ -3488,9 +3708,9 @@ Back pointer to pool\&. .\} .nf \fBint set_flag(int\fR \fIflag\fR\fB, int\fR \fIvalue\fR\fB)\fR -my \fI$oldvalue\fR \fB=\fR \fI$pool\fR\fB\->set_flag(\fR\fI$flag\fR\fB,\fR \fI$value\fR\fB)\fR; -\fIoldvalue\fR \fB=\fR \fIpool\fR\fB\&.set_flag(\fR\fIflag\fR\fB,\fR \fIvalue\fR\fB)\fR -\fIoldvalue\fR \fB=\fR \fIpool\fR\fB\&.set_flag(\fR\fIflag\fR\fB,\fR \fIvalue\fR\fB)\fR +my \fI$oldvalue\fR \fB=\fR \fI$solver\fR\fB\->set_flag(\fR\fI$flag\fR\fB,\fR \fI$value\fR\fB)\fR; +\fIoldvalue\fR \fB=\fR \fIsolver\fR\fB\&.set_flag(\fR\fIflag\fR\fB,\fR \fIvalue\fR\fB)\fR +\fIoldvalue\fR \fB=\fR \fIsolver\fR\fB\&.set_flag(\fR\fIflag\fR\fB,\fR \fIvalue\fR\fB)\fR .fi .if n \{\ .RE @@ -3501,9 +3721,9 @@ my \fI$oldvalue\fR \fB=\fR \fI$pool\fR\fB\->set_flag(\fR\fI$flag\fR\fB,\fR \fI$v .\} .nf \fBint get_flag(int\fR \fIflag\fR\fB)\fR -my \fI$value\fR \fB=\fR \fI$pool\fR\fB\->get_flag(\fR\fI$flag\fR\fB)\fR; -\fIvalue\fR \fB=\fR \fIpool\fR\fB\&.get_flag(\fR\fIflag\fR\fB)\fR -\fIvalue\fR \fB=\fR \fIpool\fR\fB\&.get_flag(\fR\fIflag\fR\fB)\fR +my \fI$value\fR \fB=\fR \fI$solver\fR\fB\->get_flag(\fR\fI$flag\fR\fB)\fR; +\fIvalue\fR \fB=\fR \fIsolver\fR\fB\&.get_flag(\fR\fIflag\fR\fB)\fR +\fIvalue\fR \fB=\fR \fIsolver\fR\fB\&.get_flag(\fR\fIflag\fR\fB)\fR .fi .if n \{\ .RE @@ -3540,6 +3760,21 @@ my \fI$trans\fR \fB=\fR \fI$solver\fR\fB\->transaction()\fR; .\} .sp Return the transaction to implement the calculated package changes\&. A transaction is available even if problems were found, this is useful for interactive user interfaces that show both the job result and the problems\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fBint\fR \fIreason\fR \fB= describe_decision(Solvable *\fR\fIs\fR\fB, Rule *\fR\fIOUTPUT\fR\fB)\fR +my \fB(\fR\fI$reason\fR\fB,\fR \fI$rule\fR\fB) =\fR \fI$solver\fR\fB\->describe_decision(\fR\fI$solvable\fR\fB)\fR; +\fB(\fR\fIreason\fR\fB,\fR \fIrule\fR\fB) =\fR \fIsolver\fR\fB\&.describe_decision(\fR\fIsolvable\fR\fB)\fR +\fB(\fR\fIreason\fR\fB,\fR \fIrule\fR\fB) =\fR \fIsolver\fR\fB\&.describe_decision(\fR\fIsolvable\fR\fB)\fR +.fi +.if n \{\ +.RE +.\} +.sp +Return the reason why a specific solvable was installed or erased\&. For most of the reasons the rule that triggered the decision is also returned\&. .SH "THE PROBLEM CLASS" .sp Problems are the way of the solver to interact with the user\&. You can simply list all problems and terminate your program, but a better way is to present solutions to the user and let him pick the ones he likes\&. @@ -3635,6 +3870,21 @@ my \fI$cnt\fR \fB=\fR \fI$problem\fR\fB\->solution_count()\fR; .\} .sp Return the number of solutions without creating solution objects\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fB\fR +my \fI$str\fR \fB=\fR \fI$problem\fR\fB\->str\fR; +\fIstr\fR \fB= str(\fR\fIproblem\fR\fB)\fR +\fIstr\fR \fB=\fR \fIproblem\fR\fB\&.to_s\fR +.fi +.if n \{\ +.RE +.\} +.sp +Return a string describing the problem\&. This is a convenience function, it is a shorthand for calling findproblemrule(), then ruleinfo() on the problem rule and problemstr() on the ruleinfo object\&. .SH "THE RULE CLASS" .sp Rules are the basic block of sat solving\&. Each package dependency gets translated into one or multiple rules\&. @@ -4740,6 +4990,21 @@ Finalize the checksum and return the result as hex string\&. .RS 4 .\} .nf +\fBconst char *typestr()\fR +my \fI$typestr\fR \fB=\fR \fI$chksum\fR\fB\->typestr()\fR; +\fItypestr\fR \fB=\fR \fIchksum\fR\fB\&.typestr\fR +\fItypestr\fR \fB=\fR \fIchksum\fR\fB\&.typestr\fR +.fi +.if n \{\ +.RE +.\} +.sp +Return the type of the checksum as a string, e\&.g\&. "sha256"\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf \fB\fR \fBif (\fR\fI$chksum1\fR \fB==\fR \fI$chksum2\fR\fB)\fR \fBif\fR \fIchksum1\fR \fB==\fR \fIchksum2\fR\fB:\fR @@ -4893,7 +5158,7 @@ Back pointer to repository object\&. .\} .sp The id of the repodata area\&. Repodata ids of different repositories overlap\&. -.SS "METHODS ====" +.SS "METHODS" .sp .if n \{\ .RS 4 @@ -5266,6 +5531,33 @@ my \fI$chksum\fR \fB=\fR \fI$datapos\fR\fB\->lookup_checksum(\fR\fI$keyname\fR\f .\} .sp Lookup functions\&. Note that the returned Ids are always translated into the Ids of the global pool even if the repodata area contains its own pool\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fBDataiterator Dataiterator(Id\fR \fIkeyname\fR\fB, const char *\fR\fImatch\fR \fB= 0, int\fR \fIflags\fR \fB= 0)\fR +my \fI$di\fR \fB=\fR \fI$datapos\fR\fB\->Dataiterator(\fR\fI$keyname\fR\fB,\fR \fI$match\fR\fB,\fR \fI$flags\fR\fB)\fR; +\fIdi\fR \fB=\fR \fIdatapos\fR\fB\&.Dataiterator(\fR\fIkeyname\fR\fB,\fR \fImatch\fR\fB,\fR \fIflags\fR\fB)\fR +\fIdi\fR \fB=\fR \fIdatapos\fR\fB\&.Dataiterator(\fR\fIkeyname\fR\fB,\fR \fImatch\fR\fB,\fR \fIflags\fR\fB)\fR +.fi +.if n \{\ +.RE +.\} +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fBfor my\fR \fI$d\fR \fB(\fR\fI@$di\fR\fB)\fR +\fBfor\fR \fId\fR \fBin\fR \fIdi\fR\fB:\fR +\fBfor\fR \fId\fR \fBin\fR \fIdi\fR +.fi +.if n \{\ +.RE +.\} +.sp +Iterate over the matching data elements\&. See the Dataiterator class for more information\&. .SH "AUTHOR" .sp Michael Schroeder