[yast-devel] Re: [yast-commit] r64343 - in /trunk/wagon: ./ VERSION package/yast2-wagon.changes src/clients/wagon_update_proposal.ycp src/config/cd_update.desktop src/modules/Wagon.ycp yast2-wagon.spec.in
On Tue, Jun 14, 2011 at 12:00:23PM -0000, lslezak@svn2.opensuse.org wrote:
Author: lslezak Date: Tue Jun 14 14:00:22 2011 New Revision: 64343
URL: http://svn.opensuse.org/viewcvs/yast?rev=64343&view=rev Log: - implemented download in advance mode support (fate#308951) - 2.21.0
Modified: trunk/wagon/ (props changed) trunk/wagon/VERSION trunk/wagon/package/yast2-wagon.changes trunk/wagon/src/clients/wagon_update_proposal.ycp trunk/wagon/src/config/cd_update.desktop (props changed) trunk/wagon/src/modules/Wagon.ycp (contents, props changed) trunk/wagon/yast2-wagon.spec.in
Modified: trunk/wagon/VERSION URL: http://svn.opensuse.org/viewcvs/yast/trunk/wagon/VERSION?rev=64343&r1=64342&r2=64343&view=diff ============================================================================== --- trunk/wagon/VERSION (original) +++ trunk/wagon/VERSION Tue Jun 14 14:00:22 2011 @@ -1 +1 @@ -2.20.3 +2.21.0
Modified: trunk/wagon/package/yast2-wagon.changes URL: http://svn.opensuse.org/viewcvs/yast/trunk/wagon/package/yast2-wagon.changes?rev=64343&r1=64342&r2=64343&view=diff ============================================================================== --- trunk/wagon/package/yast2-wagon.changes (original) +++ trunk/wagon/package/yast2-wagon.changes Tue Jun 14 14:00:22 2011 @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Tue Jun 14 08:42:02 UTC 2011 - lslezak@suse.cz + +- implemented download in advance mode support (fate#308951) +- 2.21.0 + +------------------------------------------------------------------- Fri Feb 18 14:22:27 CET 2011 - locilka@suse.cz
- yast2-wagon control files have been moved to separate packages
Modified: trunk/wagon/src/clients/wagon_update_proposal.ycp URL: http://svn.opensuse.org/viewcvs/yast/trunk/wagon/src/clients/wagon_update_proposal.ycp?rev=64343&r1=64342&r2=64343&view=diff ============================================================================== --- trunk/wagon/src/clients/wagon_update_proposal.ycp (original) +++ trunk/wagon/src/clients/wagon_update_proposal.ycp Tue Jun 14 14:00:22 2011 @@ -20,6 +20,7 @@
import "Wagon"; import "Report"; + import "PackageInstallation";
string func = (string) WFM::Args(0); map param = (map) WFM::Args(1); @@ -40,11 +41,23 @@ }
Wagon::ProposeDUP(); + Wagon::ProposeDownloadMode();
ret = Wagon::ProposalSummary();
} else if (func == "AskUser") { - Report::Message (_("There is nothing to set.")); + string chosen_id = param["chosen_id"]:""; + + // toggle the download mode status + if (chosen_id == Wagon::GetDownloadModeLink()) + { + PackageInstallation::SetDownloadInAdvance(!PackageInstallation::DownloadInAdvance()); + } + else + { + Report::Message (_("There is nothing to set.")); + } + ret = $[ "workflow_sequence" : `next ];
} else if (func == "Description") {
Modified: trunk/wagon/src/modules/Wagon.ycp URL: http://svn.opensuse.org/viewcvs/yast/trunk/wagon/src/modules/Wagon.ycp?rev=64343&r1=64342&r2=64343&view=diff ============================================================================== --- trunk/wagon/src/modules/Wagon.ycp (original) +++ trunk/wagon/src/modules/Wagon.ycp Tue Jun 14 14:00:22 2011 @@ -31,6 +31,8 @@ import "Update"; import "FileUtils"; import "String"; + import "Packages"; + import "PackageInstallation";
boolean running_by_applet = false;
@@ -75,6 +77,13 @@ return update_workflow_type; }
+ const string download_mode_link = "wagon-download_in_advance"; + + global define string GetDownloadModeLink() + { + return download_mode_link; + } + string migration_method = nil;
global string migration_method_file = sformat ("%1/wagon_migration_method", Directory::vardir); @@ -379,6 +388,68 @@ return true; }
+ string FindMountPoint(string dir, list<string> dirs) + { + while (dir != nil && dir != "" && !contains(dirs, dir)) + { + // strip the last path component and try it again + list<string> comps = splitstring(dir, "/"); + comps = remove(comps, size(comps) - 1); + dir = mergestring(comps, "/"); + } + + return dir; + }
^ I *think* that this function fails if it should return "/", returning "" instead. Unit tests? A descriptive comment for the function, mentioning the corner cases?
+ + map<string, any> CheckDownloadSpace() + { + map<string, list> du = Pkg::TargetGetDU(); + list<string> mounts = maplist(string dir, list info, du, {return dir;}); + + map<string,any> zconfig = Pkg::ZConfig(); + string pkg_path = zconfig["repo_packages_path"]:""; + + string packages_mount = FindMountPoint(pkg_path, mounts); + y2milestone("Packages will we downloaded to mountpoint %1", packages_mount); + + // download size in bytes + integer download_size = Packages::CountSizeToBeDownloaded(); + y2milestone("Size of packages to download: %1MB", download_size >> 20); + + // du contains maps: $[ "dir" : [ total, used, pkgusage, readonly ], .... ] + integer after_install = du[packages_mount, 2]:0; + integer total = du[packages_mount, 0]:0; + + symbol result = `ok; + string message = ""; + + if (after_install + download_size < total) + { + result = `error; + message = "Not enough free space";
_() missing?
+ y2error("Not enough free space for download in advance upgrade"); + } + else if (after_install + download_size < total - 100<<20) + { + result = `warning; + message = "Not enough free space";
_() ?
+ y2error("Not enough free space for download in advance upgrade");
good luck with distinguishing the two situations in y2log some months later ;-)
+ } + + return $[ "result" : result, "message" : message ]; + } + + global void ProposeDownloadMode() + { + if (PackageInstallation::DownloadInAdvance() == nil) + { + map<string, any> dwspace = CheckDownloadSpace(); + + PackageInstallation::SetDownloadInAdvance(dwspace["result"]:nil == `ok); + y2milestone("Proposed download in advance mode: %1", PackageInstallation::DownloadInAdvance()); + } + } + global map <string,any> MinimizeProductMap (map <string,any> product) { if (haskey (product, "license")) product["license"] = "..."; if (haskey (product, "description")) product["description"] = "..."; @@ -510,9 +581,14 @@
ret = "<ul>\n" + ret + "</ul>\n";
+ ret = ret + "<ul><li>\n" + _("Download all packages before upgrade: ") + + sformat("<a href=\"%1\">%2</a>", download_mode_link, (PackageInstallation::DownloadInAdvance() ? _("Enabled") : _("Disabled"))) + + "</li></ul>\n"; + map <string, any> summary = $[ "preformatted_proposal" : ret, - // help text + "links" : [ download_mode_link ], + // help text, TODO FIXME: replace the inner <p> by <b>
WTF? Is this a broken text unfixable because it is translated already? OK, but this is the trunk.
"help" : _("<p>To change the update settings, go to <p>Packages Proposal</p> section.</p>"), ];
Modified: trunk/wagon/yast2-wagon.spec.in URL: http://svn.opensuse.org/viewcvs/yast/trunk/wagon/yast2-wagon.spec.in?rev=64343&r1=64342&r2=64343&view=diff ============================================================================== --- trunk/wagon/yast2-wagon.spec.in (original) +++ trunk/wagon/yast2-wagon.spec.in Tue Jun 14 14:00:22 2011 @@ -10,7 +10,8 @@ Requires: yast2-pkg-bindings >= 2.19.1
# Called in proposal and in code -Requires: yast2-packager yast2-add-on +Requires: yast2-packager >= 2.21.2 +Requires: yast2-add-on
# Counting packages directly in packages proposal (BNC #573482) Requires: yast2-update >= 2.18.7
-- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org
-- Martin Vidner, YaST developer http://en.opensuse.org/User:Mvidner Kuracke oddeleni v restauraci je jako fekalni oddeleni v bazenu
participants (1)
-
Martin Vidner