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 / switch_scr_finish.ycp < prev    next >
Text File  |  2006-11-29  |  3KB  |  117 lines

  1. /**
  2.  * File:
  3.  *  switch_scr_finish.ycp
  4.  *
  5.  * Module:
  6.  *  Step of base installation finish
  7.  *
  8.  * Authors:
  9.  *  Jiri Srain <jsrain@suse.cz>
  10.  *
  11.  * $Id: switch_scr_finish.ycp 33233 2006-10-02 15:07:05Z locilka $
  12.  *
  13.  */
  14.  
  15. {
  16.  
  17. textdomain "installation";
  18.  
  19. import "Directory";
  20. import "Installation";
  21.  
  22. any ret = nil;
  23. string func = "";
  24. map param = $[];
  25.  
  26. /**
  27.  * SCR Switch failed. Reporting error, collecting data.
  28.  * bugzilla #201058
  29.  */
  30. void ErrorDuringSCRSwitch (string chroot_dir) {
  31.     // import the library once it is needed
  32.     import "Popup";
  33.  
  34.     y2error("Cannot switch to SCR '%1'", chroot_dir);
  35.     
  36.     // Ask users whether they want to debug the problem
  37.     if (Popup::YesNoHeadline (
  38.     // popup error headline
  39.     _("Installation Error"),
  40.     // popup question
  41.     _("An error occurred while switching to the installed system
  42. and no recovery is possible.
  43. Run the automatic debugger to find out why it has failed?")
  44.     )) {
  45.     y2milestone("User decided to debug the current problem");
  46.     
  47.     // include the file once it is needed
  48.     include "installation/scr_switch_debugger.ycp";
  49.     RunSCRSwitchDebugger(chroot_dir);
  50.     } else {
  51.     y2warning("User decided not to debug the current problem");
  52.     }
  53. }
  54.  
  55. /* Check arguments */
  56. if(size(WFM::Args()) > 0 && is(WFM::Args(0), string)) {
  57.     func = (string)WFM::Args(0);
  58.     if(size(WFM::Args()) > 1 && is(WFM::Args(1), map))
  59.     param = (map)WFM::Args(1);
  60. }
  61.  
  62. y2milestone ("starting switch_scr_finish");
  63. y2debug("func=%1", func);
  64. y2debug("param=%1", param);
  65.  
  66. if (func == "Info")
  67. {
  68.     return (any)$[
  69.     "steps" : 1,
  70.     // progress step title
  71.     "title" : _("Moving to installed system..."),
  72.     "when" : [ `installation, `update, `autoinst ],
  73.     ];
  74. }
  75. else if (func == "Write")
  76. {
  77.     // --------------------------------------------------------------
  78.     //   stop SCR
  79.     //   restart on destination
  80.  
  81.     y2milestone ("Stopping SCR");
  82.  
  83.     WFM::SCRClose (Installation::scr_handle);
  84.  
  85.  
  86.     // --------------------------------------------------------------
  87.  
  88.  
  89.     y2milestone ("Re-starting SCR on %1", Installation::destdir);
  90.     Installation::scr_handle = WFM::SCROpen ("chroot="+Installation::destdir+":scr", false);
  91.  
  92.     // bugzilla #201058
  93.     // WFM::SCROpen returns negative integer in case of failure
  94.     if (Installation::scr_handle < 0) {
  95.     ErrorDuringSCRSwitch (Installation::destdir);
  96.     return false;
  97.     }
  98.  
  99.     Installation::scr_destdir = "/";
  100.     WFM::SCRSetDefault (Installation::scr_handle);
  101.  
  102.     // re-init tmpdir from new SCR !
  103.     Directory::ResetTmpDir();
  104. }
  105. else
  106. {
  107.     y2error ("unknown function: %1", func);
  108.     ret = nil;
  109. }
  110.  
  111. y2debug("ret=%1", ret);
  112. y2milestone("switch_scr_finish finished");
  113. return ret;
  114.  
  115.  
  116. } /* EOF */
  117.