[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[PATCH] Do a better job of explaining how much memory is required to install (#639056).



---
 anaconda                       |   33 +++++++++++++++++----------------
 loader/loader.c                |   10 ++++++----
 pyanaconda/storage/__init__.py |   13 +++++++++----
 3 files changed, 32 insertions(+), 24 deletions(-)

diff --git a/anaconda b/anaconda
index 89b791c..1e7de75 100755
--- a/anaconda
+++ b/anaconda
@@ -324,13 +324,14 @@ def gtk_warning(title, reason):
     dialog.destroy()
 
 def check_memory(anaconda, opts, display_mode=None):
-    reason_strict = _('You do not have enough RAM to install %s '
-                      'on this machine.\n' % product.productName)
-    reason_method = _('You do not have enough RAM to install %s '
-                      'on this machine using this install method.\n' %
-                      product.productName)
-    reason_graphical = _('You do not have enough RAM to use the graphical '
-                         'installer.')
+    reason_strict = _("%s requires %s MB of memory to install, but you only have "
+                      "%s MB on this machine.\n")
+    reason_method = _("%s requires %s MB of memory to install using this "
+                      "installation method, but you only have %s MB on this "
+                      "machine.\n")
+    reason_graphical = _("The %s graphical installer requires %s MB of memory, but "
+                         "you only have %s MB.")
+
     reboot_extra = _('\n'
                      'Press <return> to reboot your system.\n')
     livecd_title = _("Not enough RAM")
@@ -348,38 +349,38 @@ def check_memory(anaconda, opts, display_mode=None):
         extra_ram += isys.URL_INSTALL_EXTRA_RAM
         reason = reason_method
 
-    total_ram = isys.total_memory()
-    needed_ram = isys.MIN_RAM + extra_ram
+    total_ram = int(isys.total_memory() / 1024)
+    needed_ram = int((isys.MIN_RAM + extra_ram) / 1024)
 
     if needed_ram > total_ram:
         from snack import SnackScreen, ButtonChoiceWindow
         if opts.liveinst:
-            stdoutLog.warning(reason)
-            gtk_warning(livecd_title, reason)
+            stdoutLog.warning(reason % (product.productName, needed_ram, total_ram))
+            gtk_warning(livecd_title, reason % (product.productName, needed_ram, total_ram))
         else:
             reason += reboot_extra
             screen = SnackScreen()
             ButtonChoiceWindow(screen, _('Fatal Error'),
-                               reason,
+                               reason % (product.productName, needed_ram, total_ram),
                                buttons = (_("OK"),))
             screen.finish()
         sys.exit(1)
 
     # override display mode if machine cannot nicely run X
     if display_mode not in ('t', 'c') and not flags.usevnc:
-        needed_ram += isys.GUI_INSTALL_EXTRA_RAM
+        needed_ram += int(isys.GUI_INSTALL_EXTRA_RAM / 1024)
         reason = reason_graphical
 
         if needed_ram > total_ram:
             if opts.liveinst:
                 reason += livecd_extra
-                stdoutLog.warning(reason)
+                stdoutLog.warning(reason % (product.productName, needed_ram, total_ram))
                 title = livecd_title
-                gtk_warning(title, reason)
+                gtk_warning(title, reason % (product.productName, needed_ram, total_ram))
                 sys.exit(1)
             else:
                 reason += nolivecd_extra
-                stdoutLog.warning(reason)
+                stdoutLog.warning(reason % (product.productName, needed_ram, total_ram))
                 anaconda.displayMode = 't'
                 time.sleep(2)
 
diff --git a/loader/loader.c b/loader/loader.c
index b0c1cab..7758f2f 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -1182,20 +1182,22 @@ static void parseCmdLineFlags(struct loaderData_s * loaderData,
 
 /* make sure they have enough ram */
 static void checkForRam(int install_method) {
-    char *reason_none = _("You do not have enough RAM to install %s on this machine.");
-    char *reason_method = _("You do not have enough RAM to install %s on this machine using this install method.");
+    char *reason_none = _("%s requires %d MB of memory, to install, but you only have %d MB.");
+    char *reason_method = _("%s requires %d MB of memory to install using this installation "
+                            "method, but you only have %d MB on this machine.");
 
     char* reason = reason_none;
     int needed = MIN_RAM;
+    int installed = totalMemory();
 
     if (install_method == METHOD_URL) {
         needed += URL_INSTALL_EXTRA_RAM;
         reason = reason_method;
     }
-    
+
     if (totalMemory() < needed) {
         char *buf;
-        checked_asprintf(&buf, reason, getProductName());
+        checked_asprintf(&buf, reason, getProductName(), needed/1024, installed/1024);
 
         startNewt();
         newtWinMessage(_("Error"), _("OK"), buf);
diff --git a/pyanaconda/storage/__init__.py b/pyanaconda/storage/__init__.py
index c92b76d..cba443b 100644
--- a/pyanaconda/storage/__init__.py
+++ b/pyanaconda/storage/__init__.py
@@ -1033,11 +1033,16 @@ class Storage(object):
         errors.extend(self.anaconda.platform.checkBootRequest(boot))
 
         if not swaps:
-            if iutil.memInstalled() < isys.EARLY_SWAP_RAM:
+            from pyanaconda.storage.size import Size
+
+            installed = Size(spec="%s kb" % iutil.memInstalled())
+            required = Size(spec="%s kb" % isys.EARLY_SWAP_RAM)
+
+            if installed < required:
                 errors.append(_("You have not specified a swap partition.  "
-                                "Due to the amount of memory present, a "
-                                "swap partition is required to complete "
-                                "installation."))
+                                "%s MB of memory is required to continue installation "
+                                "without a swap partition, but you only have %s MB.")
+                              % (int(required.convertTo(spec="MB")), int(installed.convertTo(spec="MB"))))
             else:
                 warnings.append(_("You have not specified a swap partition.  "
                                   "Although not strictly required in all cases, "
-- 
1.7.1.1


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]