[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#682906: unblock: python-defaults/2.7.3-2



Hi Scott,

First, a disclaimer: I'm not a python expert or a member of the
release team, so please take anything I say with a grain of salt.
This review is mostly meant to help get this unstuck.

Scott Kitterman wrote:

>  - Match the version number for python and python2.7.3.  Although this is
>    costmetic, it does cause confusion.

This is why the unblock is blocked by #683053, right?

>  - Matches the feature set in squeeze between dh_python2 and dh_python3.  It
>    would be difficult for backporters, derivatives, and third party vendors to
>    keep straight which did what with a skewed feature set.  This is better
>    avoided.

The diff is (including changelog and tests)

  45 files changed, 466 insertions(+), 205 deletions(-)

including

 dh_python2                       |   52 +++++++++++++-------

As we've seen shebang normalization is not without complications.  So
at this stage in the freeze, this wouldn't be the usual candidate for
an unblock.

On the other hand:

 (1) The impact is mostly at build time for rbuilddeps, and this
     change has been in sid for half a year already.  Any damage it
     causes has probably already been done. :)

 (2) Worse, most packages are built in unstable and only migrate to
     testing later, except for tpu, spu, and security uploads.  Some
     source packages could be relying on the effect of this upload
     already and in that case _not_ migrating would just make trouble
     for stable maintenance and security updates.

 (3) On the bright side, it's had half a year of testing.

So I am (reluctantly) in favor of including most of these changes
in wheezy, at least in principle.

On to the diff.

[...]
> --- python-defaults-2.7.3~rc2/debian/control	2012-06-05 22:59:07.000000000 -0400
> +++ python-defaults-2.7.3/debian/control	2012-07-26 18:26:10.000000000 -0400
> @@ -13,7 +13,7 @@
>  Package: python
>  Architecture: all
>  Priority: standard
> -Depends: ${misc:Depends}, python2.7 (>= 2.7.3~rc2-1~), python-minimal (= ${binary:Version})
> +Depends: ${misc:Depends}, python2.7 (>= 2.7.3-1~), python-minimal (= ${binary:Version})
[... etc ...]
> -Depends: ${misc:Depends}, python (= ${binary:Version}), python2.7-dbg (>= 2.7.3~rc2-1~)
> +Depends: ${misc:Depends}, python (= ${binary:Version}), python2.7-dbg (>= 2.7.3-1~)

Not currently satisfied by python2.7 in wheezy.  Would a tpu upload
that makes the other changes but leaves this one out make sense to
you?

Then the bulk of this upload could cleanly migrate to wheezy and the
python2.7 update could be considered separately and still could happen
if it seems appropriate.

> --- python-defaults-2.7.3~rc2/debian/python-policy.sgml	2012-06-05 23:07:12.000000000 -0400
> +++ python-defaults-2.7.3/debian/python-policy.sgml	2012-07-26 18:26:10.000000000 -0400
> @@ -330,7 +330,7 @@
>  	  <item>
>  	    <p>
>  	      /usr/share/python/runtime.d/*.rtremove: these are called when
> -	      a runtime is installed or stops being supported.  The first
> +	      a runtime is removed or stops being supported.  The first

Sure.

[...]
> --- python-defaults-2.7.3~rc2/debian/pyversions.py	2012-06-05 22:58:56.000000000 -0400
> +++ python-defaults-2.7.3/debian/pyversions.py	2012-07-26 18:26:10.000000000 -0400
> @@ -110,7 +110,8 @@
>      else:
>          return _unsupported_versions
>  
> -_supported_versions = None
> +_supported_versions = ["python%s" % ver for ver in \
> +                       os.environ.get('DEBPYTHON_SUPPORTED', '').split()]

That's

  * pyversions, dh_python2, pycompile: allow to override system's list of
    supported Python versions via DEBPYTHON_SUPPORTED and default Python
    version via DEBPYTHON_DEFAULT env. variables

Do any packages in wheezy use these envvars?  What will happen if they
are rebuilt against python-defaults from wheezy?

[...]
> --- python-defaults-2.7.3~rc2/debpython/depends.py	2012-06-05 22:58:56.000000000 -0400
> +++ python-defaults-2.7.3/debpython/depends.py	2012-07-26 18:26:10.000000000 -0400
[...]
> @@ -94,11 +94,13 @@
>              tpl = 'python-dbg' if dbgpkg else 'python'
>              minv = pub_vers[0]
>              maxv = pub_vers[-1]
> -            if dbgpkg:
> -                tpl2 = 'python%d.%d-dbg'
> -            else:
> -                tpl2 = 'python%d.%d'
> -            self.depend(' | '.join(tpl2 % i for i in debsorted(pub_vers)))
> +            # generating "python2.X | python2.Y | python2.Z" dependencies
> +            # disabled (see #625740):
> +            #if dbgpkg:
> +            #    tpl2 = 'python%d.%d-dbg'
> +            #else:
> +            #    tpl2 = 'python%d.%d'
> +            #self.depend(' | '.join(tpl2 % i for i in debsorted(pub_vers)))

If I understand #625740 correctly, without this change, dh_python2
generates "python2.6 | python2.7" dependencies which apt (sometimes?)
takes as defaulting to python2.6.  I think this change should be
included in wheezy.

[...]
> @@ -112,21 +114,17 @@
>          if stats['compile']:
>              self.depend(MINPYCDEP)
>  
> -        if not options.ignore_shebangs:
> -            for interpreter, version in stats['shebangs']:
> -                self.depend(interpreter)
> +        for interpreter, version in stats['shebangs']:
> +            self.depend(interpreter)
[...]

Shebang rewriting changes.  I assume wheezy should have them,
since there isn't time to track down rbuilddeps that might be
relying on this for appropriate shebangs.

> --- python-defaults-2.7.3~rc2/debpython/pydist.py	2012-06-05 22:58:56.000000000 -0400
> +++ python-defaults-2.7.3/debpython/pydist.py	2012-07-26 18:26:10.000000000 -0400
[...]
> @@ -41,7 +42,7 @@
>          ;\s*
>          (?P<standard>PEP386)?                    # PEP-386 mode
>          \s*
> -        (?P<rules>s/.*)?                         # translator rules
> +        (?P<rules>(?:s|tr|y).*)?                 # translator rules
>      )?

Do source packages in wheezy use this feature?

[...]
> +++ python-defaults-2.7.3/dh_python2	2012-07-26 18:26:10.000000000 -0400
[...]
> @@ -380,6 +380,11 @@
>              fpath = join(root, fn)
>              if not exists(fpath):
>                  # could be removed while handling .so symlinks
> +                if islink(fpath) and '.so.' in split(fpath)[-1]:
> +                    # dangling symlink to (now removed/renamed) .so file
> +                    # which wasn't removed yet (see test3's quux.so.0)
> +                    log.info('removing symlink: %s', fpath)
> +                    os.remove(fpath)

Makes sense.

[...]
> --- python-defaults-2.7.3~rc2/dh_python2.rst	2012-06-05 22:58:56.000000000 -0400
> +++ python-defaults-2.7.3/dh_python2.rst	2012-07-26 18:26:10.000000000 -0400

These changes look fine.

[...]
> --- python-defaults-2.7.3~rc2/Makefile	2012-06-05 22:58:56.000000000 -0400
> +++ python-defaults-2.7.3/Makefile	2012-07-26 18:26:10.000000000 -0400
> @@ -30,6 +30,9 @@
>  %.1: %.rst
>  	rst2man $< > $@
>  
> +%.html: %.rst
> +	rst2html $< > $@

Doesn't seem necessary for wheezy.

[...]
> --- python-defaults-2.7.3~rc2/pydist/dist_fallback	2012-06-05 22:58:56.000000000 -0400
> +++ python-defaults-2.7.3/pydist/dist_fallback	2012-07-26 18:26:10.000000000 -0400
> @@ -2,7 +2,9 @@
>  setuptools python-pkg-resources
>  wsgiref python (>= 2.5) | python-wsgiref
>  argparse python (>= 2.7) | python-argparse
> +pil python-imaging
>  AddOns python-peak.util
> +BatchModify trac-batchmodify
[etc]
> --- python-defaults-2.7.3~rc2/pydist/generate_fallback_list.py	2012-06-05 22:58:56.000000000 -0400
> +++ python-defaults-2.7.3/pydist/generate_fallback_list.py	2012-07-26 18:26:10.000000000 -0400
> @@ -72,4 +72,6 @@
>  fp.write('setuptools python-pkg-resources\n')
>  fp.write('wsgiref python (>= 2.5) | python-wsgiref\n')
>  fp.write('argparse python (>= 2.7) | python-argparse\n')
> +# wasn't recognized due to .pth file (egg-info is in PIL/ and not in *-packages/)
> +fp.write('pil python-imaging\n')

Am I correct in guessing these are needed in wheezy?

>  fp.writelines(result)
> diff -Nru python-defaults-2.7.3~rc2/python2.pm python-defaults-2.7.3/python2.pm
> --- python-defaults-2.7.3~rc2/python2.pm	2012-06-05 22:58:56.000000000 -0400
> +++ python-defaults-2.7.3/python2.pm	2012-07-26 18:26:10.000000000 -0400
> @@ -5,7 +5,7 @@
>  use strict;
>  use Debian::Debhelper::Dh_Lib;
>  
> -insert_after("dh_perl", "dh_python2");
> +insert_before("dh_installinit", "dh_python2");

For #670418.  Makes sense.

[...]
> --- python-defaults-2.7.3~rc2/tests/t3/debian/rules	2012-06-05 22:58:56.000000000 -0400
> +++ python-defaults-2.7.3/tests/t3/debian/rules	2012-07-26 18:26:10.000000000 -0400
> @@ -19,4 +19,12 @@
>  		/usr/lib/python${DPY}/dist-packages/foo/baz.so.0.1
>  	dh_link /usr/lib/python${DPY}/dist-packages/foo/baz.so.0.1 \
>  		/usr/lib/python${DPY}/dist-packages/foo/baz.so
> +	# ... second style of multiple symlinks
> +	cp debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/bar.so \
> +	   debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/quux.so.0.0.0
> +	dh_link /usr/lib/python${DPY}/dist-packages/foo/quux.so.0.0.0 \
> +		/usr/lib/python${DPY}/dist-packages/foo/quux.so.0
> +	dh_link /usr/lib/python${DPY}/dist-packages/foo/quux.so.0.0.0 \
> +		/usr/lib/python${DPY}/dist-packages/foo/quux.so

Thanks for including tests along with the fixes. \o/

To summarize: most of this looks good.  I think it would be best to
decouple all these good changes from the bump to the required
python2.7 version to make the release team's life easier.  (They can
still happen in separate tpu uploads or a tpu upload followed by an
unblock if both approved.)

Regards,
Jonathan


Reply to: