Move ExtractKernelVersion portage.util.ExtractKernelVersion. (trunk r15453)
authorZac Medico <zmedico@gentoo.org>
Tue, 2 Mar 2010 20:59:48 +0000 (20:59 -0000)
committerZac Medico <zmedico@gentoo.org>
Tue, 2 Mar 2010 20:59:48 +0000 (20:59 -0000)
svn path=/main/branches/2.1.7/; revision=15662

pym/portage/__init__.py
pym/portage/package/ebuild/doebuild.py
pym/portage/util/ExtractKernelVersion.py [new file with mode: 0644]

index 09f6af074a351657ff487d3aec0445b938ae6ee4..df81a446bc50c814163d02a9220e2185abe46e43 100644 (file)
@@ -121,6 +121,7 @@ try:
                        'writemsg_stdout,write_atomic',
                'portage.util.digraph:digraph',
                'portage.util.env_update:env_update',
+               'portage.util.ExtractKernelVersion:ExtractKernelVersion',
                'portage.util.listdir:cacheddir,listdir',
                'portage.versions',
                'portage.versions:best,catpkgsplit,catsplit,cpv_getkey,' + \
@@ -533,73 +534,6 @@ def abssymlink(symlink):
                mylink=mydir+"/"+mylink
        return os.path.normpath(mylink)
 
-def ExtractKernelVersion(base_dir):
-       """
-       Try to figure out what kernel version we are running
-       @param base_dir: Path to sources (usually /usr/src/linux)
-       @type base_dir: string
-       @rtype: tuple( version[string], error[string])
-       @returns:
-       1. tuple( version[string], error[string])
-       Either version or error is populated (but never both)
-
-       """
-       lines = []
-       pathname = os.path.join(base_dir, 'Makefile')
-       try:
-               f = codecs.open(_unicode_encode(pathname,
-                       encoding=_encodings['fs'], errors='strict'), mode='r',
-                       encoding=_encodings['content'], errors='replace')
-       except OSError as details:
-               return (None, str(details))
-       except IOError as details:
-               return (None, str(details))
-
-       try:
-               for i in range(4):
-                       lines.append(f.readline())
-       except OSError as details:
-               return (None, str(details))
-       except IOError as details:
-               return (None, str(details))
-
-       lines = [l.strip() for l in lines]
-
-       version = ''
-
-       #XXX: The following code relies on the ordering of vars within the Makefile
-       for line in lines:
-               # split on the '=' then remove annoying whitespace
-               items = line.split("=")
-               items = [i.strip() for i in items]
-               if items[0] == 'VERSION' or \
-                       items[0] == 'PATCHLEVEL':
-                       version += items[1]
-                       version += "."
-               elif items[0] == 'SUBLEVEL':
-                       version += items[1]
-               elif items[0] == 'EXTRAVERSION' and \
-                       items[-1] != items[0]:
-                       version += items[1]
-
-       # Grab a list of files named localversion* and sort them
-       localversions = os.listdir(base_dir)
-       for x in range(len(localversions)-1,-1,-1):
-               if localversions[x][:12] != "localversion":
-                       del localversions[x]
-       localversions.sort()
-
-       # Append the contents of each to the version string, stripping ALL whitespace
-       for lv in localversions:
-               version += "".join( " ".join( grabfile( base_dir+ "/" + lv ) ).split() )
-
-       # Check the .config for a CONFIG_LOCALVERSION and append that too, also stripping whitespace
-       kernelconfig = getconfig(base_dir+"/.config")
-       if kernelconfig and "CONFIG_LOCALVERSION" in kernelconfig:
-               version += "".join(kernelconfig["CONFIG_LOCALVERSION"].split())
-
-       return (version,None)
-
 _doebuild_manifest_exempt_depend = 0
 
 def digestgen(myarchives=None, mysettings=None,
index 3ac4581b96967cf34ed56538ac0c28f562cc4876..edeb5aaa61900c44c08bb7f8d5aed6aa8b43bdd9 100644 (file)
@@ -21,23 +21,34 @@ import time
 import portage
 portage.proxy.lazyimport.lazyimport(globals(),
        'portage.package.ebuild.config:check_config_instance',
+       'portage.util.ExtractKernelVersion:ExtractKernelVersion'
 )
 
-from portage import auxdbkeys, bsd_chflags, dep_check, digestcheck, digestgen, eapi_is_supported, ExtractKernelVersion, merge, os, selinux, StringIO, unmerge, _encodings, _parse_eapi_ebuild_head, _os_merge, _shell_quote, _split_ebuild_name_glep55, _unicode_decode, _unicode_encode
-from portage.const import EBUILD_SH_ENV_FILE, EBUILD_SH_BINARY, INVALID_ENV_FILE, MISC_SH_BINARY
-from portage.data import portage_gid, portage_uid, secpass, uid, userpriv_groups
+from portage import auxdbkeys, bsd_chflags, dep_check, digestcheck, \
+       digestgen, eapi_is_supported, merge, os, selinux, StringIO, \
+       unmerge, _encodings, _parse_eapi_ebuild_head, _os_merge, \
+       _shell_quote, _split_ebuild_name_glep55, _unicode_decode, _unicode_encode
+from portage.const import EBUILD_SH_ENV_FILE, EBUILD_SH_BINARY, \
+       INVALID_ENV_FILE, MISC_SH_BINARY
+from portage.data import portage_gid, portage_uid, secpass, \
+       uid, userpriv_groups
 from portage.dbapi.virtual import fakedbapi
-from portage.dep import Atom, paren_enclose, paren_normalize, paren_reduce, use_reduce
+from portage.dep import Atom, paren_enclose, paren_normalize, \
+       paren_reduce, use_reduce
 from portage.elog import elog_process
 from portage.elog.messages import eerror, eqawarn
-from portage.exception import DigestException, FileNotFound, IncorrectParameter, InvalidAtom, InvalidDependString, PermissionDenied, UnsupportedAPIException
+from portage.exception import DigestException, FileNotFound, \
+       IncorrectParameter, InvalidAtom, InvalidDependString, PermissionDenied, \
+       UnsupportedAPIException
 from portage.localization import _
 from portage.manifest import Manifest
 from portage.output import style_to_ansi_code
 from portage.package.ebuild.fetch import fetch
 from portage.package.ebuild.prepare_build_dirs import prepare_build_dirs
 from portage.package.ebuild._pty import _create_pty_or_pipe
-from portage.util import apply_recursive_permissions, apply_secpass_permissions, noiselimit, normalize_path, writemsg, writemsg_stdout, write_atomic
+from portage.util import apply_recursive_permissions, \
+       apply_secpass_permissions, noiselimit, normalize_path, \
+       writemsg, writemsg_stdout, write_atomic
 from portage.versions import _pkgsplit
 
 def doebuild_environment(myebuild, mydo, myroot, mysettings,
diff --git a/pym/portage/util/ExtractKernelVersion.py b/pym/portage/util/ExtractKernelVersion.py
new file mode 100644 (file)
index 0000000..9e6433b
--- /dev/null
@@ -0,0 +1,77 @@
+# Copyright 2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+__all__ = ['ExtractKernelVersion']
+
+import codecs
+
+from portage import os, _encodings, _unicode_encode
+from portage.util import getconfig, grabfile
+
+def ExtractKernelVersion(base_dir):
+       """
+       Try to figure out what kernel version we are running
+       @param base_dir: Path to sources (usually /usr/src/linux)
+       @type base_dir: string
+       @rtype: tuple( version[string], error[string])
+       @returns:
+       1. tuple( version[string], error[string])
+       Either version or error is populated (but never both)
+
+       """
+       lines = []
+       pathname = os.path.join(base_dir, 'Makefile')
+       try:
+               f = codecs.open(_unicode_encode(pathname,
+                       encoding=_encodings['fs'], errors='strict'), mode='r',
+                       encoding=_encodings['content'], errors='replace')
+       except OSError as details:
+               return (None, str(details))
+       except IOError as details:
+               return (None, str(details))
+
+       try:
+               for i in range(4):
+                       lines.append(f.readline())
+       except OSError as details:
+               return (None, str(details))
+       except IOError as details:
+               return (None, str(details))
+
+       lines = [l.strip() for l in lines]
+
+       version = ''
+
+       #XXX: The following code relies on the ordering of vars within the Makefile
+       for line in lines:
+               # split on the '=' then remove annoying whitespace
+               items = line.split("=")
+               items = [i.strip() for i in items]
+               if items[0] == 'VERSION' or \
+                       items[0] == 'PATCHLEVEL':
+                       version += items[1]
+                       version += "."
+               elif items[0] == 'SUBLEVEL':
+                       version += items[1]
+               elif items[0] == 'EXTRAVERSION' and \
+                       items[-1] != items[0]:
+                       version += items[1]
+
+       # Grab a list of files named localversion* and sort them
+       localversions = os.listdir(base_dir)
+       for x in range(len(localversions)-1,-1,-1):
+               if localversions[x][:12] != "localversion":
+                       del localversions[x]
+       localversions.sort()
+
+       # Append the contents of each to the version string, stripping ALL whitespace
+       for lv in localversions:
+               version += "".join( " ".join( grabfile( base_dir+ "/" + lv ) ).split() )
+
+       # Check the .config for a CONFIG_LOCALVERSION and append that too, also stripping whitespace
+       kernelconfig = getconfig(base_dir+"/.config")
+       if kernelconfig and "CONFIG_LOCALVERSION" in kernelconfig:
+               version += "".join(kernelconfig["CONFIG_LOCALVERSION"].split())
+
+       return (version,None)