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

  1. /**
  2.  * Module:    inst_custom_packages.ycp
  3.  *
  4.  * Authors:    Anas Nashif <nashif@suse.de>
  5.  *
  6.  * Purpose:    Client for 3rd prodcuts/addon products package installations
  7.  *
  8.  */
  9. {
  10.     textdomain "packager";
  11.     import "ProductFeatures";
  12.     import "SourceManager";
  13.     import "Directory";
  14.     import "Popup";
  15.     import "SlideShow";
  16.     import "Kernel";
  17.     import "Installation";
  18.     import "GetInstArgs";
  19.     import "Mode";
  20.  
  21.  
  22.     list<string> packages = (list<string>)ProductFeatures::GetFeature("software", "packages");
  23.  
  24.     boolean probeSource (string url)
  25.     {
  26.         symbol ret = SourceManager::createSource(url);
  27.         if (ret != `ok )
  28.         {
  29.             y2error ("no sources available on media");
  30.             return false;
  31.         } else {
  32.             SourceManager::CommitSources();
  33.             return true;
  34.         }
  35.     }
  36.     if (!probeSource("dir://" + Directory::custom_workflow_dir))
  37.     {
  38.     // error popup
  39.         Popup::Error(_("Could not read package information."));
  40.         return `abort;
  41.     }
  42.  
  43.     if (size(packages) > 0 )
  44.     {
  45.         y2milestone("installing packages: %1", packages );
  46.         foreach(string pkg, packages, ``{
  47.                 if (!Pkg::PkgInstall(pkg) ) {
  48.                     Pkg::DoProvide ([pkg]);
  49.                 }
  50.                 });
  51.         boolean solve = Pkg::PkgSolve(false);
  52.         if (!solve)
  53.         {
  54.             y2error("Error solving package dependencies");
  55.         }
  56.     }
  57.  
  58.     symbol result = (symbol)WFM::CallFunction( "inst_packages", [`summaryMode]);
  59.     y2milestone ("inst_packages returns %1", result);
  60.     if (result == `accept)
  61.         result = `next;
  62.  
  63.     if (result == `next)                // packages selected ?
  64.     {
  65.         boolean anyToDelete = Pkg::PkgAnyToDelete();
  66.         SlideShow::SetLanguage (UI::GetLanguage(true));
  67.         SlideShow::InitPkgData(false);
  68.         SlideShow::OpenSlideShowDialog();
  69.  
  70.         import "PackageInstallation";
  71.         Pkg::TargetLogfile (Installation::destdir + Directory::logdir + "/y2logRPM");
  72.         integer oldvmlinuzsize = (integer) SCR::Read(.target.size, "/boot/vmlinuz");
  73.         list commit_result = PackageInstallation::CommitPackages (0, 0);                // Y: commit them !
  74.         integer newvmlinuzsize = (integer) SCR::Read(.target.size, "/boot/vmlinuz");
  75.  
  76.         SlideShow::CloseSlideShowDialog();
  77.  
  78.         if (Installation::destdir == "/"
  79.                 && ((commit_result[0]:0 > 0)
  80.                     || anyToDelete))
  81.         {
  82.             // prepare "you must boot" popup in inst_suseconfig
  83.             Kernel::SetInformAboutKernelChange (oldvmlinuzsize != newvmlinuzsize);
  84.  
  85.             result = (symbol) WFM::CallFunction ("inst_suseconfig", [GetInstArgs::Buttons(false, false)]);
  86.         }
  87.     }
  88.  
  89.     if (size(SourceManager::newSources)== 1)
  90.     {
  91.         Pkg::SourceChangeUrl( SourceManager::newSources[0]:-1 , "cd:///" );
  92.     }
  93.  
  94.     return `next;
  95.  
  96. }
  97.