Author: locilka Date: Thu Oct 25 14:03:32 2007 New Revision: 41566 URL: http://svn.opensuse.org/viewcvs/yast?rev=41566&view=rev Log: - Never list duplicate entries in "upgrade based on products" in upgrade proposal (#331560). Will be fixed in yast2-update-2.16.0 Modified: trunk/update/package/yast2-update.changes trunk/update/src/clients/update_proposal.ycp trunk/update/src/modules/RootPart.ycp Modified: trunk/update/package/yast2-update.changes URL: http://svn.opensuse.org/viewcvs/yast/trunk/update/package/yast2-update.changes?rev=41566&r1=41565&r2=41566&view=diff ============================================================================== --- trunk/update/package/yast2-update.changes (original) +++ trunk/update/package/yast2-update.changes Thu Oct 25 14:03:32 2007 @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Thu Oct 25 14:00:51 CEST 2007 - locilka@suse.cz + +- Never list duplicate entries in "upgrade based on products" in + upgrade proposal (#331560). + +------------------------------------------------------------------- Tue Aug 28 12:35:29 CEST 2007 - locilka@suse.cz - Update proposal doesn't use recommended Kernel if the package is Modified: trunk/update/src/clients/update_proposal.ycp URL: http://svn.opensuse.org/viewcvs/yast/trunk/update/src/clients/update_proposal.ycp?rev=41566&r1=41565&r2=41566&view=diff ============================================================================== --- trunk/update/src/clients/update_proposal.ycp (original) +++ trunk/update/src/clients/update_proposal.ycp Thu Oct 25 14:03:32 2007 @@ -494,10 +494,20 @@ string summary_text = ""; list <string> products = Update::SelectedProducts (); + list <string> already_printed = []; + if (products != nil) { foreach (string one_product, products, { + // never print duplicates, bugzilla #331560 + // 'toset' could be used but we want to keep sorting + if (contains (already_printed, one_product)) { + return; + } else { + already_printed = add (already_printed, one_product); + } + // TRANSLATORS: proposal summary item, %1 is a product name - summary_text = summary_text + "<li>" + sformat (_("Update to %1"), one_product) + "</li>\n"; + summary_text = summary_text + "<li><b>" + sformat (_("Update to %1"), one_product) + "</b></li>\n"; }); } Modified: trunk/update/src/modules/RootPart.ycp URL: http://svn.opensuse.org/viewcvs/yast/trunk/update/src/modules/RootPart.ycp?rev=41566&r1=41565&r2=41566&view=diff ============================================================================== --- trunk/update/src/modules/RootPart.ycp (original) +++ trunk/update/src/modules/RootPart.ycp Thu Oct 25 14:03:32 2007 @@ -571,7 +571,7 @@ * @param mountpoint string a mount point to find * @return string the found partition */ -define string FindPartitionInFstab (list<map> fstab, string mountpoint) { +define string FindPartitionInFstab (list <map> & fstab, string mountpoint) { if (substring (mountpoint, size (mountpoint) - 1, 1) == "/") mountpoint = substring (mountpoint, 0, size (mountpoint) - 1); @@ -609,7 +609,7 @@ if (cmd["exit"]:nil != nil) { list <string> files = splitstring (cmd["stdout"]:"", "\n"); integer files_count = size (files); - if (files_count == nil || files_count <= 3) { + if (files_count == nil || files_count <= 2) { y2error ("There are only %1 files in /var/lib/hardware/, translation needn't work!", files_count); } else { y2milestone ("There are %1 files in /var/lib/hardware/", files_count); @@ -726,10 +726,19 @@ } } + boolean FstabHasSeparateVar (list <map> & fstab) { + string var_device_fstab = FindPartitionInFstab (fstab, "/var"); + y2milestone ("/var partition is %1", var_device_fstab); + + return (var_device_fstab != nil); + } + + define string MountVarIfRequired (list <map> fstab, string root_device_current); + /** * */ - define boolean read_fstab_and_cryptotab (list <map>& fstab, list <map>& crtab) + define boolean read_fstab_and_cryptotab (list <map>& fstab, list <map>& crtab, string root_device_current) { integer default_scr = WFM::SCRGetDefault (); integer new_scr = nil; @@ -748,6 +757,15 @@ Update::GetProductName(); + boolean fstab_has_separate_var = FstabHasSeparateVar (fstab); + // mount /var + if (fstab_has_separate_var) { + y2warning ("Separate /var partition!"); + MountVarIfRequired (fstab, root_device_current); + } else { + y2milestone ("No separate /var partition found"); + } + y2milestone ("fstab: %1", fstab); fstab = TranslateFsOrCryptoTab (fstab, "spec", "spec_old"); y2milestone ("fstab: (translated) %1", fstab); @@ -756,6 +774,11 @@ crtab = TranslateFsOrCryptoTab (crtab, "file", "file_old"); y2milestone ("crtab: (translated) %1", crtab); + // umount /var + if (fstab_has_separate_var) { + SCR::Execute (.target.umount, Installation::destdir + "/var"); + } + return true; } @@ -1089,7 +1112,7 @@ string err_message = nil; if (mount_err != nil) { - y2error ("failed to mount /var"); + y2error (-1, "failed to mount /var"); err_message = sformat ( // error message _("The /var partition %1 could not be mounted.\n"), @@ -1107,8 +1130,12 @@ define string MountVarIfRequired (list <map> fstab, string root_device_current) { string var_device_fstab = FindPartitionInFstab (fstab, "/var"); - if (var_device_fstab == nil) + + // No need to mount "/var", it's not separate == already mounted with "/" + if (var_device_fstab == nil) { + y2milestone ("Not a separate /var..."); return nil; + } if (!Storage::DeviceRealDisk (var_device_fstab)) return MountVarPartition (var_device_fstab); @@ -1185,7 +1212,7 @@ // typing passwords for encrypted partitions Keyboard::CheckKeyboardDuringUpdate (Installation::destdir); - read_fstab_and_cryptotab (fstab, crtab); + read_fstab_and_cryptotab (fstab, crtab, root_device_current); if (size (fstab) == 0) { @@ -1365,7 +1392,7 @@ list <map> fstab = []; list <map> crtab = []; - read_fstab_and_cryptotab (fstab, crtab); + read_fstab_and_cryptotab (fstab, crtab, p_dev); fstab = filter (map p, fstab, ``(p["file"]:""=="/")); -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org