====== The builder script ======
===== Using the script =====
Before you start be sure your [[:DevelopingPLD:PreparingWorkingEnvironment|working enviroment]] is setup.
As the script resides in the //rpm/packages// subdirectory of your home, first you need to change your current directory to that of the script:
$ cd
$ cd rpm/packages
Now you can invoke ''./builder'' (remember that the dot and slash at the beginning are crucial) to see the list of possible parameters:
$ ./builder
The general syntax is as follows:
$ ./builder [options] package[.spec]
The ''.spec'' file extension is optional, ''builder'' will append it for you if needed.
Most common options are:
* ''-bb'' to build only binary packages (omits creating source RPM packages)
* ''-bc'' to cleanup after successfully building a package (removes the packaging directory as it is no longer needed)
* ''-r BRANCH'' to use a specific branch or revision of the given package (available branches are listed at the beginning of the building process)
* ''-U'' to fetch all the sources and update their MD5 hashes in the ''spec'' file
* ''-5'' to update MD5 hashes using locally fetched sources
* ''--with FEATURE'' or ''--without FEATURE'' to do a non-standard build (available features are listed at the beginning of the building process)
* ''-R'' to fetch dependant buildrequires. it is suggested that you install ''rpm-getdeps'' package for best results
''builder'' automatically fetches all files (including the ''spec'' file itself) needed to build the given package (if file license permits, otherwise you will need to manually download and save remaining files to your //~/rpm/SOURCES// directory). After all file requirements are satisfied, ''builder'' launches the ''rpmbuild'' binary that initializes the build process. ''rpmbuild'' starts by checking for unsatisfied package dependencies needed to perform a successful build. If it finds any, ''builder'' will exit giving you a full list of needed packages. You can use ''poldek'' to download and install these.
After the build process is complete, all binary RPM files are immediately available in your //~/rpm/RPMS// directory and source RPM packages (if any) are saved to //~/rpm/SRPMS//.
**Warning:** all PLD packages are prepared to be built from a regular user account (without special priviledges) and you should //never use your root account// to build packages for security reasons. Keep in mind that a malfunctioning script has full write access to all your filesystems and can accidentally damage things. This is especially important when working on your own ''spec'' files as a little mistake can cost you hours or days of work.
===== Examples of common use =====
To do a normal (binary) build of //foo// package:
$ ./builder -bb -bc -R foo
To perform a full build of a package that is currently being developed on the //DEVEL// branch:
$ ./builder -bc -r DEVEL foo
To update MD5 hashes after making changes to the above ''spec'' file:
$ ./builder -r DEVEL -U foo