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 / modules / X11Version.ycp < prev    next >
Text File  |  2006-11-29  |  4KB  |  152 lines

  1. /**************
  2. FILE          : X11Version.ycp
  3. ***************
  4. PROJECT       : YaST2
  5.               :
  6. AUTHOR        : Marcus Sch├ñfer <ms@suse.de>
  7.               :
  8. BELONGS TO    : YaST2
  9.               : (X11 integration part using SaX2/ISaX)
  10.               :
  11. DESCRIPTION   : Provides a function to determine the _used_ XFree-version
  12.               : in a running system. Provide information about the
  13.               : package selection status which may told us:
  14.               : there is no X11 installed
  15.               :
  16.               :
  17. STATUS        : Development
  18.  *
  19.  * $Id: X11Version.ycp 22825 2005-03-29 09:31:42Z jsrain $
  20.  */
  21.  
  22. {
  23.  
  24. module "X11Version";
  25. textdomain "installation";
  26.  
  27. import "Directory";
  28. import "Installation";
  29. import "Package";
  30. import "Mode";
  31.  
  32. //=======================================
  33. // System Global Variables
  34. //---------------------------------------
  35. global string  version  = "";
  36. global string  versionLink = "";
  37.  
  38. //=======================================
  39. // Global Functions
  40. //---------------------------------------
  41. //---[ GetVersion ]----//
  42. global define string GetVersion() ``{
  43.     // ...
  44.     // Set the global variable version to:
  45.     // ""  -   No X11 found
  46.     // "3" -   XFree86 Version 3.x
  47.     // "4" -   XFree86 Version 4.x
  48.     // ---
  49.     // NOTE: This is highly dependent on the X11-infrastructure
  50.     // and must be accommodated to any changes there.
  51.     // ---
  52.     version = "";    // init
  53.  
  54.     // ...
  55.     // Take a look into the system....
  56.     // ask the libhd for the configuration stuff to this card
  57.     // if there is only one entry pointing to XFree86 version 3
  58.     // XFree86 3 has to be used for this card
  59.     // ---
  60.     list<map> gfxcards = (list<map>) SCR::Read(.probe.display);
  61.     /* more cards -> ver=4 */
  62.     if(size(gfxcards) > 1) {
  63.         version = "4";
  64.     }
  65.     /* one cards -> inspect drivers */
  66.     else if(size(gfxcards) == 1) {
  67.         foreach(map gfxcard, gfxcards, {
  68.         list<map> drivers = gfxcard["x11"]:[];
  69.         /* do we have any 4 driver? */
  70.         foreach(map driver, drivers, {
  71.             if(version == "") {
  72.             if(driver["version"]:"" == "4") version = "4";
  73.             }
  74.         });
  75.         /* do we have any 3 driver? */
  76.         foreach(map driver, drivers, {
  77.             if(version == "") {
  78.             if(driver["version"]:"" == "3") version = "3";
  79.             }
  80.         });
  81.         });
  82.     }
  83.     /* not sure about default */
  84.     if(version == "") version = "4";
  85.  
  86.     y2milestone( "xfree_version: <%1>", version );
  87.     return( version );
  88. }
  89.  
  90. //---[ X11Version ]----//
  91. global define void X11Version() ``{
  92.     // ...
  93.     // The module constructor. Sets some proprietary module data defined
  94.     // for public access This is done only once (and automatically)
  95.     // when the module is loaded for the first time
  96.     // ---
  97.     GetVersion();
  98.     return;
  99. }
  100.  
  101. //---[ GetX11Link ]----//
  102. global define string GetX11Link() ``{
  103.  
  104.     string ret = "4";
  105.  
  106.     integer count = 0;
  107.     string file = Installation::destdir + "/X"; // "/usr/X11R6/bin/X";
  108.  
  109.     while(count < 10) {
  110.     y2debug("Inspecting: %1 (%2)", file, count);
  111.     map stat = (map) SCR::Read(.target.lstat, file);
  112.     boolean islink = stat["islink"]:false;
  113.     y2debug("islink=%1 (%2)", islink, stat);
  114.     if(islink == nil || islink == false) break;
  115.     file = (string) SCR::Read(.target.symlink, file);
  116.     if(file == nil) break;
  117.     count = count + 1;
  118.     }
  119.  
  120.     if(file != nil && find(file, "XFree86") == -1) ret = "3";
  121.     y2milestone("X link: %1", ret);
  122.     return ret;
  123. }
  124.  
  125. //---[ have_x11 ]----//
  126. global define boolean have_x11 () ``{
  127.     // ...
  128.     // check if the required packages are installed
  129.     // ---
  130.     boolean ret = true;
  131.     list<string> pacs = ["xorg-x11", "yast2-x11","sax2"];
  132.         // Dont ask for installing packages, just return in autoinst mode
  133.         if ( Mode::autoinst ())
  134.         {
  135.             ret = Package::InstalledAll(pacs);
  136.         }
  137.         else {
  138.             if (!Package::InstallAllMsg (pacs, 
  139.                         // notification 1/2
  140.                         _("<p>To access the X11 system, the <b>%1</b> package must be installed.</p>") +
  141.                         // notification 2/2
  142.                         _("<p>Do you want to install it now?</p>"))
  143.                ) {
  144.                 ret = false;
  145.             }
  146.         }
  147.     y2milestone ("have_x11 = %1", ret);
  148.     return ret;
  149. }
  150.  
  151. }
  152.