home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / share / YaST2 / clients / inst_finish.ycp < prev    next >
Text File  |  2006-11-29  |  5KB  |  218 lines

  1. /**
  2.  * File:    clients/inst_finish.ycp
  3.  * Package:    installation
  4.  * Summary:    Finish installation
  5.  * Authors:    Klaus K├ñmpf <kkaempf@suse.de>
  6.  *        Arvin Schnell <arvin@suse.de>
  7.  *              Jiri Srain <jsrain@suse.de>
  8.  *
  9.  * $Id: inst_finish.ycp 32850 2006-09-13 09:14:23Z locilka $
  10.  *
  11.  * Writes:
  12.  * [target] /var/lib/YaST2/runme_at_boot    run yast2 after initial boot
  13.  * SCR::Write (.etc.shadow.root,
  14.  */
  15.  
  16. {
  17.     textdomain "installation";
  18.  
  19.     import "AddOnProduct";
  20.     import "Installation";
  21.     import "Linuxrc";
  22.     import "Misc";
  23.     import "Mode";
  24.     import "Stage";
  25.     import "Popup";
  26.     import "ProductControl";
  27.     import "Progress";
  28.     import "Report";
  29.     import "Wizard";
  30.  
  31.  
  32.  
  33. // Help text for last dialog of base installation
  34. string help_text = _("<p>
  35. Please wait while the base system is being installed.
  36. </p>");
  37.  
  38. list<map<string,any> > stages = [
  39.     $[
  40.     // progress stage
  41.     "label" : _("Copy files to installed system"),
  42.     "steps" : [
  43.         "autoinst_scripts1",
  44.         "copy_files",
  45.         "copy_systemfiles",
  46.         "switch_scr",
  47.     ],
  48.     ],
  49.     $[
  50.     // progress stage
  51.     "label" : _("Save configuration"),
  52.     "steps" : [
  53.         "ldconfig",
  54.         "save_config",
  55.         "runlevel",
  56.         "desktop",
  57.         "fonts",
  58.         "storage",
  59.         "iscsi-client",
  60.         "kernel",
  61.         "x11",
  62.         "proxy",
  63.         "pkg",
  64.         "driver_update1",
  65.         "yast_inf",
  66.     ],
  67.     ],
  68.     $[
  69.     // progress stage
  70.     "label" : _("Install boot manager"),
  71.     "steps" : [
  72.         "bootloader",
  73.     ],
  74.     ],
  75.     $[
  76.     // progress stage
  77.     "label" : _("Save installation settings"),
  78.     "steps" : [
  79.         "network",
  80.         "ssh_settings",
  81.         "save_hw_status",
  82.         "autoinst_scripts2",
  83.     ],
  84.     ],
  85.     $[
  86.     // progress stage
  87.     "label" : _("Prepare system for initial boot"),
  88.     "steps" : [
  89.         "vm",
  90.         "copy_logs",
  91.         "driver_update2",
  92.         "pre_umount",
  93.         "umount",
  94.     ],
  95.     ],
  96. ];
  97.  
  98. if (size (ProductControl::inst_finish) > 0)
  99. {
  100.     y2milestone ("Using inst_finish steps definition from control file");
  101.     stages = ProductControl::inst_finish;
  102. }
  103. else
  104. {
  105.     y2milestone ("inst_finish steps definition not found in control file");
  106. }
  107.  
  108. // merge steps from add-on products
  109. stages[0, "steps"] = merge (AddOnProduct::finish_steps_before_chroot, stages[0, "steps"]:[]);
  110. stages[1, "steps"] = merge (AddOnProduct::finish_steps_after_chroot, stages[1, "steps"]:[]);
  111. stages[3, "steps"] = merge (stages[3, "steps"]:[], AddOnProduct::finish_steps_before_umount);
  112.  
  113. symbol run_type = `installation;
  114. if (Mode::update ())
  115.     run_type = `update;
  116. else if (Mode::autoinst ())
  117.     run_type = `autoinst;
  118.  
  119. integer steps_count = 0;
  120.  
  121. stages = maplist (map<string,any> stage, stages, {
  122.     list<map> steps = maplist (string s, stage["steps"]:[], {
  123.     s = s + "_finish";
  124.     map info = (map)WFM::CallFunction (s, ["Info"]);
  125.     if (info == nil)
  126.     {
  127.         y2error ("Client %1 returned invalid data", s);
  128.         return nil;
  129.     }
  130.     if (info["when"]:nil != nil && ! contains (info["when"]:[], run_type))
  131.         return nil;
  132.     info["client"] = s;
  133.     steps_count = steps_count + info["steps"]:1;
  134.     return info;
  135.     });
  136.     stage["steps"] = filter (map s, steps, {
  137.     return s != nil;
  138.     });
  139.     return stage;
  140. });
  141.  
  142. stages = filter (map<string,any> s, stages, {
  143.     return size (s["steps"]:[]) > 0;
  144. });
  145.  
  146. list<string> stage_names = maplist (map<string,any> s, stages, {
  147.     return s["label"]:"";
  148. });
  149.  
  150. Progress::New(
  151.     // Headline for last dialog of base installation: Install LILO etc.
  152.     _("Finishing Basic Installation"),
  153.     "",    // Initial progress bar label - not empty (reserve space!)
  154.     steps_count,
  155.     stage_names,
  156.     [],
  157.     help_text);
  158.  
  159. Wizard::DisableBackButton ();
  160. Wizard::DisableNextButton ();
  161.  
  162. Wizard::SetTitleIcon ("yast-sysconfig");
  163.  
  164. boolean aborted = false;
  165.  
  166. foreach (map<string,any> stage, stages, {
  167.     Progress::NextStage ();
  168.     boolean first = true;
  169.     foreach (map step, stage["steps"]:[], {
  170.     integer scount = step["steps"]:1;
  171.     if (scount != 0)
  172.     {
  173.         if (first)
  174.         first = false;
  175.         else
  176.         Progress::NextStep ();
  177.     }
  178.     if (haskey (step, "title"))
  179.         Progress::Title (step["title"]:"");
  180.     WFM::CallFunction (step["client"]:"", ["Write"]);
  181.     if (UI::PollInput () == `abort && Popup::ConfirmAbort (`incomplete))
  182.     {
  183.         aborted = true;
  184.         break;
  185.     }
  186.     });
  187.     if (aborted)
  188.     break;
  189. });
  190.  
  191. if (aborted)
  192. {
  193.     y2milestone ("inst_finish aborted");
  194.     return `abort;
  195. }
  196.  
  197. Progress::Finish();
  198. Progress::Title (_("Finished."));
  199.  
  200. // --------------------------------------------------------------
  201. // Check if there is a message left to display
  202. // and display it, if necessary
  203.  
  204. // Do not call any SCR, it's already closed!
  205. if (size (Misc::boot_msg) > 0 && !Mode::autoinst ())
  206. {
  207.     if (Linuxrc::usessh ())
  208.     Report::DisplayMessages (true, 0);
  209.     else
  210.     Report::DisplayMessages (true, 10);
  211.     Report::Message (Misc::boot_msg);
  212.     Misc::boot_msg = "";
  213. }
  214.  
  215. return `next;
  216.  
  217. } // EOF
  218.