Anaconda/Features/InstallClassesInRepo

= Install classes and package logic outside Anaconda sources =

Summary
Currently we ship data and code to select default groups, kernel packages and other distribution dependent stuff directly in Anaconda. This data should be moved elsewhere (for example to the install repository) so we can proceed to our goal of being version independent installer.

Owner

 * Name: TBD

Current status

 * Targeted release: TBD
 * Last updated: 2011-06-13
 * Percentage of completion: 0%

Detailed Description
The idea is to create a new package (install-config.rpm?) which will be included in the install repository. We would then download that package together with metadata and unpack it somewhere. The package will contain kickstart file which will select and set the defaults for that current repository. Because we have to download the package first, we will also include default kickstart with Anaconda's initrd to set sane defaults (for example dlabel=on/off).

To be able to set the behaviour we will have to integrate flag system to kickstart, prefferebaly as new section %flags. This section will contain list of flags which are to be set to True for this installation.

%flags xen dlabel

The packages section will then be enhanced by ""when $flag$"" keyword, so we will be able to write the kernel selection logic to this kickstart file. It will be only required for the code to investigate the environment and set the flags accordingly.

%packages @base @desktop when gui kernel kernel-xen when xen kernel-kvm unless xen (this is an enhancement of enhancement idea :)

The changes to our kickstart processing will require some slight reordering and decisions about what secions will overlap old data and what sections will replace old data. We will also have to device a way to get data filtered by current flags where needed (backend).

Another change will have to be made to our configuration code, we will have to execute all configuration commands in chroot (if we are not doing it already) to be sure we are using proper versions of all the tools.

Benefit to Fedora
We will make spin creation easier and also make Anaconda more independent on the current release. When package list changes we won't have to rebuild anaconda as the list will be in separate package.

Scope
Anaconda and Kickstart modifications will have to be made. Also a standardized package name will have to be discussed with release engineering team.