[Bug 1962018] [NEW] pypy3compile errors during postinst confuses user

Robert C Jennings 1962018 at bugs.launchpad.net
Wed Feb 23 15:05:32 UTC 2022


Public bug reported:

Could you add some clarifying output in the postinst around pypy3compile
failures to give context to an end user?  The errors as they stand don't
indicate that this is pyp3 specific and can be concerning (they also
give the impression that QA isn't catching basic python bugs which isn't
the case).

pypy3 support was added to dh-python3 towards the end of 2018 as "WIP"
such that postinst will call `pypy3compile $PACKAGE || true` to ignore
errors if pypy3 is installed.  I was talking with a user that saw this
fail when installing an update for python3-software-properties and the
error message was cause for concern and confusion, for that package it
looked like this:

Setting up python3-software-properties (0.99.19) ...
Failed to byte-compile /usr/lib/python3/dist-packages/softwareproperties/extendedsourceslist.py:   File "/usr/lib/python3/dist-packages/softwareproperties/extendedsourceslist.py", line 436
    def __init__(self, sourceslist=None, /, files=None):
                                         ^
SyntaxError: invalid syntax (expected ')')

That's all fine, the author has introduced the positional-only parameter
(PEP570) new to python 3.8 and that's supported in cpython shipped by
default in the distro, but it isn't supported by pypy3.  I think it's
reasonable for the maintainer of a package to decide that they want to
use new features and that they might not have testing with pypy3
installed as a requirement.

The fact that the failure is pypy3compile and not python3compile isn't
communicated for the failure nor that it's optional.  The user might
think that the package is broken for the default interpreter.

Would you consider adding a message before each compilation step to call
out which interpreter is byte-compiling the module as well as pypy3
being optional/best-effort and may fail?  Preferably you might also
indicate the impact (i.e. the package is usable with the system python3
interpreter but pypy3) to set expectations with the end user.   Thank
you Piotr!

** Affects: dh-python (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to dh-python in Ubuntu.
https://bugs.launchpad.net/bugs/1962018

Title:
  pypy3compile errors during postinst confuses user

Status in dh-python package in Ubuntu:
  New

Bug description:
  Could you add some clarifying output in the postinst around
  pypy3compile failures to give context to an end user?  The errors as
  they stand don't indicate that this is pyp3 specific and can be
  concerning (they also give the impression that QA isn't catching basic
  python bugs which isn't the case).

  pypy3 support was added to dh-python3 towards the end of 2018 as "WIP"
  such that postinst will call `pypy3compile $PACKAGE || true` to ignore
  errors if pypy3 is installed.  I was talking with a user that saw this
  fail when installing an update for python3-software-properties and the
  error message was cause for concern and confusion, for that package it
  looked like this:

  Setting up python3-software-properties (0.99.19) ...
  Failed to byte-compile /usr/lib/python3/dist-packages/softwareproperties/extendedsourceslist.py:   File "/usr/lib/python3/dist-packages/softwareproperties/extendedsourceslist.py", line 436
      def __init__(self, sourceslist=None, /, files=None):
                                           ^
  SyntaxError: invalid syntax (expected ')')

  That's all fine, the author has introduced the positional-only
  parameter (PEP570) new to python 3.8 and that's supported in cpython
  shipped by default in the distro, but it isn't supported by pypy3.  I
  think it's reasonable for the maintainer of a package to decide that
  they want to use new features and that they might not have testing
  with pypy3 installed as a requirement.

  The fact that the failure is pypy3compile and not python3compile isn't
  communicated for the failure nor that it's optional.  The user might
  think that the package is broken for the default interpreter.

  Would you consider adding a message before each compilation step to
  call out which interpreter is byte-compiling the module as well as
  pypy3 being optional/best-effort and may fail?  Preferably you might
  also indicate the impact (i.e. the package is usable with the system
  python3 interpreter but pypy3) to set expectations with the end user.
  Thank you Piotr!

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/dh-python/+bug/1962018/+subscriptions




More information about the foundations-bugs mailing list