Splid deprecated functions into a _deprecated module.
authorZac Medico <zmedico@gentoo.org>
Thu, 25 Feb 2010 22:16:32 +0000 (22:16 -0000)
committerZac Medico <zmedico@gentoo.org>
Thu, 25 Feb 2010 22:16:32 +0000 (22:16 -0000)
svn path=/main/trunk/; revision=15466

pym/portage/__init__.py
pym/portage/_deprecated.py [new file with mode: 0644]

index 60896f785c701910b29e46d26c15c45a637e09e0..005055a6289e48e5934dd4936cb4a32b201f28f3 100644 (file)
@@ -136,6 +136,7 @@ try:
                        'cpv_getkey@getCPFromCPV,endversion_keys,' + \
                        'suffix_value@endversion,pkgcmp,pkgsplit,vercmp,ververify',
                'portage.xpak',
+               'portage._deprecated:dep_virtual,digestParseFile,pkgmerge',
        )
 
        import portage.const
@@ -544,30 +545,6 @@ def abssymlink(symlink):
 
 _doebuild_manifest_exempt_depend = 0
 
-def digestParseFile(myfilename, mysettings=None):
-       """(filename) -- Parses a given file for entries matching:
-       <checksumkey> <checksum_hex_string> <filename> <filesize>
-       Ignores lines that don't start with a valid checksum identifier
-       and returns a dict with the filenames as keys and {checksumkey:checksum}
-       as the values.
-       DEPRECATED: this function is now only a compability wrapper for
-                   portage.manifest.Manifest()."""
-
-       warnings.warn("portage.digestParseFile() is deprecated",
-               DeprecationWarning, stacklevel=2)
-
-       mysplit = myfilename.split(os.sep)
-       if mysplit[-2] == "files" and mysplit[-1].startswith("digest-"):
-               pkgdir = os.sep + os.sep.join(mysplit[:-2]).strip(os.sep)
-       elif mysplit[-1] == "Manifest":
-               pkgdir = os.sep + os.sep.join(mysplit[:-1]).strip(os.sep)
-
-       if mysettings is None:
-               global settings
-               mysettings = config(clone=settings)
-
-       return Manifest(pkgdir, mysettings["DISTDIR"]).getDigests()
-
 _testing_eapis = frozenset()
 _deprecated_eapis = frozenset(["3_pre2", "3_pre1", "2_pre3", "2_pre2", "2_pre1"])
 
@@ -671,34 +648,6 @@ def unmerge(cat, pkg, myroot, mysettings, mytrimworld=1, vartree=None,
                vartree.dbapi.linkmap._clear_cache()
                mylink.unlockdb()
 
-def dep_virtual(mysplit, mysettings):
-       "Does virtual dependency conversion"
-       warnings.warn("portage.dep_virtual() is deprecated",
-               DeprecationWarning, stacklevel=2)
-       newsplit=[]
-       myvirtuals = mysettings.getvirtuals()
-       for x in mysplit:
-               if isinstance(x, list):
-                       newsplit.append(dep_virtual(x, mysettings))
-               else:
-                       mykey=dep_getkey(x)
-                       mychoices = myvirtuals.get(mykey, None)
-                       if mychoices:
-                               if len(mychoices) == 1:
-                                       a = x.replace(mykey, dep_getkey(mychoices[0]), 1)
-                               else:
-                                       if x[0]=="!":
-                                               # blocker needs "and" not "or(||)".
-                                               a=[]
-                                       else:
-                                               a=['||']
-                                       for y in mychoices:
-                                               a.append(x.replace(mykey, dep_getkey(y), 1))
-                               newsplit.append(a)
-                       else:
-                               newsplit.append(x)
-       return newsplit
-
 auxdbkeys = (
   'DEPEND',    'RDEPEND',   'SLOT',      'SRC_URI',
        'RESTRICT',  'HOMEPAGE',  'LICENSE',   'DESCRIPTION',
@@ -709,125 +658,6 @@ auxdbkeys = (
 )
 auxdbkeylen=len(auxdbkeys)
 
-def pkgmerge(mytbz2, myroot, mysettings, mydbapi=None,
-       vartree=None, prev_mtimes=None, blockers=None):
-       """will merge a .tbz2 file, returning a list of runtime dependencies
-               that must be satisfied, or None if there was a merge error.     This
-               code assumes the package exists."""
-
-       warnings.warn("portage.pkgmerge() is deprecated",
-               DeprecationWarning, stacklevel=2)
-
-       global db
-       if mydbapi is None:
-               mydbapi = db[myroot]["bintree"].dbapi
-       if vartree is None:
-               vartree = db[myroot]["vartree"]
-       if mytbz2[-5:]!=".tbz2":
-               print(_("!!! Not a .tbz2 file"))
-               return 1
-
-       tbz2_lock = None
-       mycat = None
-       mypkg = None
-       did_merge_phase = False
-       success = False
-       try:
-               """ Don't lock the tbz2 file because the filesytem could be readonly or
-               shared by a cluster."""
-               #tbz2_lock = portage.locks.lockfile(mytbz2, wantnewlockfile=1)
-
-               mypkg = os.path.basename(mytbz2)[:-5]
-               xptbz2 = portage.xpak.tbz2(mytbz2)
-               mycat = xptbz2.getfile(_unicode_encode("CATEGORY",
-                       encoding=_encodings['repo.content']))
-               if not mycat:
-                       writemsg(_("!!! CATEGORY info missing from info chunk, aborting...\n"),
-                               noiselevel=-1)
-                       return 1
-               mycat = _unicode_decode(mycat,
-                       encoding=_encodings['repo.content'], errors='replace')
-               mycat = mycat.strip()
-
-               # These are the same directories that would be used at build time.
-               builddir = os.path.join(
-                       mysettings["PORTAGE_TMPDIR"], "portage", mycat, mypkg)
-               catdir = os.path.dirname(builddir)
-               pkgloc = os.path.join(builddir, "image")
-               infloc = os.path.join(builddir, "build-info")
-               myebuild = os.path.join(
-                       infloc, os.path.basename(mytbz2)[:-4] + "ebuild")
-               portage.util.ensure_dirs(os.path.dirname(catdir),
-                       uid=portage_uid, gid=portage_gid, mode=0o70, mask=0)
-               catdir_lock = portage.locks.lockdir(catdir)
-               portage.util.ensure_dirs(catdir,
-                       uid=portage_uid, gid=portage_gid, mode=0o70, mask=0)
-               try:
-                       shutil.rmtree(builddir)
-               except (IOError, OSError) as e:
-                       if e.errno != errno.ENOENT:
-                               raise
-                       del e
-               for mydir in (builddir, pkgloc, infloc):
-                       portage.util.ensure_dirs(mydir, uid=portage_uid,
-                               gid=portage_gid, mode=0o755)
-               writemsg_stdout(_(">>> Extracting info\n"))
-               xptbz2.unpackinfo(infloc)
-               mysettings.setcpv(mycat + "/" + mypkg, mydb=mydbapi)
-               # Store the md5sum in the vdb.
-               fp = open(_unicode_encode(os.path.join(infloc, 'BINPKGMD5')), 'w')
-               fp.write(str(portage.checksum.perform_md5(mytbz2))+"\n")
-               fp.close()
-
-               # This gives bashrc users an opportunity to do various things
-               # such as remove binary packages after they're installed.
-               mysettings["PORTAGE_BINPKG_FILE"] = mytbz2
-               mysettings.backup_changes("PORTAGE_BINPKG_FILE")
-               debug = mysettings.get("PORTAGE_DEBUG", "") == "1"
-
-               # Eventually we'd like to pass in the saved ebuild env here.
-               retval = doebuild(myebuild, "setup", myroot, mysettings, debug=debug,
-                       tree="bintree", mydbapi=mydbapi, vartree=vartree)
-               if retval != os.EX_OK:
-                       writemsg(_("!!! Setup failed: %s\n") % retval, noiselevel=-1)
-                       return retval
-
-               writemsg_stdout(_(">>> Extracting %s\n") % mypkg)
-               retval = portage.process.spawn_bash(
-                       "bzip2 -dqc -- '%s' | tar -xp -C '%s' -f -" % (mytbz2, pkgloc),
-                       env=mysettings.environ())
-               if retval != os.EX_OK:
-                       writemsg(_("!!! Error Extracting '%s'\n") % mytbz2, noiselevel=-1)
-                       return retval
-               #portage.locks.unlockfile(tbz2_lock)
-               #tbz2_lock = None
-
-               mylink = dblink(mycat, mypkg, myroot, mysettings, vartree=vartree,
-                       treetype="bintree", blockers=blockers)
-               retval = mylink.merge(pkgloc, infloc, myroot, myebuild, cleanup=0,
-                       mydbapi=mydbapi, prev_mtimes=prev_mtimes)
-               did_merge_phase = True
-               success = retval == os.EX_OK
-               return retval
-       finally:
-               mysettings.pop("PORTAGE_BINPKG_FILE", None)
-               if tbz2_lock:
-                       portage.locks.unlockfile(tbz2_lock)
-               if True:
-                       if not did_merge_phase:
-                               # The merge phase handles this already.  Callers don't know how
-                               # far this function got, so we have to call elog_process() here
-                               # so that it's only called once.
-                               from portage.elog import elog_process
-                               elog_process(mycat + "/" + mypkg, mysettings)
-                       try:
-                               if success:
-                                       shutil.rmtree(builddir)
-                       except (IOError, OSError) as e:
-                               if e.errno != errno.ENOENT:
-                                       raise
-                               del e
-
 def deprecated_profile_check(settings=None):
        config_root = "/"
        if settings is not None:
diff --git a/pym/portage/_deprecated.py b/pym/portage/_deprecated.py
new file mode 100644 (file)
index 0000000..fafda3d
--- /dev/null
@@ -0,0 +1,182 @@
+# Copyright 2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+from __future__ import print_function
+
+import errno
+import shutil
+import warnings
+
+import portage
+from portage import os, _encodings, _unicode_decode, _unicode_encode
+from portage.data import portage_gid, portage_uid
+from portage.dep import dep_getkey
+from portage.localization import _
+from portage.manifest import Manifest
+from portage.util import writemsg, writemsg_stdout
+
+def digestParseFile(myfilename, mysettings=None):
+       """(filename) -- Parses a given file for entries matching:
+       <checksumkey> <checksum_hex_string> <filename> <filesize>
+       Ignores lines that don't start with a valid checksum identifier
+       and returns a dict with the filenames as keys and {checksumkey:checksum}
+       as the values.
+       DEPRECATED: this function is now only a compability wrapper for
+                   portage.manifest.Manifest()."""
+
+       warnings.warn("portage.digestParseFile() is deprecated",
+               DeprecationWarning, stacklevel=2)
+
+       mysplit = myfilename.split(os.sep)
+       if mysplit[-2] == "files" and mysplit[-1].startswith("digest-"):
+               pkgdir = os.sep + os.sep.join(mysplit[:-2]).strip(os.sep)
+       elif mysplit[-1] == "Manifest":
+               pkgdir = os.sep + os.sep.join(mysplit[:-1]).strip(os.sep)
+
+       return Manifest(pkgdir, None).getDigests()
+
+def dep_virtual(mysplit, mysettings):
+       "Does virtual dependency conversion"
+       warnings.warn("portage.dep_virtual() is deprecated",
+               DeprecationWarning, stacklevel=2)
+       newsplit=[]
+       myvirtuals = mysettings.getvirtuals()
+       for x in mysplit:
+               if isinstance(x, list):
+                       newsplit.append(dep_virtual(x, mysettings))
+               else:
+                       mykey=dep_getkey(x)
+                       mychoices = myvirtuals.get(mykey, None)
+                       if mychoices:
+                               if len(mychoices) == 1:
+                                       a = x.replace(mykey, dep_getkey(mychoices[0]), 1)
+                               else:
+                                       if x[0]=="!":
+                                               # blocker needs "and" not "or(||)".
+                                               a=[]
+                                       else:
+                                               a=['||']
+                                       for y in mychoices:
+                                               a.append(x.replace(mykey, dep_getkey(y), 1))
+                               newsplit.append(a)
+                       else:
+                               newsplit.append(x)
+       return newsplit
+
+def pkgmerge(mytbz2, myroot, mysettings, mydbapi=None,
+       vartree=None, prev_mtimes=None, blockers=None):
+       """will merge a .tbz2 file, returning a list of runtime dependencies
+               that must be satisfied, or None if there was a merge error.     This
+               code assumes the package exists."""
+
+       warnings.warn("portage.pkgmerge() is deprecated",
+               DeprecationWarning, stacklevel=2)
+
+       if mydbapi is None:
+               mydbapi = portage.db[myroot]["bintree"].dbapi
+       if vartree is None:
+               vartree = portage.db[myroot]["vartree"]
+       if mytbz2[-5:]!=".tbz2":
+               print(_("!!! Not a .tbz2 file"))
+               return 1
+
+       tbz2_lock = None
+       mycat = None
+       mypkg = None
+       did_merge_phase = False
+       success = False
+       try:
+               """ Don't lock the tbz2 file because the filesytem could be readonly or
+               shared by a cluster."""
+               #tbz2_lock = portage.locks.lockfile(mytbz2, wantnewlockfile=1)
+
+               mypkg = os.path.basename(mytbz2)[:-5]
+               xptbz2 = portage.xpak.tbz2(mytbz2)
+               mycat = xptbz2.getfile(_unicode_encode("CATEGORY",
+                       encoding=_encodings['repo.content']))
+               if not mycat:
+                       writemsg(_("!!! CATEGORY info missing from info chunk, aborting...\n"),
+                               noiselevel=-1)
+                       return 1
+               mycat = _unicode_decode(mycat,
+                       encoding=_encodings['repo.content'], errors='replace')
+               mycat = mycat.strip()
+
+               # These are the same directories that would be used at build time.
+               builddir = os.path.join(
+                       mysettings["PORTAGE_TMPDIR"], "portage", mycat, mypkg)
+               catdir = os.path.dirname(builddir)
+               pkgloc = os.path.join(builddir, "image")
+               infloc = os.path.join(builddir, "build-info")
+               myebuild = os.path.join(
+                       infloc, os.path.basename(mytbz2)[:-4] + "ebuild")
+               portage.util.ensure_dirs(os.path.dirname(catdir),
+                       uid=portage_uid, gid=portage_gid, mode=0o70, mask=0)
+               portage.util.ensure_dirs(catdir,
+                       uid=portage_uid, gid=portage_gid, mode=0o70, mask=0)
+               try:
+                       shutil.rmtree(builddir)
+               except (IOError, OSError) as e:
+                       if e.errno != errno.ENOENT:
+                               raise
+                       del e
+               for mydir in (builddir, pkgloc, infloc):
+                       portage.util.ensure_dirs(mydir, uid=portage_uid,
+                               gid=portage_gid, mode=0o755)
+               writemsg_stdout(_(">>> Extracting info\n"))
+               xptbz2.unpackinfo(infloc)
+               mysettings.setcpv(mycat + "/" + mypkg, mydb=mydbapi)
+               # Store the md5sum in the vdb.
+               fp = open(_unicode_encode(os.path.join(infloc, 'BINPKGMD5')), 'w')
+               fp.write(str(portage.checksum.perform_md5(mytbz2))+"\n")
+               fp.close()
+
+               # This gives bashrc users an opportunity to do various things
+               # such as remove binary packages after they're installed.
+               mysettings["PORTAGE_BINPKG_FILE"] = mytbz2
+               mysettings.backup_changes("PORTAGE_BINPKG_FILE")
+               debug = mysettings.get("PORTAGE_DEBUG", "") == "1"
+
+               # Eventually we'd like to pass in the saved ebuild env here.
+               retval = portage.doebuild(myebuild, "setup", myroot, mysettings, debug=debug,
+                       tree="bintree", mydbapi=mydbapi, vartree=vartree)
+               if retval != os.EX_OK:
+                       writemsg(_("!!! Setup failed: %s\n") % retval, noiselevel=-1)
+                       return retval
+
+               writemsg_stdout(_(">>> Extracting %s\n") % mypkg)
+               retval = portage.process.spawn_bash(
+                       "bzip2 -dqc -- '%s' | tar -xp -C '%s' -f -" % (mytbz2, pkgloc),
+                       env=mysettings.environ())
+               if retval != os.EX_OK:
+                       writemsg(_("!!! Error Extracting '%s'\n") % mytbz2, noiselevel=-1)
+                       return retval
+               #portage.locks.unlockfile(tbz2_lock)
+               #tbz2_lock = None
+
+               mylink = portage.dblink(mycat, mypkg, myroot, mysettings, vartree=vartree,
+                       treetype="bintree", blockers=blockers)
+               retval = mylink.merge(pkgloc, infloc, myroot, myebuild, cleanup=0,
+                       mydbapi=mydbapi, prev_mtimes=prev_mtimes)
+               did_merge_phase = True
+               success = retval == os.EX_OK
+               return retval
+       finally:
+               mysettings.pop("PORTAGE_BINPKG_FILE", None)
+               if tbz2_lock:
+                       portage.locks.unlockfile(tbz2_lock)
+               if True:
+                       if not did_merge_phase:
+                               # The merge phase handles this already.  Callers don't know how
+                               # far this function got, so we have to call elog_process() here
+                               # so that it's only called once.
+                               from portage.elog import elog_process
+                               elog_process(mycat + "/" + mypkg, mysettings)
+                       try:
+                               if success:
+                                       shutil.rmtree(builddir)
+                       except (IOError, OSError) as e:
+                               if e.errno != errno.ENOENT:
+                                       raise
+                               del e