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_autoinit.ycp < prev    next >
Text File  |  2006-11-29  |  6KB  |  211 lines

  1. /**
  2.  * File:    clients/inst_autoinit.ycp
  3.  * Package:    Auto-installation
  4.  * Summary:    Parses XML Profile for automatic installation
  5.  * Authors:    Anas Nashif <nashif@suse.de>
  6.  *
  7.  * $Id: inst_autoinit.ycp 27824 2006-02-10 12:50:05Z ug $
  8.  *
  9.  */
  10.  
  11. {
  12.  
  13.     textdomain "autoinst";
  14.  
  15.     import "Installation";
  16.     import "AutoInstall";
  17.     import "AutoinstConfig";
  18.     import "ProfileLocation";
  19.     import "AutoInstallRules";
  20.     import "Progress";
  21.     import "Report";
  22.     import "Language";
  23.     import "Console";
  24.     import "Profile";
  25.     import "Arch";
  26.     import "Call";
  27.  
  28.     import "Popup";
  29.  
  30.     include "autoinstall/autoinst_dialogs.ycp";
  31.     define symbol processProfile() {
  32.         Progress::NextStage();
  33.         // Initialize Rules
  34.         Progress::Title(AutoinstConfig::message);
  35.         AutoInstallRules::Init();
  36.         boolean ret = false;
  37.         Progress::NextStep();
  38.         Progress::Title(_("Processing Profiles and Rules"));
  39.         while (true)
  40.         {
  41.             boolean r = ProfileLocation::Process();
  42.             if (r)
  43.             {
  44.                 break;
  45.             }
  46.             else {
  47.                 string newURI = ProfileSourceDialog(AutoinstConfig::OriginalURI);
  48.                 if ( newURI == "")
  49.                 {
  50.                     return `abort;
  51.                 }
  52.                 else
  53.                 {
  54.                     AutoinstConfig::ParseCmdLine(newURI);
  55.                     AutoinstConfig::SetProtocolMessage();
  56.                     continue;
  57.                 }
  58.             }
  59.         }
  60.  
  61.         /*
  62.         if (!ProfileLocation::Process())
  63.         {
  64.     y2error("Aborting...");
  65.     return `abort;
  66.         }
  67.         */
  68.  
  69.         sleep(1000);
  70.  
  71.  
  72.         if(UI::PollInput() == `abort)
  73.             if (Popup::ConfirmAbort (`painless))
  74.                 return `abort;
  75.  
  76.         Progress::NextStage();
  77.  
  78.         //
  79.         // Set reporting behaviour to default, changed later if required
  80.         //
  81.         Report::LogMessages(true);
  82.         Report::LogErrors(true);
  83.         Report::LogWarnings(true);
  84.  
  85.         if(UI::PollInput() == `abort)
  86.             if (Popup::ConfirmAbort (`painless))
  87.                 return `abort;
  88.  
  89.         Progress::NextStage();
  90.         Progress::Title( _("Parsing control file"));
  91.         if (! Profile::ReadXML( AutoinstConfig::xml_tmpfile ) || Profile::current == $[]  || Profile::current == nil)
  92.         {
  93.     Popup::Error(_("Error while parsing the control file.
  94. Check the log files for more details or fix the
  95. control file and try again.
  96. "));
  97.         return `abort;
  98.         }
  99.  
  100.         y2debug ("Autoinstall control file %1",  Profile::current );
  101.  
  102.  
  103.         Progress::NextStage();
  104.         Progress::Title(_("Initial Configuration"));
  105.         Report::Import(Profile::current["report"]:$[]);
  106.  
  107.         //
  108.         // Copy the control file for easy access by user to  a pre-defined
  109.         // directory
  110.         //
  111.         SCR::Execute(.target.bash, sformat("cp %1 %2/autoinst.xml",  AutoinstConfig::xml_tmpfile, AutoinstConfig::profile_dir));
  112.         return `ok;
  113.     }
  114.  
  115.     Console::Init ();
  116.  
  117.     string help_text = _("<p>
  118. Please wait while the system is prepared for autoinstallation.</p>
  119. ");
  120.     list<string> progress_stages =
  121.     [
  122.      _("Probe hardware"),
  123.      _("Retrieve & Read Control File"),
  124.      _("Process Profiles and Rules"),
  125.      _("Parse control file"),
  126.      _("Set up language")
  127.      ];
  128.     boolean profileFetched = false;
  129.  
  130.     Progress::New(
  131.           _("Preparing System for Automatic Installation"),
  132.           "",     // progress_title
  133.           7 ,    // progress bar length
  134.           progress_stages,
  135.           [],
  136.           help_text );
  137.     Progress::NextStage();
  138.     Progress::Title(_("Preprobing stage"));
  139.     y2milestone("pre probing");
  140.  
  141.     if( Arch::s390 () && AutoinstConfig::remoteProfile == true ) {
  142.         y2milestone("arch=s390 and remote_profile=true");
  143.         symbol ret = processProfile();
  144.         if( ret != `ok ) {
  145.             return ret;
  146.         }
  147.         y2milestone("processProfile=ok");
  148.         profileFetched = true;
  149.  
  150.         // FIXME: the hardcoded stuff should be in the control.xml later
  151.         if( haskey(Profile::current, "dasd") ) {
  152.             y2milestone("dasd found");
  153.             Call::Function("dasd_auto", ["Import", Profile::current["dasd"]:$[] ]);
  154.         }
  155.         if( haskey(Profile::current, "zfcp") ) {
  156.             y2milestone("zfcp found");
  157.             Call::Function("zfcp_auto", ["Import", Profile::current["zfcp"]:$[] ]);
  158.         }
  159.     }
  160.  
  161.     Progress::Title(_("Probing hardware..."));
  162.     WFM::CallFunction("inst_startup", [] );
  163.  
  164.     if( ! profileFetched ) {
  165.         symbol ret = processProfile();
  166.         if( ret != `ok ) {
  167.             return ret;
  168.         }
  169.     }
  170.  
  171.     if(UI::PollInput() == `abort)
  172.         if (Popup::ConfirmAbort (`painless))
  173.             return `abort;
  174.  
  175.     // AutoInstall::ProcessSpecialResources();
  176.  
  177.     boolean use_utf8 = true;        // utf8 is default
  178.  
  179.     map displayinfo = UI::GetDisplayInfo();
  180.     if ( ! displayinfo["HasFullUtf8Support"]:true )
  181.     {
  182.     use_utf8 = false;        // fallback to ascii
  183.     }
  184.  
  185.  
  186.     //
  187.     // Set it in the Language module.
  188.     //
  189.     Progress::NextStep();
  190.     Progress::Title(_("Configuring language..."));
  191.     Language::Import( Profile::current["language"]:$[] );
  192.  
  193.     //
  194.     // Set Console font
  195.     //
  196.     Installation::encoding = Console::SelectFont( Language::language );
  197.  
  198.     if (displayinfo["HasFullUtf8Support"]:true)
  199.     {
  200.         Installation::encoding = "UTF-8";
  201.     }
  202.  
  203.     UI::SetLanguage (Language::language, Installation::encoding);
  204.     WFM::SetLanguage (Language::language, "UTF-8");
  205.  
  206.     sleep(1000);
  207.     Progress::Finish();
  208.  
  209.     return `next;
  210. }
  211.