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 >
Wrap
Text File
|
2006-11-29
|
3KB
|
97 lines
/**
* Module: inst_custom_packages.ycp
*
* Authors: Anas Nashif <nashif@suse.de>
*
* Purpose: Client for 3rd prodcuts/addon products package installations
*
*/
{
textdomain "packager";
import "ProductFeatures";
import "SourceManager";
import "Directory";
import "Popup";
import "SlideShow";
import "Kernel";
import "Installation";
import "GetInstArgs";
import "Mode";
list<string> packages = (list<string>)ProductFeatures::GetFeature("software", "packages");
boolean probeSource (string url)
{
symbol ret = SourceManager::createSource(url);
if (ret != `ok )
{
y2error ("no sources available on media");
return false;
} else {
SourceManager::CommitSources();
return true;
}
}
if (!probeSource("dir://" + Directory::custom_workflow_dir))
{
// error popup
Popup::Error(_("Could not read package information."));
return `abort;
}
if (size(packages) > 0 )
{
y2milestone("installing packages: %1", packages );
foreach(string pkg, packages, ``{
if (!Pkg::PkgInstall(pkg) ) {
Pkg::DoProvide ([pkg]);
}
});
boolean solve = Pkg::PkgSolve(false);
if (!solve)
{
y2error("Error solving package dependencies");
}
}
symbol result = (symbol)WFM::CallFunction( "inst_packages", [`summaryMode]);
y2milestone ("inst_packages returns %1", result);
if (result == `accept)
result = `next;
if (result == `next) // packages selected ?
{
boolean anyToDelete = Pkg::PkgAnyToDelete();
SlideShow::SetLanguage (UI::GetLanguage(true));
SlideShow::InitPkgData(false);
SlideShow::OpenSlideShowDialog();
import "PackageInstallation";
Pkg::TargetLogfile (Installation::destdir + Directory::logdir + "/y2logRPM");
integer oldvmlinuzsize = (integer) SCR::Read(.target.size, "/boot/vmlinuz");
list commit_result = PackageInstallation::CommitPackages (0, 0); // Y: commit them !
integer newvmlinuzsize = (integer) SCR::Read(.target.size, "/boot/vmlinuz");
SlideShow::CloseSlideShowDialog();
if (Installation::destdir == "/"
&& ((commit_result[0]:0 > 0)
|| anyToDelete))
{
// prepare "you must boot" popup in inst_suseconfig
Kernel::SetInformAboutKernelChange (oldvmlinuzsize != newvmlinuzsize);
result = (symbol) WFM::CallFunction ("inst_suseconfig", [GetInstArgs::Buttons(false, false)]);
}
}
if (size(SourceManager::newSources)== 1)
{
Pkg::SourceChangeUrl( SourceManager::newSources[0]:-1 , "cd:///" );
}
return `next;
}