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 / include / installation / misc.ycp < prev    next >
Text File  |  2006-11-29  |  6KB  |  200 lines

  1. /**
  2.  * File:
  3.  *      include/installation/misc.ycp
  4.  *
  5.  * Module:
  6.  *      System installation
  7.  *
  8.  * Summary:
  9.  *      Miscelaneous functions
  10.  *
  11.  * Authors:
  12.  *      Jiri Srain <jsrain@suse.cz>
  13.  *
  14.  * $Id: misc.ycp 34485 2006-11-20 14:27:26Z locilka $
  15.  *
  16.  */
  17.  
  18.  
  19.  
  20. {
  21.  
  22. textdomain "installation";
  23.  
  24. import "Installation";
  25. import "Mode";
  26. import "ProductControl";
  27. import "Label";
  28. import "FileUtils";
  29. import "Linuxrc";
  30.  
  31. /**
  32.  * Function appends blacklisted modules to the /etc/modprobe.d/blacklist
  33.  * file. 
  34.  *
  35.  * More information in bugzilla #221815
  36.  */
  37. void AdjustModprobeBlacklist () {
  38.     // check whether we need to run it
  39.     string brokenmodules = Linuxrc::InstallInf("BrokenModules");
  40.     if (brokenmodules == "" || brokenmodules == nil) {
  41.     y2milestone ("No BrokenModules in install.inf, skipping...");
  42.     return;
  43.     }
  44.  
  45.     // comma-separated list of modules
  46.     list <string> blacklisted_modules = splitstring (brokenmodules, ", ");
  47.  
  48.     // run before SCR switch
  49.     string blacklist_file = Installation::destdir + "/etc/modprobe.d/blacklist";
  50.  
  51.     // read the content
  52.     string content = "";
  53.     if (FileUtils::Exists (blacklist_file)) {
  54.     content = (string) SCR::Read (.target.string, blacklist_file);
  55.     if (content == nil) {
  56.         y2error ("Cannot read %1 file", blacklist_file);
  57.         content = "";
  58.     }
  59.     } else {
  60.     y2warning ("File %1 does not exist, installation will create new one", blacklist_file);
  61.     }
  62.  
  63.     // creating new entries with comment
  64.     string blacklist_file_added = "# Note: Entries added during installation/update (Bug 221815)\n";
  65.     foreach (string blacklisted_module, blacklisted_modules, {
  66.     blacklist_file_added = blacklist_file_added +
  67.         sformat ("blacklist %1\n", blacklisted_module);
  68.     });
  69.  
  70.     // newline if the file is not empty
  71.     content = content + (content != "" ? "\n\n" : "") + blacklist_file_added;
  72.  
  73.     y2milestone ("Blacklisting modules: %1 in %2", blacklisted_modules, blacklist_file);
  74.     if (! SCR::Write (.target.string, blacklist_file, content)) {
  75.     y2error ("Cannot write into %1 file", blacklist_file);
  76.     } else {
  77.     y2milestone ("Changes into file %1 were written successfully", blacklist_file);
  78.     }
  79. }
  80.  
  81. void InjectFile (string filename) {
  82.     y2milestone("InjectFile: <%1>", filename );
  83.     WFM::Execute (.local.bash, "/bin/cp " + filename + " " + Installation::destdir + filename);
  84.     return;
  85.  
  86.     // this just needs too much memory
  87.     //byteblock copy_buffer = WFM::Read (.local.byte, filename);
  88.     //return SCR::Write (.target.byte, filename, copy_buffer);
  89. }
  90.  
  91.  
  92. void InjectRenamedFile( string dir, string src_name, string target_name ) {
  93.     y2milestone("InjectRenamedFile: <%1/%2> -> <%3/%4/%5>",
  94.     dir, src_name,
  95.     Installation::destdir, dir, target_name );
  96.     WFM::Execute (.local.bash,
  97.     sformat( "/bin/cp %1/%2 %3/%4/%5",
  98.         dir, src_name,
  99.         Installation::destdir, dir, target_name ) );
  100.     return;
  101. }
  102.  
  103. void UpdateWizardSteps () {
  104.     string wizard_mode = Mode::test () ? "installation" : Mode::mode ();
  105.     y2milestone ("Switching Steps to %1 ", wizard_mode);
  106.  
  107.     list<map> stage_mode = [
  108.     $["stage": "initial" , "mode": wizard_mode ],
  109.     $["stage": "continue", "mode": wizard_mode ]
  110.     ];
  111.     y2milestone ("Updating wizard steps: %1", stage_mode);
  112.  
  113.     ProductControl::UpdateWizardSteps(stage_mode);
  114. }
  115.  
  116.  
  117.     // moved from clients/inst_doit.ycp
  118.     // to fix bug #219097
  119.  
  120.     /**
  121.      * Confirm installation or update.
  122.      * Returns 'true' if the user confirms, 'false' otherwise.
  123.      **/
  124.     boolean confirmInstallation()
  125.     {
  126.     // Heading for confirmation popup before the installation really starts
  127.     string heading = "<h3>" + _("Confirm Installation") + "</h3>";
  128.  
  129.     string body =
  130.     // Text for confirmation popup before the installation really starts 1/3
  131.         _("<p>All information required for the base installation is now complete.</p>")
  132.     // Text for confirmation popup before the installation really starts 2/3
  133.         + _("
  134. <p>If you continue now, partitions on your hard disk will be <b>formatted</b>
  135. (erasing any existing data in those partitions) 
  136. according to the installation settings in the previous dialogs.</p>")
  137.     // Text for confirmation popup before the installation really starts 3/3
  138.         + _("<p>Go back and check the settings if you are unsure.</p>")
  139.         ;
  140.  
  141.     string confirm_button_label = Label::InstallButton ();
  142.  
  143.     if ( Mode::update () )
  144.     {
  145.         // Heading for confirmation popup before the update really starts
  146.         heading = "<h3>" + _("Confirm Update") + "</h3>";
  147.  
  148.         body =
  149.         // Text for confirmation popup before the update really starts 1/3
  150.         _("<p>All information required to perform an update is now complete.</p>")
  151.         // Text for confirmation popup before the update really starts 2/3
  152.         + _("
  153. <p>If you continue now, data on your hard disk will be overwritten 
  154. according to the settings in the previous dialogs.</p>")
  155.         // Text for confirmation popup before the update really starts 3/3
  156.         + _("<p>Go back and check the settings if you are unsure.</p>")
  157.         ;
  158.  
  159.         // Label for the button that confirms startint the installation
  160.         confirm_button_label = _("Start &Update");
  161.     }
  162.  
  163.     string heading_bg_color = "#A9CEDD";
  164.  
  165.     map display_info = UI::GetDisplayInfo();
  166.     string text = display_info[ "RichTextSupportsTable" ]:false ?
  167.         sformat( "<table bgcolor=\"%1\"><tr><td>%2</td></tr></table>%3",
  168.              heading_bg_color, heading, body )
  169.         : ( heading + body );
  170.  
  171.  
  172.  
  173.     UI::OpenDialog(
  174.                `VBox(
  175.                  `VSpacing( 0.4 ),
  176.                  `HSpacing( 70 ),        // force width
  177.                  `HBox(
  178.                    `HSpacing( 0.7 ),
  179.                    `VSpacing( 18 ),    // force height
  180.                    `RichText( text ),
  181.                    `HSpacing( 0.7 )
  182.                    ),
  183.                  `HBox(
  184.                    `HStretch(),
  185.                    `PushButton(`id(`back), `opt(`default), Label::BackButton() ),
  186.                    `HStretch(),
  187.                    `PushButton(`id(`confirm), confirm_button_label ),
  188.                    `HStretch()
  189.                    )
  190.                  )
  191.                );
  192.  
  193.     symbol button = (symbol) UI::UserInput();
  194.     UI::CloseDialog();
  195.  
  196.     return ( button == `confirm );
  197.     }
  198.  
  199. } //end of include
  200.