File PACKAGING-NOTES of Package python3

Notes for packagers of Python3
==============================

I. python3 and python3-base naming confusion
--------------------------------------------

1. the important stuff first

This is package "python3". However, master spec file for this package is "python3-base.spec".
That means that all important changes should be put into "python3-base.spec" and then submitted
against "python3" in OBS.

Changelogs of python3-base and python3 will be merged at some point. Now they arent,
but feel free to enter changes in either or both.

2. why is that?

Technical reasons. python3-base was originally supposed to be a minimal package with no external
dependencies - so that it can build early in the distribution rebuild. There were also some
build loops involved.
Turns out, 90% of Python's standard library can be built without external dependencies. That's
what we do - in python3-base. python3 then only contains the remaining bits - dependency-heavy
subpackages, plus small bits depending on common packages (OpenSSL, expat, readline)
Logically, python3-base must be the master spec because it builds the important parts.

3. why not rename the whole package to python3-base?

Because that would be stupid. The package is called python3.

4. so why not make python3 the minimal package and put the rest in python3-the-rest?

Because other distributions use python3-base as the minimal package as well. Also, packages
that require python3 expect the whole deal, not a stripped-down version.

5. alright, let's build python3-base from python3.spec and python3 from someother.spec

Tried that, abandoned it. It is more trouble than it's worth.


II. pre_checkin.sh
------------------

Our pre_checkin.sh takes care of copying relevant portions of python3-base.spec to python3.spec.
The "relevant portions" are:
* list of patches
* list of macro definitions
* patch apply sequence in %prep

That means that when you're adding a patch, you need only add it to python3-base.spec and it will appear
magically in python3.spec too.

If you want to replicate another section from py3-base to py3, just mark the section with
NEW-SECTION-BEGIN and NEW-SECTION-END (in both py3-base and py3) and add NEW-SECTION to list of $sections
in pre_checkin.sh

pre_checkin.sh also finds the newest python tarball in the source directory and updates versions
in all specfiles to match it. Therefore, you usually don't need to update version numbers in specs
when you update Python