NAME

CPANPLUS::Dist::Debora::Package::RPM - Create binary RPM packages

VERSION

version 0.007

SYNOPSIS

use CPANPLUS::Dist::Debora::Package::RPM;

my $package =
    CPANPLUS::Dist::Debora::Package::RPM->new(module => $module);

my $ok = $package->create(verbose => 0|1);
my $ok = $package->install(verbose => 0|1);

DESCRIPTION

This CPANPLUS::Dist::Debora::Package subclass creates binary RPM packages from Perl distributions.

SUBROUTINES/METHODS

format_priority

my $priority = CPANPLUS::Dist::Debora::Package::RPM->format_priority;

Checks if the RPM package tools are available and if the system uses RPM.

create

my $ok = $package->create(verbose => 0|1);

Creates a package.

install

my $ok = $package->install(verbose => 0|1);

Installs the package.

outputname

my $rpm = $package->outputname;

Returns the package filename, e.g. ~/rpmbuild/RPMS/noarch/perl-Some-Module-1.0-1.noarch.rpm.

rpmdir

my $rpmdir = $package->rpmdir;

Returns the name of the directory where binary RPM package files are stored. Defaults to %{_topdir}/rpmbuild/RPMS, which is usually in your home directory.

arch

my $arch = $package->arch;

Returns "noarch" if the Perl distribution is hardware independent. Otherwise the hardware architecture is returned, for example "x86_64".

dist

my $dist = $package->dist;

Returns the dist suffix, e.g. ".fc34" on Fedora 34 and ".mga8" on Mageia 8, or the empty string.

release

my $release = $package->release;

Returns the package release, which is composed of the build number and the dist suffix.

epoch

my $epoch = $package->epoch;

Returns the package epoch. Taken from a previously installed package or the environment variable EPOCH.

distribution

my $distribution = $package->distribution;

Gets and returns the distribution, for example "openSUSE Tumbleweed", from the RPM macro %distribution or the /etc/os-release file.

provides

for my $capability (@{$package->provides}) {
  say $capability;
}

Returns additional capabilities, i.e. package and module names, that are provided by this package.

obsoletes

for my $package_name (@{$package->obsoletes}) {
  say $package_name;
}

Returns packages that are obsoleted by this package.

spec

my $text = $package->spec;

Fills in a template and returns a spec file.

DIAGNOSTICS

See CPANPLUS::Dist::Debora for diagnostics.

CONFIGURATION AND ENVIRONMENT

See CPANPLUS::Dist::Debora for supported files and environment variables.

DEPENDENCIES

Requires the Perl modules CPANPLUS and Text::Template from CPAN.

Requires the operating system packages "perl", "rpm-build", "gcc", "make", "sudo" and, if available, "perl-generators".

INCOMPATIBILITIES

None.

SEE ALSO

rpm(8), rpmbuild(8)

AUTHOR

Andreas Vögele <voegelas@cpan.org>

BUGS AND LIMITATIONS

The License field is populated with SPDX license expressions.

The date in the RPM changelog is in Coordinated Universal Time (UTC).

AutoReq is enabled for architecture-dependent packages so that shared library dependencies are added. Unfortunately, there are Perl distributions with hardcoded dependencies on /opt/bin/perl that are also picked up by AutoReq. Create an additional RPM package that provides a symbolic link from /opt/bin/perl to /usr/bin/perl if you need to install such Perl distributions.

This module cannot be used in taint mode.

LICENSE AND COPYRIGHT

Copyright 2022 Andreas Vögele

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.