[EPEL-devel] python34 packages for EPEL

Robert Kuska rkuska at redhat.com
Thu Jul 16 08:37:34 UTC 2015



----- Original Message -----
> From: "Orion Poplawski" <orion at cora.nwra.com>
> To: "EPEL Development List" <epel-devel at lists.fedoraproject.org>, "Discussion of RPM packaging standards and
> practices for Fedora" <packaging at lists.fedoraproject.org>, "Fedora Python SIG"
> <python-devel at lists.fedoraproject.org>, mstuchli at redhat.com
> Sent: Thursday, July 16, 2015 12:41:13 AM
> Subject: python34 packages for EPEL
> 
> Sorry for the cross posting - let's follow up on the EPEL list
> 
> We now have python34 in EPEL (yay - thanks Matej and others!).  Starting to
> look at packaging some modules.  We have
> https://fedoraproject.org/wiki/User:Bkabrda/EPEL7_Python3 as a starting point
> which looks pretty good.  One wrinkle though is that we have a bunch of
> python2 packages provided by RHEL that we'll want to provide python3X
> versions
> for in EPEL, but not ship python2 versions.  So a question becomes, where do
> they get maintained?  Either:
> 
> - epel7 branch of the python-blah package in Fedora?
> - a new python3X-blah package?
> 
> And if in an epel7 branch of an existing package, is it conceivable to
> maintain a common spec across EPEL and Fedora?
> 
> I think this is somewhat representative of the changes needed in a more
> complicated package (setuptools) which isn't actually too terrrible:
> 
> diff --git a/python-setuptools.spec b/python-setuptools.spec
> index 7f37e90..cb96b9f 100644
> --- a/python-setuptools.spec
> +++ b/python-setuptools.spec
> @@ -1,9 +1,9 @@
> -%if 0%{?fedora}
> +%if 0%{?fedora} || 0%{?rhel} >= 7
>  %global with_python3 1
> 
>  # This controls whether setuptools is build as a wheel or not,
>  # simplifying Python 3.4 bootstraping process
> -%global build_wheel 1
> +%global build_wheel 0
>  %else
>  %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from
> distutils.sysconfig import get_python_lib; print (get_python_lib())")}
>  %endif
> @@ -44,10 +44,10 @@ BuildRequires:  python-pip
>  BuildRequires:  python-wheel
>  %endif
>  %if 0%{?with_python3}
> -BuildRequires:  python3-devel
> +BuildRequires:  python%{python3_pkgversion}-devel
>  %if 0%{?build_wheel}
> -BuildRequires:  python3-pip
> -BuildRequires:  python3-wheel
> +BuildRequires:  python%{python3_pkgversion}-pip
> +BuildRequires:  python%{python3_pkgversion}-wheel
>  %endif
>  %endif # if with_python3
>  # For unittests
> @@ -68,7 +68,7 @@ This package also contains the runtime components of
> setuptools, necessary to
>  execute the software that requires pkg_resources.py.
> 
>  %if 0%{?with_python3}
> -%package -n python3-setuptools
> +%package -n python%{python3_pkgversion}-setuptools
>  Summary:        Easily build and distribute Python 3 packages
>  Group:          Applications/System
> 
> @@ -76,7 +76,7 @@ Group:          Applications/System
>  # has been present since python3-3.2.  We do not ship python3-3.0 or
>  # python3-3.1 anywhere
> 
> -%description -n python3-setuptools
> +%description -n python%{python3_pkgversion}-setuptools
>  Setuptools is a collection of enhancements to the Python 3 distutils that
>  allow
>  you to more easily build and distribute Python 3 packages, especially ones
>  that
>  have dependencies on other packages.
> @@ -156,6 +156,9 @@ chmod +x
> %{buildroot}%{python3_sitelib}/setuptools/command/easy_install.py
>  popd
>  %endif # with_python3
> 
> +%if 0%{?epel}
> +rm %{buildroot}/%{_bindir}/easy_install
> +%else
>  %if 0%{?build_wheel}
>  pip2 install -I dist/%{python2_wheelname} --root %{buildroot}
> --strip-file-prefix %{buildroot}
>  %else
> @@ -167,9 +170,11 @@ rm -rf %{buildroot}%{python_sitelib}/setuptools/tests
>  sed -i '/^setuptools\/tests\//d' %{buildroot}%{python2_record}
>  %endif
> 
> -install -p -m 0644 %{SOURCE1} %{SOURCE2} .
>  find %{buildroot}%{python_sitelib} -name '*.exe' | xargs rm -f
>  chmod +x %{buildroot}%{python_sitelib}/setuptools/command/easy_install.py
> +%endif # 0%{?epel}
> +
> +install -p -m 0644 %{SOURCE1} %{SOURCE2} .
> 
>  %check
>  %{__python} setup.py test
> @@ -184,15 +189,17 @@ popd
>  rm -rf %{buildroot}
> 
> 
> +%if !0%{?epel}
>  %files
>  %defattr(-,root,root,-)
>  %doc *.txt docs
>  %{python_sitelib}/*
>  %{_bindir}/easy_install
>  %{_bindir}/easy_install-2.*
> +%endif
> 
>  %if 0%{?with_python3}
> -%files -n python3-setuptools
> +%files -n python%{python3_pkgversion}-setuptools
>  %defattr(-,root,root,-)
>  %doc psfl.txt zpl.txt docs
>  %{python3_sitelib}/*
> 
> 
> One note - according to
> https://fedoraproject.org/wiki/User:Bkabrda/EPEL7_Python3#Specfiles.2C_Macros.2C_Packaging_Process
> %{python3_pkgversion} is supposed to be defined in Fedora, but I don't see it
> (at least not in F22). In the review
> (https://bugzilla.redhat.com/show_bug.cgi?id=1219411#c8) there seems to be
> some uncertainty as to where it will land?

We firstly need to pass packaging guidelines trough FPC, Matt should take
care of that but he is currently on PTO and next week we will be at EuroPython
ping us on IRC {rkuska, mstuchli} in case you'll (or anyone interested in Python3)
be there too we can discuss this in person.

After the approval from FPC we can ask to include macros in the buildroot.

> 
> Comments?
> 
> --
> Orion Poplawski
> Technical Manager                     303-415-9701 x222
> NWRA, Boulder/CoRA Office             FAX: 303-415-9702
> 3380 Mitchell Lane                       orion at nwra.com
> Boulder, CO 80301                   http://www.nwra.com
> _______________________________________________
> python-devel mailing list
> python-devel at lists.fedoraproject.org
> https://admin.fedoraproject.org/mailman/listinfo/python-devel


--
Robert Kuska
{rkuska}


More information about the epel-devel mailing list