| Synopsis: iurt is a collection of tools to create an automatic rebuild system. It contains the rebuild script, iurt, as well as the scheduler, ulri, and the upload script, emi. If you want to package from a .spec file, you should use rpmbuild or mock instead. |
How to get it
Just install iurt using
| # urpmi iurt |
The source code is available at http://gitweb.mageia.org/software/build-system/iurt/
| Note: For a quick start please have a look at Packagers_Mentoring_Howto#iurt. |
How to use it
There are usage examples in the mentoring howto even for cross-compiling e.g. i586 packages on an x86_64 system, which is quite a common case for packagers.
First hints are provided also in /usr/share/doc/iurt/README
Here is one link to archive.org as the mandriva wiki doesn't exist anymore:
Configuration
For each distro version you want to build, you must create a configuration file in the home of the user running iurt. This file is a perl script which will be loaded as a configuration variable. E.g. to recompile on cauldron, you must create a file named ~/.iurt.cauldron.conf.
As of today, Mageia 8 era, installing iurt will provide you with a default configuration file for cauldron: /etc/iurt/build/cauldron.conf
| Here be dragons! Be careful, this file is just a template and it does not provide a full configuration for cauldron. |
A starting point could be to copy it into ~/.iurt.8.conf and to modify it to build for Mageia 8.
When using iurt, the --distro option is here to decide which config file has to be built. Make use of the option --help-config to be sure your config file is ok.
Here is an example:
| { home => "/home/mageia/", cache_home => "/home/mageia/.bugs/", supported_arch => [ 'i586', 'x86_64' ], upload => "kenobi:/home/mageia/uploads/", local_home => "/export/home/mageia/", unwanted_packages => '^monotone-', repository => '/mnt/BIGDISK/dist/', rsync_to => "mageia\@qa:/var/www/html/build/iurt/", admin => 'warly@mageia.org', sendmail => 1, packager => 'Iurt the rebuild bot <warly@mageia.org>', install_chroot_binary => '~warly/files/rpm-rebuilder/install-chroot-tar.sh', distribution => 'Mageia Linux', vendor => 'Mageia', basesystem_media => '' } |
homeyour home dir, defaults to$HOME;cache_homewhere to store the iurt cache (for cooker this cache is about 3 MB), defaults to$HOME/.bugs/;uploadwhere to copy resulting packages, defaults to$HOME/uploads/;local_homewhere to build packages (this can be different from you$HOMEif you are on NFS and you want to compile locally), defaults to$HOME;unwanted_packagesif you do not want to compile a certain package, you can enter here a regexp, defaults to nothing;repositoryis the location of your local packages, note that your packages must be in a Mageia like structure;rsync_tocan be set if you want to send the reports on another machine, the default is to do nothing;adminwho to spam with all the warning messages. Default is nothing;sendmailif a warning mail will be sent for encountered error. Default is not to send mail;packagerfield used as packager tag and mail origin. Default is 'Iurt';install_chroot_binaryprogram to create and manage chroot, it is not yet packaged and needs to be fetched for the CVS. Default isinstall-chroot-tar.sh;vendordefault is Mageia;distributiondefault is Mageia Linux;basesystem_mediato select which media will be used to create the initial chroot.
To have a full listing of available options, use iurt --config-help --distro cauldron so that you can debug your default values.
| Note: at the first run iurt will be quite slow because it will need to scan all the packages to populate its cache.
|
| Note: It is highly recommended to use the same tree as Mageia, for storing your repository |
/some/path/cauldron/$arch/media/main
ulri
ulri checks the queue every minute (in cron) and if there are packages to build, finds a build node where there is no build in progress, scps the src.rpm, then sshes to the build machine to run iurt. It then periodically checks if the build is finished, then scps back the results and cleans things up.
ulri is configured with the files /etc/iurt/upload.conf and ~/.upload.conf The list of available build nodes, among other things, are configured there. Any special ssh configuration needed to reach a build node (e.g. a nonstandard port number) can be configured in the appropriate Host entry in ~/.ssh/config