From Fedora Project Wiki
No edit summary
Line 62: Line 62:
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->


The changes made during XX will be reverted.
The changes made during the [[Changes/System Python|System Python]] change from [[Releases/24 | Fedora 24]] will be reverted.


A system-python package will be created as a copy of python3 package. Unlike python3, it will be changed so that:
A new system-python (source) package will be created as a copy of python3 package. Unlike python3, it will be changed so that:


* the location of files will not be <code>/usr/lib/python3.6/</code> but something else, like <code>/usr/lib/system-python/</code>
* the location of files will not be <code>/usr/lib/python3.6/</code> but something else, like <code>/usr/lib/system-python/</code>
** the script that generates the <code>python(abi)</code> requirement will be adapted to generate <code>system-python(abi)</code> requirement for that location
* the location of the binary will be <code>/usr/libexec/system-python</code>
* the location of the binary will be <code>/usr/libexec/system-python</code>
* all the macros will use the system python binary and will be renamed
* all the macros will use the system python binary and will be renamed
* the modules that are now not part of system-python-libs but rather python3-libs will relocate to system-python-devel to be available only on buildtime.
* all subpackages will be named <code>system-python-*</code>
* the debug build will be disabled
* the modules that are (before this change) not part of <code>system-python-libs</code> but rather <code>python3-libs</code> will relocate to <code>system-python-devel<code> to be available only on build-time
* <code>system-python-libs</code> will provide <code>system-python(abi)</code> instead of <code>python(abi)</code>


 
Several packages will introduce a new <code>system-python-</code> subpackage. Example specfile of such package:
Example specfile of a package that will have a system-python- subpackage:


  %global pypi_name foo
  %global pypi_name foo
Line 186: Line 189:
* Proposal owners:
* Proposal owners:
** identify a list of runtime and build dependencies of dnf
** identify a list of runtime and build dependencies of dnf
** create a system-python source package
** create a <code>system-python</code> source package
** add a system-python- subpackage to identified list of packages
** revert system-python related things from the {{package|python3}} package
** add a <code>system-python-</code> subpackage to identified list of packages
** switch dnf to use that stack
** switch dnf to use that stack
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->

Revision as of 17:24, 30 June 2017


System Python Stack

Summary

A revisit of the System Python change from Fedora 24. System Python will be a separate stack fo Python packages aimed to provide all necessary dependencies to run and build dnf. In Fedora 27 this will be Python 3.6 (same version as python3, but this might change in the future with the Modularity effort).

Owner

  • Name: Miro Hrončok
  • Email: <python-maint at redhat.com>
  • Release notes owner:

Current status

  • Targeted release: Fedora 27
  • Last updated: 2017-06-30
  • Tracker bug: <will be assigned by the Wrangler>

Detailed Description

The changes made during the System Python change from Fedora 24 will be reverted.

A new system-python (source) package will be created as a copy of python3 package. Unlike python3, it will be changed so that:

  • the location of files will not be /usr/lib/python3.6/ but something else, like /usr/lib/system-python/
    • the script that generates the python(abi) requirement will be adapted to generate system-python(abi) requirement for that location
  • the location of the binary will be /usr/libexec/system-python
  • all the macros will use the system python binary and will be renamed
  • all subpackages will be named system-python-*
  • the debug build will be disabled
  • the modules that are (before this change) not part of system-python-libs but rather python3-libs will relocate to system-python-devel to be available only on build-time
  • system-python-libs will provide system-python(abi) instead of python(abi)

Several packages will introduce a new system-python- subpackage. Example specfile of such package:

%global pypi_name foo

Name:           python-%{pypi_name}
Version:        0.13
Release:        1%{?dist}
Summary:        Python %{pypi_name} module

License:        GPLv2
URL:            https://github.com/fedora-python/%{pypi_name}
Source0:        https://files.pythonhosted.org/packages/source/f/%{pypi_name}/%{pypi_name}-%{version}.tar.gz

BuildRequires:  python2-devel
BuildRequires:  python2-setuptools

BuildRequires:  python3-devel
BuildRequires:  python3-setuptools

BuildRequires:  system-python-devel
BuildRequires:  system-python-setuptools

BuildArch:      noarch

%description
...

%package -n     python2-%{pypi_name}
Summary:        %{summary}
Requires:       python2-bar
%{?python_provide:%python_provide python2-%{pypi_name}}

%description -n python2-%{pypi_name}
...

%package -n     python3-%{pypi_name}
Summary:        %{summary}
Requires:       python3-bar
%{?python_provide:%python_provide python3-%{pypi_name}}

%description -n python3-%{pypi_name}
...


%package -n     system-python-%{pypi_name}
Summary:        %{summary}
Requires:       system-python-bar

%description -n system-python-%{pypi_name}
...


%prep
%autosetup -n %{pypi_name}-%{version}


%build
%py2_build
%py3_build
%sypy_build

%install
%py2_install
rm %{buildroot}%{_bindir}/%{pypi_name}

%sypy_install
rm %{buildroot}%{_bindir}/%{pypi_name}

%py3_install


%check
export PYTHONPATH=%{buildroot}%{python2_sitelib}
%{__python2} -m unittest discover -v

export PYTHONPATH=%{buildroot}%{python3_sitelib}
%{__python3} -m unittest discover -v

export PYTHONPATH=%{buildroot}%{systempython_sitelib}
%{__systempython} -m unittest discover -v


%files -n python2-%{pypi_name}
%doc README.rst CHANGES.rst
%license COPYING
%{python2_sitelib}/%{pypi_name}.so
%{python2_sitelib}/%{pypi_name}-%{version}-py?.?.egg-info

%files -n python3-%{pypi_name}
%doc README.rst CHANGES.rst
%license COPYING
%{_bindir}/%{pypi_name}
%{python3_sitelib}/%{pypi_name}.cpython-%{python3_version_nodots}*.so
%{python3_sitelib}/%{pypi_name}-%{version}-py?.?.egg-info

%files -n system-python-%{pypi_name}
%doc README.rst CHANGES.rst
%license COPYING
%{systempython_sitelib}/%{pypi_name}.cpython-%{systempython_version_nodots}*.so
%{systempython_sitelib}/%{pypi_name}-%{version}-py?.?.egg-info

%changelog
...

Benefit to Fedora

With the Modularity effort a minimal stack of Python only needed to run dnf is needed to be part of the Platform. Changing System Python to be a separate stack will allow us to do that.


Scope

  • Proposal owners:
    • identify a list of runtime and build dependencies of dnf
    • create a system-python source package
    • revert system-python related things from the python3 package
    • add a system-python- subpackage to identified list of packages
    • switch dnf to use that stack
  • Other developers: N/A (not a System Wide Change)
  • Policies and guidelines: N/A (not a System Wide Change)
  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

N/A (not a System Wide Change)

How To Test

N/A (not a System Wide Change)

User Experience

Nothing should change for the user, except a slightly larger amount of packages will be installed on the system.

Dependencies

N/A (not a System Wide Change)

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change), Yes/No
  • Blocks product? product

If not done on time: Keep dnf running on python3. Finish the work in time of Fedora 28.

If proven not to work as designed: Retire system-python package and remove all the system-python- subpackages. Provide/obsolete system-python- subpackages from their python3- counterparts.

Documentation

N/A (not a System Wide Change)

Release Notes