[yast-commit] r40436 - in /trunk/update: package/yast2-update.changes src/clients/update_proposal.ycp
![](https://seccdn.libravatar.org/avatar/2e1a2d7374f0eeb790839676bdd1123a.jpg?s=120&d=mm&r=g)
Author: locilka Date: Thu Aug 23 15:30:11 2007 New Revision: 40436 URL: http://svn.opensuse.org/viewcvs/yast?rev=40436&view=rev Log: - Preselecting new kernel if recommended and installed kernels do not match. Removing other kernels but kernel-xen (#302419). - 2.15.21 Modified: trunk/update/package/yast2-update.changes trunk/update/src/clients/update_proposal.ycp Modified: trunk/update/package/yast2-update.changes URL: http://svn.opensuse.org/viewcvs/yast/trunk/update/package/yast2-update.changes?rev=40436&r1=40435&r2=40436&view=diff ============================================================================== --- trunk/update/package/yast2-update.changes (original) +++ trunk/update/package/yast2-update.changes Thu Aug 23 15:30:11 2007 @@ -1,4 +1,11 @@ ------------------------------------------------------------------- +Thu Aug 23 15:22:12 CEST 2007 - locilka@suse.cz + +- Preselecting new kernel if recommended and installed kernels do + not match. Removing other kernels but kernel-xen (#302419). +- 2.15.21 + +------------------------------------------------------------------- Thu Aug 9 16:20:58 CEST 2007 - locilka@suse.cz - Using cryptsetup instead of losetup, patch created by Thomas Fehr Modified: trunk/update/src/clients/update_proposal.ycp URL: http://svn.opensuse.org/viewcvs/yast/trunk/update/src/clients/update_proposal.ycp?rev=40436&r1=40435&r2=40436&view=diff ============================================================================== --- trunk/update/src/clients/update_proposal.ycp (original) +++ trunk/update/src/clients/update_proposal.ycp Thu Aug 23 15:30:11 2007 @@ -139,34 +139,60 @@ return ret; } + // see bug 302398 define void SelectKernelPackages () { list <list> provides = Pkg::PkgQueryProvides ("kernel"); + // e.g.: [["kernel-bigsmp", `CAND, `NONE], ["kernel-default", `CAND, `CAND], ["kernel-default", `BOTH, `INST]] y2milestone ("provides: %1", provides); + // these kernels would be installed list <list> kernels = filter (list l, provides, { return l[1]:`NONE == `BOTH || l[1]:`NONE == l[2]:`NONE; }); if (size (kernels) != 1) - y2error ("not exactly one package provides tag kernel"); + y2warning ("not exactly one package provides tag kernel"); string selected_kernel = kernels[0,0]:"none"; list<string> recom_kernel = Kernel::ComputePackages (); y2milestone ("Selected kernel: %1, recommended kernel: %2", selected_kernel, recom_kernel); - list<string> kernel_packs = Kernel::ComputePackages (); - boolean kernel_refresh_needed = false; - foreach (string p, kernel_packs, { - if (! Pkg::IsProvided (p)) - { - kernel_refresh_needed = true; - y2milestone ("Package %1 is not installed - forcing kernel update", p); - } - }); - if (kernel_refresh_needed) - { + + // recommended package is different to the selected one + // select the recommended one + if (recom_kernel[0]:nil != nil && recom_kernel[0]:nil != selected_kernel) { + // list of kernels to be installed + list <string> kernels_to_be_installed = (list <string>) maplist (list one_kernel, kernels, { + return one_kernel[0]:nil; + }); + kernels_to_be_installed = filter (string one_kernel, kernels_to_be_installed, { + return (one_kernel != nil && one_kernel != ""); + }); + + // remove old kernels + foreach (string one_kernel, kernels_to_be_installed, { + // exception + if (one_kernel == "kernel-xen") return; + // the recommended one + if (one_kernel == recom_kernel[0]:nil) return; + + list <string> packages_to_remove = Kernel::ComputePackagesForBase (one_kernel, false); + + if (packages_to_remove != nil && size (packages_to_remove) > 0) { + y2milestone ("Removing installed packages %1", packages_to_remove); + Pkg::DoRemove (packages_to_remove); + } + }); + + // compute recommended kernel packages + list<string> kernel_packs = Kernel::ComputePackages (); + + // checking all recommended packages foreach (string p, kernel_packs, { - Pkg::PkgInstall (p); + if (! Pkg::IsProvided (p)) { + y2milestone ("Package %1 is not installed - forcing kernel update", p); + Pkg::PkgInstall (p); + } }); } } -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org
participants (1)
-
locilka@svn.opensuse.org