aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorAntoine Ginies <aginies@mandriva.com>2010-10-06 07:58:18 +0000
committerAntoine Ginies <aginies@mandriva.com>2010-10-06 07:58:18 +0000
commitb364785ea90e60806aaaec56d15bcc70a74daf6d (patch)
treeda257e1277bd0218929f12fde2e318657067eb16 /doc
parent46324a3fd9b86040b16dc3070b3a22438f7a616d (diff)
downloadbcd-b364785ea90e60806aaaec56d15bcc70a74daf6d.tar
bcd-b364785ea90e60806aaaec56d15bcc70a74daf6d.tar.gz
bcd-b364785ea90e60806aaaec56d15bcc70a74daf6d.tar.bz2
bcd-b364785ea90e60806aaaec56d15bcc70a74daf6d.tar.xz
bcd-b364785ea90e60806aaaec56d15bcc70a74daf6d.zip
end of the move
Diffstat (limited to 'doc')
-rw-r--r--doc/bcd.pod158
-rw-r--r--doc/conf.xml.pod268
-rw-r--r--doc/conf.xml.tex365
-rw-r--r--doc/howto_bcd.pdfbin0 -> 133558 bytes
-rw-r--r--doc/howto_bcd.tex594
-rw-r--r--doc/mandriva-logo.jpgbin0 -> 38289 bytes
6 files changed, 1385 insertions, 0 deletions
diff --git a/doc/bcd.pod b/doc/bcd.pod
new file mode 100644
index 0000000..237d929
--- /dev/null
+++ b/doc/bcd.pod
@@ -0,0 +1,158 @@
+=head1 NAME
+
+bcd tools - A simple program to generate Mandriva's ISO
+
+=head1 SYNOPSIS
+
+bcd configuration.xml [options]
+
+=cut
+
+=head1 OPTIONS
+
+=over 8
+
+=item B<First arg must be:>
+
+ The XML configuration file
+
+=item B<Second arg must be:>
+
+ stagex: update the stage1/stage2 in builddir
+ isolinux: update the isolinux in builddir
+ clean: clean the builddir and isodir
+ media: create the list of wanted packages, create all media in builddir,
+ link/copy packages in builddir/media, create the media.cfg,
+ and generate the hdtlist/synthesis
+ gendistrib: create the hdlists/synthesis in builddir (depends on the based_on tag)
+ rpmcheck: check the hdlist in the buildir
+ list: list all media and list of input/exclude (from the xml conf file)
+ mediarepo: list all medias availables in the repositery
+ checkrepo: rpmcheck main hdlists in the repositery
+ all: run all stage in order to get an ISO
+ md5: create MD5 sum of the ISO
+ resign: resign all rpms with a password and a gpg file
+ clean: clean previous urpmq log file
+ doble: check doble rpm in the media build_dir
+ kernel: compare kernel and keep the latest one
+ nodoble: don't check doble rpm in the media build_dir
+ html: generate a log report web page
+ info: parse the configuration file (usefull to check the XML syntax)
+ iso: create the final ISO from the builddir
+ verbose: be more verbose
+
+=item B<extra arg:>
+
+ noiso: don't build the iso (md5, isohybrid) in case of 'all' process
+ copy: copy rpm instead of link them from the repositery
+
+=back
+
+=head1 EXAMPLES
+
+the folowing example will do all step to create an ISO:
+
+ bcd mdv-20091.xml all
+
+the following example will create the build dir without creating ISO:
+ bcd.pl mdv-20091.xml all noiso
+
+same as above but copy packages instead of link them from the repositery:
+ bcd.pl mdv-20091.xml all noiso copy
+
+the following will update the isolinux in the build directory:
+ bcd.pl mdv-20091.xml isolinux
+
+to check the main hdlist in the repositery with rpmcheck
+ bcd.pl mdv-20091.xml checkrepo
+
+clean the builddir and isodir
+ bcd.pl mdv-20091.xml clean
+
+=cut
+
+=head1 COPYRIGHT
+
+Copyright (C) 2009-2010 Mandriva <aginies_@_mandriva.com>
+
+=cut
+
+=head1 DESCRIPTION
+
+BCD is used to create Mandriva ISO.
+features are:
+- configuration file is in XML format
+- use of genhdlist2 with file-deps
+- support the add of an isolinux entry
+- change the theme on all.rdz files
+- just need an input and an exclude file for package list
+- write media.cfg
+- support of custom rpmsrate of compssusers.pl
+- support of custom advertising
+- support of custom stage2
+- extra filter to remove doble packages (keep latest version)
+- all sub-media supported (updates, testing...)
+- create the iso HEADER
+- use of urpmq to calculate deps/conflicts/suggests
+- support of no-suggests option per media
+- support extra external media with hdlists
+- create an md5 file
+- create a product.id file
+- create a VERSION file
+- speed up the process using previous urpmq --requires-recursive query
+
+=cut
+
+=head1 USER conf
+
+Your user must have some sudo root right to be able to use chroot, urpmi,
+rm, mount umount tools. IE: for user plop in /etc/sudoers file
+
+ plop ALL=(root) NOPASSWD:/bin/mount, /bin/umount, \
+ /usr/sbin/chroot, \
+ /usr/sbin/urpmi, \
+ /usr/sbin/urpmi.addmedia, \
+ /usr/sbin/urpmi.removemedia, \
+ /bin/rm
+
+Moreover to speed up the process, each urpmq --requires-recursive queries
+will be stored in /var/lib/bcd/ directory, so you should add an access to
+this directory for the user you use.
+
+ chown plop.users /var/lib/bcd/
+
+=cut
+
+=head1 LISTS
+
+input list:
+list of rpm needed on the CD. Those list should contains the name
+or the provides of a package. You may also use a CAT_XXX from the
+rpmsrate file, with the wheigth parameter.
+
+ ie: of lists/input_main
+ INSTALL 1
+ CAT_X 1
+ CAT_GNOME 1
+ CAT_AUDIO 1
+ aumix
+ task-lxde
+
+exclude list:
+list of unwanted packages on the CD. Be carreful to do not exclude mandatory packages
+or you CD will be unusable. Rpmcheck will report any bug in hdlists at the end of
+the 'media' step process. Packages listed in exclude list will be removed from the
+DVD at the end of the build process.
+
+extra-filter:
+list of RPM you want to do not compare and the keep the latest one.
+Usefull if you want to keep more than one version of a package.
+
+=cut
+
+=head1 ISSUE
+
+ - if you want to build ISO for x86_64 you must used an x86_64 system (due to urpmi)
+ - if hdlist/synthesis are corrupted in your repositery, you can't build ISO
+
+=cut
diff --git a/doc/conf.xml.pod b/doc/conf.xml.pod
new file mode 100644
index 0000000..063f1e3
--- /dev/null
+++ b/doc/conf.xml.pod
@@ -0,0 +1,268 @@
+=head1 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:
+{nameid}
+{version}
+{arch}
+{repo}{path}
+{media}{list}*
+{iso}{header}*
+
+Fully commented file:
+---------------------
+first it's an xml file:
+ <?xml version='1.0'?>
+
+name of the product
+ <productname desc="The Linux product">
+
+identification of the product
+ <nameid>XtreemOS</nameid>
+
+you should really care about this parameter, how many urpmq could you launch at the same time ?
+10 is an high value, use it only on multi-core computer.
+ <nb_fork>10</nb_fork>
+
+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.
+ <signature>/home/xtreemos/.signature.gpg</signature>
+ <rpmrc>/home/xtreemos/.rpmrc</rpmrc>
+
+based_on parameter define 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
+ <based_on>2009.0</based_on>
+
+Arch parameter is mandatory, it will be also used to get the path of the MDV repositery
+ <arch>i586</arch>
+
+path to the repositery
+ <repo desc="Where is the repositery of the distribution">
+ <path>/mnt/BIG/dis</path>
+ </repo>
+
+so the full path of the Mandriva repositery will be in our example
+ </mnt/BIG/dis/2009.0/i586>
+
+workdir is where you want to store the result of the build
+ <workdir desc="Where is my working dir">
+ <path>/home/xtreemos/build_bcd</path>
+ </workdir>
+
+basename of log files
+ <tocopy_file>tocopy_plop</tocopy_file>
+
+all Isolinux information
+ <isolinux desc="isolinux info">
+ <defaultpath>isolinux</defaultpath>
+
+if you want to use proprietary firmware in stage1 (from the non-free/initrd-firmware package) set the option to yes
+ <firmware>yes</firmware>
+
+if you want to point to a custom isolinux directory
+ <fullpath>/home/xtreemos/export_i386/isolinux</fullpath>
+
+if you want to add a entry in your isolinux.cfg
+ <!-- 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>
+
+some section are mandatory to keep the array structure of the xml file
+ <!-- keep this entry to create an array ref -->
+ <entry></entry>
+
+if you want to copy extra files to the isolinux buildir
+ <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>
+
+all information relatives to the installer (stage2)
+ <installer desc="path to the Mandriva installer (stage1/stage2)">
+ <defaultpath>install</defaultpath>
+
+if you want to use a custom installer
+ <fullpath>/home/xtreemos/export_i386</fullpath>
+
+path to custom advertising
+ <advertising>
+ <defaultpath>advertising</defaultpath>
+ <fullpath>/home/xtreemos/Build/pieces/advertising</fullpath>
+ </advertising>
+
+full path and name of your patch for stage2 to copy in the buildir/install directory
+ <patch>/home/xtreemos/Build/pieces/patch-oem.pl</patch>
+ </installer>
+
+theme to use to patch all.rdz file
+theme name will be used to install mandriva-release-THEMENAME and avoid
+problem of mixing theme on a same product
+ <!-- theme must be available to path altx/all.rdz files -->
+ <theme name="mandriva-release-Free">
+ <bootsplash>Mandriva-Free</bootsplash>
+ <bootsplash_path>/usr/share/bootsplash</bootsplash_path>
+ <gfxboot_path>/usr/share/gfxboot</gfxboot_path>
+ </theme>
+
+media section will defined wich media you want to use and you want to create on the DVD
+ <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)
+ <media_supp>Main,Main Updates,Contrib,Contrib Updates</media_supp>-->
+ <list name="Main" desc="Main_media">
+
+drop option is usefull to remove the media before the rpmcheck (usefull for media main32)
+ <drop>yes</drop>
+
+remove_noarch is used to remove all noarch.rpm from a media (usefull for media main32 on pwp64 and free64)
+ <remove_noarch>yes</remove_noarch>
+
+input files
+ <!-- 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>
+
+you can use an external media, but this media must have a 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
+ <!-- external media repositery with hdlists -->
+ <external name="xos">
+ <fullpath_mediadir>/home/xtreemos/repo_xos/2009.0/i586/media/xtreemos/release</fullpath_mediadir>
+ </external>
+
+Packages unwated on the DVD, they will be removed at the end of the installation process
+ <!-- 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>
+
+switch nosuggest options to yes if you don't want to use RPMS's suggests
+ <!-- nosuggests options should be yes or no -->
+ <nosuggests>no</nosuggests>
+
+I will use the media name "mediadir" and put it in the directory media/'destmedia' on the DVD
+ <!-- will be taken in {repo}{version}{arch}/media -->
+ <mediadir>main</mediadir>
+ <destmedia>main</destmedia>
+
+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.
+ <pubkey>release/media_info/pubkey</pubkey>
+ <file_pubkey>/path_to_file/the_pubkey</file_pubkey>
+
+if you want to use backports, testing or updates sub-media, set option to yes, note: release media should be mandatory
+ <release>yes</release>
+ <updates>yes</updates>
+ <backport>no</backport>
+ <testing>no</testing>
+ </list>
+ <!-- keep this entry to create an array ref -->
+ <list></list>
+ </media>
+
+all media_info informations are in this section
+ <mediainfo desc="All files relatives to media_info dir">
+
+version will be used to generate a good media.cfg files (we don't use hdlits.cz since 2009.1 release)
+ <version>2009.0</version>
+
+use 'fullpath' parameter to use custom files
+ <!-- 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>
+
+if you want to add an urpmi options to install packages
+ <urpmi_option>-a</urpmi_option>
+
+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)
+ <filter>lists/extra-filter</filter>
+
+media.cfg options
+ <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>
+
+ISO section
+ <iso>
+
+tag name and some extra parameters
+ <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>
+
+info used by the genisoimage tool
+ <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>
+
+genisoimage paramater
+ <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>
+
+=cut
diff --git a/doc/conf.xml.tex b/doc/conf.xml.tex
new file mode 100644
index 0000000..f512179
--- /dev/null
+++ b/doc/conf.xml.tex
@@ -0,0 +1,365 @@
+\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}
+
+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}
+
+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}
diff --git a/doc/howto_bcd.pdf b/doc/howto_bcd.pdf
new file mode 100644
index 0000000..f21a855
--- /dev/null
+++ b/doc/howto_bcd.pdf
Binary files differ
diff --git a/doc/howto_bcd.tex b/doc/howto_bcd.tex
new file mode 100644
index 0000000..5cff1dc
--- /dev/null
+++ b/doc/howto_bcd.tex
@@ -0,0 +1,594 @@
+\documentclass[oneside,a4paper,10pt]{article}
+\usepackage{times}
+\usepackage{graphicx}
+\usepackage[T1]{fontenc}
+\usepackage[english]{babel}
+\usepackage{fullpage}
+
+\begin{document}
+
+
+\title{HOW TO use BCD}
+\author{Antoine Ginies}
+\begin{center}
+ \includegraphics{./mandriva-logo.jpg}
+ % mandriva-logo.jpg: 950x239 pixel, 72dpi, 33.51x8.43 cm, bb=0 0 950 239
+\end{center}
+\maketitle
+
+\tableofcontents
+
+\section{Summary}
+
+BCD try to be a simple tool to build ISO using \textbf{urpmi} to create a mini
+chroot of the future system, and \textbf{urpmq} command to calculate dependencies
+of packages on the future DVD/CD.
+
+\section{The environment}
+
+\begin{flushleft}
+BCD is available in Mandriva subversion repository:
+http://svn.mandriva.com/svn/soft/build\_system/bcd
+\end{flushleft}
+
+\begin{flushleft}
+Some release of BCD has been packaged, but you should use the svn version, because this tool is under development, and really unstable....
+All previous XML configuration's file are compatibles with previous version of BCD.
+\end{flushleft}
+
+\begin{flushleft}
+ Create a user on the system:
+ \begin{verbatim}
+adduser plop
+ \end{verbatim}
+\end{flushleft}
+
+\begin{flushleft}
+ You must create a directory to store all \textbf{urpmq} queries. All queries done by \textbf{urpmq} per package
+are stored in this directory + product-name-release-arch. To speed up the process of creating ISO,
+next time you run BCD, it will check for each package in input list if there is a file wich contains the result
+of the urpmq queries, if BCD found one then it will use it, else it will redo an
+\textbf{urpmq --requires-recursives --sources package\_name} and store the result in a new file.
+So if you have update your repository, you should clean this directory. If you have update some packages,
+you should remove file relative to those packages, to redo the \textbf{urpmq} queries otherwise BCD will use
+the old result of the \textbf{urpmq} queries, and this can lead to error if deps are no more the same. Moreover
+if you change the tag \textbf{<nosuggests></nosuggests>} to yes or no, you must erase all
+your previous queries.
+
+ \begin{verbatim}
+mkdir -p /var/lib/bcd
+ \end{verbatim}
+\end{flushleft}
+
+\begin{flushleft}
+ Give you user RW on this directory:
+ \begin{verbatim}
+chown plop.users /var/lib/bcd
+ \end{verbatim}
+\end{flushleft}
+
+\begin{flushleft}
+ Give some \textbf{sudoers} right to your user:
+ \begin{verbatim}
+vi /etc/sudoers
+plop ALL=(root) NOPASSWD:/bin/mount, /bin/umount, \
+ /usr/sbin/chroot, \
+ /usr/sbin/urpmi, \
+ /usr/sbin/urpmi.addmedia, \
+ /usr/sbin/urpmi.removemedia, \
+ /bin/rm
+ \end{verbatim}
+\end{flushleft}
+
+\begin{flushleft}
+ Checkout the source of BCD:
+ \begin{verbatim}
+svn co http://svn.mandriva.com/svn/soft/build_system/bcd
+ \end{verbatim}
+\end{flushleft}
+
+\begin{flushleft}
+ Prepare your distribution repository, you should have
+ an access to it, or a local copy.
+ \begin{verbatim}
+[plop@isobel /mnt/BIG/dis/official] 04:04:28pm
+$ ls
+2008.0/ 2008.1/ 2009.0/ 2009.1/ 2010.0/ iso/
+$ ls -r 2010.0
+x86_64/ SRPMS/ i586/
+ \end{verbatim}
+\end{flushleft}
+
+\begin{flushleft}
+ You need to install some tools and deps to be able to use bcd:
+ \begin{verbatim}
+urpmi perl-File-Copy-Recursive sudo urpmi perl-Parallel-ForkManager \
+ cdrkit-genisoimage cdrkit-isotools syslinux \
+ gfxboot mandriva-gfxboot-theme drakxtools-backend \
+ mandriva-Free-theme rpmtools
+ \end{verbatim}
+\end{flushleft}
+
+\begin{flushleft}
+ Now your system is ready to build ISO.
+\end{flushleft}
+
+\newpage
+\section{configuration file}
+
+You need to have an XML configuration file. You should use
+an example provided in this package and adapt it to your configuration file.
+
+\input{conf.xml.tex}
+
+\newpage
+\section{architecture of a Mandriva DVD}
+
+A Mandriva CD/DVD contains:
+\begin{itemize}
+ \item \textbf{autorun.inf} file and \textbf{dosutils} directory used under Windows OS to popup a dialog box
+ \item \textbf{i586} or \textbf{x86\_64} directory wich contains the installer and packages and other stuff
+\end{itemize}
+
+In the \textbf{i586} or the \textbf{x86\_64} directory:
+\begin{itemize}
+ \item \textbf{doc}: full doc of howto install a Mandriva linux system
+ \item \textbf{install}
+ \begin{itemize}
+ \item \textbf{extra/advertising}: all images used in the slideshow while installing
+ \item \textbf{images}: file used to boot the system
+ \item \textbf{stage2}: mdkinst.sqfs is the stage2 of the installer, rescue.sqfs is the rescue system. Those
+ two files are compressed in squashfs.
+ \end{itemize}
+ \item \textbf{isolinux}: contains file used to boot the CD/DVD, and all gfxboot stuff
+ \item \textbf{media}
+ \item \textbf{main}: a media with packages
+ \item \textbf{contrib}: another one with packages
+ \item \textbf{media\_info}
+ \begin{itemize}
+ \item \textbf{compssUsers.pl}: describe category to display in "select package to install" step
+ \item \textbf{file-deps}: Use the given file to know which file dependencies are used by other media (man \textbf{genhdlist2})
+ \item \textbf{hdlists}: old wayt to describe media on the DVD/CD
+ \item \textbf{media.cfg}: describe the repository of the DVD/CD
+ \item \textbf{rpmsrate}: a package is selected if its category is selected and depending of its priority (5=high, 1=very low)
+ \end{itemize}
+\end{itemize}
+
+\newpage
+\section{Step by step process}
+
+\begin{itemize}
+ \item clean all previous build
+ \item create all needed directory
+ \item isolinux step
+ \begin{itemize}
+ \item erase all previous isolinux directory in the build dir
+ \item copy the \textbf{isolinux} dir in the build dir
+ \item add entry if specidifed in the configuration file (like HDT)
+ \item switch theme for all images in \textbf{isolinux/altX} directory
+ \end{itemize}
+ \item stage1 and stage2
+ \begin{itemize}
+ \item copy all files from the \textit{install} dir to the build dir
+ \item update all \textbf{advertising}
+ \item copy \textbf{dosutils} tools in the build dir
+ \item copy the doc
+ \item copy the patch file if present
+ \end{itemize}
+ \item media step
+ \begin{itemize}
+ \item list all media configured, and report missing list file
+ \item create media directory in the build dir
+ \item copy all pubkey for each media and report missing one
+ \item create the \textbf{media/media\_info/media.cfg} file
+ \item copy the file-deps
+ \item copy the \textbf{rpmsrate}
+ \item copy \textbf{compssUsers.pl}
+ \item create a basic chroot of the futur Distribution (to be able to run urpmq)
+ \item mount loop distribution repository and external media in chroot
+ \item generate a list of rpm to copy and dependencies based on list files
+ \item concatenate all files
+ \item try to define the size of the DVD/CD (not yet implemented)
+ \item link or copy packages on the build dir
+ \item try to solve all doble issue of packages
+ \item remove all packages listed in exclude list
+ \item use \textbf{gendistrib} to create hdlists and synthesys
+ \item launch \textbf{rpmcheck} to check missing deps conflicts and other failure
+ \item use the rpmcheck's package list to solve missing deps using urpmq
+ \item re-link or copy packages on the build dir
+ \item re-try to solve all doble issue of packages
+ \item re-remove all packages listed in exclude list
+ \item re-launch \textbf{gendistrib} to create hdlists and synthesys
+ \item re-launch \textbf{rpmcheck} to check missing deps conflicts and other failure
+ \item umount all mountloop disrectory (distribution repository and extra media)
+ \item remove hdlist if no more needed (Mandriva version > 2010.0)
+ \item show the size of the DVD (not yet implemented)
+ \end{itemize}
+ \item ISO step
+ \begin{itemize}
+ \item create the \textbf{product.id} file
+ \item copy text files (INSTALL, README etc...)
+ \item create the idx
+ \item create the ISO
+ \item \textbf{isohybrid} the ISO
+ \item create the md5 and sha1
+ \item create an html report web page
+ \end{itemize}
+\end{itemize}
+
+\newpage
+\section{list files}
+
+\begin{itemize}
+ \item input list: list of rpm needed on the CD. Those list should contains the name
+or the provides of a package. You may also use a CAT\_XXX from the rpmsrate file, with the weight parameter.
+\end{itemize}
+
+\begin{verbatim}
+ie: of lists/input_main
+ INSTALL 1
+ CAT_X 1
+ CAT_GNOME 1
+ CAT_AUDIO 1
+ aumix
+ task-lxde
+\end{verbatim}
+
+\begin{itemize}
+ \item exclude list: list of unwanted packages on the CD. Be carreful to do not exclude mandatory packages
+or you DVD/CD will be not usable. Rpmcheck will report any bug in hdlists at the end of
+the 'media' step process. Packages listed in exclude list will be removed from the
+DVD/CD at the end of the build process.
+\end{itemize}
+
+\begin{itemize}
+ \item extra-filter: list of RPM you want to compare to keep the latest one. Usefull for kernel and dkms release,
+or if you are mixing release and udpates media.
+\end{itemize}
+
+\newpage
+\section{BCD options}
+
+\begin{itemize}
+ \item First arg must be the XML configuration file
+ \item Second arg must be
+ \begin{itemize}
+ \item stagex: update the stage1/stage2 in builddir
+ \item isolinux: update the isolinux in builddir
+ \item clean: clean the builddir and isodir
+ \item media: create the list of wanted packages, create all media in builddir, link/copy packages in builddir/media,
+create the media.cfg, and generate the hdtlist/synthesis
+ \item gendistrib: create the hdlists/synthesis in builddir (depends on the based\_on tag)
+ \item rpmcheck: check the hdlist in the buildir
+ \item list: list all media and list of input/exclude (from the xml conf file)
+ \item mediarepo: list all medias availables in the repositery
+ \item checkrepo: rpmcheck main hdlists in the repositery
+ \item all: run all stage in order to get an ISO
+ \item md5: create MD5 sum of the ISO
+ \item resign: resign all rpms with a password and a gpg file
+ \item doble: check doble rpm in the media build\_dir
+ \item kernel: compare kernel and keep the latest one
+ \item nodoble: don't check doble rpm in the media build\_dir
+ \item info: parse the configuration file (usefull to check the XML syntax)
+ \item clean: clean previous urpmq log file
+ \item html: generate a log report web page
+ \item iso: create the final ISO from the builddir
+ \item verbose: be more verbose
+ \end{itemize}
+ \item extra arg:
+ \begin{itemize}
+ \item noiso: don't build the iso (md5, isohybrid) in case of 'all' process
+ \item copy: copy rpm instead of link them from the repositery
+ \item verbose: verbose mode to report more info in the output
+ \end{itemize}
+\end{itemize}
+
+\section{Examples of use}
+
+\begin{flushleft}
+the folowing example will do all step to create an ISO:
+ \begin{verbatim}
+bcd mdv-20091.xml all
+ \end{verbatim}
+\end{flushleft}
+
+\begin{flushleft}
+the following example will create the build dir without creating ISO:
+ \begin{verbatim}
+bcd.pl mdv-20091.xml all noiso
+ \end{verbatim}
+\end{flushleft}
+
+\begin{flushleft}
+same as above but copy packages instead of link them from the repositery:
+ \begin{verbatim}
+bcd.pl mdv-20091.xml all noiso copy
+ \end{verbatim}
+\end{flushleft}
+
+\begin{flushleft}
+the following will update the isolinux in the build directory:
+ \begin{verbatim}
+bcd.pl mdv-20091.xml isolinux
+ \end{verbatim}
+\end{flushleft}
+
+\begin{flushleft}
+to check the main hdlist in the repositery with rpmcheck
+ \begin{verbatim}
+bcd.pl mdv-20091.xml checkrepo
+ \end{verbatim}
+\end{flushleft}
+
+\begin{flushleft}
+clean the builddir and isodir
+ \begin{verbatim}
+bcd.pl mdv-20091.xml clean
+ \end{verbatim}
+\end{flushleft}
+
+\newpage
+\section{XtreemOS example}
+
+\subsection{introduction}
+
+XtreemOS is an European project (http://xtreemos.eu/) to build and promote a Linux-based Operating System
+to Support Virtual Organizations for Next Generation Grids. This project was one of the platform used
+to develop and test BCD.
+
+XtreemOS GNU/Linux distribution is based on a Mandriva 2009.0 with updates, and and
+external repository xtreemos, wich contains sub-media release, updates and testing.
+We will explain the full configuration file for x864\_64 arch to help you understand the way
+to create one for your need.
+
+\subsection{the xos64.xml file}
+
+The name of the product will be XtreemOS, we want to do only 5 fork of \textbf{urpmq} queries, this product is based on
+a Mandriva 2009.0 product, and we want to build a DVD for x86\_64 architecture.
+The repository of the distribution is available at /mnt/BIG/dis directory, and i want to
+create my build dir and iso dir in the \textbf{/home/xtreemos/build\_bcd} directory.
+
+\begin{verbatim}
+<?xml version='1.0'?>
+<productname desc="The Linux product">
+ <nameid>XtreemOS</nameid>
+ <nb_fork>5</nb_fork>
+ <based_on>2009.0</based_on>
+ <arch>x86_64</arch>
+ <repo desc="Where is the repositery of the distribution">
+ <path>/mnt/BIG/dis</path>
+ </repo>
+ <workdir desc="Where is my working dir">
+ <path>/home/xtreemos/build_bcd</path>
+ </workdir>
+\end{verbatim}
+
+The prefix for log will be \textbf{tocopy\_plop}. BCD will use the installer in the \textbf{/home/xtreemos/export\_x86\_64}
+directory, and use the \textbf{/home/xtreemos/Build/pieces/patch-oem.pl} patch. New advertising will be taken from
+\textbf{/home/xtreemos/Build/pieces/advertising} directory.
+if you want to use proprietary firmware in stage1 (from the non-free/initrd-firmware package) set the firmware option to yes.
+
+
+\begin{verbatim}
+<tocopy_file>tocopy_plop</tocopy_file>
+ <isolinux desc="isolinux info">
+ <defaultpath>isolinux</defaultpath>
+ <firmware>yes</firmware>
+ <fullpath>/home/xtreemos/export_x86_64/isolinux</fullpath>
+ <entry>
+ </entry>
+ <!-- keep this entry to create an array ref -->
+ <entry></entry>
+ </isolinux>
+ <installer desc="path to the Mandriva installer (stage1/stage2)">
+ <defaultpath>install</defaultpath>
+ <fullpath>/home/xtreemos/export_x86_64</fullpath>
+ <patch>/home/xtreemos/Build/pieces/patch-oem.pl</patch>
+ <advertising>
+ <defaultpath>advertising</defaultpath>
+ <fullpath>/home/xtreemos/Build/pieces/advertising</fullpath>
+ </advertising>
+ </installer>
+\end{verbatim}
+
+Theme is the default one
+\begin{verbatim}
+<!-- theme must be available to path altx/all.rdz files -->
+ <theme name="Mandriva-Free">
+ <bootsplash>Mandriva-Free</bootsplash>
+ <bootsplash_path>/usr/share/bootsplash</bootsplash_path>
+ <gfxboot_path>/usr/share/gfxboot</gfxboot_path>
+ </theme>
+\end{verbatim}
+
+The first list is the Main one, we want to take into account all updates from this media, but
+we don't want to take into account suggests for packages. Package choosen from the list, and all
+dependencies will be stored into \textbf{media/main} directory of the DVD.
+\begin{verbatim}
+<media desc="media to take into account to build the ISO">
+ <list name="main" desc="Main_media">
+ <input name="base">
+ <file>lists/input_main</file>
+ </input>
+ <!-- to create an array you must keep this even if it is empty -->
+ <input>
+ <file>lists/to_add</file>
+ </input>
+ <!-- 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>
+ <!-- nosuggests options should be yes or no -->
+ <nosuggests>yes</nosuggests>
+ <!-- will be taken in {repo}{version}{arch}/media -->
+ <mediadir>main</mediadir>
+ <destmedia>main</destmedia>
+ <pubkey>release/media_info/pubkey</pubkey>
+ <release>yes</release>
+ <updates>yes</updates>
+ <backport>no</backport>
+ <testing>no</testing>
+ </list>
+\end{verbatim}
+
+We create the media \textbf{contrib}, taken from the Mandriva 2009.0 repository to be able to
+get dependencies from packages for other media (here the XtreemOS media). We don't use list,
+because we dont want to take packages from contrib except dependencies for packages in the XtreemOS media.
+\begin{verbatim}
+ <list name="contrib" desc="Contrib_media">
+ <!-- to create an array you must keep this even if it is empty -->
+ <input>
+ </input>
+ <input>
+ </input>
+ <!-- MANDATORY list of unwanted packages on the iso -->
+ <exclude name="exclude">
+ <file>lists/exclude_contrib</file>
+ </exclude>
+ <!-- to create an array you must keep this even if it is empty -->
+ <exclude>
+ </exclude>
+ <!-- nosuggests options should be yes or no -->
+ <nosuggests>yes</nosuggests>
+ <!-- will be taken in {repo}{version}{arch}/media -->
+ <mediadir>contrib</mediadir>
+ <destmedia>main</destmedia>
+ <pubkey>release/media_info/pubkey</pubkey>
+ <release>yes</release>
+ <updates>yes</updates>
+ <backport>no</backport>
+ <testing>no</testing>
+ </list>
+\end{verbatim}
+
+The \textbf{r\_xos} media is the XtreemOS release media. We need to use the previously defined Contrib media
+to be able to solve dependencies for packages in this media. We don't want ot use \textbf{suggests} for packages,
+and this media is not available in the Mandriva 2009.0 repository, but in an external directory.
+We set the updates flag to yes to use all packages available in updates.
+\begin{verbatim}
+ <list name="r_xos" desc="r_xos_media">
+ <media_supp>Contrib</media_supp>
+ <input>
+ </input>
+ <!-- to create an array you must keep this even if it is empty -->
+ <input></input>
+ <!-- MANDATORY list of unwanted packages on the iso -->
+ <exclude name="exclude">
+ <file>lists/exclude_main</file>
+ </exclude>
+ <exclude name="exclude">
+ <file>lists/exclude_contrib</file>
+ </exclude>
+ <!-- to create an array you must keep this even if it is empty -->
+ <exclude>
+ </exclude>
+ <!-- nosuggests options should be yes or no -->
+ <nosuggests>yes</nosuggests>
+ <!-- will be taken in {repo}{version}{arch}/media -->
+ <mediadir>xtreemos</mediadir>
+ <destmedia>main</destmedia>
+ <external name="r_xos">
+ <fullpath_mediadir>/home/xtreemos/Build/pieces/x86_64_xos_release</fullpath_mediadir>
+ </external>
+ <!--
+ <fullpath_mediadir>/home/plop/iso/final/t/x86_64/media/main</fullpath_mediadir>
+ -->
+ <pubkey>release/media_info/pubkey</pubkey>
+ <release>yes</release>
+ <updates>yes</updates>
+ <backport>no</backport>
+ <testing>no</testing>
+ </list>
+\end{verbatim}
+
+The product version is 2.1.1, and we use custom \textbf{compssUsers.pl} and \textbf{rpmsrate} file available in the
+\textbf{/home/xtreemos/Build/pieces} directory.
+\begin{verbatim}
+<mediainfo desc="All files relatives to media_info dir">
+ <version>2.1.1</version>
+ <!-- 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>
+ <filter>lists/extra-filter</filter>
+ <urpmi_option> --wget </urpmi_option>
+ <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}
+
+Tag will be beta1, and we have definied some custom ISO header. All other option are standard one.
+\begin{verbatim}
+<iso>
+ <tag>beta1</tag>
+ <minor>1</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>
+ <header desc="Iso header info">
+ <systemid>XtreemOS Linux</systemid>
+ <volumeid>XOS-2.1.1-x86_64</volumeid>
+ <volumesetid>XtreemOS Linux - 2.1.1 - x86_64 DVD</volumesetid>
+ <publisherid>XtreemOS</publisherid>
+ <datapreparer>Mandriva BCD</datapreparer>
+ <applicationid>XtreemOS Linux - 2.1.1 </applicationid>
+ <copyrightid>XtreemOS Linux</copyrightid>
+ </header>
+ <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}
+
+Resume of the XtreemOS example:
+
+\begin{itemize}
+\item the build directory used to create the ISO will be:\textbf{/home/xtreemos/build\_bcd/build/XtreemOS-2.1.1-x86\_64}
+\item the iso directory will be: \textbf{/home/xtreemos/build\_bcd/iso/XtreemOS-2.1.1-x86\_64}
+\item ISO name will be: \textbf{XtreemOS-2.1.1-x86\_64.iso}
+\item The chroot and logs are in \textbf{/tmp/XtreemOS-2.1.1-x86\_64} directory
+\item all urpmq queris are stored in \textbf{/tmp/XtreemOS-2.1.1-x86\_64/urpmq} directory
+\item previous urpmq queries were in \textbf{/var/lib/bcd/XtreemOS-2.1.1-x86\_64} directory
+\end{itemize}
+
+
+\subsection{running output}
+
+
+\newpage
+\section{ISSUES}
+
+\begin{itemize}
+\item if you want to build ISO for x86\_64 you must use an x86\_64 system (due to \textbf{urpmi})
+\item if hdlist/synthesis are corrupted in your repositery, you can't build ISO
+\item don't check for bad rpm
+\item BCD do an ``urpmq --updates'' wich can be removed to speed up the process
+\end{itemize}
+
+\end{document}
diff --git a/doc/mandriva-logo.jpg b/doc/mandriva-logo.jpg
new file mode 100644
index 0000000..ffc5829
--- /dev/null
+++ b/doc/mandriva-logo.jpg
Binary files differ