=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 The XML configuration file =item B 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 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 =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