The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
Difference between revisions of "Portage API"
(Created page with "This page is the beginning of the missing documentation on the Portage Python API. == Introduction == Portage has always had a Python API; however, this API does not appear...") |
|||
Line 40: | Line 40: | ||
Using {{c|xmatch()}}, more sophisticated matching can be performed: | Using {{c|xmatch()}}, more sophisticated matching can be performed: | ||
{{console|body= | |||
>>> p.xmatch("match-visible", "=sys-apps/portage-2*") | |||
['sys-apps/portage-2.3.6-r9', 'sys-apps/portage-2.3.8'] | |||
}} | |||
As you can see, {{c|xmatch()}} with the "match_visible" gives us the identical results as {{c|match()}}. In fact, {{c|match()}} is a shortcut for this particular {{c|xmatch()}} call. However, {{c|xmatch()}} has other matching methods, detailed below: | |||
{{TableStart}} | |||
<tr><th>match mode</th><th>Description</th><th>Return Type</th></tr> | |||
<tr><td>{{c|bestmatch-visible}}</td><td>Find the best (highest) visible (unmasked) match for the dependency.</td><td>single string</td></tr> | |||
<tr><td>{{c|match-all}}</td><td>Find all matches, masked or unmasked.</td><td>list of strings</td></tr> | |||
<tr><td>{{c|match-visible}}</td><td>Find all visible (unmasked) matches for the dependency.</td><td>list of strings</td></tr> | |||
<tr><td>{{c|minimum-all}}</td><td>Find the lowest match for the dependency, ignoring masks.</td><td>single string</td></tr> | |||
<tr><td>{{c|minimum-visible}}</td><td>Find the lowest match for the dependency, respecting masks.</td><td>single string</td></tr> | |||
{{TableEnd}} |
Revision as of 01:38, September 28, 2015
This page is the beginning of the missing documentation on the Portage Python API.
Introduction
Portage has always had a Python API; however, this API does not appear to be documented at all. This page represents an initial effort to document the API that is available for querying packages, etc.
Portage DBAPI
The API that exists in Portage to query this is called the DBAPI, and the "porttree" -- What is typically stored in Template:P, and querying the porttree is what we will examine here, using the interactive python
interpreter.
w520 drobbins # python Python 3.3.5 (default, Sep 21 2015, 23:01:43) [GCC 4.9.3] on linux Type "help", "copyright", "credits" or "license" for more information. >>> portage.root '/' >>> import portage >>> p = portage.db[portage.root]["porttree"].dbapi >>>
p
now contains a reference to the DBAPI associated with the Portage tree associated with the system installed at portage.root
, which is typically /usr/portage
. We can now perform various queries using this variable.
>>> p.cp_list("sys-apps/portage")
['sys-apps/portage-2.3.6-r9', 'sys-apps/portage-2.3.8']
Above, cp_list
takes what is called a "catpkg", which is a reference to a particular ebuild in a repository in "category/packagename" format. We can also get lists of specific available packages, using other functions:
>>> p.match("sys-apps/portage") ['sys-apps/portage-2.3.6-r9', 'sys-apps/portage-2.3.8'] >>> p.match("=sys-apps/portage-2*") ['sys-apps/portage-2.3.6-r9', 'sys-apps/portage-2.3.8']
While at first the match()
method looks no different than the cp_list()
method, you can see that it accepts any valid dependency atom, which is any individual dependency reference to a particular package. The match()
method is actually a shortcut for the more sophisticated xmatch()
method -- it matches all visible (non-masked) packages that satisfy the dependency.
Using xmatch()
, more sophisticated matching can be performed:
>>> p.xmatch("match-visible", "=sys-apps/portage-2*") ['sys-apps/portage-2.3.6-r9', 'sys-apps/portage-2.3.8']
As you can see, xmatch()
with the "match_visible" gives us the identical results as match()
. In fact, match()
is a shortcut for this particular xmatch()
call. However, xmatch()
has other matching methods, detailed below:
match mode | Description | Return Type |
---|---|---|
bestmatch-visible | Find the best (highest) visible (unmasked) match for the dependency. | single string |
match-all | Find all matches, masked or unmasked. | list of strings |
match-visible | Find all visible (unmasked) matches for the dependency. | list of strings |
minimum-all | Find the lowest match for the dependency, ignoring masks. | single string |
minimum-visible | Find the lowest match for the dependency, respecting masks. | single string |