loganasherjones
loganasherjones

Reputation: 1060

Install installation requirements RPM spec

Let's say I have a spec file that looks something like this:

Name: mypackage
Version: 1.0.0
BuildRequires: cmake
%if 0%{?rhel} >= 7 || 0%{?fedora} >=17
Requires: python3
%else
Requires: python
%endif

I'm aware of yum-builddep for install my build dependencies based on the spec, I would really like a yum-installdep. Is anyone aware of a simple way to accomplish what I want given that there is some logic in the spec file?

EDIT:

I'm also aware that I can build the RPM, then install it, then uninstall it, but I'm doing this in the context of a continuous testing environment, so I'd really like to just install the dependencies to save the build time of the RPM itself.

Upvotes: 1

Views: 2597

Answers (2)

iamauser
iamauser

Reputation: 11489

Simple answer, no. rpmbuild builds a spec and when you have a Requires, it only checks it during runtime and not during the build. Only BuildRequires get checked during build time. You can build an rpm in a single mock environment for one or more runtime environments, just as your spec suggests.

If you want to test your built .rpm for python and/or python3 in a continuous test environment, then you can simply run the rpm installation in a test mode and check the result. You have to use rpm as yum doesn't provide a dry-run mode.

$ rpm -Uvh --test mypackage.rpm

or

$ rpm -qp --requires mypackage.rpm

Above would tell you what packages mypackage.rpm would need in a given environment. Based on your spec file, if you run the above command in a Fedora 17+/RHEL7 mock test environment, it would tell you that it requires python3, else python2

$ rpm -q --requires python3-setuptools | grep python
/usr/bin/python3
python(abi) = 3.6

$ rpm -q --requires python2-setuptools | grep python
/usr/bin/python2
python(abi) = 2.7

Upvotes: 2

Chris Maes
Chris Maes

Reputation: 37812

The install-dependencies will get installed automatically when you install the produced package. yum (or zypper) will manage that automatically for you.

Upvotes: 0

Related Questions