0

I have a python application, it can run on Python >= 2.6 and it's architecture independant.

I need the rpm package of this application to be installed on Fedora 14 (python 2.7) and Centos 6.2 (python 2.6).

I currently use mock to build one rpm package for each "flavour" and it works well. I apparently can't install the Centos compiled rpm on Fedora.

It gives me this error message :

error: Failed dependencies:
    python(abi) = 2.6 is needed by myapp-0.9.el6.noarch

Here is the relevant part of my .spec file :

%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}

Name:           myapp
Version:        #VERSION#
Release:        #RELEASE#%{dist}
Summary:        myapp

Group:          Development/Languages
License:        Apache v2
Source0:        %{name}-%{version}-#RELEASE#.tar.gz
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildArch:      noarch

BuildRequires: python-devel
BuildRequires: python-setuptools


%description
myapp

%prep
%setup -c


%build
%{__python} setup.py build

%install
%{__rm} -rf %{buildroot}

%{__python} setup.py install -O1 --skip-build --root %{buildroot}

Do I really have to use mock and build 2 rpms or is there another way to create a single generic 2.x rpm package ?

RaphDG
  • 188
  • 7

1 Answers1

1

The Python files get byte compiled at build time, which is why they require a specific Python version in order to be run. The Right Way is to have separate packages, but it should be possible to write a specfile which only installs the .py source files and therefore doesn't require a specific Python version. You will probably have to handle putting the files in all the /usr/lib/python2.X/site-packages directories you care about though.

mgorven
  • 30,615
  • 7
  • 79
  • 122