On Wed, Mar 21, 2007 at 04:50:30PM -0700, Steve Langasek wrote:
> On Thu, Mar 22, 2007 at 12:05:30AM +0100, Pierre Habouzit wrote:
> > On Wed, Mar 21, 2007 at 03:51:20PM -0700, Steve Langasek wrote:
> > > On Wed, Mar 21, 2007 at 11:16:14PM +0100, Pierre Habouzit wrote:
> > > >   If we don't, I don't see the purpose of the policy alltogether.
> 
> > > Allowing transitions between default versions of python without package
> > > renames, bypassing NEW, allowing binNMUable transitions, and generally
> > > simplifying the python upgrade path for users across releases.
> 
> > > Supporting multiple binary extensions in a single python-foo package is a
> > > tool that *facilitates* that goal, but it was *never* supposed to be
> > > mandatory.  There are extensions with no/few reverse-dependencies and a
> > > small install base, such that supporting multiple versions of python is
> > > useless archive bloat.
> 
> >   I see. What does "current" has to do with it then ? in the current
> > state of affairs, nothing prevent the maintainer to only build the
> > package for $(pyversions -d) only, which would be:
> >   (1) binNMUable
> >   (2) only built for the current python version as per spec of what you
> >       want to achieve.
> 
> In the original proposal, 'current' was the flag to tell the packaging tools
> that pyversions -d *should* be used.  There is of course nothing that stops
> a maintainer from invoking pyversions -d manually;

  Okay I see. As a coder, I don't like it then, and I feel reinforced in
my gut dislike of that field. "current" is declarative, and does not
says anything about what the packager really put in his debian/rules.

  If he does not writes what has to be to multi-build the package, and
that he does not puts current, well, the package basically will only be
built for current. As you already acknowledge the reverse situation also
holds.

  And as a matter of a fact, maintainers do not seem to understand what
current is for, Piotr python2.5-only package is a very good example of
this IMHO.

> the question is, how will
> doing so fit into the python policy, will there be support for automating
> this in the helper tools, and will packages that do this (and are therefore
> binNMUable for python transitions) be automatically detectable from the
> Sources and/or Packages files?

  like I say later, I knew it was what really matters for you. And IMHO
it's really more interesting that the dh_py* tools explains what has
really been built. They already do the job to generate the correct
substs for python:Depends and python:Provides, so basically, the code to
detect that exists.

  One just has to make it clear in the Packages.gz files. Like I said, I
don't really think Sources.gz are relevant, as it's declarative from the
maintainer PoV.

  But like said, I've not yet thought about all the consequences yet,
and I do not know what's needed or not. I've the suspicion that XB-P-V
could indeed be the way to go (even if for packages with modules
Provides: show that information already), but I'm not sure that the
current use of XB-P-V carries all the information we need.

> >   Though, I know what you will argue next, it's that you need (as a RM)
> > to be able to compute the list of packages needing to be queued for
> > binNMU.
> 
> Exactly. :)
> 
> > I've not evaluated yet if current helps here or not (I don't think so, but
> > I've nothing to backup that assertion yet, so I wont say anything until
> > I've a good and minimal solution to propose).
> 
> Ok, I look forward to hearing this proposal.

  Thanks. I'll try to make this proposal driven from our needs, and not
trying to advantage this or that implementation of the dh_py* helpers,
which was the ground of the argument when I joined this (mess ?) half a
year ago. I think with your explanations, I quite understand the
requirements from the user and packager point of view (NEW, number of
packages efficiency, etc...), and I believe the sole other need is the
ease to deal with transitions from the RM PoV and for that it needs to
answer the 3 questions:

  * what should be binNMUed for a python version removal (assuming it
    was not default btw ;P), that one is easy IMHO: basically nothing
    _needs_ to, but:
      + packages with a strong dependency on that pythonX.Y and _no_
        python dependency have to be dropped altogether (or likely need
        porting and are not binNMUable) ;
      + for space efficiency we could think of binNMUing every package
        that has built a public module for that particular python
        version. Here, XB-P-V is not needed if we have the Provides that
        is mandatory (and that is what Joss proposes, and I think it's
        sane anyway).

  * what should be done for a default python change: here concerned
    packages are:
      + packages with private binary extensions,
      + packages built only for the "current" python version.

  * what should be done for a new python: here concerned packages are
    _only_ packages that build public binary modules for more than the
    "current" python. Here again, XB-P-V does not seems required if the
    Provides is, they provide the same information, except for the "I'm
    only built for current and if you binNMU me I won't generate a new
    package anyway".

  So that first quick look just says that what we need is a way to find
out about packages that:
  * build private extensions (needed for question (2));
  * only build things for the default python version (opposed to those
    who build for as many as possible), knowing that I'm only speaking
    of packages with public binary modules here.
    (needed for 2, and for 3)


  *phew*. I don't think I said anything new, I was just trying to sum up
my thoughts.

-- 
·O·  Pierre Habouzit
··O                                                [EMAIL PROTECTED]
OOO                                                http://www.madism.org

Attachment: pgpcGGlxHTxWG.pgp
Description: PGP signature

Reply via email to