# Mageia build system & tools ***This is an attempt to summarize, document and organize the whole tools making the buildsystem here at Mageia.*** ## Big picture TODO _show_ what are all the pieces of the build system, how they interact, who interacts with these, and what are the basic actions of each actor, and expected reactions. Objects: * source code * spec file * source package * compiled package * packages repository * system image * ? Roles: * distribution release manager * build system admin * packages repository admin * packager * system (scheduled/triggered tasks) ---- ## Tools It currently comprises: * bcd * iurt * youri * mgarepo * web * draklive (in soft/draklive and soft/draklive-install) ### bcd * BCD a new tool to build Mandriva ISO. * License: GNU LGPL 2.1 * works: manually (can be automated?) * for: distribution release manager * input: distribution repository + specific configurations * output: installable ISO image of the distribution (what about live images? other images?) ### draklive * draklive is... * License: GNU GPL 2+ * works: manually (can be automated?) * for: distribution release manager * input: distribution repository + specific configuration * output: ### iurt * No READMEs. Descriptions taken from header docs: * iurt: compare and rebuild packages on different architecture * emi: upload packages in queue when all the mandatory architectures are done * ulri: compare and rebuild packages on different architecture * TODOs are in comments in the code, should be checked for current validity. * License: GNU GPL v2+ * works: manually * for: packager * input: ? * output: ? ### youri * YOURI stands for "Youri Offers an Upload & Repository Infrastucture". * It aims to build tools making management of a coherent set of packages easier. Managing a package repository involves many tasks, such as keeping packages tree tidy, generating packages indexes, synchronising bug report system, running coherency checks, checking for available updates, etc... Instead of a gazillion project-specific scripts, we aim to provide a generic package-format independant framework, so as to build coherent and robust tools. * Components: * youri-check allows to check packages * youri-upload allows to upload packages * License: Perl License * works: automatically and manually? * for: buildsystem/repository admin? * input: ? * output: ? ### mgarepo * mgarepo is the tool used to manage RPM packages in a subversion repository on Mageia. * It is a fork of the repsys tool used by Mandriva. * It is used to create, tag releases, generate .src.rpm, generate changelog, and request new package releases for build. It mostly acts as a interface to svn(1) commands and small task scripts run that on the build system side over ssh(1). * For more information, see mgarepo(8) * The discussion on the development of mageiarepo takes place on the Mageia developers mailing list. * License: * Howtos: https://wiki.mageia.org/en/Mgarepo * works: manually * for: packager * input: ? * output: ? ### web * hosts components to report various states in the build system (upload queue, uploaded packages and build results, etc.) * License: * works: auto * for: anyone willing to checkout status info about the whole system * input: various data sources in the system (TODO details) * output: HTML documents and parsable data structures (JSON, text) ---- ## Code Code is available in: - [Subversion](svn://svn.mageia.org/svn/soft/build_system), - [Web view](http://svnweb.mageia.org/soft/build_system). --- ## TODO & BUGS * please check out [our quite extensive Bugzilla](https://bugs.mageia.org/buglist.cgi?query_format=advanced&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&component=BuildSystem&product=Infrastructure) and use it for further bugs. ----