import re
import stat
import sys
+import warnings
from itertools import chain
if sys.hexversion >= 0x3000000:
class binarytree(object):
"this tree scans for a list of all packages available in PKGDIR"
- def __init__(self, root, pkgdir, virtual=None, settings=None, clone=None):
- if clone:
- writemsg("binartree.__init__(): deprecated " + \
- "use of clone parameter\n", noiselevel=-1)
- # XXX This isn't cloning. It's an instance of the same thing.
- self.root = clone.root
- self.pkgdir = clone.pkgdir
- self.dbapi = clone.dbapi
- self.populated = clone.populated
- self.tree = clone.tree
- self.remotepkgs = clone.remotepkgs
- self.invalids = clone.invalids
- self.settings = clone.settings
- else:
+ def __init__(self, root, pkgdir, virtual=None, settings=None):
+ if True:
self.root = root
#self.pkgdir=settings["PKGDIR"]
self.pkgdir = normalize_path(pkgdir)
self._remote_has_index = False
self._remote_base_uri = None
self._remotepkgs = None # remote metadata indexed by cpv
- self.remotepkgs = {} # indexed by tbz2 name (deprecated)
+ self.__remotepkgs = {} # indexed by tbz2 name (deprecated)
self.invalids = []
self.settings = settings
self._pkg_paths = {}
chain(*self._pkgindex_translated_keys)
))
+ def _get_remotepkgs(self):
+ warnings.warn("Use binarytree._remotepkgs insead of binarytree.remotepkgs",
+ DeprecationWarning)
+ return self.__remotepkgs
+
+ def _set_remotepkgs(self, remotepkgs):
+ warnings.warn("Use binarytree._remotepkgs insead of binarytree.remotepkgs",
+ DeprecationWarning)
+ self.__remotepkgs = remotepkgs
+
+ def _del_remotepkgs(self):
+ warnings.warn("Use binarytree._remotepkgs insead of binarytree.remotepkgs",
+ DeprecationWarning)
+ del self.__remotepkgs
+
+ remotepkgs = property(_get_remotepkgs, _set_remotepkgs, _del_remotepkgs,
+ "Deprecated self.remotepkgs, only for backward compatibility")
+
def move_ent(self, mylist):
if not self.populated:
self.populate()
_movefile(src_path, dest_path, mysettings=self.settings)
self._pkg_paths[cpv] = mypath
- def populate(self, getbinpkgs=0, getbinpkgsonly=0):
+ def populate(self, getbinpkgs=0, getbinpkgsonly=None):
"populates the binarytree"
+
+ if getbinpkgsonly is not None:
+ warnings.warn(
+ "portage.dbapi.bintree.binarytree.populate(): " + \
+ "getbinpkgsonly parameter is deprecated",
+ DeprecationWarning)
+
if self._populating:
return
from portage.locks import lockfile, unlockfile
pkgindex_lock = lockfile(self._pkgindex_file,
wantnewlockfile=1)
self._populating = True
- self._populate(getbinpkgs, getbinpkgsonly)
+ self._populate(getbinpkgs)
finally:
if pkgindex_lock:
unlockfile(pkgindex_lock)
self._populating = False
- def _populate(self, getbinpkgs=0, getbinpkgsonly=0):
+ def _populate(self, getbinpkgs=0):
if (not os.path.isdir(self.pkgdir) and not getbinpkgs):
return 0
self._remotepkgs[d["CPV"]] = d
self._remote_has_index = True
self._remote_base_uri = pkgindex.header.get("URI", base_url)
- self.remotepkgs = {}
+ self.__remotepkgs = {}
for cpv in self._remotepkgs:
self.dbapi.cpv_inject(cpv)
self.populated = 1
writemsg_stdout(
colorize("GOOD", _("Fetching bininfo from ")) + \
re.sub(r'//(.+):.+@(.+)/', r'//\1:*password*@\2/', base_url) + "\n")
- self.remotepkgs = portage.getbinpkg.dir_get_metadata(
+ self.__remotepkgs = portage.getbinpkg.dir_get_metadata(
self.settings["PORTAGE_BINHOST"], chunk_size=chunk_size)
#writemsg(green(" -- DONE!\n\n"))
- for mypkg in list(self.remotepkgs):
- if "CATEGORY" not in self.remotepkgs[mypkg]:
+ for mypkg in list(self.__remotepkgs):
+ if "CATEGORY" not in self.__remotepkgs[mypkg]:
#old-style or corrupt package
writemsg(_("!!! Invalid remote binary package: %s\n") % mypkg,
noiselevel=-1)
- del self.remotepkgs[mypkg]
+ del self.__remotepkgs[mypkg]
continue
- mycat = self.remotepkgs[mypkg]["CATEGORY"].strip()
+ mycat = self.__remotepkgs[mypkg]["CATEGORY"].strip()
fullpkg = mycat+"/"+mypkg[:-5]
if fullpkg in metadata:
# invalid tbz2's can hurt things.
#print "cpv_inject("+str(fullpkg)+")"
self.dbapi.cpv_inject(fullpkg)
- remote_metadata = self.remotepkgs[mypkg]
+ remote_metadata = self.__remotepkgs[mypkg]
for k, v in remote_metadata.items():
remote_metadata[k] = v.strip()
except:
writemsg(_("!!! Failed to inject remote binary package: %s\n") % fullpkg,
noiselevel=-1)
- del self.remotepkgs[mypkg]
+ del self.__remotepkgs[mypkg]
continue
self.populated=1
# package is downloaded, state is updated by self.inject().
return True
- def get_use(self, pkgname):
- writemsg("deprecated use of binarytree.get_use()," + \
- " use dbapi.aux_get() instead", noiselevel=-1)
- return self.dbapi.aux_get(pkgname, ["USE"])[0].split()
-
def gettbz2(self, pkgname):
"""Fetches the package from a remote site, if necessary. Attempts to
resume if the file appears to be partially downloaded."""
return uri_map
- def getfetchlist(self, mypkg, useflags=None, mysettings=None,
- all=0, mytree=None):
-
- writemsg("!!! pordbapi.getfetchlist() is deprecated, " + \
- "use getFetchMap() instead.\n", noiselevel=-1)
-
- if all:
- useflags = None
- elif useflags is None:
- if mysettings is None:
- mysettings = self.doebuild_settings
- mysettings.setcpv(mypkg, mydb=self)
- useflags = mysettings["PORTAGE_USE"].split()
- uri_map = self.getFetchMap(mypkg, useflags=useflags, mytree=mytree)
-
- all_uris = []
- all_files = []
- for filename, uris in uri_map.items():
- for uri in uris:
- all_uris.append(uri)
- all_files.append(filename)
-
- return [all_uris, all_files]
-
def getfetchsizes(self, mypkg, useflags=None, debug=0):
# returns a filename:size dictionnary of remaining downloads
myebuild = self.findname(mypkg)
i.close_caches()
class portagetree(object):
- def __init__(self, root="/", virtual=None, clone=None, settings=None):
+ def __init__(self, root="/", virtual=None, settings=None):
"""
Constructor for a PortageTree
@type root: String/Path
@param virtual: UNUSED
@type virtual: No Idea
- @param clone: Set this if you want a copy of Clone
- @type clone: Existing portagetree Instance
@param settings: Portage Configuration object (portage.settings)
@type settings: Instance of portage.config
"""
- if clone:
- writemsg("portagetree.__init__(): deprecated " + \
- "use of clone parameter\n", noiselevel=-1)
- self.root = clone.root
- self.portroot = clone.portroot
- self.pkglines = clone.pkglines
- else:
+ if True:
self.root = root
if settings is None:
from portage import settings