rpmrebuild_plugins man page

rpmrebuild_plugins — is an engine to expand rpmrebuild functionality.

Synopsis

rpmrebuild [non-plugins-option] [plugins-option] <packagename>

Description

rpmrebuild itself try to do it's best to reconstruct rpm package as close to original as possible.

rpmrebuild plugins's aim is opposite - somehow change rebuilded rpm.

Rpmrebuild Without Plugins

Without plugins process of rpm rebuilding looks like:

query -
Query rpm to be rebuilded for the different pieces of information.
concatenate -
Create from these pieces specfile.
build -
Use specfile to build rpm.

Rpmrebuild with Plugins

With plugins process of rpm rebuilding looks like:

query -
Query rpm to be rebuilded for the different pieces of information.
change parts -
Change parts of the spec created by query.
concatenate -
Create specfile from the pieces.
change whole -
Change concatenated specfile.
build -
use specfile to build rpm.

Specfile Pieces

Query" queries for the following information:

preamble
conflicts
obsoletes
provides
requires
description
files
triggers
pre
post
preun
postun
verifyscript
changelog

Specfile Concatenation

Concatenate" create 'full' specfile from the pieces. It do following:

add AutoReq / AutoProv tags
add BuildRoot tag
add some defines to adjust rpm's behaviour.
double all '%' - it'll prevent rpm from attempting expand %something as macro.
add '%description' before description
add '%files' before files
add '%changelog' before changelog

Plugins Types

rpm building (or rebuilding) process has two inputs: specfile and package's files under buildroot directory. So, there are two plugins type:

- for specfile modification (exemple : demo.plug).

- for files (under buildroot) modification (exemple : demofiles.plug).

Plugin's Interface

Plugins are executed AFTER rpm package is queried and BEFORE new package is rebuilded in the order specified on the command line.

Exit status
Any plugin should exit with status 0 on success, and any other value on failure. Failed plugin will immediately terminate whole rpmrebuild.
Environment variables

all plugins get following environment variables:

RPMREBUILD_TMPDIR
directory for plugin's temporaries files. plugin no need remove this directory - rpmrebuild will care.
RPMREBUILD_PLUGINS_DIR
directory with plugins.
RPMREBUILD_COMMENT_MISSING
if 'yes' missing files commented in the 'files' part of specfile
RPMREBUILD_PUG_FROM_FS
if 'yes' permission owner and group in the part file were taken from filesystem, otherwise - from rpm's database.
RPMREBUILD_WARNING
if 'yes' rpmrebuild will produce warning for filenames with glob characters.
PATH
This variable is set to $RPMREBUILD_PLUGINS_DIR:$PATH
LONG_OPTION
Contains long option (without --) which was used to invoke plugin.
RPM_BUILD_ROOT
For plugins modifying files under buildroot set to buildroot. For other plugins - empty.
stdin and stdout
Plugins for specfile modification (i.e., invoked with --spec-change-*) got "source" spec file from stdin and have to write resulting spec file to stdout.

Plugin's Examples

Some plugins are given as examples :

demofiles.plug (change-files) : a "dummy" plugin to show what can be done with a file plugin

demo.plug (change-spec-*) : a "dummy" plugin to show how spec plugins work

uniq.plug (change-spec) : a very simple "real" plugin to sort and clean duplicate spec lines

file2pacDep.plug (change-spec-requires) : a "real" plugin to convert file dependencies to package dependencies

nodoc.plug (change-spec-files): a "real" plugin to remove documentation from a package

set_tag.plug (change-spec-preamble) : a "real" plugin to change a tag in spec file

unset_tag.plug (change-spec-preamble) : a "real" plugin to comment a tag in spec file

Plugins' Manpages Filename Convention

If you are going to write plugin (and manpage for it) it's strongly recommended than manpage's file looks like name.1rrp - this way command 'man -k rrp' will provide list of all rpmrebuild's plugins installed. Please note, that makewhatis should be run before newly installed manpages will be available for 'man -k rrp'

Authors

Eric Gerbier <gerbier@users.sourceforge.net>
Valery Reznic <valery_reznic@users.sourceforge.net>

See <URL:http://rpmrebuild.sourceforge.net/>.

See Also

rpm(8), rpmbuild(8), rpmrebuild(1), demofiles.plug(1), demo.plug(1), nodoc.plug(1), uniq.plug(1), file2pacDep.plug(1), set_tag.plug(1), unset_tag.plug(1)
'man -k rrp' for plugins specific manpages

Referenced By

compat_digest.plug.1rrp(1), demofiles.plug.1rrp(1), demo.plug.1rrp(1), file2pacDep.plug.1rrp(1), nodoc.plug.1rrp(1), rpmrebuild(1), set_tag.plug.1rrp(1), uniq.plug.1rrp(1), un_prelink.plug.1rrp(1), unset_tag.plug.1rrp(1).

2.11 Valery Reznic rpm tools