\section{conf xml}

Example of a commented conf.xml file. Keep in mind that most of those
parameters are correct, and you don't need to change whole of them.
Examples are available in this package, so please use one of them to 
base your configuration.


You should only change those one:
\begin{itemize}
 \item \{nameid\}
 \item \{version\}
 \item \{arch\}
 \item \{repo\}\{path\}
 \item \{media\}\{list\}*
 \item \{iso\}\{header\}*
\end{itemize}

first it's an xml file
\begin{verbatim}
<?xml version='1.0'?>
\end{verbatim}

name of the product
\begin{verbatim}
<productname desc="The Linux product">
\end{verbatim}

identification of the product, used for the name of the final ISO
\begin{verbatim}
<nameid>XtreemOS</nameid>
\end{verbatim}

you should really care about this parameter, how many \textbf{urpmq} could you launch at the same time ?
10 is an high value, use it only on multi-core computer.
 \begin{verbatim}
<nb_fork>10</nb_fork>
\end{verbatim}

If you want to resign you packages, define in wich file you store the password to sign RPMS, and the
gnupg file used to sign them. BCD can only sign for the moment all packages with the same key. It will
be able to sign later a media with a specific public key.
\begin{verbatim}
<signature>/home/xtreemos/.signature.gpg</signature>
<rpmrc>/home/xtreemos/.rpmrc</rpmrc>
\end{verbatim}

based\_on parameter defines on wich version of Mandriva this product will be built.
This parameter define if we need synthesis or hdlists (since 2009.1 only synthesis are needed)
It will be use to get the path of the Mandriva repositery.
\begin{verbatim}
<based_on>2009.0</based_on>
\end{verbatim}

urpmqlogs paramater define the directory to store previous urpmq queries, if not defined the system will use the /var/lib/bcd dir.
\begin{verbatim}
<urpmqlogs>/home/plop/urpmqlogs</urpmqlogs>
\end{verbatim}

Arch parameter is mandatory, it will be also used to get the path of the Mandriva repositery
\begin{verbatim}
 <arch>i586</arch>
\end{verbatim}

path to the repositery (without version and arch)
\begin{verbatim}
 <repo desc="Where is the repositery of the distribution">
  <path>/mnt/BIG/dis</path>
 </repo>
\end{verbatim}

so the full path of the Mandriva repositery will be in our example
\begin{verbatim}
 </mnt/BIG/dis/2009.0/i586>
\end{verbatim}

workdir is where you want to store the result of the build. Two directories 
will be built, \textbf{build} to store the base of the DVD, \textbf{iso} to store the final ISO.
\begin{verbatim}
 <workdir desc="Where is my working dir">
  <path>/home/xtreemos/build_bcd</path>
 </workdir>
\end{verbatim}

basename of log files, if you want you can change it, but this option
should not exist, i should remove it...
\begin{verbatim}
 <tocopy_file>tocopy_plop</tocopy_file>
\end{verbatim}

define media used and excluded in the initial chroot
\begin{verbatim}
 <chroot_media>Main,Main Updates</chroot_media>
 <chroot_media_exclude>Main Backports,Main Testing</chroot_media_exclude>
\end{verbatim}

all Isolinux information
\begin{verbatim}
 <isolinux desc="isolinux info">
  <defaultpath>isolinux</defaultpath>
\end{verbatim}

if you want to point to a custom \textbf{isolinux} directory
\begin{verbatim}
 <fullpath>/home/xtreemos/export_i386/isolinux</fullpath>
\end{verbatim}

if you want to add a entry in your \textbf{isolinux.cfg}. In this example we add an HDT entry
(hardware detection tool)
\begin{verbatim}
 <!-- add hdt entry in syslinux.cfg -->
  <entry name="hdt" desc="Main media">
   <bin>/usr/lib/syslinux/hdt.c32</bin>
   <label>hdt</label>
   <kernel>hdt.c32</kernel>
   <append>modules=modules.pci</append>
  </entry>
\end{verbatim}

some section are mandatory to keep the array structure of the xml file
\begin{verbatim}
  <!-- keep this entry to create an array ref -->
  <entry></entry>
\end{verbatim}

if you want to copy extra files to the isolinux buildir
\begin{verbatim}
 <tocopy name="pcimap">
  <file>/lib/modules/2.6.31-server-2mnb/modules.pcimap</file>
 </tocopy>
 <tocopy name="ids">
  <file>/usr/share/pci.ids</file>
 </tocopy>
 <tocopy></tocopy>
 </isolinux>
\end{verbatim}

all information relatives to the installer (stage2)
\begin{verbatim}
 <installer desc="path to the Mandriva installer (stage1/stage2)">
  <defaultpath>install</defaultpath>
\end{verbatim}

if you want to use a custom installer, really usefull if you custom it
\begin{verbatim}
 <fullpath>/home/xtreemos/export_i386</fullpath>
\end{verbatim}

path to custom advertising (images used during slideshow)
\begin{verbatim}
 <advertising>
  <defaultpath>advertising</defaultpath>
  <fullpath>/home/xtreemos/Build/pieces/advertising</fullpath>
 </advertising>
\end{verbatim}

full path and name of your patch for stage2 to copy in the \textbf{buildir/install} directory. This
is an option, leave it blank if you don't use a patch
\begin{verbatim}
  <patch>/home/xtreemos/Build/pieces/patch-oem.pl</patch>
 </installer>
\end{verbatim}

Theme to use to patch \textbf{all.rdz} file.
Theme name will be used to install mandriva-release-THEMENAME and avoid
problem of mixing theme on a same product
\begin{verbatim}
 <!-- theme must be available to path altx/all.rdz files -->
 <theme name="mandriva-release-Free">
  <theme>Mandriva-Free</theme>
  <bootsplash>Mandriva-Free</bootsplash>
  <bootsplash_path>/usr/share/bootsplash</bootsplash_path>
  <gfxboot_path>/usr/share/gfxboot</gfxboot_path>
 </theme>
\end{verbatim}

media section will defined wich media you want to use and you want to create on the DVD.
Keep in mind that it works like \textbf{urpmi} and \textbf{urpmq}, if you want to install a package, you need
all his dependencies, so for some specific package like restricted one on a 64bits product,
you need to use the extra parameter \begin{verbatim}<media_supp>Main,contrib,main32</media_supp>\end{verbatim}
to be sure that you will provide all needed deps. For each list bcd will add a media, and will add
\textbf{updates/backport/testing} if the tag is set to yes. Be sure you use a uniq media name, because \textbf{urpmi}
will not add a new media with a name wich already exist.
\begin{verbatim}
 <media desc="media to take into account to build the ISO">
 <!-- WARNING this media must be named "Main" because main media is mandatory for all other media-->
 <!-- Morever the "Main" media is always the Name use for an MDV repositery -->
 <!-- futur feature will provide a way to specify another name for the basic repo of an MDV distribution -->
 <!-- use the supp_media option if you needed to use media option of urpmi, usefull for external media
  wich need main and contrib to be installed, use the urpmi syntax of \-\-media (no space, media separated by coma)
\end{verbatim}

drop option is usefull to remove the media before the rpmcheck (usefull for media main32)
\begin{verbatim}
  <drop>yes</drop>
\end{verbatim}

remove\_noarch is used to remove all noarch packages from a media (usefull for media main32 on pwp64 and free64)
\begin{verbatim}
  <remove_noarch>yes</remove_noarch>
\end{verbatim}

input list for a specific media
\begin{verbatim}
 <media_supp>Main,Main Updates,Contrib,Contrib Updates</media_supp>-->
 <list name="Main" desc="Main_media">
  <!-- MANDATORY list of wanted packages on the iso -->
  <input name="base">
   <file>lists/input_main</file>
  </input>
  <input name="lang">
   <file>lists/languages</file>
  </input>
  <!-- to create an array you must keep this even if it is empty -->
  <input name="xos">
   <file>lists/xos_list</file>
  </input>
\end{verbatim}

you can use an external media, but this media must have a \textbf{media\_info} directory
you must use external media if this media is not available in the repositery.
IE: restricted32 packages on a PowerPack 64bits product. The \textbf{fullpath\_mediadir} option
must be the full path to RPM (no subdirectory release/updates/backport).
\begin{verbatim}
 <!-- external media repositery with hdlists -->
  <external name="xos">
   <fullpath_mediadir>/home/xtreemos/repo_xos/2009.0/i586/media/xtreemos/release</fullpath_mediadir>
  </external>
\end{verbatim}

Packages unwanted on the DVD are stored in exclude list.
They will be removed at the end of the installation process.
Just add the list of those packages in an exclude list.
\begin{verbatim}
 <!-- MANDATORY list of unwanted packages on the iso -->
  <exclude name="exclude">
   <file>lists/exclude_main</file>
  </exclude>
  <!-- to create an array you must keep this even if it is empty -->
  <exclude>
  </exclude>
\end{verbatim}

Switch nosuggest options to yes if you don't want to use RPMS's suggests
\begin{verbatim}
 <!-- nosuggests options should be yes or no -->
 <nosuggests>no</nosuggests>
\end{verbatim}

I will use the media name 'mediadir' and put it in the directory media/'destmedia' on the DVD.
\begin{verbatim}
 <!-- will be taken in {repo}{version}{arch}/media -->
  <mediadir>main</mediadir>
  <destmedia>main</destmedia>
\end{verbatim}

Where to find the pubkey in the repositery (the path will be media/'mediadir'/'pubkey').
If you want to specify a specific file to use as pubkey, leave <pubkey> empty.
\begin{verbatim}
 <pubkey>release/media_info/pubkey</pubkey>
 <file_pubkey>/path_to_file/the_pubkey</file_pubkey>
\end{verbatim}

if you want to use backports, testing or updates sub-media, set option to yes.
Note: release media should be mandatory
\begin{verbatim}
  <release>yes</release>
  <updates>yes</updates>
  <backport>no</backport>
  <testing>no</testing>
 </list>
 <!-- keep this entry to create an array ref -->
  <list></list>
 </media>
\end{verbatim}

all \textbf{media\_info} informations are in this section
\begin{verbatim}
 <mediainfo desc="All files relatives to media_info dir">
\end{verbatim}

version will be used to generate a good media.cfg files (we don't use hdlits.cz since 2009.1 release)
\begin{verbatim}
 <version>2009.0</version>
\end{verbatim}

use 'fullpath' parameter to use custom rpmsrate/compssusers files
\begin{verbatim}
 <!-- set fullpath if you want to use an files in a non MDV repositery -->
 <fullpath>/home/xtreemos/Build/pieces</fullpath>
 <mediainfo_dir>media/media_info</mediainfo_dir>
 <rpmsrate>rpmsrate</rpmsrate>
 <compssusers>compssUsers.pl</compssusers>
 <filedeps>file-deps</filedeps>
\end{verbatim}

If you want to add an \textbf{urpmi} options to install packages. Be carreful
this can add or remove a lot of packages, and syntax in your list file can
lead to error. ie: firefox- in a list file without the parameter \textit{-a} will 
lead to an \textbf{urpmi} error, because there is a lot of firefox packages wich
began with the strings firefox-
\begin{verbatim}
 <urpmi_option>-a</urpmi_option>
\end{verbatim}

If you want to do some extra filter to keep latest release of a packages on the DVD.
All packages listed in extra-filter are NOT filtered: so if you have more than one
version of a package in the builddir, it will bypass the rpm comparaison.
For all other packages available in the builddir, BCD 
will keep the latest one (rpm version comparaison)
\begin{verbatim}
 <filter>lists/extra-filter</filter>
\end{verbatim}

media.cfg options, do a man gendistrib for more info
\begin{verbatim}
 <askmedia desc="add for other media ?">
  <todo>yes</todo>
 </askmedia>
 <suppl desc="add an external media ?">
  <todo>yes</todo>
 </suppl>
  <xmlinfo>
 <todo>no</todo>
  </xmlinfo>
 </mediainfo>
\end{verbatim}

ISO section
\begin{verbatim}
 <iso>
\end{verbatim}

tag name and some extra parameters
\begin{verbatim}
 <tag>rc1</tag>
 <minor>0</minor>
 <subversion>1</subversion>
 <product>Download</product>
 <branch>Devel</branch>
 <type>basic</type>
 <!-- dual arch not yet supported -->
 <dualarch>no</dualarch>
 <!-- SIZE is not YET USED !!! -->
 <size>700</size>
 <!-- media.cfg will be stored on genisoimage->{builddir}/{nameid}/{arch} -->
 <mediacfg>media/media_info/media.cfg</mediacfg>
 <hdlist>yes</hdlist>
 <synthesis>yes</synthesis>
\end{verbatim}

info used by the genisoimage tool
\begin{verbatim}
 <header desc="Iso header info">
  <systemid>XtreemOS Linux</systemid>
  <volumeid>XOS-2.0-i586</volumeid>
  <volumesetid>XtreemOS Linux - 2.0 - i586 DVD </volumesetid>
  <publisherid>XtreemOS</publisherid>
  <datapreparer>XtreemOS-Linux</datapreparer>
  <applicationid>XtreemOS Linux - 2.0</applicationid>
  <copyrightid>XtreemOS Linux</copyrightid>
 </header>
\end{verbatim}

genisoimage paramaters
\begin{verbatim}
 <genisoimage desc="iso generation tool">
  <options>-f -r -J -hide-rr-moved -nobak -cache-inodes -no-emul-boot -boot-load-size 4 </options>
  <bootcat>isolinux/boot.cat</bootcat>
  <!-- builddir and destdir will always use the workdir -->
  <builddir>build</builddir>
  <isodir>iso</isodir>
 </genisoimage>
 </iso>
 </productname>
\end{verbatim}
