# =======
import os
-import sys
import re
import codecs
from functools import partial
from itertools import chain
+import portage
+
from gentoolkit import pprinter as pp
from gentoolkit import errors
from gentoolkit.atom import Atom
from gentoolkit.cpv import CPV
-from gentoolkit.dbapi import BINDB, PORTDB, VARDB
from gentoolkit.versionmatch import VersionMatch
# This has to be imported below to stop circular import.
#from gentoolkit.package import Package
Example usage:
>>> from gentoolkit.helpers import ChangeLog
>>> portage = ChangeLog('/usr/portage/sys-apps/portage/ChangeLog')
- >>> print portage.latest.strip()
- *portage-2.2_rc50 (15 Nov 2009)
-
- 15 Nov 2009; Zac Medico <zmedico@gentoo.org> +portage-2.2_rc50.ebuild:
- 2.2_rc50 bump. This includes all fixes in 2.1.7.5.
+ >>> print(portage.latest.strip())
+ *portage-2.2.0_alpha142 (26 Oct 2012)
+ <BLANKLINE>
+ 26 Oct 2012; Zac Medico <zmedico@gentoo.org> +portage-2.2.0_alpha142.ebuild:
+ 2.2.0_alpha142 version bump. This includes all of the fixes in 2.1.11.31. Bug
+ #210077 tracks all bugs fixed since portage-2.1.x.
>>> len(portage.full)
75
>>> len(portage.entries_matching_range(
if not pkg_name.strip():
continue
try:
- entry_ver = CPV(pkg_name)
+ entry_ver = CPV(pkg_name, validate=True)
except errors.GentoolkitInvalidCPV:
if self.invalid_entry_is_fatal:
raise ValueError(entry_ver)
Example usage:
>>> from gentoolkit.helpers import FileOwner
>>> findowner = FileOwner()
- >>> findowner(('/usr/bin/vim',))
- [(<Package app-editors/vim-7.2.182>, '/usr/bin/vim')]
+ >>> findowner(('/bin/grep',))
+ [(<Package 'sys-apps/grep-2.12'>, '/bin/grep')]
"""
def __init__(self, is_regex=False, early_out=False, printer_fn=None):
"""Instantiate function.
osp = os.path
expanded_paths = []
- for p in paths:
- if p.startswith('./'):
- expanded_paths.append(osp.abspath(p))
+ for path in paths:
+ if path.startswith('./'):
+ expanded_paths.append(osp.abspath(path))
else:
- expanded_paths.append(p)
+ expanded_paths.append(path)
return expanded_paths
osp = os.path
paths.extend([osp.realpath(x) for x in paths
- if osp.islink(x) and osp.realpath(x) not in paths])
+ if osp.realpath(x) not in paths])
return paths
Example usage:
>>> from gentoolkit.helpers import get_cpvs
>>> len(set(get_cpvs()))
- 26065
+ 33518
>>> fn = lambda x: x.startswith('app-portage')
- >>> len(get_cpvs(fn, include_installed=False))
- 112
+ >>> len(set(get_cpvs(fn, include_installed=False)))
+ 137
@type predicate: function
@param predicate: a function to filter the package list with
"""
if predicate:
- all_cps = iter(x for x in PORTDB.cp_all() if predicate(x))
+ all_cps = iter(
+ x for x
+ in portage.db[portage.root]["porttree"].dbapi.cp_all()
+ if predicate(x))
else:
- all_cps = PORTDB.cp_all()
+ all_cps = portage.db[portage.root]["porttree"].dbapi.cp_all()
- all_cpvs = chain.from_iterable(PORTDB.cp_list(x) for x in all_cps)
+ all_cpvs = chain.from_iterable(
+ portage.db[portage.root]["porttree"].dbapi.cp_list(x)
+ for x in all_cps)
all_installed_cpvs = set(get_installed_cpvs(predicate))
if include_installed:
"""
if predicate:
- installed_cps = iter(x for x in VARDB.cp_all() if predicate(x))
+ installed_cps = iter(
+ x for x
+ in portage.db[portage.root]["vartree"].dbapi.cp_all()
+ if predicate(x))
else:
- installed_cps = VARDB.cp_all()
+ installed_cps = (
+ portage.db[portage.root]["vartree"].dbapi.cp_all())
- for cpv in chain.from_iterable(VARDB.cp_list(x) for x in installed_cps):
+ for cpv in chain.from_iterable(
+ portage.db[portage.root]["vartree"].dbapi.cp_list(x)
+ for x in installed_cps):
yield cpv
"""
if predicate:
- installed_cps = iter(x for x in BINDB.cp_all() if predicate(x))
+ installed_cps = iter(
+ x for x
+ in portage.db[portage.root]["bintree"].dbapi.cp_all()
+ if predicate(x))
else:
- installed_cps = BINDB.cp_all()
+ installed_cps = (
+ portage.db[portage.root]["bintree"].dbapi.cp_all())
- for cpv in chain.from_iterable(BINDB.cp_list(x) for x in installed_cps):
+ for cpv in chain.from_iterable(
+ portage.db[portage.root]["bintree"].dbapi.cp_list(x)
+ for x in installed_cps):
yield cpv