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 / Product.ycp < prev    next >
Text File  |  2006-11-29  |  5KB  |  185 lines

  1. /**
  2.  * File:    modules/Product.ycp
  3.  * Package:    yast2
  4.  * Summary:    Product data
  5.  * Authors:    Klaus Kaempf <kkaempf@suse.de>
  6.  *
  7.  * $Id: Product.ycp 34204 2006-11-09 12:32:32Z locilka $
  8.  */
  9.  
  10. {
  11.     module "Product";
  12.  
  13.     import "Mode";
  14.     import "Stage";
  15.  
  16.     /**
  17.      * General product name and version
  18.      */
  19.     global string name        = "";            // "SuSE Linux 8.1"
  20.     global string short_name    = "";            // "SuSE Linux"
  21.     global string version    = "";            // "8.1"
  22.     global string vendor    = "";            // "SuSE Linux AG"
  23.  
  24.     /**
  25.      * Distribution: Personal, Professional, etc.
  26.      */
  27.     global string dist        = "";
  28.     global string distproduct    = "";            // "SuSE-Linux-Professional-INT-i386"
  29.     global string distversion    = "";            // "8.1-0"
  30.  
  31.     /**
  32.      * base product
  33.      */
  34.     global string baseproduct    = "";            // "UnitedLinux"
  35.     global string baseversion    = "";            // "1.0"
  36.  
  37.     /**
  38.      * url of release notes (downloaded during internet test)
  39.      */
  40.     global string relnotesurl    = "";
  41.     
  42.     /**
  43.      * list of all urls of release notes (downloaded during internet test)
  44.      * bugzilla #160563
  45.      */
  46.     global list <string> relnotesurl_all = [];
  47.  
  48.     /**
  49.      * map relnotes url to product name
  50.      */
  51.     global map <string, string> product_of_relnotes = $[];
  52.  
  53.     /**
  54.      *  Run YOU during the Internet connection test.
  55.      */
  56.     global boolean run_you    = true;
  57.  
  58.     /**
  59.      * list of flags from content file
  60.      */
  61.     global list flags        = [];
  62.  
  63.     /**
  64.      * list of patterns from content file
  65.      */
  66.     global list<string> patterns    = [];
  67.  
  68.     /**
  69.      * Short label for bootloader entry
  70.      */
  71.     global string shortlabel    = "";
  72.  
  73. global list<map<string,any> > FindBaseProducts() {
  74.     y2milestone ("Looking for base products");
  75.     list<map<string,any> > products = (list<map<string,any> >)
  76.     Pkg::TargetProducts ();
  77.  
  78.     y2milestone ("All found products: %1", products);
  79.     products = filter (map<string,any> p, products, {
  80.     // bug 165314, relnotes_url needn't be defined (or empty string)
  81.     if (p["relnotes_url"]:"" != "") {
  82.         string rn_url = (string) p["relnotes_url"]:"";
  83.         relnotesurl_all = add (relnotesurl_all, rn_url);
  84.         // bug 180581, relnotes should be identified by name
  85.         product_of_relnotes[rn_url] = p["display_name"]:"";
  86.     }
  87.     return p["category"]:"" == "base";
  88.     });
  89.  
  90.     y2milestone ("Found base products: %1", products);
  91.     if (size (products) == 0)
  92.     y2error ("No base product found");
  93.     else if (size (products) > 1)
  94.     y2warning ("More than one base product found");
  95.     return products;
  96. }
  97.  
  98.  
  99.  
  100.  
  101.     // -----------------------------------------------
  102.     /**
  103.      * Constructor
  104.      */
  105.     global define void Product () ``{
  106.  
  107.     if (Stage::initial ())
  108.     {
  109.         // it should use the same mechanism as running system. But it would
  110.         // mean to initialize package manager from constructor, which is
  111.         // not reasonable
  112.         name        = (string) SCR::Read(.content.LABEL);
  113.         short_name        = (string) SCR::Read(.content.SHORTLABEL);
  114.         if (short_name == nil)
  115.         short_name = name;
  116.         version        = (string) SCR::Read(.content.VERSION);
  117.         vendor        = (string) SCR::Read(.content.VENDOR);
  118.  
  119.         distproduct        = (string) SCR::Read(.content.DISTPRODUCT);
  120.         distversion        = (string) SCR::Read(.content.DISTVERSION);
  121.  
  122.         baseproduct        = (string) SCR::Read(.content.BASEPRODUCT);
  123.         if (baseproduct == "") baseproduct = name;
  124.         baseversion        = (string) SCR::Read(.content.BASEVERSION);
  125.  
  126.         relnotesurl        = (string) SCR::Read(.content.RELNOTESURL);
  127.         shortlabel        = (string) SCR::Read(.content.SHORTLABEL);
  128.  
  129.         any tmp1 = SCR::Read (.content.FLAGS);
  130.         if (tmp1 != nil)
  131.         flags        = splitstring ((string) tmp1, " ");
  132.         tmp1 = SCR::Read (.content.PATTERNS);
  133.         if (tmp1 != nil)
  134.         patterns    = splitstring ((string) tmp1, " ");
  135.  
  136.         y2milestone("***PATTERNS: %1", patterns );
  137.     }
  138.     else if (!Mode::config ())
  139.     {
  140.         Pkg::TargetInitialize ("/");
  141. //        list all_products = Pkg::TargetProducts();        // get all products
  142.  
  143. //        map last_product = all_products[0]:$[];        // get last installed product
  144.  
  145. //        name        = last_product["name"]:"";
  146. //        version        = last_product["version"]:"";
  147. //        vendor        = last_product["vendor"]:"";
  148. // TODO        distproduct        = last_product["distproduct"]:"";
  149. // TODO        distversion        = last_product["distversion"]:"";
  150. // TODO        baseproduct        = last_product["baseproduct"]:"";
  151. // TODO        if (baseproduct == "") baseproduct = name;
  152. // TODO        baseversion        = last_product["baseversion"]:"";
  153.  
  154. //        relnotesurl        = last_product["relnotesurl"]:"";
  155.  
  156. //        flags        = splitstring (last_product["flags"]:"", " ");
  157.  
  158.         list<map<string,any> > base_products = FindBaseProducts();
  159.         map<string,any> base_product = base_products[0]:$[];// there should be only one - hopefuly
  160.         name = base_product["display_name"]:base_product["summary"]:base_product["name"]:"";
  161.         short_name = base_product["short_name"]:name;
  162.         version = base_product["version"]:"";
  163.         vendor = base_product["vendor"]:"";
  164.         relnotesurl = base_product["relnotes_url"]:"";
  165.         flags = base_product["flags"]:[];
  166.     }
  167.  
  168.     if(distproduct == nil) distproduct = "";
  169.     dist        = splitstring(distproduct, "-")[2]:"";
  170.  
  171.     run_you        = ! contains (flags, "no_you");
  172.  
  173.     // set the product name for UI
  174.         import "Wizard";
  175.  
  176.     y2milestone ("Product name: '%1'", name);
  177.  
  178.     if (name != nil && name != "") {
  179.         Wizard::SetProductName (name);
  180.     }
  181.     }
  182.  
  183. /* EOF */
  184. }
  185.