From 3d92e7d6573d7b03b6b72dbc8793a304c1e2023a Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Wed, 2 Feb 2011 01:45:57 +0100 Subject: [PATCH] [services] kernel-switcher: add opengl switcher, improve application output --- services/kernel-switcher | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/services/kernel-switcher b/services/kernel-switcher index a1f5f31cc..886c275a5 100755 --- a/services/kernel-switcher +++ b/services/kernel-switcher @@ -17,6 +17,7 @@ from entropy.exceptions import DependenciesNotRemovable from entropy.i18n import _ from entropy.client.interfaces import Client import entropy.dep +import entropy.tools # equo modules from text_query import print_package_info @@ -56,9 +57,29 @@ def _get_target_tag(etp_client, kernel_match): def _setup_kernel_symlink(target_tag): eselect_exec = "/usr/bin/eselect" - if os.access(eselect_exec, os.X_OK) and not etpUi['pretend']: + if os.access(eselect_exec, os.X_OK): subprocess.call((eselect_exec, "kernel", "set", target_tag)) +# removing and installing proprietary drivers might reset the selected +# OpenGL implementation + +def _get_opengl_impl(): + eselect_exec = "/usr/bin/eselect" + sts = 1 + out = "xorg-x11" + if os.access(eselect_exec, os.X_OK) and not etpUi['pretend']: + sts, xout = entropy.tools.getstatusoutput("%s opengl show" % ( + eselect_exec,)) + if sts == 0: + out = xout + return out + +def _set_opengl_impl(opengl): + eselect_exec = "/usr/bin/eselect" + if os.access(eselect_exec, os.X_OK): + args = (eselect_exec, "opengl", "set", opengl) + subprocess.call(args) + def _show_kernel_warnings(kernel_atom): print_info("%s %s" % (purple(kernel_atom), teal(_("has been installed.")))) print_warning("%s: %s" % (red(_("Attention")), @@ -124,12 +145,14 @@ def _switch_kernel(args): matches = [x for x in matches if x is not None] matches.append(kernel_match) + opengl = _get_opengl_impl() rc, other = install_packages( etp_client, atomsdata = matches, check_critical_updates = False ) - if rc == 0: + if (rc == 0) and (not etpUi['pretend']): + _set_opengl_impl(opengl) _setup_kernel_symlink(target_tag) _show_kernel_warnings(kernel_atom) return rc